Skip to content

feat: add optional pane border toggle#34

Open
mvanhorn wants to merge 1 commit into
dedene:mainfrom
mvanhorn:feat/32-pane-border-toggle
Open

feat: add optional pane border toggle#34
mvanhorn wants to merge 1 commit into
dedene:mainfrom
mvanhorn:feat/32-pane-border-toggle

Conversation

@mvanhorn

Copy link
Copy Markdown
Contributor

Summary

Adds an Appearance setting to toggle pane borders on or off. A new showPaneBorders preference (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: with showPaneBorders == false the inset border color and focus glow are both cleared (even with a worklane color set); with the default true the focused theme border still renders. Existing border/glow assertions remain unchanged.
  • ZenttyLogicTests/AppConfigStoreTests: showPaneBorders round-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 the true default.

Note on local verification: the full app test target could not be built in my environment because the locally vendored GhosttyKit.xcframework is missing newer ghostty_surface_* symbols that upstream LibghosttySurface.swift already references, and the host target requires Mac Development signing. The edited Swift files all pass swiftc -parse, and the new logic is a faithful mirror of the existing syncOpenCodeThemeWithTerminal / smoothScrollingEnabled patterns. 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

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
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