Release v1.01 Enhanced: Vi Control, TUI Gen5, Core Stability
This commit is contained in:
54
Documentation/implementation_plan_wiring.md
Normal file
54
Documentation/implementation_plan_wiring.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# User Request: Wire Power Features & Clean UI
|
||||
|
||||
The goal is to finalize the implementation of "Power Features" and "Clean UI" by wiring existing components into the main TUI (`bin/opencode-ink.mjs`) and creating the missing Fuzzy Finder.
|
||||
|
||||
## User Review Required
|
||||
> [!NOTE]
|
||||
> This plan modifies the core `opencode-ink.mjs` file.
|
||||
> It introduces a new `FuzzyFinder` component and updates the Sidebar and Chat rendering.
|
||||
|
||||
## Proposed Changes
|
||||
|
||||
### 1. New Component: Fuzzy File Finder
|
||||
**File**: `bin/ui/components/FuzzyFinder.mjs` [NEW]
|
||||
- Create a fuzzy file finder overlay.
|
||||
- Uses `glob` or recursive scan to get file list.
|
||||
- Filters list based on user input.
|
||||
- Displays results with `ink-select-input`.
|
||||
|
||||
### 2. Sidebar Integration: Todo List
|
||||
**File**: `bin/opencode-ink.mjs`
|
||||
- Import `CleanTodoList` from `./ui/components/CleanTodoList.mjs`.
|
||||
- Import `scanTodos` from `../lib/todo-scanner.mjs`.
|
||||
- Add state: `const [todos, setTodos] = useState([])`.
|
||||
- Add effect: Run `scanTodos` on startup and file changes.
|
||||
- Pass `todos` prop to `PremiumSidebar`.
|
||||
|
||||
**File**: `bin/ui/components/PremiumSidebar.mjs`
|
||||
- Accept `todos` prop.
|
||||
- Render `CleanTodoList` in a new section (or replace Shortcuts if crowded, or collapsible).
|
||||
|
||||
### 3. Chat UI Clean-up: ChatBubble
|
||||
**File**: `bin/opencode-ink.mjs`
|
||||
- Import `ChatBubble` from `./ui/components/ChatBubble.mjs`.
|
||||
- Update `ViewportMessage` (internal component) or `ScrollableChat` to render `ChatBubble` instead of raw `Box`/`Text`.
|
||||
- logic to route `system` messages through `ChatBubble` with `role="system"`.
|
||||
|
||||
### 4. Theme Switcher
|
||||
**File**: `bin/opencode-ink.mjs`
|
||||
- Convert `theme` constant to state: `const [activeTheme, setActiveTheme] = useState(THEMES.dracula)`.
|
||||
- Add `/theme` command to `showCommandPalette` or command processor to allow switching.
|
||||
- Ensure `activeTheme` is passed to components that need it (or they import it - might need refactoring if they import static `theme`).
|
||||
- *Note*: `tui-theme.mjs` exports a static `theme`. We might need to implement a Context or pass theme props. For now, we will use a simple state and pass it where possible, or update the global if `ink` allows (unlikely pure global).
|
||||
- *Strategy*: We will pass `theme` as prop to `PremiumSidebar`, `ChatBubble`, etc.
|
||||
|
||||
## Verification Plan
|
||||
|
||||
### Automated Tests
|
||||
- None currently available for TUI visual regression.
|
||||
|
||||
### Manual Verification
|
||||
1. **Fuzzy Finder**: Press `Ctrl+P` (or typed command `/find`). Type `server`. Verify `server.js` is found.
|
||||
2. **Todo List**: Check Sidebar for "Tasks" section. Verify it shows TODOs from project files.
|
||||
3. **Chat UI**: Send a message "hello". Verify user message is right-aligned/styled. Response is left-aligned with clean gutter.
|
||||
4. **Themes**: Type `/theme monokai`. Verify Sidebar colors change.
|
||||
Reference in New Issue
Block a user