Skip to content

feat(design): simplify color theme settings - #134

Merged
tkhwang merged 3 commits into
mainfrom
feat/update-0622-part3
Jun 22, 2026
Merged

feat(design): simplify color theme settings#134
tkhwang merged 3 commits into
mainfrom
feat/update-0622-part3

Conversation

@tkhwang

@tkhwang tkhwang commented Jun 22, 2026

Copy link
Copy Markdown
Owner
  • Remove visible color family grid from theme settings
  • Consolidate color palettes into a single curated companion palette
  • Update dark mode to Catppuccin-inspired surfaces with lavender/pink accents
  • Update light mode to white/neutral surfaces with dark slate text and lavender accent
  • Migrate legacy theme families and concrete theme values to the new Companion palette
  • Remove visible live status chip from top toolbar, keeping it screen-reader-only
  • Clarify that routine Updated/Ready text stays out of the visible top line

This change simplifies the user experience for color theme selection by reducing complexity in the settings. It also refines the visual language for both dark and light modes, aligning with a more modern aesthetic. The removal of the visible live status chip reduces visual clutter while maintaining accessibility for screen readers.

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced simplified theme selection with the new Companion palette offering curated Catppuccin-inspired dark and light modes
  • Improvements

    • Streamlined Settings interface by removing theme family selector grid for cleaner UI
    • Enhanced accessibility with screen-reader-friendly status announcements
    • Updated color palette to whiter neutrals in light mode with subtle lavender accents
  • Changes

    • Updated startup setting label from "Launch at login" to "Open at Login"
    • Changed default theme to Companion (dark mode)

- Remove visible color family grid from theme settings
- Consolidate color palettes into a single curated companion palette
- Update dark mode to Catppuccin-inspired surfaces with lavender/pink accents
- Update light mode to white/neutral surfaces with dark slate text and lavender accent
- Migrate legacy theme families and concrete theme values to the new Companion palette
- Remove visible live status chip from top toolbar, keeping it screen-reader-only
- Clarify that routine `Updated`/`Ready` text stays out of the visible top line

This change simplifies the user experience for color theme selection by reducing complexity in the settings. It also refines the visual language for both dark and light modes, aligning with a more modern aesthetic. The removal of the visible live status chip reduces visual clutter while maintaining accessibility for screen readers.
@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@tkhwang, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 34 minutes and 46 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c7ff3046-de64-4dd2-bc6c-27cabd72f2bf

📥 Commits

Reviewing files that changed from the base of the PR and between 20b83a1 and bb059c5.

📒 Files selected for processing (6)
  • DESIGN.md
  • apps/companion/src/App.tsx
  • apps/companion/src/styles/chrome.css
  • apps/companion/src/ui/AppSummary.tsx
  • apps/companion/src/ui/StatusAlert.tsx
  • apps/companion/tests/app-shell.test.tsx
📝 Walkthrough

Walkthrough

The companion app's theme system is consolidated from multiple families (solarized, dracula, catppuccin, github, gruvbox, nord) down to a single "companion" family with two themes: catppuccin-dark and breakfast-light. The visible toolbar status chip is replaced with a screen-reader-only element. A new SettingsView wrapper component is introduced, the theme family picker grid is removed from SettingsPanel, and CSS palettes are updated to match the new theme set.

Changes

Companion Theme Consolidation and Settings Rework

Layer / File(s) Summary
Theme data model: single family, two themes
apps/companion/src/application/themePreferences.ts, apps/companion/src/application/preferences.ts
COMPANION_THEME_VALUES is reduced to catppuccin-dark and breakfast-light; COMPANION_THEME_FAMILY_VALUES collapses to "companion"; resolution switches from family+mode tables to Set/record lookups; default themeFamily and all legacy migration mappings converge to "companion".
CSS palette: warm defaults, catppuccin-dark, breakfast-light
apps/companion/src/styles/base.css, apps/companion/src/styles/themes.css, apps/companion/src/styles/settings.css
base.css root/body/main custom properties shift to a warm palette; themes.css drops solarized-dark/dracula-dark, adds button and --shell-topline gradient variables to catppuccin-dark, and introduces a full breakfast-light theme rule; active theme-mode button loses border-color/color overrides.
Toolbar status: visible chip → screen-reader-only
apps/companion/src/styles/chrome.css, apps/companion/src/ui/AppToolbar.tsx, apps/companion/src/application/useCompanionSettings.ts
.toolbar-status visible pill is replaced by .toolbar-status-sr (clipped, 1px, absolute); AppToolbar className is updated; updateLaunchAtLogin status strings change to "Open at Login enabled/disabled".
Settings UI: SettingsView wrapper, remove theme family grid
apps/companion/src/ui/SettingsView.tsx, apps/companion/src/App.tsx, apps/companion/src/ui/SettingsPanel.tsx
New SettingsView component wraps and forwards props to SettingsPanel; App.tsx routes the settings view to SettingsView; SettingsPanel removes THEME_SWATCH_CHIPS, theme family picker grid, and dynamic theme name hint—replacing them with a fixed "Palette: Catppuccin Dark / White Light" string; mode button handler now sets themeFamily: "companion"; label text changes from "Launch at login" to "Open at Login".
Tests: theme model, settings panel, app shell
apps/companion/tests/preferences.test.ts, apps/companion/tests/settings-panel.test.tsx, apps/companion/tests/app-shell.test.tsx
Preference tests updated for themeFamily: "companion" defaults, collapsed migration paths, two curated theme options, and new resolvedCompanionTheme outputs; settings-panel tests rewritten for mode-only controls and fixed palette text; app-shell tests updated for catppuccin-dark default, toolbar-status-sr presence, SettingsView layout contract, and reduced themes.css selectors.
DESIGN.md: document revised architecture
DESIGN.md
Information architecture, color/theming, component inventory, accessibility, and interaction-state sections updated to describe screen-reader-only toolbar status and single curated Companion palette; direction revision notes for 2026-06-22/06-23 added.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • tkhwang/workbranch#121: Modifies SettingsPanel.tsx and AppToolbar.tsx to change theme mode/family presentation, directly overlapping with this PR's removal of the theme family grid and toolbar status changes.
  • tkhwang/workbranch#124: Refactors status into AppToolbar and modifies chrome.css toolbar status styling, directly preceding this PR's change from .toolbar-status to .toolbar-status-sr.
  • tkhwang/workbranch#127: Modifies base.css and themes.css CSS custom properties for palette and button styling, which this PR further revises with the new warm/companion palette.

