馃敀 Security:
- Refreshed lockfiles, picking up fixes for transitive CVEs in
sqlite3, nokogiri, json, crass, and concurrent-ruby
馃殌 Changes:
- Updated
.ruby-version from 4.0.3 to 4.0.6
- CI: cache bundler installs per Rails version, run
bundler-audit from the bundle, and drop the empty coverage-threshold step
- Narrowed the runtime dependency from
rails to activerecord + railties, dropping the action_text-trix pin it required
- Tightened ULID validation: rejects
I, L, O, U, which Crockford base32 excludes
馃悰 Fixed:
- Reads no longer raise on malformed legacy IDs:
Type::Base#deserialize returns stored values as-is instead of re-validating them, so a corrupted row no longer crashes every read of it. Writes (#cast/#serialize) still validate strictly
- Primary-key type cache invalidation:
_sqlite_crypto_pk_type now clears on reset_column_information instead of going stale after a migration
- Adapter guard for auto ID generation: primary-key detection now only applies to SQLite3 connections, not any string(36/26) primary key regardless of adapter
references/belongs_to with to_table and foreign_key: true: the foreign key now targets the correct table instead of the pluralized association name
馃摝 Upgrade
bundle update sqlite_crypto