feat: add optional pane border toggle#34
Open
mvanhorn wants to merge 1 commit into
Open
Conversation
Add a persisted appearance setting to show or hide pane borders. Borders default to on, preserving current behavior. When disabled, the inset border stroke and focus glow are suppressed while pane titles stay visible. The flag round-trips through the TOML config, is exposed as a switch in Appearance settings, and propagates to live pane rendering. Refs dedene#32 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Yae5z4ep7qsZ7z9xDmiam7
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 an Appearance setting to toggle pane borders on or off. A new
showPaneBorderspreference (default on, preserving today's look) is persisted in the config TOML, surfaced as a switch in Settings -> Appearance, and wired into pane rendering so that when borders are disabled the inset border stroke and its focus glow are suppressed. Pane titles / border-context labels stay visible regardless of the setting.This covers the "optional borders" half of #32. The second idea floated in the issue (using borders to surface sibling-tab / worklane indicators with clickable arrows) is a larger UX design and is intentionally left for a separate change.
Why this matters
As described in #32, the borders around panes take up screen real estate and, like Ghostty and other terminals that render borderless panes, some users prefer to reclaim that space. This gives them a one-switch way to turn borders off without losing the per-pane title.
Testing
ZenttyLogicTests/PaneContainerViewWorklaneBorderTests: withshowPaneBorders == falsethe inset border color and focus glow are both cleared (even with a worklane color set); with the defaulttruethe focused theme border still renders. Existing border/glow assertions remain unchanged.ZenttyLogicTests/AppConfigStoreTests:showPaneBordersround-trips through the TOML encode/decode (show_pane_borders = false), the default stays out of the serialized config, and an older config missing the key decodes back to thetruedefault.Note on local verification: the full app test target could not be built in my environment because the locally vendored
GhosttyKit.xcframeworkis missing newerghostty_surface_*symbols that upstreamLibghosttySurface.swiftalready references, and the host target requires Mac Development signing. The edited Swift files all passswiftc -parse, and the new logic is a faithful mirror of the existingsyncOpenCodeThemeWithTerminal/smoothScrollingEnabledpatterns. Please run the Logic test suite in CI to confirm.A known follow-up: worklane-peek neighbor preview lanes do not yet carry the flag, so a peeked neighbor pane can still draw borders when the setting is off. The active canvas honors the setting correctly; the peek preview surface can be threaded in a follow-up.
Refs #32