@@ -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