Commit Graph
13 Commits
Author SHA1 Message Date
necpition205 83769a5e8e Harden custom instrument handling 2026-06-28 02:02:14 +02:00
Ole André Vadla Ravnås dcd918ce86 core: Surface console responder in typings 2026-05-17 01:49:17 +02:00
Ole André Vadla Ravnås ca298edf86 core: Mention appendValue in template 2026-05-17 00:55:15 +02:00
Ole André Vadla Ravnås 6e33455721 core: Refresh custom instrument template 2026-05-17 00:29:43 +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 e1f3ea938a core: Gate instruments on device compatibility
Each instrument carries an InstrumentCompatibility (platforms,
osIDs, archs; nil set means any). Hook pack manifests and custom
defs declare it; tracer and codeshare default to universal.

System parameters are queried lazily via SystemParametersCache,
keyed by device id and invalidated when devices disappear.

Restoring an incompatible instrument now marks it with a reason
on its InstrumentRef instead of attaching.
2026-05-12 15:05:23 +02:00
Ole André Vadla Ravnås eacabd5519 core: Prefer getGlobalExportByName in templates
Inline the lookup into Interceptor.attach() and guard the
Windows case explicitly. Steer mission agents toward get*
over find* unless absence is a real expected case.
2026-05-12 13:11:47 +02:00
Ole André Vadla Ravnås 4aa09ff185 Drop Date.now() from custom-instrument example
Date.now() returns epoch milliseconds — large enough that every
point ends up pinned to the far right of the chart. Use the
call sequence number instead, and switch the y axis to the
open()'d path's length so the graph shows variation per call
rather than a y=x diagonal. Rename the series from `count` to
`length` to match.
2026-05-11 00:55:38 +02:00
Ole André Vadla Ravnås 285562d3c4 Polish custom-instrument example template
Spell out which widget kinds expose which methods, that onAction
triggers on list or table widgets, and that Persistence must be
Session for `restored.<id>` to type-check. Drop the defensive
`?? ""` on readUtf8String() — open() with a NULL path is invalid.
Uncomment the logStack sample so the declared feature is actually
exercised.
2026-05-11 00:33:37 +02:00
Ole André Vadla Ravnås f4f987c7ee Add widget data model
InstrumentWidget (graph or list, with a persistence enum) lives
on CustomInstrumentDef and HookPackManifest. Runtime widget data
serializes through a widget_state table keyed by instance id and
widget id; the def itself round-trips a widgets_json column on
custom_instrument_def.
2026-05-10 21:02:42 +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 8c82612579 Switch instrument icon to rich model 2026-05-06 00:05:01 +02:00
Ole André Vadla Ravnås c111319d3b core: Add custom instruments 2026-05-05 19:15:50 +02:00