Skip to content

feat: propose TUI redesign via OpenSpec#279

Open
avoidwork wants to merge 1 commit into
mainfrom
feat/tui-redesign
Open

feat: propose TUI redesign via OpenSpec#279
avoidwork wants to merge 1 commit into
mainfrom
feat/tui-redesign

Conversation

@avoidwork

Copy link
Copy Markdown
Owner

Description

Create OpenSpec change "tui-redesign" — a complete proposal for the TUI architectural reorganization. The change includes proposal.md, design.md, spec.md, and tasks.md artifacts covering state consolidation (useReducer), streaming extraction (useStreaming hook), file restructuring by concern, panel removal, command registry refactor, runtime toggle system, and status bar enhancements.

Type of Change

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactor (no functional changes)
  • Performance improvement
  • CI / build / tooling

Testing

N/A — this PR contains only OpenSpec artifacts (proposal, design, spec, tasks). No code changes. Implementation will be done via /opsx-apply after this PR merges.

Coverage

  • 100% line coverage maintained
    N/A — no code changes in this PR.

Checklist

  • npm run lint passes
  • Tests pass with 100% line coverage
  • No forbidden patterns used
  • Conventional Commit style applied

Rule 5.4 Compliance

This PR uses the .github/PULL_REQUEST_TEMPLATE.md template — every section is filled out. Sections not applicable to artifact-only PRs are marked with "N/A" rather than skipped.

Create OpenSpec change 'tui-redesign' with complete artifacts:
- proposal.md: Motivation, capabilities, impact analysis
- design.md: Technical decisions (useReducer, useStreaming hook, file restructuring, panel removal, command registry)
- specs/tui-redesign/spec.md: 10 requirements with scenarios covering state management, streaming, file structure, panel removal, command registry, runtime toggles, status bar, message display, scrolling, commands, input lifecycle, edge cases
- tasks.md: 15 task groups, 38 implementation steps
@avoidwork avoidwork self-assigned this Jun 16, 2026
@avoidwork

Copy link
Copy Markdown
Owner Author

Spec Audit: TUI.md vs. OpenSpec

Audit date: 2026-06-16
Source: ./docs/TUI.md (1000 lines, 17 sections)
Spec: openspec/changes/tui-redesign/specs/tui-redesign/spec.md (10 requirements, 34 scenarios)


Coverage Analysis

TUI.md Section Spec Requirement Status
§1 Philosophy (input primary, silence default, batteries included) Design principles in design.md ✅ Captured in design, not spec (correct — specs define WHAT, not WHY)
§2 Architecture (component hierarchy) Concern-Based File Structure ✅ Covered
§3 Scrolling & Viewport Scrolling & Viewport requirement ✅ Covered (auto-scroll, user scroll, resize, keyboard)
§4 The Cursor Input Lifecycle requirement ✅ Covered (focus, history, cursor fade)
§5 Message Display Message Display requirement ✅ Covered (role styling, markdown, memoization)
§6 Runtime Configuration Runtime Toggle System requirement ✅ Covered (toggles, persistence, toggleable settings)
§7 Command Parser Event-Driven Command Registry + Command Set ✅ Covered (all commands, skill execution, unknown)
§8 Interaction Model Input Lifecycle requirement ✅ Covered
§9 Status Bar Status Bar Toggle Indicators requirement ✅ Covered
§10 Edge Cases & Resilience Edge Cases & Resilience requirement ✅ Partial (connection loss, thinking loop covered; streaming overflow and output retention are session-layer concerns)
§12 Streaming Architecture Streaming Logic Extracted requirement ✅ Covered (AbortController, event transform, auto-continue, interrupt)
§14 Onboarding & Banner Panel System Removal (OnboardingPanel preserved) ✅ Covered
§16 Architectural Debt All 5 debt items mapped to requirements ✅ Covered (useReducer, streaming hook, file structure, panel removal, command registry)
§17 Implementation Spec Tasks.md test strategy + spec requirements ✅ Covered

Gaps (Minor)

  1. Controlled mode scrolling (§3) — ControlledScrollView for advanced sync use cases. Noted as "advanced use cases" in TUI.md; deferred.
  2. Cursor character from config (§4) — config.tui.cursorChar. Implementation detail, not a spec requirement.
  3. Streaming overflow handling (§10) — Content hash re-evaluation. Implementation-level concern.
  4. Output retention (§10) — Explicitly noted as session-layer responsibility in TUI.md; correctly excluded from TUI spec.
  5. Format customization (§6) — Marked YAGNI in TUI.md; correctly excluded from spec.
  6. Message-level filtering (§6) — Marked YAGNI in TUI.md; correctly excluded from spec.

Contradictions

None found. The spec faithfully represents the TUI.md blueprint. YAGNI items are correctly excluded. Session-layer concerns are correctly scoped out.

Verdict

PASSES. The spec is comprehensive, accurate, and well-scoped. All core requirements from TUI.md are captured. Minor gaps are either implementation details, session-layer concerns, or explicitly deferred (YAGNI). Ready for implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant