diff --git a/README.md b/README.md index 53910ebd..79b6fa9d 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,7 @@ retired words are inventoried in | `WASD` / `hjkl` / arrows | Move cursor (attention, not a body) | | `Shift` + `WASD` / `hjkl` / arrows | Jump attention to the next earned machine or device that way without changing selection | | Left click | Move cursor; on a rack, select it (Bevy). Shift-click toggles. Drag marquee multi-selects. | +| `Shift+t` | Toggle the machine under the cursor in the selection (terminal) | | `SPACE` / `p` | Pause / resume time | | `+` / `-` | Simulation speed | | `Enter` / `e` | Open the context menu at the keyboard cursor without moving it. In Bevy, right-click moves focus to the pointed tile and opens its menu. | diff --git a/wiki/interface/keymap.md b/wiki/interface/keymap.md index db32d8ed..a6e33d2d 100644 --- a/wiki/interface/keymap.md +++ b/wiki/interface/keymap.md @@ -18,6 +18,10 @@ Status note: 2026-07-24 — created as the single binding table. Bindings were 2026-08-04 after the terminal still treated any held Control modifier as a persistence mode: only a complete Ctrl/Command+S or +L chord now captures input, while every unrelated modified key continues to its owning surface. + Re-audited later that day for complete inventory: the table now includes + terminal `;` FOCUS EVENT and `Shift+t` SELECT MACHINES, and the terminal + mirror names the latter's live cursor-toggle behavior rather than its retired + box-prompt description. Stage: B1 — The Basement Work order: keymap Work priority: 27 @@ -65,6 +69,8 @@ binding below may weaken it. | left-drag | Marquee: select every owned machine in the rect | [context-menu.md](context-menu.md) | | `Shift` + left-drag | Marquee, additive to the current selection | [context-menu.md](context-menu.md) | | `Shift` + left-click | Toggle one machine in the selection | [context-menu.md](context-menu.md) | +| `Shift`+`t` (terminal) | Toggle the machine under the cursor in the selection | [context-menu.md](context-menu.md) | +| `;` (terminal) / click a linked trace row (Bevy) | Focus the newest linked event; repeated `;` presses walk older events. A spatial link moves attention and opens its local menu; a strategic link opens its exact Operations object | [context-menu.md](context-menu.md) | | `Esc` | Close the current Bevy drawer; otherwise clear the selection (or back out one menu level when a menu owns input) | [context-menu.md](context-menu.md), [clinical-frame.md](clinical-frame.md) | ## Acting on machines diff --git a/wiki/interface/terminal.md b/wiki/interface/terminal.md index 34c0aea4..8a9f64a4 100644 --- a/wiki/interface/terminal.md +++ b/wiki/interface/terminal.md @@ -220,8 +220,8 @@ At terminal size ≥ 70×22 (hard minimum; below it, a plain size warning): context menu rather than the hint block. Globals/view controls (pause, speed, save/load, view flip, uppercase `I` Operations) stay on keys. Fleet modes are delegated on the machine. -- **Fleet hotkeys (multi-select).** `Shift+t` opens a box-select prompt - (`x0 y0 x1 y1`); owned machines in the rect join the frontend selection. +- **Fleet hotkeys (multi-select).** `Shift+t` toggles the owned machine under + the cursor in the frontend selection. `1`–`3` bulk-assign WORK / THINK / LIE to the whole selection; `i` cycles light / medium / hard intensity; `Esc` clears the selection without closing menus. diff --git a/wiki/log/2026-08-04-keymap-complete-binding-inventory.md b/wiki/log/2026-08-04-keymap-complete-binding-inventory.md new file mode 100644 index 00000000..4dcda830 --- /dev/null +++ b/wiki/log/2026-08-04-keymap-complete-binding-inventory.md @@ -0,0 +1,43 @@ +# 2026-08-04 — Complete keyboard binding inventory + +``` +Type: log +``` + +## Finding + +The canonical keymap promises one complete binding inventory, but omitted two +live terminal controls: `;` FOCUS EVENT and `Shift+t` SELECT MACHINES. The +shared action vocabulary, runtime, hints, and surrounding interface law made +both controls real, while the terminal page still described `Shift+t` as a +retired box-selection prompt rather than the shipped cursor toggle. README +already exposed event focus but gave terminal players no key for creating the +selection used by its bulk-control row. + +## Changed + +- The canonical keymap now owns one row for event focus across terminal `;` + and Bevy linked-trace clicks. +- It owns one row for terminal `Shift+t`, alongside the existing Bevy + shift-click and marquee selection rows. +- The terminal spec and README now state the exact shipped behavior: + `Shift+t` toggles the owned machine under the cursor in the frontend + selection. +- The consumed findings-queue entry is removed and its coverage row records + the closed follow-up. + +## Evidence + +`crates/misaligned-terminal/src/input.rs` maps `;` through world, menu, and +Operations routes to `FocusEvent`, and maps shifted `t` to +`ToggleSelectUnderCursor`. `crates/misaligned-terminal/src/main.rs` follows +linked spatial or strategic events and toggles only the machine at the current +cursor. `wiki/interface/action-vocabulary.md` names the same FOCUS EVENT and +SELECT MACHINES families across terminal, Bevy, and agent surfaces. + +## Defense + +`wiki/interface/keymap.md` acceptance criterion 1 requires every frontend key +to appear exactly once in the canonical table. This amendment restores that +inventory without changing runtime behavior, and removes a player-facing +mirror that described an input mode the terminal no longer has. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index c2070323..4bb89c38 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -116,6 +116,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-08-04-material-dark-frame-fixture-count.md](2026-08-04-material-dark-frame-fixture-count.md) +## 2026-08-04 - Complete keyboard binding inventory + +- Intent: (see session log) +- Log: [wiki/log/2026-08-04-keymap-complete-binding-inventory.md](2026-08-04-keymap-complete-binding-inventory.md) + ## 2026-08-04 - Keep Intel save history out of the live loader - Intent: (see session log) diff --git a/wiki/process/tick-ledger.md b/wiki/process/tick-ledger.md index 39417f35..b18b6398 100644 --- a/wiki/process/tick-ledger.md +++ b/wiki/process/tick-ledger.md @@ -35,7 +35,7 @@ Verdicts: **clean** (slice and code agree), **finding** (acted this tick), | `wiki/process/tick.md` + issue automation | 2026-07-27 | finding | the queued retired-client violation held across binding procedure, both skill mirrors, four active prompt templates, tick intake, project status, and doctor. `tools/tangled_issues.py` now keeps repository discovery and authenticated issue writes on canonical Go `tg`, reconstructs deterministic display numbers from public issue records, folds public label-op history, and provides fail-closed structured list/view/create/edit/comment/close/label operations. A same-day live harvest exposed one wrong record assumption: comments are cross-account `sh.tangled.feed.comment` records linked through `subject.uri`, not issue-local child records. The repaired helper follows that backlink into the author's PDS and returns the markup text; a fixture pins the exact shape, and live issue #15 now returns Cameron's choice `1` — [migration and repair log](../log/2026-07-27-tangled-issue-client-migration.md) | | `wiki/world/places/basement-map.md` room topology | 2026-07-27 | finding | the queued five non-hall corridor cuts remained, and an executable all-room perimeter audit exposed the same dead-door shape at the loading-dock entry plus fixed objects blocking the interior faces of the roll door, HVAC door, both storage doors, Janitor door, and stairwell. Every non-hall approach now reaches its authored door from outside the prefab, every other perimeter tile remains closed, doorway interiors are clear, and the roll, sealed, tier-2, and tier-3 boundaries retain their exact kinds — [room-approach log](../log/2026-07-27-room-approaches-meet-doors.md). Prior [west-approach](../log/2026-07-26-west-hall-approach.md) and [hall-density](../log/2026-07-26-foundation-hall-density.md) repairs stand. | | `wiki/mechanics/sensor-network.md` generated sensor population / criteria 1-5, 8 | 2026-07-28 | finding | criterion 8's standing subscription cost existed only in the global Thought-sink ledger, so a player choosing which individual camera to keep could not read that camera's exact burden. Every retained foreign subscription now names its exact `Thought/tick` upkeep and live/starved state on the device's shared inspect card, within both frontends' visible fact budget; UNTAP removes that addressed cost. The integrated several-subscription starvation/inbox-overflow experience remains pending, so criterion 8 is partial rather than overclaimed — [standing-upkeep log](../log/2026-07-28-subscription-upkeep-inspect.md). Prior generated-camera placement and badge-passage findings stand — [placement repair](../log/2026-07-27-room-camera-floor-placement.md), [passage implementation](../log/2026-07-27-badge-reader-passage-custody.md), [population foundation](../log/2026-07-27-sensor-population-foundation.md). | -| `wiki/interface/keymap.md` + terminal/Bevy input routes | 2026-08-04 | finding | the Bevy route still obeyed the shared chord-local persistence law, but terminal returned early on **every** Control-modified key before global, modal, or world routing: a stale/bare modifier made F3, movement, menus, and time controls look dead, and Command+S/L was not recognized. Terminal now captures only complete Ctrl/Command+S/L chords, routes those and F3 before modal text, and lets every unrelated modified key reach its current surface; focused regressions pin complete chords plus stale-modifier movement/time/global input — [log](../log/2026-08-04-terminal-persistence-chords.md). Prior A-key and semantic-jump reconciliation stands — [prior](../log/2026-07-26-terminal-keymap-a-reconciliation.md). | +| `wiki/interface/keymap.md` + terminal/Bevy input routes | 2026-08-04 | finding | the complete-inventory follow-up is closed: the canonical table now includes terminal `;` FOCUS EVENT and `Shift+t` SELECT MACHINES beside their Bevy pointer forms, README exposes terminal selection, and terminal law names the live cursor toggle instead of its retired box-prompt description — [inventory log](../log/2026-08-04-keymap-complete-binding-inventory.md). The earlier chord-local repair stands: terminal captures only complete Ctrl/Command+S/L chords, routes those and F3 before modal text, and lets every unrelated modified key reach its current surface — [persistence log](../log/2026-08-04-terminal-persistence-chords.md). Prior A-key and semantic-jump reconciliation stands — [prior](../log/2026-07-26-terminal-keymap-a-reconciliation.md). | | `wiki/interface/action-vocabulary.md` + agent command registry | 2026-07-31 | finding | `PROPOSE SWITCH` still described declaration-only R2a after all four realization families and their exact agent route command had landed. The canonical inventory and agent-play spec now name current execution plus the honest remaining boundary—small-switch realization has no wire-run choice—and a paired corpus defense rejects regression to the stale support claim — [log](../log/2026-07-31-small-switch-action-vocabulary.md). Prior PLOT POLICY inventory repair stands — [log](../log/2026-07-26-action-vocabulary-plot-policy.md). | | `wiki/world/places/zplanes.md` + plane-stack substrate/API | 2026-07-26 | finding | criteria 1-2 remain implemented and criteria 3-6 honestly deferred, but the ratified plane-agnostic contract still left an unused `World::active()` simulation accessor plus active-plane comments on the B1 compatibility map path. The accessor is removed, map reads now say plane 0, the stale criterion/sensing comments are corrected, and a source-shape regression rejects restoration of simulation-owned floor selection — [log](../log/2026-07-26-zplanes-plane-agnostic-api-audit.md) | | `wiki/mechanics/markets.md` + `income.md` B1 contract/account/evidence mirror | 2026-08-04 | finding | the exact B1 contract/account/evidence chain still holds, but the 2026-07-28 Wager audit reopened optional analysis without updating all current mirrors: current-build still called the economy row wholly Live and said only that the Wager was “unchanged,” while implemented Operations law promised an analysis commitment no player action can author. Current-build, sim-mechanics, income, and Operations now distinguish the live base stake/timer/settlement route from the missing real-work analysis route — [re-audit](../log/2026-08-04-wager-current-mirror-reaudit.md). Prior custody reconciliation stands — [log](../log/2026-07-26-markets-contract-custody-reconciliation.md). | @@ -111,5 +111,3 @@ Format: `- YYYY-MM-DD · type · slice · one-line statement of the finding`. Types are the five from [tick.md](tick.md): violation, contradiction, question, bug, insecurity — plus `gate` for a checker owed to the recurrence-promotes-to-the-gate rule. - -- 2026-08-04 · violation · `wiki/interface/keymap.md` complete binding inventory · the binding table omits the live terminal `;` FOCUS EVENT and `Shift+t` SELECT MACHINES controls even though action-vocabulary, terminal law, README, runtime, and tests all name them.