Commit Graph
17 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås b88a9be290 Replace SwiftyMonaco with native editors
Drop the Monaco webview. Edit in a GtkSourceView on GTK and in a
native text view on Apple, both speaking to Frida.Compiler's
in-process language server for completions, signature help,
hovers and diagnostics.

Color, complete and indent code natively, matching the GitHub
theme in light and dark.
2026-09-08 19:52:31 +02:00
necpition205 83769a5e8e Harden custom instrument handling 2026-06-28 02:02:14 +02:00
Ole André Vadla Ravnås 5baf1d4f14 core: Decouple custom instrument writes from agent reload
A wedged custom instrument blocks dispose RPC, which made every
write_custom_instrument_file call hang waiting on the live reload.
The store write already succeeded; only the side-effect bounce was
stuck, and that's exactly when you most need to edit the source.

Detach the reload into a Task so writes return as soon as the
on-disk state is updated.
2026-05-22 18:02:06 +02:00
Ole André Vadla Ravnås ac938d8898 ui: Follow renamed entrypoint in editor 2026-05-17 00:21:20 +02:00
Ole André Vadla Ravnås bf544430bc ios: Tidy custom instrument editor chrome 2026-05-16 23:08:16 +02:00
Ole André Vadla Ravnås b0c868ab56 ios: Move custom instrument actions to editor 2026-05-16 22:48:55 +02:00
Ole André Vadla Ravnås d38d428b9c ui: Push detail padding into config views
InstrumentDetailView no longer wraps with .padding(8). Each config
view declares its own padding. Form views pad all four sides;
editor views (Tracer hook editor, Custom Instrument source) leave
the trailing edge flush so the scrollbar reaches the window edge.
2026-05-15 13:07:30 +02:00
Ole André Vadla Ravnås dbb6d50ac7 ui: Prompt before discarding editor changes
Tracer hook editor and custom-instrument file editor now ask Save /
Discard / Cancel before navigating away with unsaved work. Covers
both the SwiftUI and GTK frontends; Cancel reverts the sidebar
selection.

On the GTK side, TracerConfigEditor.update() refreshes hook metadata
in place when only the selection or content of an existing hook
changed, instead of rebuilding the whole pane — switching hooks no
longer drops unsaved drafts.

Fix activeInstrumentID extracting componentID instead of
instrumentID, and defer reconcileInstrumentChildren until after
select() in navigateToInstrumentComponent — avoids a GtkListBox
cursor crash and a duplicate selectComponent call.
2026-05-14 22:27:41 +02:00
Ole André Vadla Ravnås 54e798553c ui: Polish sidebar and editor chrome
Sidebar: manual expansion for sessions and custom instruments;
child rows align under parent icon column. Surface tracer hooks
inline under the Tracer item with a Browse-all popover for the
overflow.

Editor: drop static header rows; SaveBar slides down from the
editor top with Save button and unsaved indicator. Shared
between tracer and custom instrument editors.

GTK: pin detached banner to system-orange across focused and
backdrop states. Trim chevron button padding so it honors the
24px column, and tighten row padding so the icon sits 4px from
the row edge.
2026-05-13 22:58:47 +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 c5d2ff7050 core: Replace Workspace with per-document Engine
EngineRegistry caches one Engine per working-project URL.
MainWindowView.init does a pure lookup, so SwiftUI's
view-tree re-evaluations cannot open extra ProjectStores
that race the live one's BEGIN IMMEDIATE and crash via
try!.

UI-state persistence (collapse flag, sidebar selection,
session detail section, etc.) lives on Engine for GTK to
adopt. SQLite has a 5s busy timeout. Engine open failures
surface as an error view.

TargetPicker is host @State injected via environment.
Global instrument-UI defaults register at app startup;
per-engine instrument and local-notifier hookups live in
Engine extensions.
2026-05-11 21:15:47 +02:00
Ole André Vadla Ravnås 1e83ba6aeb Flush in-progress draft when leaving feature editors
Closing the add row or hitting Done used to discard a half-typed
feature/field. Auto-append it first if id and name are filled.
2026-05-10 16:50:21 +02:00
Ole André Vadla Ravnås 12f496620a Make boolean feature defaults configurable
Boolean schema carries an explicit default; was hardcoded true.
Editors expose a Default toggle in the schema panel, and boolean
fields are now expandable to reach it.
2026-05-10 16:30:41 +02:00
Ole André Vadla Ravnås e6e78c408a swiftui: Refine custom instrument feature editor
Discrete Add Feature button gating the input row. id field
auto-derives a Title-cased name until the user edits it.
Inline kind picker on each row. Feature rows are collapsible
and auto-collapse when adding the next one. Schema editor
applies the same patterns to nested object fields and combo
choices.
2026-05-06 18:37:11 +02:00
Ole André Vadla Ravnås 8c82612579 Switch instrument icon to rich model 2026-05-06 00:05:01 +02:00
Ole André Vadla Ravnås decc2ab04d ios: Fix custom instrument UI build errors 2026-05-05 21:12:36 +02:00
Ole André Vadla Ravnås 6ab2e3d3b2 macos: Add custom instrument UI 2026-05-05 19:15:56 +02:00