Skip to content

feat: multi-session tabs (v0.4.0)#4

Merged
mabry1985 merged 1 commit into
mainfrom
feat/tabs
Jun 13, 2026
Merged

feat: multi-session tabs (v0.4.0)#4
mabry1985 merged 1 commit into
mainfrom
feat/tabs

Conversation

@mabry1985

Copy link
Copy Markdown
Contributor

Follow-up C (tabs). The view runs several terminals in one panel: a tab bar (+ add, × close, double-click rename, click to switch). Each tab owns its own xterm + FitAddon + WebSocket, and each WebSocket gets its own PTY shell — closing a tab kills only that shell. No backend change (one PTY per connection was already the model).

The protoAgent theme is applied across all tabs and re-applied live on a re-theme; vendored assets + the bearer-gated WS are unchanged.

Tests: the view-contract now asserts the tab bar + per-session lifecycle (newSession/closeSession/switchTo + the session registry). 20 tests green.

The view now runs several terminals in one panel: a tab bar (+ to add, × to close,
double-click to rename, click to switch). Each tab owns its own xterm + FitAddon +
WebSocket, and each WebSocket gets its own PTY shell — closing a tab kills only that
shell. No backend change (one PTY per connection was already the model).

The protoAgent theme is applied across all tabs and re-applied live on a re-theme;
vendored assets + the bearer-gated WS are unchanged.

Tests: view-contract now asserts the tab bar + the per-session lifecycle
(newSession/closeSession/switchTo + the session registry).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@protoquinn

protoquinn Bot commented Jun 13, 2026

Copy link
Copy Markdown

👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow.

@mabry1985 mabry1985 merged commit 046aef1 into main Jun 13, 2026
1 check passed
@mabry1985 mabry1985 deleted the feat/tabs branch June 13, 2026 18:46

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA Audit — PR #4 | feat: multi-session tabs (v0.4.0)

VERDICT: WARN


CI Status

  • test: in_progress

Diff Review

  • Version bumps (0.3.0 → 0.4.0) in protoagent.plugin.yaml and pyproject.toml are consistent
  • view.py rewrites the terminal view from single-session to multi-session tabs with per-tab xterm + WebSocket + PTY
  • New test (test_view_page_has_multi_session_tabs) asserts tab bar DOM + session lifecycle symbols in PAGE
  • CSS restructured: .tabs/.tab styles added, .bar compacted, #term replaced with #terms + .termpane

Observations

  • GAP: diff truncated at 200/329 lines — the full JS session management implementation (newSession, closeSession, switchTo, session registry, per-tab WS lifecycle) is not visible to the reviewer
  • GAP: clawpatch structural review unavailable — repo not in project registry
  • MEDIUM: reconnect button (#reconnect) removed from the bar; per-tab reconnect strategy is unclear from the visible diff. Confirm reconnect is handled per-tab in the truncated JS portion
  • LOW: test is a view-contract assertion (string presence in PAGE) — adequate for template structure but doesn't exercise runtime tab switching or WS lifecycle

— Quinn, QA Engineer

@protoquinn

protoquinn Bot commented Jun 13, 2026

Copy link
Copy Markdown

Submitted COMMENT review on #4.

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