← Changelog
v1.2.1
2026-07-03
Fixed
- Migration ledger PK collision (Unity HIGH PCI) — nested Hasura layouts (
hasura/migrations/default/<name>/up.sql) keyed the applied-migration ledger byfilepath.Base(file), collapsing every nested migration to the literal nameup.sql. The first one recorded; every later one was silently skipped while reporting as applied (this produced the ummatis_up/np_uptime_summaryghost). Migration identity now derives frommigrationKey()(parent directory name for nested layouts, filename for flat),extractMigrationIDno longer truncates at the first_(same-day migrations no longer collide), ledger writes useON CONFLICT DO UPDATEinstead ofDO NOTHING(a conflict can never silently drop a migration), andupgradeLedger()rewrites legacy ledger rows in place on already-deployed boxes. (#163) - Atomic dual-table ledger recording — non-transactional migrations (
CREATE INDEX CONCURRENTLY,ALTER TYPE ADD VALUE) now record tonp_common.schema_versionsandnself_ops.migrationsinside one transaction, so a failure on either INSERT leaves no orphan row.nself db migrate downdeletes from BOTH ledgers inside the down transaction (previouslynself_ops.migrationskept a stale row).nself db migrate applyerrors on checksum mismatch when a previously-applied file was modified. (#141) - Scaffold template error propagation — plugin scaffold template failures now return wrapped errors instead of panicking; generated service templates exit cleanly instead of
os.Exit(1)mid-defer. (#141) - clean-root SDK gate — expects 3 SDK modules (go, py, ts) after the Flutter SDK removal (#159); Windows CI perm-bit assertions POSIX-gated. (#164)
- Version scripts —
bump-version.sh/check-version-lockstep.shno longer expect the removedsdk/flutter/pubspec.yaml(10 lockstep files + optional homebrew).
Added
nself db migrate status --migration-dir <dir>— status for non-standard migration layouts (parity withmigrate up; forwarded on--envremote dispatch). Repos like ntask (postgres/migrations) no longer report “No migrations found”. (#166)postgres/migrations/auto-detect — 4th candidate in migration directory detection. (#166)- Remote CLI version-drift pre-flight —
db --env staging|prodcommands verify the remote binary version matches local before running, failing with a clear message naming both versions (pass--allow-version-driftto override). (#162) .github/wiki/database-migrations.md— internal reference for the dual-table ledger, atomicity guarantees, and layout auto-detection. (#141, #166)