Commit Graph
4 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås 12d5491c22 Sync disasm cache across collab
Identify a process instance by a deterministic identity returned
from the agent (per-OS, with a Process.mainModule + pid fallback)
and stash it on ProcessSession.processInfo. Rekey memory_page
into memory_page_module (module UUID + offset) so cached bytes
survive ASLR, and memory_page_anon (process identity + address)
for JIT / heap regions that only survive within one process
instance. Purge stale anon pages on every fresh attach.

Add updateProcessInfo, updateModuleAnalysis and updateInsight
SessionOps plus a side-channel publish-memory-page op and a
+fetch-memory-page request. The driver write-throughs every
page it fetches; non-drivers pull on miss and persist locally.
Module-analysis rows flow the same way so non-drivers can key
their cache by module UUID. The lab-join snapshot now carries
processInfo and module_analyses too.

Refresh actions on the insight detail view: Reread Bytes drops
the pages overlapping the visible range; Reanalyze Module drops
the module's analysis and pages, re-running r2 on next access.

The macOS detail view now reads the insight live from
insightsBySession via observation; GTK forwards .insightUpdated
into the detail and reschedules a refresh when the resolved
address changes.
2026-05-19 15:16:48 +02:00
Ole André Vadla Ravnås 91385e11a4 core: Wire ITrace, deltas, and UI state in engine
Engine subscribes to module/thread deltas and trace updates, drives
the unified ITrace lifecycle, paginates set-trace-data uploads with
lazy server-stat resume, and falls back to a paginated +fetch with
optional first-paint prefix and onProgress reporting. Server-driven
trace-data-progressed broadcasts feed back as cache invalidations.

ProjectStore picks up itrace, project_ui_state and session_ui_state
tables; the schema is created with if-not-exists, no migrations.
SessionOp carries upsertTrace, removeTrace, traceDataProgressed,
and the module/thread updates are now ModuleDelta/ThreadDelta.
2026-05-07 16:40:30 +02:00
Ole André Vadla Ravnås c111319d3b core: Add custom instruments 2026-05-05 19:15:50 +02:00
Ole André Vadla Ravnås 89b494d51f luma: Native context menus and incremental sidebar
Replace hand-built popover+button context menus with GTK4's
native PopoverMenu backed by GMenuModel and GAction across
all ten callsites. Destructive items use a Button child with
the standard .destructive-action CSS class. Remove all custom
.luma-menu CSS.

Add SessionListChange enum to LumaCore so Engine can emit
granular add/update/remove events for sessions, instruments,
insights, and captures. MainWindow sidebar now handles these
incrementally instead of rebuilding the entire ListBox.

Also:
- Fix detach banner not appearing after user-initiated detach
  (detach event handler was not setting phase to .idle)
- Suppress detach banner during first-ever attach only
- Disable "Add Instrument" when session is detached
- Fix crash in REPLPane.refresh() by clearing focus before
  removing selectable children
- Use lowercase "luma" for XDG config/data directories
2026-04-09 14:46:28 +02:00