diff --git a/PLAN.md b/PLAN.md index 6e2960b..4bccf45 100644 --- a/PLAN.md +++ b/PLAN.md @@ -76,6 +76,20 @@ invariants; drag-out places a valid file in the OS target. - [ ] Resample-and-mute-source. - [ ] Conform-on-insert (explicit). - [ ] Native OS drag-out (deferred final; `InsertMedia` path must already work). +- [ ] Keybinding help labels: in the docked bank_panel, surface the current key + binding for each capture/provenance action (e.g. "Capture Item → ") by + querying the SDK for the key bound to the action's command id + (`kbd_getTextFromCmd(cmd, SectionFromUniqueID(0))` — main section) and formatting + a reminder label. Unbound case degrades to the action name with a clear + "unbound"/"—" marker (empty/blank return handled explicitly). Split: label-text + formatting (binding string + fallback → label) is **pure/testable**; the SDK + binding query + label draw is bank_panel shell. +- [ ] Action trigger buttons: clickable bank_panel buttons that fire the capture and + provenance actions directly, routing through the **existing** command-id contract + (`Main_OnCommand`/`KBD_OnMainActionEx` with the registered command id — the same id + minted at `registerAction`), never re-implementing capture. Split: button + hit-testing/layout math is **pure/testable** (mirror of `mode_switch`/`bank_grid`); + draw + command dispatch is bank_panel shell. ---