[PR #6448] feat(tui): [EXPERIMENTAL] Vim-style window system with extensible plugin views #11909

Open
opened 2026-02-16 18:16:51 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/anomalyco/opencode/pull/6448

State: open
Merged: No


⚠️ EXPERIMENTAL: Proof-of-concept for discussion. Not ready for merge.

Relates to #6032

To support NERDTree-like plugins (file browsers, symbol outlines, git panels) that render persistent side panels, we need this window system refactor. The current single-view design can't accommodate plugin views.


https://github.com/user-attachments/assets/7e2b5332-6452-4de8-a5af-0e6217c691f8

Vim-Style Window System

Vim-style splits with Ctrl+X + hjkl navigation. Independent sessions per pane. Extensible plugin views (Tree/List/Text/Form) enable NERDTree-style browsers and custom tool windows.

Why This Matters

Platform, Not Chat Client: Run a session in one pane, browse files in another, review diffs in a third.

Plugin-First Architecture: Plugins register views via ViewRegistry.register(id, view), users open them with layout.navigateFocusedWindow(id). Window system handles focus, borders, resizing.

Future-Proof: Layout tree supports floating windows, tabs, saved layouts without architectural changes.


Keybindings

Action Keybind
Split horizontal Ctrl+X -
Split vertical Ctrl+X |
Focus left/down/up/right Ctrl+X H/J/K/L
Close window Ctrl+X Q
Equalize Ctrl+X =
Resize Ctrl+X +/_/>/<

Known Limitations

  • Resize keybindings need more testing
  • Window state not persisted across restarts
  • Some SolidJS timing quirks (workarounds in place)
**Original Pull Request:** https://github.com/anomalyco/opencode/pull/6448 **State:** open **Merged:** No --- > **⚠️ EXPERIMENTAL**: Proof-of-concept for discussion. Not ready for merge. Relates to #6032 > To support NERDTree-like plugins (file browsers, symbol outlines, git panels) that render persistent side panels, we need this window system refactor. The current single-view design can't accommodate plugin views. --- https://github.com/user-attachments/assets/7e2b5332-6452-4de8-a5af-0e6217c691f8 ## Vim-Style Window System Vim-style splits with `Ctrl+X` + `hjkl` navigation. Independent sessions per pane. Extensible plugin views (Tree/List/Text/Form) enable NERDTree-style browsers and custom tool windows. ### Why This Matters **Platform, Not Chat Client**: Run a session in one pane, browse files in another, review diffs in a third. **Plugin-First Architecture**: Plugins register views via `ViewRegistry.register(id, view)`, users open them with `layout.navigateFocusedWindow(id)`. Window system handles focus, borders, resizing. **Future-Proof**: Layout tree supports floating windows, tabs, saved layouts without architectural changes. --- ### Keybindings | Action | Keybind | |--------|---------| | Split horizontal | `Ctrl+X -` | | Split vertical | `Ctrl+X \|` | | Focus left/down/up/right | `Ctrl+X H/J/K/L` | | Close window | `Ctrl+X Q` | | Equalize | `Ctrl+X =` | | Resize | `Ctrl+X +/_/>/<` | --- ### Known Limitations - Resize keybindings need more testing - Window state not persisted across restarts - Some SolidJS timing quirks (workarounds in place)
yindo added the pull-request label 2026-02-16 18:16:51 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#11909