Conversation
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>
There was a problem hiding this comment.
💡 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".
| case .splitPane: | ||
| dismissSlashMenu() | ||
| onSplitPane?() |
There was a problem hiding this comment.
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 👍 / 👎.
| _ = workspaceManager.splitFocusedPane(axis: .horizontal, newContent: content) | ||
| case .down: | ||
| _ = workspaceManager.splitFocusedPane(axis: .vertical, newContent: content) | ||
| case .newTab: | ||
| workspaceManager.addWorkspaceWith(content: content) |
There was a problem hiding this comment.
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 👍 / 👎.
| Button { | ||
| if isSelected { | ||
| selectedThreadIDs.remove(thread.id) | ||
| } else { | ||
| selectedThreadIDs.insert(thread.id) |
There was a problem hiding this comment.
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 👍 / 👎.
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>
Summary
Test plan
🤖 Generated with Claude Code