Skip to content

Tighten Settings sidebar width and restore its top inset#375

Merged
FuJacob merged 1 commit into
mainfrom
fix/settings-panel-widths-and-sidebar-inset
May 28, 2026
Merged

Tighten Settings sidebar width and restore its top inset#375
FuJacob merged 1 commit into
mainfrom
fix/settings-panel-widths-and-sidebar-inset

Conversation

@FuJacob
Copy link
Copy Markdown
Owner

@FuJacob FuJacob commented May 28, 2026

Summary

The Settings window had three pieces pulling against each other after the recent redesign work, producing the symptoms in the bug report (sidebar cut at the top, "Apple Intelligence" truncated, detail pane oversized). This PR tightens the sidebar column range back down to fit the longest label, reintroduces a small top inset so the first sidebar row aligns with the detail pane's first card, and drops the window's minWidth so the detail pane is sized to its actual content.

Validation

User requested skipping local CI on this one. Diff is two files, three pure layout-knob changes; no behavior or logic touched.

Risk / rollout notes

  • Window minimum drops from 1180pt to 780pt. Users with the window already sized larger keep their size; the minimum just lets them shrink it now.
  • Sidebar column range goes from 480/520/640 to 220/240/280. .balanced split style now has room to honor the ideal.
  • Top inset is added via .safeAreaInset(edge: .top) so it stays outside the scroll content and never overlaps a row when scrolling.

Greptile Summary

Three layout constants are adjusted to fix a regression where the Settings sidebar showed truncated labels and misaligned top insets: minWidth drops from 1180 pt to 780 pt, sidebar column range narrows from 480/520/640 to 220/240/280, and a 12 pt safeAreaInset is added to align the first sidebar row with the detail pane's top inset.

  • SettingsContainerView.swift: minWidth reduced to 780 pt and minHeight reduced from 720 pt to 560 pt; the prior 1180 pt floor was a leftover from a wider sidebar experiment.
  • SettingsSidebarView.swift: Column width range tightened to 220/240/280 to match the longest label ("Apple Intelligence"), and a 12 pt Color.clear safe-area inset is added at the top so the first sidebar row visually aligns with the detail pane's grouped Form inset.

Confidence Score: 4/5

Safe to merge — all changes are pure layout constants with no behavioral impact.

Both files only touch frame dimensions and a safeAreaInset modifier. The safeAreaInset API is available since macOS 13 and the project targets macOS 14, so there is no availability concern. The one thing worth keeping an eye on is the minHeight drop from 720 to 560 pt — it is not called out in the PR rollout notes and could bite future pane expansions if they add taller content.

No files require special attention; the minHeight reduction in SettingsContainerView.swift is worth documenting for future reference.

Important Files Changed

Filename Overview
Cotabby/UI/Settings/SettingsContainerView.swift minWidth reduced from 1180 to 780, minHeight from 720 to 560; purely layout, no logic changes
Cotabby/UI/Settings/SettingsSidebarView.swift Sidebar column width tightened to 220/240/280 and 12 pt safeAreaInset added at top; both changes are layout-only and appropriate for macOS 14

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[SettingsContainerView\nminWidth: 780pt, minHeight: 560pt] --> B[NavigationSplitView\n.balanced]
    B --> C[SettingsSidebarView\ncol: 220 / 240 / 280 pt]
    B --> D[Detail Pane\n~500 pt available]
    C --> E[.safeAreaInset top 12pt\nColor.clear overlay]
    C --> F[List rows\nFirst row aligned with detail Form]
    D --> G[GeneralPane / EnginePaneView\n/ AppleIntelligencePaneView / ...]
Loading

Fix All in Codex Fix All in Claude Code

Reviews (1): Last reviewed commit: "Tighten Settings sidebar width and resto..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Three knobs were pulling against each other after the recent Settings
redesign work:

- The sidebar `navigationSplitViewColumnWidth` had been doubled to
  480/520/640. With the window's `minWidth` of 1180pt, the .balanced
  split style was shrinking the sidebar back below 240pt to keep the
  detail pane usable — which still truncated "Apple Intelligence" to
  "Apple Intell…".
- The previous clear-color top spacer was removed, so the first
  sidebar row snapped to the toolbar baseline while the detail pane's
  grouped Form kept its own ~20pt top inset. The two columns visually
  disagreed about where content begins.
- The window's `minWidth: 1180` was sized for the doubled sidebar; with
  the sidebar tightened back down the detail pane was just oversized.

Bring the column range back to 220/240/280 (fits the longest label
without forcing .balanced to compress), reintroduce the inset as a
`.safeAreaInset(edge: .top)` so it lives outside scroll content, and
drop the container `minWidth` to 780pt so the detail pane is sized to
its actual content.
@FuJacob FuJacob merged commit b101faf into main May 28, 2026
4 checks passed
// longest label. The previous 1180pt floor came from an earlier sidebar experiment that
// doubled column widths; with the sidebar tightened back down, that floor leaves the
// detail pane oversized for the actual content.
.frame(minWidth: 780, minHeight: 560)
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 Undocumented minHeight reduction

minHeight drops from 720 pt to 560 pt alongside the minWidth change, but this isn't called out in the PR description's rollout notes. At 560 pt the window is fairly compact — if any detail pane adds taller content in a follow-up (e.g. a form with more rows), users who have the window pinned to minimum height would see truncation without a scroll view guarding the pane. Worth noting explicitly in the rollout notes and keeping in mind for future pane expansions.

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

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