Respect split-preserve-zoom config when cycling splits#241
Merged
sbertix merged 1 commit intosupabitapp:mainfrom Apr 15, 2026
Merged
Respect split-preserve-zoom config when cycling splits#241sbertix merged 1 commit intosupabitapp:mainfrom
split-preserve-zoom config when cycling splits#241sbertix merged 1 commit intosupabitapp:mainfrom
Conversation
sbertix
reviewed
Apr 15, 2026
sbertix
reviewed
Apr 15, 2026
Contributor
Author
|
Addressed review feedback in 1710303:
Validation: scoped swiftlint passed. Local xcodebuild/make build-app currently fail in swift-composable-architecture under my local Xcode/toolchain so relying on CI here |
Upstream Ghostty (v1.3.0+) has split-preserve-zoom = navigation to keep zoom state when navigating between splits. Supacode's split management bypasses BaseTerminalController so this config was never read. Now GhosttyRuntime reads the setting and gotoSplit honors it: zoom transfers to the next pane when enabled, unzooms when not.
8f7c2b6 to
1710303
Compare
Whoaa512
added a commit
to Whoaa512/supacode
that referenced
this pull request
Apr 16, 2026
* fix/unfocused-split-opacity: (24 commits) add xcbeautify to mise.toml so local builds work without separate install install dev build as supacode-dev.app to coexist with homebrew install ignore legacy Ghostty build outputs work around Xcode 26.4 local builds Respect unfocused-split-opacity from Ghostty config Add multiple user-defined scripts per repository (supabitapp#246) Respect ghostty split-preserve-zoom config when cycling splits (supabitapp#241) Improve open worktree UX and rename openFinder to openWorktree (supabitapp#247) Add RubyMine editor support (supabitapp#248) fix(ci): skip tuist auth on fork pull requests stuff Align trailing comma tooling cache Split dependency inspection CI Switch Tuist CI auth to OIDC simplify build output formatting simplify app tuist dependencies simplify tuist package linkage restore required tuist package overrides remove package framework search paths ... # Conflicts: # supacode/Features/Repositories/Views/WorktreeRow.swift # supacode/Features/Repositories/Views/WorktreeRowsView.swift
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.
Supacode reimplements split management in
WorktreeTerminalStaterather than using Ghostty'sBaseTerminalController. This means the upstreamsplit-preserve-zoomconfig option (added in Ghostty v1.3.0) was never read — cycling splits while zoomed always unzoomed.This PR adds support for
split-preserve-zoom = navigationso thatgoto_split:next/goto_split:previoustransfers the zoom to the target pane instead of unzooming, matching upstream Ghostty's behavior inBaseTerminalController.Changes
GhosttyRuntime.swift— readsplit-preserve-zoomfrom ghostty config (bit 0 = navigation)WorktreeTerminalState.swift—gotoSplitchecks config: preserves zoom when enabled, unzooms when notSplitTreeTests.swift— test covering zoom transfer on focus cyclingReference
Upstream implementation:
BaseTerminalController.swiftL645-L651