feat: Implement tmux control mode multi-pane management#96
Merged
Conversation
fd4a447 to
865d22b
Compare
865d22b to
2bf83dd
Compare
Add native multi-pane terminal rendering via tmux control mode (-CC), with a three-backend architecture giving users a clear choice between Direct, TMUX Attach, and TMUX Control sessions. Backends: - Direct: ephemeral shell, ends with the app - TMUX Attach: persistent sessions via regular tmux attach - TMUX Control: persistent sessions with full pane management Pane management: - Real-time multi-pane layout via TmuxControlModeParser and list-panes - Single NSViewRepresentable owns all pane views and a separator overlay, guaranteeing correct AppKit z-order without SwiftUI ZStack ambiguity - Pane frames absorb the tmux 1-unit border gap so tiles are edge-to-edge - Navigate arrows query list-panes after select-pane to update activePaneId - Zoom detection via frame-equals-bounds; overlay filtered to active pane only when zoomed to suppress phantom separator lines Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add TermQLogger debugging reference to termq-dev skill: categories, levels, log streaming commands, and TERMQ_DEBUG file mode - Update commit-conventions skill: lean toward 1-3 commits per PR under squash-merge; expose the final feature story, not the journey of fixes - Add commit history review as step 1 in /push command Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2bf83dd to
57561b9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds native multi-pane terminal rendering via tmux control mode (
-CC), with a three-backend architecture giving users a clear choice between Direct, TMUX Attach, and TMUX Control sessions.Backends
Pane management
TmuxControlModeParserandlist-panesNSViewRepresentableowns all pane views and a separator overlay, guaranteeing correct AppKit z-order without SwiftUI ZStack ambiguitylist-panesafterselect-paneto keepactivePaneIdin sync (select-panedoes not trigger%layout-change)Logging
TermQLogger.swift: structured logging to Apple Unified Logging with categoriestmux,pane,session,focus,io,uiprint()/NSLog()calls across utilities and servicesTermQLogger.iobehindfileLoggingEnabled— terminal output is user data and must not reach Unified Logging unconditionallyTesting
make checkpassesdefaultBackendsetting🤖 Generated with Claude Code