All model structs now conform to FetchableRecord +
PersistableRecord with snake_case table/column names.
GRDB handles Codable encoding/decoding automatically.
ProjectStore rewritten to use the type-safe query builder:
model.save(db), Model.fetchAll(db), Model.filter(...),
Model.deleteOne(db, key:) — no raw SQL remaining.
Each .luma document is a package (directory bundle)
containing project.sqlite. LumaProject implements
ReferenceFileDocument to integrate with SwiftUI's
DocumentGroup:
- New documents create a fresh SQLite database
- Existing documents read the database from the package
- Snapshots serialize the database for save operations
Workspace takes a ProjectStore from the document rather
than creating its own. Each document window gets an
independent store/workspace pair.
Define all domain model structs as plain Codable types in
LumaCore, replacing the SwiftData @Model classes:
ProcessSession, InstrumentInstance, REPLCell, NotebookEntry,
ITraceCaptureRecord, AddressInsight, InstalledPackage,
ProjectPackagesState, ProjectCollaborationState,
TargetPickerState, RemoteDeviceConfig
Flesh out ProjectStore with complete GRDB/SQLite CRUD for
all 11 tables. Both the SwiftUI and GTK frontends will use
this as their persistence layer.