- feat: Add
Field.columnDefaultandGenerateDartModel.indexesannotation slots. Both are optional, additive, and DBML-only — consumed bydf_generate_dbmlto emit columndefault: <value>, anindexes { ... }block, and (via the modeldescription) a table-levelnote:. Neither affects the generated Dart model; existing models compile and behave unchanged.
- chore: bump
df_stringto^0.4.0anddf_gen_coreto^0.8.1, adopting df_string 0.4.0's case-conversion digit-boundary change (phone_e164instead ofphone_e_164). Model/wire-key generation that runs case conversions on identifiers with embedded digits emits the new form on the next generation run; already-generated code is unaffected until regenerated. All 70 tests pass against df_string 0.4.0. - build: constrain
equatableto>=2.0.7 <2.1.0. equatable 2.1.0 deprecatesEquatableMixin(used by the generated models and re-exported here), which trips CI'sdart analyze --fatal-infos; pin below it until the models migrate off the mixin. The cap propagates to dependents (df_screen_core, etc.) so their analysis stays green too.
- Released @ 6/2026 (UTC)
- New:
tableName: String?on@GenerateDartModel— explicit override for the DBML table name. When null, the table name is derived from the class name (Model prefix/suffix stripped, snake-cased) with no automatic pluralisation - New:
schema: String?on@GenerateDartModel— DBML emission gate. Models without a schema are skipped; distinct schema values are emitted to their own<schema>.dbml. Pass a project-wide const so the schema name has a single source of truth - New:
referencesFromRecord()accepts aStringliteral (references: 'ModelUser') in addition to aTypeliteral. Cross-package references no longer need an import chain just to satisfy the analyzer's Type API - Regenerated meta-model
.g.dartfiles carry the new fields and thestatic const tableName+$values/$primaryKey/$foreignKeysmetadata constants on the correspondingFieldNamesclasses
- Released @ 6/2026 (UTC)
- New:
Field.fieldPathacceptsString('profile.id'),Iterable<String>(['profile', 'id']), ornull; multi-segment paths produce deep null-aware accessors (json?['profile']?['id']) - New:
FieldTypesconstants class for prefix-vocabulary strings (FieldTypes.pgUuid,sqliteEpochms,fsTimestamp, …) - New:
FieldUtils.normalisePathexposed publicly - New:
Fieldslot field type changed toObject?forfieldPathandreferences - Removed:
equatable,sqlType,onDelete,unique,referencesColumn,fallback,unknownEnumValue,includeInJson/SqlMap/FirestoreMap,converterslots (deferred to template/inheritance) - Fix:
DartField.fieldPathno longer recurses infinitely throughFieldUtils.fieldPathOrNull - Pulls in df_gen_core 0.8.0 with mapper robustness fixes
- Released @ 5/2026 (UTC)
- Update version
- Released @ 5/2026 (UTC)
- Update and format
- AI updates
- Released @ 12/2025 (UTC)
- Update dependencies
- Released @ 12/2025 (UTC)
- Update dependencies