feat: dynamic tabbed workspace with multi-file and multi-terminal support

Replaces the fixed 3-tab workspace (Editor/Diff/Terminal) with a VS Code-style
dynamic tab system. Users can now open multiple files, terminals, and diffs in
closeable tabs with type icons, modified indicators, and file deduplication.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-24 14:33:47 +01:00
co-authored by Claude Opus 4.6
parent cd949e4d9c
commit a14ee82883
12 changed files with 623 additions and 376 deletions
+1 -9
View File
@@ -383,8 +383,7 @@ class TestTerminalPane:
pane = TerminalPane(cwd=tmp_path)
assert pane.cwd == tmp_path
assert pane._history == []
assert pane._history_index == 0
assert pane._terminal is None
def test_default_cwd(self):
"""Test default cwd is current directory."""
@@ -401,13 +400,6 @@ class TestTerminalPane:
pane._cwd = tmp_path
assert pane.cwd == tmp_path
def test_command_submitted_message(self):
"""Test CommandSubmitted message."""
from clide.widgets.components.terminal_pane import TerminalPane
msg = TerminalPane.CommandSubmitted("ls -la")
assert msg.command == "ls -la"
class TestProblemsView:
"""Tests for ProblemsView component."""