Commit Graph
9 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås b2e1849901 Collapse the modules sidebar group by default
Match threads; both groups start collapsed. A stored expansion
state is still honored.
2026-06-27 23:55:55 +02:00
Ole André Vadla Ravnås 5ed87e6018 Make sidebar hooks collapsible like module groups
Give instruments that have hooks a disclosure chevron and persist
the per-instrument collapsed state in the session UI state. Toggle
the module and thread groups on a full header-row click. Pad the
module view so its tabs clear the top-left edge.
2026-06-27 15:30:30 +02:00
Ole André Vadla Ravnås 38e5198209 Move modules and threads into the sidebar
Drop the modules/threads tabs; show both as collapsible sidebar
groups mirroring the hooks UX: a handful of top picks plus a
browse popover for the rest. Default threads to collapsed.

Revert the eager re-analysis of persisted modules on attach; keep
disassembly analysis lazy and add a per-module Analyze action and
status indicator instead.

Share one sidebar-row and one browser-popover component across
hooks, modules, and threads in both the SwiftUI and GTK frontends.
2026-06-27 14:53:01 +02:00
Ole André Vadla Ravnås 7d38ac2f7f Persist the r2 REPL seek as an address anchor
Snapshot the r2 seek after each r2 eval, storing it on
SessionUIState as an AddressAnchor so it re-bases across runs.
Resolve and restore it during the session warm-up, which now
also runs when only a seek (no analysis) was saved.
2026-06-26 18:49:13 +02:00
Ole André Vadla Ravnås 0285de051a Enrich r2 REPL completion and persist input state
Carry a display/insert split through completion so command
suggestions show r2's help text via the native secondary title,
and complete command arguments against eval vars and flagspaces
in addition to flags. Recall the language alongside the code when
cycling history, and keep r2 output's leading whitespace intact.

Persist the REPL draft and active language per session in
SessionUIState so they survive reopening the project. Defer the
input field's first-responder change out of the view update.
2026-06-26 17:46:01 +02:00
Ole André Vadla Ravnås 5227f0d0ce core: Add AI reply for address notes
requestAIReply runs against an ambient mission per session,
billing token usage and recording the call as a MissionAction
so the user can review the chain in the mission view. System
prompt seeds the model with disasm + pdc around the anchor.
2026-05-18 00:29:07 +02:00
Ole André Vadla Ravnås d1606523b5 Support multi-file custom instruments
- Store source files as named CustomInstrumentFile rows per def
- Render sidebar with disclosure groups
- Drive editor via Monaco project models with activePath
- Validate Add/Rename/Delete dialogs and submit on Enter
- Fork installed hook packs into editable custom instruments
- Reload instances on def change; clear stale compat reasons live
- Focus editor on selection (native + Monaco)
2026-05-13 08:54:48 +02:00
Ole André Vadla Ravnås 98cecac06d core: Make UI state structs Equatable
Synthesised conformance lets the host de-dupe writes before
publishing them to SwiftUI.
2026-05-07 19:52:39 +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