Skip to content

feat(web): add Poimandres as a built-in Appearance theme - #5650

Closed
gsimone wants to merge 1 commit into
pingdotgg:mainfrom
gsimone:feat/web-poimandres-theme
Closed

feat(web): add Poimandres as a built-in Appearance theme#5650
gsimone wants to merge 1 commit into
pingdotgg:mainfrom
gsimone:feat/web-poimandres-theme

Conversation

@gsimone

@gsimone gsimone commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds Poimandres as a dark-only built-in theme in Settings → Appearance (from gsimone/poimandres-t3code)
  • Keeps the boot splash palette in sync, including single-mode built-in appearance handling
  • Covers the new theme in palette/boot tests

Test plan

  • Open Settings → Appearance and confirm Poimandres appears with the other maintainer themes
  • Select Poimandres and verify canvas #1b1e28 / accent #5de4c7
  • Confirm it stays dark when the OS/appearance mode is light
  • Reload and confirm no wrong-color flash before React mounts

Made with Cursor

Note

Add Poimandres as a built-in dark-only appearance theme

  • Adds a new poimandres built-in theme to themePalette.ts with a full dark-only color map (canvas, chrome, text, accent, terminal, sidebar) and reserves the ID from custom theme use.
  • Adds the theme to the settings UI via MAINTAINER_THEMES in ThemeSettings.tsx.
  • Behavioral Change: the boot script in index.html now uses a single-mode built-in's sole mode as the base appearance, so dark-only themes like Poimandres render correctly (dark splash/meta theme-color) even on a light OS. Previously all built-ins defaulted to a light base.
📊 Macroscope summarized 54877e5. 3 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

Ship the dark-only pmndrs palette as a maintainer theme so users can pick it without importing JSON.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 75fcf14f-3d06-4267-8939-ea25a27500b5

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 7, 2026
OCEAN_THEME_ID,
EMBER_THEME_ID,
IRIS_THEME_ID,
POIMANDRES_THEME_ID,

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.

🟡 Medium src/themePalette.ts:127

RESERVED_THEME_IDS now includes POIMANDRES_THEME_ID, but custom themes saved in earlier releases could already use the id poimandres. installCustomTheme only blocks reserved ids on new installs, so a previously-saved custom theme with that id persists in storage but gets silently omitted by getCustomThemes()/parseStoredTheme, causing a stored poimandres preference to resolve to the new built-in theme instead of the user's custom palette. Consider migrating or renaming colliding persisted custom themes on load (or documenting the intentional takeover) rather than only reserving the id going forward.

🤖 Copy this AI Prompt to have your agent fix this:
In file @apps/web/src/themePalette.ts around line 127:

`RESERVED_THEME_IDS` now includes `POIMANDRES_THEME_ID`, but custom themes saved in earlier releases could already use the id `poimandres`. `installCustomTheme` only blocks reserved ids on *new* installs, so a previously-saved custom theme with that id persists in storage but gets silently omitted by `getCustomThemes()`/`parseStoredTheme`, causing a stored `poimandres` preference to resolve to the new built-in theme instead of the user's custom palette. Consider migrating or renaming colliding persisted custom themes on load (or documenting the intentional takeover) rather than only reserving the id going forward.

@cursor cursor Bot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 54877e5. Configure here.

codeForeground: "#a6accd",
sidebar: "#1b1e28",
sidebarForeground: "#a6accd",
sidebarMutedForeground: "#767c9d",

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.

Muted text fails contrast

Medium Severity

textMuted (and the matching muted roles such as placeholder, secondaryLabel, iconMuted, and sidebarMutedForeground) use #767c9d on #1b1e28, which lands around 4.1:1. Other maintainer themes keep muted text at or above 4.5:1, and --muted-foreground maps to textMuted, so secondary labels across the app fall short of the usual AA bar when Poimandres is selected.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 54877e5. Configure here.

@macroscopeapp

macroscopeapp Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

1 blocking correctness issue found. This PR adds a new built-in theme, which is typically low-risk. However, two unresolved review comments raise substantive concerns: potential silent override of existing custom themes with the 'poimandres' id (data loss), and muted text colors failing AA accessibility contrast requirements. These issues warrant resolution before merging.

You can customize Macroscope's approvability policy. Learn more.

@gsimone

gsimone commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

the overrides stuff makes this PR more annoying than I had initially thought, it might not be worth even if the theme is a classic banger

@gsimone

gsimone commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

#5654 this is so much better!

@gsimone gsimone closed this Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant