Skip to content

Size settings window to content and make tabs scrollable - #131

Merged
austin-smith merged 3 commits into
austin-smith:mainfrom
tomholford:size-settings-window-to-content
Aug 12, 2026
Merged

Size settings window to content and make tabs scrollable#131
austin-smith merged 3 commits into
austin-smith:mainfrom
tomholford:size-settings-window-to-content

Conversation

@tomholford

@tomholford tomholford commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Removed the maxHeight: .infinity frames and trailing Spacer()s that made every macOS settings tab vertically greedy (macOSSettingsView.swift SettingsServerTab, macOSGeneralSettingsTab.swift)
  • Wrapped each tab's content in a ScrollView with .scrollBounceBehavior(.basedOnSize) so tabs taller than the screen scroll instead of clipping
  • Settings scene: added .windowResizability(.contentSize) and minHeight: 320 so the window hugs content but can't collapse
  • Disconnected state (ContentUnavailableView) keeps a 250pt minimum height instead of filling the window

Why

The Settings window opened at full screen height regardless of tab content because the tabs reported unbounded ideal height. With sizing fixed, long tabs (e.g. General on smaller displays) also needed scrolling, since content taller than the screen was clipped with no way to reach it.

Preview

Before

Static image: Settings > General overflowed off screen, not scrollable

image

After

Video capture: Settings > General content is scrollable

bitdream-settings.mov

Validation

  • macOS Debug build succeeds (xcodebuild, signing disabled locally)
  • swiftlint lint --quiet clean
  • Manual: window opens at content height on each tab; General tab scrolls to the bottom on a MacBook Air display; disconnected state keeps sensible proportions
  • Connected-server tabs (Torrents / Speed Limits / Network) not manually tested: the local unsigned debug build cannot save credentials to the keychain. They use the same SettingsServerTab wrapper as the verified disconnected state.

Disclosure

Claude Fable & Grok 4.5 were used in the research, design, implementation, and testing of this PR. I steered and provided feedback and changes as necessary.

@tomholford
tomholford marked this pull request as ready for review August 7, 2026 15:47

@austin-smith austin-smith left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread BitDream/BitDreamApp.swift Outdated
settings tabs claimed unbounded height via maxHeight infinity and
trailing spacers, so the settings window opened at full screen height
regardless of content. size the window to content, wrap each tab in a
scroll view for short screens, and keep a minimum window height.
@tomholford
tomholford force-pushed the size-settings-window-to-content branch from 733f479 to f4d1f93 Compare August 9, 2026 20:02
@austin-smith
austin-smith merged commit 59ab267 into austin-smith:main Aug 12, 2026
3 checks passed
@tomholford
tomholford deleted the size-settings-window-to-content branch August 13, 2026 17:07
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.

2 participants