Poem

🐰 Hop hop, the theme grid is gone today,
Two palettes remain — dark and light, hooray!
The status chip hides, but whispers to ears,
Breakfast at dawn and Catppuccin appears.
One family "companion" to rule them all,
The rabbit is pleased — what a tidy hall! 🌅

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately summarizes the main objective: simplifying color theme settings by consolidating multiple palettes into a single companion palette and removing the color family grid.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/update-0622-part3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@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: 20b83a1f3e

ℹ️ 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".

Comment thread apps/companion/src/ui/AppToolbar.tsx

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
DESIGN.md (1)

5-5: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update stale “Last refreshed” metadata.

Line 5 says Last refreshed: 2026-06-21, but this doc includes revisions through 2026-06-23 (Lines 131-136). Please bump the refresh date to match the latest applied change date.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@DESIGN.md` at line 5, The "Last refreshed" metadata on line 5 of DESIGN.md is
outdated and shows 2026-06-21, but the document contains revisions through
2026-06-23 as noted in lines 131-136. Update the refresh date value in the "Last
refreshed" line to 2026-06-23 to reflect the actual latest revision date in the
document.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/companion/src/styles/chrome.css`:
- Around line 64-74: The `.toolbar-status-sr` utility class uses the deprecated
`clip` CSS property which should be replaced with the modern `clip-path`
standard. In the chrome.css file, replace the line `clip: rect(0 0 0 0);` with
`clip-path: inset(50%);` in the `.toolbar-status-sr` class definition.
Additionally, update the test file app-shell.test.tsx where line 87 explicitly
asserts the presence of the deprecated `clip` property to instead assert for the
new `clip-path: inset(50%)` property to ensure the test passes after this
change.

---

Outside diff comments:
In `@DESIGN.md`:
- Line 5: The "Last refreshed" metadata on line 5 of DESIGN.md is outdated and
shows 2026-06-21, but the document contains revisions through 2026-06-23 as
noted in lines 131-136. Update the refresh date value in the "Last refreshed"
line to 2026-06-23 to reflect the actual latest revision date in the document.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d468500f-33ea-405e-bb56-b5314ee130bf

📥 Commits

Reviewing files that changed from the base of the PR and between b1f4362 and 20b83a1.

📒 Files selected for processing (15)
  • DESIGN.md
  • apps/companion/src/App.tsx
  • apps/companion/src/application/preferences.ts
  • apps/companion/src/application/themePreferences.ts
  • apps/companion/src/application/useCompanionSettings.ts
  • apps/companion/src/styles/base.css
  • apps/companion/src/styles/chrome.css
  • apps/companion/src/styles/settings.css
  • apps/companion/src/styles/themes.css
  • apps/companion/src/ui/AppToolbar.tsx
  • apps/companion/src/ui/SettingsPanel.tsx
  • apps/companion/src/ui/SettingsView.tsx
  • apps/companion/tests/app-shell.test.tsx
  • apps/companion/tests/preferences.test.ts
  • apps/companion/tests/settings-panel.test.tsx
💤 Files with no reviewable changes (1)
  • apps/companion/src/styles/settings.css

Comment thread apps/companion/src/styles/chrome.css
tkhwang added 2 commits June 23, 2026 05:41
- Update `DESIGN.md` to reflect new error display strategy
- Introduce `StatusAlert` component to show visible error messages
- Refactor `App` component to manage `visibleError` state
- Modify status handling to differentiate between routine updates and visible errors
- Move `AppSummary` component to its own file
- Add styling for `.app-error` to `chrome.css`

This change ensures that critical operation failures, such as refresh, action, or preference errors, are visibly displayed to the user as an alert row, while routine "Ready" or "Updated" statuses remain screen-reader-only. This improves user feedback for actionable errors.
@tkhwang
tkhwang merged commit 8ce657e into main Jun 22, 2026
4 checks passed
@tkhwang
tkhwang deleted the feat/update-0622-part3 branch June 22, 2026 20:53
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