# Changelog ## 2026-04-08 - 1.2.0 - feat(versionresolver) support skip-forward resume for orphan ledger versions - Update migration planning to resume from the first step whose toVersion is greater than the current ledger version instead of requiring an exact fromVersion match. - Log when a migration step runs in skip-forward mode so operators can identify idempotent replays against partially migrated data. - Add tests and documentation for skip-forward resume behavior and TARGET_NOT_REACHABLE error handling when the chain cannot advance. ## 2026-04-07 - 1.1.1 - fix(repo) no changes to commit ## 2026-04-07 - 1.1.0 - feat(smartmigration) add initial smartmigration package with MongoDB and S3 migration runner - introduces a builder-style migration API with semver chain validation and structured migration errors - adds MongoDB and S3 ledger backends with locking, checkpoint persistence, dry-run planning, and fresh-install handling - includes comprehensive tests and project documentation for the initial public release ## 2026-04-07 - 1.0.0 - Initial release Initial public release of `@push.rocks/smartmigration` — a unified migration runner for MongoDB (smartdata) and S3 (smartbucket). - Builder-style step definition: `migration.step(id).from('1.0.0').to('1.1.0').up(async ctx => { ... })` - Single unified data version (semver), tracked in a ledger - Mongo ledger (default when `db` provided) backed by smartdata's `EasyStore` - S3 ledger (default when only `bucket` provided) - Sequential, idempotent execution: `run()` is a no-op once data is at `targetVersion` - Per-step lock with TTL to serialize concurrent SaaS instances - Resumable steps via `.resumable()` and `ctx.checkpoint` - Fresh-install fast path via `freshInstallVersion` option - Dry-run mode