Skip to content

Pane chrome bar, PaneLauncher, and UI redesigns#11

Merged
max4c merged 1 commit intomainfrom
dev
Apr 4, 2026
Merged

Pane chrome bar, PaneLauncher, and UI redesigns#11
max4c merged 1 commit intomainfrom
dev

Conversation

@max4c
Copy link
Copy Markdown
Owner

@max4c max4c commented Apr 4, 2026

Summary

  • Replace floating pane action overlays with fixed 30px chrome bar (icon, label, breadcrumbs, actions)
  • New PaneLauncher component: unified search + direction toggle, accessible from chrome bar, Cmd+K, and /split
  • Chat landing page, calendar header, mail V2, and terminal toolbar redesigns
  • Terminal replacement guard with amber double-action confirmation
  • Cmd+Option+1-9 pane focus switching

Test plan

  • Single pane: chrome bar shows, only split button visible, no blue accent
  • Multi-pane: focused pane has steel blue accent, unfocused muted with hover-reveal buttons
  • Split button opens PaneLauncher popover with search, direction toggle, keyboard nav
  • Cmd+K opens wide PaneLauncher, two-step flow (search → "Open where?")
  • "Open Here" navigates in place, loads file content correctly
  • Close/pop-out buttons work, drag chrome bar to swap panes
  • Terminal with active process shows amber warning before replacement
  • Mail rows render with three-tier contrast, clicking opens thread detail
  • Chat empty state shows centered "Welcome, Max" with suggestions
  • /split in editor shows in slash command menu

🤖 Generated with Claude Code

Replace floating pane action overlays with a fixed 30px chrome bar at the top of each pane. The chrome bar shows pane type icon, label, breadcrumbs (for document pages), and action buttons (split, pop-out, close). Focus state indicated by steel blue accent on multi-pane layouts.

New PaneLauncher component provides unified search + direction toggle (Right/Down/New Tab) for creating panes, accessible from three entry points: chrome bar split button, Cmd+K modal (two-step: search then pick direction), and /split slash command.

Additional changes:
- Chat landing page redesigned (centered Welcome, inline composer)
- Calendar header compacted (date merged into toolbar, account avatar, sidebar toggle)
- Mail V2 redesign (three-tier contrast, clean sender names, mono dates, inline search)
- Mail thread detail view wired into HSplitView
- Terminal toolbar removed (chrome bar handles it)
- Cmd+Option+1-9 for pane focus switching
- Terminal replacement guard (amber chrome bar warning, double-action to confirm)
- Breadcrumbs moved into chrome bar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b56a1fb3cc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1044 to +1046
case .splitPane:
dismissSlashMenu()
onSplitPane?()
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Wire /split slash action to a real launcher handler

The new .splitPane slash command only executes onSplitPane?(), but this callback is not wired anywhere in the document setup flow (e.g., wireUpDocumentCallbacks still only sets the other handlers), so /split currently just closes the slash menu and performs no action. That makes the newly added slash command path non-functional for normal editor usage.

Useful? React with 👍 / 👎.

Comment on lines +617 to +621
_ = workspaceManager.splitFocusedPane(axis: .horizontal, newContent: content)
case .down:
_ = workspaceManager.splitFocusedPane(axis: .vertical, newContent: content)
case .newTab:
workspaceManager.addWorkspaceWith(content: content)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Load file data after split-launcher page selection

When the wide pane launcher chooses a page and the user picks split/new-tab, this branch only calls splitFocusedPane/addWorkspaceWith and never loads disk content for that file. As a result, page-based pane launches create document panes without the corresponding BlockDocument, so the editor can render as an empty pane instead of opening the selected page. The in-place branch already handles this correctly via navigateToFilePath.

Useful? React with 👍 / 👎.

Comment on lines +399 to +403
Button {
if isSelected {
selectedThreadIDs.remove(thread.id)
} else {
selectedThreadIDs.insert(thread.id)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Avoid nested row and checkbox Button interactions

The thread row now contains a checkbox Button, but each row is also wrapped by an outer Button in threadList to open the thread. Nested buttons in SwiftUI are not reliably independently clickable, so selecting the checkbox can trigger row-open behavior (or fail to toggle selection), which breaks the new multi-select workflow.

Useful? React with 👍 / 👎.

@max4c max4c merged commit 68472df into main Apr 4, 2026
1 check failed
max4c added a commit that referenced this pull request Apr 4, 2026
ContentView references TerminalColorSchemeMode, terminalLightTheme,
terminalDarkTheme, applyTheme, and applyColorScheme — all introduced
in the PR #11 merge but never committed. This adds the missing pieces:
AppSettings terminal properties, TerminalManager theme/color-scheme
methods, TerminalSettingsView, and sidebar/settings wiring.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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