Thanks for your interest in improving any-sync-bundle! This document explains how to build, test, and propose changes.
- Go 1.26.1 or later
- Docker (optional, for testing with containers)
- golangci-lint (for linting)
# Build
go build -o any-sync-bundle .
./any-sync-bundle --version
# Run linter
golangci-lint run --fix
# Run tests
go test -race -shuffle=on -vet=all -failfast ./...For a quick local stack, see compose.dev.yml (MongoDB replica set + Redis Stack):
docker compose -f compose.dev.yml up -dNix provides reproducible builds and a complete development environment.
nix build
./result/bin/any-sync-bundle --version
nix flake check- All-in-one container (bundled MongoDB/Redis): see
compose.aio.yml - Minimal container (external MongoDB/Redis): see
compose.external.yml - Binary (no container): use
start-bundleand supply your own MongoDB/Redis
- Keep PRs small and focused
- Include a brief description of what changed and why
- Update README/docs when behavior or flags/env variables change
- Run linter and tests before submitting
By submitting a PR, you agree that your contribution is licensed under the repository's MIT license.
For maintainers releasing a new version.
goreleaser release --snapshot --cleanBefore tagging, update user-facing release references to the final version:
- README version section and Docker image examples
- Compose file image tags
- Nix package version in
flake.nix
Use rg to confirm that the previous release tag no longer appears in
release-facing files.
# Set variables (fish shell)
set VERSION v1.4.3
set ANYTYPE_UNIX_TIMESTAMP <current timestamp from https://puppetdoc.anytype.io/api/v1/prod-any-sync-compatible-versions/>
# The compatibility date suffix is always derived in UTC.
set ANYTYPE_FORMATTED (env TZ=UTC date -r $ANYTYPE_UNIX_TIMESTAMP +'%Y-%m-%d')
set FINAL_VERSION $VERSION-$ANYTYPE_FORMATTED
# Create tag and push
git tag -a $FINAL_VERSION -m "Release $FINAL_VERSION"
git push origin tag $FINAL_VERSIONv[bundle-version]-[anytype-compatibility-date]
v1.4.3– Bundle's semantic version (SemVer)YYYY-MM-DD– Date derived in UTC from the current Anytype compatibility timestamp: https://puppetdoc.anytype.io/api/v1/prod-any-sync-compatible-versions/
Good luck and have fun!