Skip to content

Larger Settings window, wider sidebar, align sidebar top with detail#374

Merged
FuJacob merged 1 commit into
mainfrom
fix/settings-window-size
May 28, 2026
Merged

Larger Settings window, wider sidebar, align sidebar top with detail#374
FuJacob merged 1 commit into
mainfrom
fix/settings-window-size

Conversation

@FuJacob
Copy link
Copy Markdown
Owner

@FuJacob FuJacob commented May 28, 2026

Default 1320x820 / min 1180x720 so content doesn't get cut. Sidebar column doubled to 480/520/640 so labels fit. Removed the clear-color top spacer that was pushing the General row well below the detail pane's first card. Autosave name bumped to V3 to give existing dogfooders the new default.

Greptile Summary

This PR widens the redesigned Settings window (default 1320×820, min 1180×720), doubles the sidebar column width so labels no longer truncate, removes a clear-color spacer that was misaligning the sidebar's first row with the detail pane, and bumps the autosave name to V3 so existing users receive the new default frame.

  • SettingsCoordinator.swift: initialFrame and minSize both enlarged; autosaveName incremented to "CotabbySettingsWindowV3" to force a fresh default for users who already had a V2 saved frame.
  • SettingsContainerView.swift: SwiftUI .frame constraint updated to minWidth: 1180, minHeight: 720, keeping it in sync with the coordinator's NSWindow.minSize.
  • SettingsSidebarView.swift: Color.clear top spacer removed and .navigationSplitViewColumnWidth raised from min: 240/ideal: 260/max: 320 to min: 480/ideal: 520/max: 640.

Confidence Score: 4/5

Safe to merge — changes are purely layout/sizing with no logic, data, or API surface touched.

All three files contain only numeric dimension constants and one removed spacer view. The autosave name bump correctly isolates dogfooders from their old frame. The two observations (sidebar floor being very wide, and the initial frame being close to the limits of a 13" MacBook display) are cosmetic and do not affect correctness or data.

SettingsSidebarView.swift — the 480 px minimum sidebar width is worth a second look against the full label inventory; SettingsCoordinator.swift — the 1320 px initial frame may feel large on entry-level MacBook displays.

Important Files Changed

Filename Overview
Cotabby/App/Coordinators/SettingsCoordinator.swift Bumps initial frame to 1320×820, minimum size to 1180×720, and autosave name to V3 so existing users get the new defaults instead of the old V2 frame.
Cotabby/UI/Settings/SettingsContainerView.swift Updates SwiftUI frame constraint to minWidth 1180 / minHeight 720, keeping it consistent with the coordinator's NSWindow minSize.
Cotabby/UI/Settings/SettingsSidebarView.swift Removes the clear-color top spacer and triples the minimum sidebar column width (240→480), which could feel overly wide on the minimum-sized window.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[showSettings called] --> B{autosave\nV3 frame\nexists?}
    B -- yes --> C[Restore saved frame]
    B -- no --> D[Apply initialFrame\n1320 x 820]
    C --> E[NSWindow\nminSize: 1180 x 720]
    D --> E
    E --> F[window.center]
    F --> G[NavigationSplitView\nbalanced style]
    G --> H[Sidebar column\nmin:480 ideal:520 max:640]
    G --> I[Detail pane\nremaining width]
    H --> J[SwiftUI frame\nminWidth:1180 minHeight:720]
    I --> J
Loading

Fix All in Codex Fix All in Claude Code

Reviews (1): Last reviewed commit: "Larger Settings window, wider sidebar, a..." | Re-trigger Greptile

Greptile also left 2 inline comments on this PR.

@FuJacob FuJacob merged commit 77f9dc8 into main May 28, 2026
4 checks passed
@FuJacob FuJacob deleted the fix/settings-window-size branch May 28, 2026 10:58
// first row well below where the detail pane's first card starts, breaking visual
// alignment between sidebar and content. The grouped form's own top inset on the detail
// side handles breathing room; the sidebar lines up with it naturally.
.navigationSplitViewColumnWidth(min: 480, ideal: 520, max: 640)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Sidebar min width may be overly generous

480 px is roughly double what the widest label ("Apple Intelligence" at ~160 px in SF Pro 13pt) actually needs. At minimum window width (1180 px), the sidebar already occupies 40 % of the total surface area, leaving the detail pane only ~700 px. If more sidebar items are added or the window is pushed toward its minimum, this ratio will keep squeezing the content side. Consider whether something closer to 280–320 px min (with a larger ideal/max if you want the default to be wider) would give the labels room without anchoring such a large floor.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Codex Fix in Claude Code

Comment on lines +97 to +98
initialFrame = CGRect(x: 0, y: 0, width: 1320, height: 820)
minSize = NSSize(width: 1180, height: 720)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Initial frame may overflow smaller MacBook displays

The new initialFrame of 1320×820 is larger than the effective resolution of a 13" MacBook Air at default scaling (~1440×900 usable, but with menu bar and Dock that can leave as little as ~1440×840 of available space). AppKit will clamp the window when center() is called, but a user on such a machine will see the window immediately span nearly their full screen on first open. The minimum size of 1180×720 is the more important floor — consider whether the initialFrame default could be set closer to it (e.g. 1180–1200 px wide) so the first-launch experience is less jarring on small displays while still allowing users to expand freely.

Fix in Codex Fix in Claude Code

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