Changelog
Release history and changelog for Godwit Sync.
0.2.3
Verify observability and drain timeout
Released on 2026-04-02
New features
- Verify metrics in plan verify server. The
/statusendpoint now exposes verify counts alongside sync progress, giving dashboards and monitoring tools a single source of truth for both operations. - Verify resume pre-seeding. When resuming a verify operation, previously completed counts are loaded from the task repository so progress starts from where it left off.
--drain-timeoutflag. Controls how long the process waits for in-flight operations to complete before shutting down. Also available as a config field.- Full observability lifecycle for verify. The verify command now emits the same Prometheus metrics, status-server updates, and console events as the sync command.
- Live stats and object gauges during sync. Real-time object-level gauges are emitted during sync operations, improving visibility in Prometheus and Grafana dashboards.
- Pre-initialized Prometheus metric labels. Dashboard panels no longer show "No data" on startup; all metric labels are registered with zero values at initialization.
Fixes
- Tracker Reset semantics. Corrected the counter reset behavior and added pending counts to the progress tracker.
- License limit reached event. The brief console output now reports when the license object limit is reached, instead of silently stopping.
0.2.2
Verify fix for versioned buckets
Released on 2026-03-30
Fixes
- Exclude delete markers from verification. The verify command no longer attempts to verify S3 delete markers, which caused false failures when verifying versioned bucket migrations.
0.2.1
Version-aware S3 migration
Released on 2026-03-21
New features
- Version-aware S3 bucket migration. Godwit Sync can now migrate all object versions from a versioned S3 bucket, not just the latest version. Version IDs are tracked on both source and destination, and partial version history is reported during the operation.
- Object lock migration. Retention policies and legal holds are preserved when migrating objects between S3-compatible storage systems.
--configflag for plan commands. Plan, sync, and verify commands can now read settings from a YAML configuration file instead of requiring all options as CLI flags.--unsupported-key-action=warnmode. Objects with keys that the destination does not support are logged with per-object events instead of failing the entire operation.--case-conflictand--unsupportedfilters. Theplan list-objectscommand can now filter its output to show only objects with case-conflicting keys or unsupported key characters.- Post-upload version tag replication. After uploading each version, a
PutVersionTagscall confirms that the destination has recorded the correct version ID, catching replication mismatches early.
Changes
- Match config moved to policy section. The
matchconfiguration block has moved from theversioningsection to thepolicysection in the config file.
0.1.4
Config file support and extended plan list
Released on 2026-03-11
New features
- Config file support for verify. The verify command now accepts configuration from a YAML file, matching the config support already available in plan and sync.
- Read config from file. All commands that accept
--configcan now load settings from a file path.
Fixes
- Brief plan output shows zero counters. Fixed a bug where the non-UI console output displayed zero for all object and byte counters. The TTY message factory was reading flat payload keys instead of the nested
objectStatsstruct.
0.1.2
Retry support and cross-platform build fixes
Released on 2026-03-06
New features
--retryand--retry-backoffflags. Failed object transfers are now retried automatically. Configure the maximum number of attempts with--retryand the backoff interval with--retry-backoff.- Sync direction in header. The console output header now shows the sync direction (e.g., s3→fs, fs→s3, s3→s3) for easier identification.
- New Prometheus counters. Additional metrics for monitoring transfer operations.
Fixes
- CGO enabled for SQLite. Previous builds were compiled with
CGO_ENABLED=0, causing runtime crashes because go-sqlite3 requires CGO. All release binaries are now built with CGO enabled. - ARM64 Docker builds stabilized. Fixed intermittent failures in ARM64 Docker builds running under QEMU emulation.
- SQLite atomic alignment warnings suppressed. Eliminated noisy compiler warnings on ARM targets.
0.1.1
Initial release
Released on 2026-02-27
Features
- S3-to-filesystem, filesystem-to-S3, and S3-to-S3 sync. Transfer objects between any combination of local filesystem and S3-compatible storage (AWS S3, MinIO, and other S3-compatible providers).
- Plan-based architecture. Every sync operation starts with a plan that inventories source and destination, calculates the diff, and records what needs to be transferred. Plans can be inspected before execution.
- Resume interrupted transfers. If a sync operation is interrupted, resume from where it left off without re-transferring completed objects.
- Verify after sync. A dedicated verify command compares source and destination after a sync to confirm all objects were transferred correctly.
- Interactive terminal UI. A Bubble Tea terminal interface shows real-time progress with object counts, byte counters, and transfer speed.
- Brief console mode. Run with
--ui=falsefor a non-interactive log-style output suitable for scripts and CI pipelines. - Prometheus metrics. Built-in metrics endpoint for monitoring sync operations with Prometheus and Grafana.
- License validation. Commercial license support via the Godwit license server.
- Multi-platform binaries. Pre-built binaries for Linux (amd64, arm64, armv6), macOS (amd64, arm64), Windows (amd64), and a Docker image.