Skip to content

Conversation

@vultuk
Copy link
Owner

@vultuk vultuk commented Sep 14, 2025

This PR addresses multiple UX regressions:

  • Restore global tabs; panes are optional (not forced).
  • Do not auto-enable tiled mode on load; respect persisted state.
  • Keep global tabs visible in tiled mode (VS Code-like: tabs target active pane).
  • Pane "+" opens a session picker (Shift+click opens folder browser).
  • Split-pane terminals now replay output buffer on join (render 'session_joined' output).
  • Minor CSS cleanup: remove rule that hid tabs in tiled mode.

This resolves:

  • Single pane taking half width (already fixed in 3.0.3 overlay change).
  • Switching tabs creating the impression of a new session (was showing empty because we didn't replay buffer).
  • Closing a tab now deletes the session and removes it from all panes.
  • New panes can attach to existing sessions via picker; sessions work immediately.
  • Pane layout persists across refresh without forcing tiled mode.

…cts existing sessions; show session history on join in split panes
Copilot AI review requested due to automatic review settings September 14, 2025 19:59
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR restores global tabs functionality and improves pane stability in the UI by making multi-pane mode optional rather than forced. The changes address several UX regressions related to tab visibility, session management, and pane behavior.

Key changes:

  • Remove forced multi-pane mode activation, making it respect user preferences
  • Keep global tabs visible in all modes (single pane and tiled)
  • Add session buffer replay when joining existing sessions in split panes

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/public/style.css Removes CSS rules that forcibly hid global tabs in tiled mode
src/public/panes.js Adds session buffer replay on join and improves pane "+" button behavior
src/public/app.js Removes auto-enabling of multi-pane mode to respect user preferences

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment on lines +85 to +86
const joined = msg.outputBuffer.join('');
const filtered = joined.replace(/\x1b\[\[?[IO]/g, '');
Copy link

Copilot AI Sep 14, 2025

Choose a reason for hiding this comment

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

The regex pattern /\x1b\[\[?[IO]/g uses a magic regular expression without explanation. Consider adding a comment explaining what ANSI escape sequences are being filtered, or extract this to a named constant like ANSI_IO_FILTER_REGEX.

Copilot uses AI. Check for mistakes.
Comment on lines +749 to +754
// Shift-click to create a new session directly; normal click opens session picker
if (e.shiftKey) {
this.app?.showFolderBrowser?.();
} else {
this.openAddMenu(idx, btn);
}
Copy link

Copilot AI Sep 14, 2025

Choose a reason for hiding this comment

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

The openAddMenu method is called but not defined in the visible code context. Verify that this method exists in the PaneManager class, as calling an undefined method will result in a runtime error.

Copilot uses AI. Check for mistakes.
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.

2 participants