Part of Phase 1 — Core skeleton (tasks.md Task 1.14).
Summary
Build the OpenTUI/React UI shell: layout regions, slot registry, focus-to-context tracking, and layout persistence.
Details
- Component tree (design.md §8.1):
ThemeProvider (hardcoded base palette for now) → ContextFocusTracker → Shell with ActivityBar, Sidebar, EditorArea (tab bar + placeholder), Panel, StatusBar. - Slot registry backing
tecode.ui.registerView(slot, id, Component): per-slot ordered maps; regions re-render on registration; activityBar items pair 1:1 with sidebar views; status-bar items carry { side, priority } and render sorted. - Focus tracking maps OpenTUI focus to context keys (
editorFocus, etc.). - Layout state
{ sidebarVisible, sidebarWidth, panelVisible, panelHeight, activeView } persists to ~/.config/tecode/state.json (debounced + on exit) and restores on start.
Completion requirements
References
- requirements.md: Req 6.1–6.4
- design.md: §8.1, §8.2
Dependencies
Blocked by: 1.13 (#14).
Part of Phase 1 — Core skeleton (tasks.md Task 1.14).
Summary
Build the OpenTUI/React UI shell: layout regions, slot registry, focus-to-context tracking, and layout persistence.
Details
ThemeProvider(hardcoded base palette for now) →ContextFocusTracker→ShellwithActivityBar,Sidebar,EditorArea(tab bar + placeholder),Panel,StatusBar.tecode.ui.registerView(slot, id, Component): per-slot ordered maps; regions re-render on registration;activityBaritems pair 1:1 with sidebar views; status-bar items carry{ side, priority }and render sorted.editorFocus, etc.).{ sidebarVisible, sidebarWidth, panelVisible, panelHeight, activeView }persists to~/.config/tecode/state.json(debounced + on exit) and restores on start.Completion requirements
state.jsonacross a simulated restartbun testand lint passReferences
Dependencies
Blocked by: 1.13 (#14).