Sub-issue of #10. Tracking the UI consumer for catalog/hooks.json.
State today
- ✅ Sync:
scripts/sync-hooks.js runs on the weekly cron, writes catalog/hooks.json (lifecycle table + handler-fields tables + per-event input/output schemas + commonInput).
- ✅ Backend: round-trips through
read_catalog as hooks on the wire (loaded as serde_json::Value so the new keys flow through transparently).
- ❌ Frontend: nothing reads it. Declared as
hooks: unknown in src/lib/catalog.ts.
Likely shape
The natural cross-reference is the inspector's hooks.<EventName> rows. Roadmap Next-up candidates already calls this out as the highest-value next drawer cross-reference. Two natural surfaces:
- Drawer cross-reference — extend the existing drawer plan to include a collapsible "event detail" section for
hooks.<EventName> rows (handler signature, common inputs, per-event input/output fields, JSON example).
- Top-level Hooks reference panel — a topbar-pill takeover modeled on
HelpView / ErrorPanel / EnvVarsPanel, browsable independently of any row.
The catalog supports both — pick based on UX value.
Related
Sub-issue of #10. Tracking the UI consumer for
catalog/hooks.json.State today
scripts/sync-hooks.jsruns on the weekly cron, writescatalog/hooks.json(lifecycle table + handler-fields tables + per-event input/output schemas +commonInput).read_catalogashookson the wire (loaded asserde_json::Valueso the new keys flow through transparently).hooks: unknowninsrc/lib/catalog.ts.Likely shape
The natural cross-reference is the inspector's
hooks.<EventName>rows. RoadmapNext-up candidatesalready calls this out as the highest-value next drawer cross-reference. Two natural surfaces:hooks.<EventName>rows (handler signature, common inputs, per-event input/output fields, JSON example).HelpView/ErrorPanel/EnvVarsPanel, browsable independently of any row.The catalog supports both — pick based on UX value.
Related
spec/roadmap.md§ "Inspector polish — Open work" and § "Next-up candidates"spec/catalog-sync.md§ hooks