Skip to content

Commit 02c2df2

Browse files
committed
docs(roadmap): tick TR.B6, mark Phase B complete
Settings joins about and history as migrated onto appShell() + panel() + Keymap, closing out TR.B6 and Phase B (app-shell rollout) entirely. Phase D (polish) unblocks as a result — it depended on B.
1 parent b5e851c commit 02c2df2

1 file changed

Lines changed: 23 additions & 11 deletions

File tree

docs/roadmaps/v5a-2606/enhanced.md

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ because the shell rollout and signature features build on them.
1515
|-------|--------------------------------------------------------------|--------|
1616
| **A** | Foundations (theme, layout primitives, keymap) | Complete |
1717
| **S** | Security & dependency maintenance (Dependabot) | Complete |
18-
| **B** | App-shell rollout across screens | In Progress (B1-B5 done) |
18+
| **B** | App-shell rollout across screens | Complete |
1919
| **C** | Signature UX features (help, toasts, progress, transitions) | Ready |
20-
| **D** | Polish (palette, command palette, dark mode, schema display) | Blocked (needs B) |
20+
| **D** | Polish (palette, command palette, dark mode, schema display) | Ready (B done) |
2121
| **E** | Tutorial & demo resources (Charm VHS recordings) | Blocked (needs B/C) |
2222

2323
> [!NOTE]
@@ -234,22 +234,34 @@ registry, and a header breadcrumb.
234234
`appShell()` + `panel()` + `Keymap`; unified the mapping-editor focus
235235
authority on the app-shell, replacing the previous weak two-panel focus
236236
model. Merged via PR #82.
237-
- [ ] **TR.B6** `refactor/config-screens-app-shell` — settings + history + about.
238-
**depends on TR.S2**. **In progress:** about and history migrated onto
239-
`appShell()` + `panel()` + `Keymap`. History gets a two-pane layout
240-
(Submissions list + Detail) mirroring the check-results precedent, with
241-
the Validate/Cross-check/Delete keybar entries driven by `Keymap`
242-
`when` guards on the current selection. Along the way, found and fixed a
243-
real bug the migration surfaced: `SelectRenderable.selectedIndex` is
244-
write-only on the real `@opentui/core` API (setter only, no getter) —
237+
- [x] **TR.B6** `refactor/config-screens-app-shell` — settings + history + about.
238+
**depends on TR.S2**. **Done:** about, history, and settings all
239+
migrated onto `appShell()` + `panel()` + `Keymap`. History gets a
240+
two-pane layout (Submissions list + Detail) mirroring the check-results
241+
precedent, with the Validate/Cross-check/Delete keybar entries driven by
242+
`Keymap` `when` guards on the current selection. Along the way, found
243+
and fixed a real bug the migration surfaced: `SelectRenderable.selectedIndex`
244+
is write-only on the real `@opentui/core` API (setter only, no getter) —
245245
reading it always returns `undefined`; the read path is the
246246
`getSelectedIndex()` method instead. Fixed in history.ts and added
247247
`getSelectedIndex()` to the shared test double
248248
(`tests/fixtures/tui/opentui.ts`) so this class of bug fails tests going
249249
forward. **Not yet fixed:** `mapping-builder.ts:340,350` and
250250
`mapping-editor.ts:557,584` (merged in TR.B5) still read
251251
`.selectedIndex` directly and have the same latent bug — flagged for a
252-
follow-up fix, out of scope here. Settings remains for TR.B6.
252+
follow-up fix, out of scope here. Settings is the most involved of the
253+
three migrations: inline text/dropdown edit renderables, a two-press
254+
reset-confirm, section-header skip-navigation, and directory fields that
255+
round-trip through the file-picker all carried over unchanged. The
256+
single status line that used to juggle five different messages
257+
(nav bar, edit prompt, dropdown prompt, reset-confirm, "Saved!") now
258+
routes through `shell.setFooter()` / `refreshFooter()`, mirroring
259+
history's pattern; "Saved!" self-clears after 2s via `setTimeout`
260+
instead of persisting until the next navigation. Save/Reset/Back
261+
bindings carry `when: () => !this.editing` guards so they neither fire
262+
nor show in the keybar mid-edit, replacing the old manual
263+
`if (this.editing) return` gate. All TUI screens are now on the
264+
app-shell framework — Phase B complete.
253265

254266
## Phase C — Signature UX features
255267

0 commit comments

Comments
 (0)