Repository navigation
5.0.0
Embedded raw-value types now use their RawValue SQLite codec for storage and queries. String enums store plain TEXT, integer enums use INTEGER, and floating-point enums use REAL. This release also removes legacy sync migration APIs and compatibility code.
Breaking changes
- Existing business databases containing JSON-encoded enum columns require an application-owned versioned migration before using the new codec. String enums need JSON unwrapping; numeric enums also need the matching INTEGER or REAL column affinity. Nested JSON documents retain their Codable format.
- Removed
LegacySyncMigration, theSyncOptions.migrationargument, legacy sync file import/detection, and sync migration markers. Legacy sync storage is not migrated. - Source-based schema extraction requires referenced custom codec declarations in its input files. Unsupported or unresolved storage metadata produces a diagnostic instead of silently defaulting to TEXT.
Improvements
- RawValue delegation supports type aliases and custom SQLite codecs without an enum type-name whitelist.
- Raw-value query predicates support optional values, comparisons, membership, ranges, and SQL interpolation through protocol constraints. Explicit
SQLiteValueComparableconformance can use the default raw-value projection. - JSON storage metadata is independent of queryability. Custom column types and decoding follow codec metadata; scalar enum defaults no longer receive a JSON-object SQL default.
- Changelog operations use the shared
sqliteEncode()API.
Validation
Implementation validation included 401 passing tests before sync compatibility cleanup, followed by 61 passing focused sync/connection tests after cleanup. Local tests, builds, formatting, and lint checks were skipped for this release as requested. The release workflow builds, smoke-tests, packages, and verifies the published macOS arm64 CLI.