Skip to content

fix: respect goose2 interface density settings - #8953

Merged
morgmart merged 1 commit into
mainfrom
kalvin/goose2-interface-density
May 1, 2026
Merged

fix: respect goose2 interface density settings#8953
morgmart merged 1 commit into
mainfrom
kalvin/goose2-interface-density

Conversation

@kalvinnchau

@kalvinnchau kalvinnchau commented May 1, 2026

Copy link
Copy Markdown
Collaborator

Category: fix
User Impact: Users can now change Goose 2 interface density and have spacing update immediately and persist across reloads.
Problem: Goose 2 exposed interface density controls, but the saved preference did not reliably affect the actual spacing tokens used by the UI. Invalid saved theme, accent, or density values could also leak into the theme state instead of falling back to defaults.
Solution: The theme layer now validates persisted preferences, applies density through a root data-density attribute, and lets CSS own the compact and spacious spacing tokens so the UI reflects the selected density consistently.

File changes

ui/goose2/index.html
Applies a saved compact or spacious density before the app renders. This prevents the initial page load from showing the default spacing before React mounts.

ui/goose2/src/features/settings/ui/tests/AppearanceSettings.test.tsx
Adds coverage for changing interface density from the appearance settings controls. The test verifies the selected value persists and updates the document root state.

ui/goose2/src/shared/styles/globals.css
Defines CSS density tokens for compact and spacious layouts. This keeps spacing behavior in the stylesheet where the UI tokens are consumed.

ui/goose2/src/shared/theme/ThemeProvider.test.tsx
Expands theme provider coverage for persisted density, invalid persisted values, accent fallback behavior, and the expected CSS density definitions.

ui/goose2/src/shared/theme/ThemeProvider.tsx
Validates persisted theme, accent, and density preferences before using them. Density changes now update the root density attribute instead of setting spacing variables inline.

Reproduction Steps

  1. Open the Goose 2 desktop UI and go to Settings > Appearance.
  2. Change Interface Density to Compact and confirm the UI spacing tightens.
  3. Change Interface Density to Spacious and confirm the UI spacing expands.
  4. Reload the app and confirm the selected density is still applied before interaction.
  5. Run the Goose 2 theme and appearance tests to confirm persisted settings and fallbacks are covered.

Screenshots/Demos

Demo: Settings > Appearance > Interface Density now updates Compact, Comfortable, and Spacious spacing states and preserves the selected state across reloads.

density.mov

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e8f160306a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@morgmart
morgmart force-pushed the kalvin/goose2-interface-density branch from e8f1603 to a08e986 Compare May 1, 2026 20:56
@morgmart
morgmart enabled auto-merge May 1, 2026 21:03
@morgmart
morgmart added this pull request to the merge queue May 1, 2026
Merged via the queue into main with commit e76640c May 1, 2026
25 checks passed
@morgmart
morgmart deleted the kalvin/goose2-interface-density branch May 1, 2026 21:15
shafqatevo pushed a commit to shafqatevo/goose that referenced this pull request Aug 7, 2026
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