Commit Graph
3 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås 9d02419562 Sync sessions across collaborative labs
Sessions in a lab are now collaborative artifacts. Any owner can
host (own the local Frida attachment) and any owner can drive
(issue REPL evals and instrument commands); a driver's actions
are relayed to the current host. Members watch read-only and see
an "Only lab owners can host sessions" CTA when they try the new
session button.

Re-host (Run on My Device…) lets an owner take over a running
session by attaching to their own equivalent process; the prior
host's Frida attachment detaches and the new host auto-loads the
session's instruments. Driver auto-reverts to host when the
current driver fully disconnects from the lab.
2026-04-30 23:28:15 +02:00
Ole André Vadla Ravnås 316c82c908 Use GRDB records idiomatically
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.
2026-04-06 21:49:41 +02:00
Ole André Vadla Ravnås 42c8115bab Add persistence models and ProjectStore CRUD
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.
2026-04-06 20:13:59 +02:00