fix(desktop): drop bundled official palettes from core - #604
Merged
Conversation
Named palettes ship as satellite packs. Settings → Themes now shows the tokens.css default plus installed plugin themes, and retired bundled ids fall back to that default instead of a blank UI. Co-authored-by: Tomás Maritano <tomymaritano@gmail.com>
|
Warning Review limit reachedNext included review available in 10 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
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. Comment |
tomymaritano
marked this pull request as ready for review
August 25, 2026 03:26
This was referenced Aug 25, 2026
Contributor
|
🎉 This PR is included in version 0.19.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
8 tasks
github-actions Bot
pushed a commit
that referenced
this pull request
Aug 26, 2026
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Settings → Themes only showed Default after Browse-installing satellite packs (`dripnex/theme-dune`, limestone, walnut, ash, …). Those packs ship `manifest.json` + `dist/index.js` and call `registerTheme()` in `activate()` — they do not ship `theme.json`. Settings has no PluginHost, so `activate()` never ran there and `parseInstalledThemes` only read `scan().themes` (always `[]`). This harvests `registerTheme` from scanned plugin source in the renderer (including Settings) so installed packs appear in the picker and selecting one sets `activeThemeId`. `OFFICIAL_THEMES` stays empty; Default (`tokens.css`) stays first; retired bundled `dripnex-*` ids still fall back to Default. ## Type of Change - [x] Bug fix - [ ] New feature - [ ] Breaking change - [ ] Documentation update ## Related Issues Follow-up to #604 (empty official palettes). Theme.json on satellites is a later pack-contract change, not this PR. ## Checklist - [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md) - [x] Tests pass locally (`pnpm test`) - [ ] Build succeeds (`pnpm build`) - [x] PR targets `develop` branch (not `main`) ## What changed - `parseInstalledThemes` still prefers `theme.json` when present. - If `scan().themes` is empty, load `dist/index.js` and collect palettes from `context.registerTheme` via a stub PluginContext (no Settings PluginHost). - Malformed `theme.json` / throwing `activate()` skips that pack and does not crash the picker. - Picker order is Default (id `null`) then harvested palettes. ## Tests - JS-registered pack (`themes: []`, `registerTheme` in `activate`) appears; selecting it sets `activeThemeId` to `dripnex-dune`. - Default remains first (`themePickerIds`). - Empty `OFFICIAL_THEMES`, retired-id fallback, missing/malformed `theme.json` do not crash. - Disabled packs are skipped; `theme.json` still wins when both exist. ## Screenshots N/A — desktop Settings picker; covered by unit tests that replay the QA scan shape. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-b1ff19c4-64b6-4c04-9831-43072ee62099?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-b1ff19c4-64b6-4c04-9831-43072ee62099&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com>
8 tasks
github-actions Bot
pushed a commit
that referenced
this pull request
Aug 26, 2026
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Settings → Themes now has **In use** and **Available palettes**. Click Install on Limestone (or any `category === "theme"` pack) to download the GitHub release tarball, move the card to In use, and activate it — without leaving Themes. Other package stays on Plugins → Install. Continues #616 (JS `registerTheme` harvest already on develop). `OFFICIAL_THEMES` stays `[]`. ## Type of Change - [x] Bug fix - [ ] New feature - [ ] Breaking change - [ ] Documentation update ## Related Issues Follow-up to #616 / #604. Theme.json on satellites is still a later pack-contract change. ## Checklist - [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md) - [x] Tests pass locally (`pnpm test`) - [ ] Build succeeds (`pnpm build`) - [x] PR targets `develop` branch (not `main`) ## What changed - **In use:** Default (`tokens.css`) first, then installed packs (including JS `registerTheme` palettes). Click selects; selected = outline. - **Available palettes:** live GET `/plugins` rows with `category === "theme"` that are not installed. Heading + hint. Card is name, one-liner, `v{version}`, primary Install. No fake preview. No Plugins redirect. - Install always uses registry `bundleUrl` via `installFromUrl`. Never api.github.com git/contents. - Success: `{Name} installed.` + `requestReload` / `dripnex:plugins:refresh` + activate. Fail: `Couldn't install {Name}. Use Plugins → Install → Other package if this keeps failing.` Card stays Available. - Catalog fail: inline `Couldn't load palettes.` + Retry; fallback `COMMUNITY_CATALOG` now includes extras past Fog (Sakura, Limestone, Walnut, Ash, Quartz, Cove, Velvet, Ink, Pine, Saffron, Dune, Noir). ## Tests - Default first; JS-registered pack appears in In use and leaves Available. - Available lists uninstalled theme-category rows. - Install target is the GitHub release `bundleUrl`. - Fallback catalog includes extras past Fog. ## Screenshots N/A — desktop Settings; covered by unit tests. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-b1ff19c4-64b6-4c04-9831-43072ee62099?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-b1ff19c4-64b6-4c04-9831-43072ee62099&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Named palettes no longer ship inside the desktop.
OFFICIAL_THEMESis empty; Settings → Themes shows thetokens.cssdefault plus installed plugin themes only. Retired bundled ids (dripnex-parchment,dripnex-wave, …) fall back to that default so a saved palette cannot leave a blank UI.Satellite repos (
dripnex/theme-*) are unchanged. No marketplace. AuthGate untouched.Type of Change
Related Issues
Product rule: themes ship as satellite git repos (
dripnex/theme-<slug>), pack/tag/Release tarball, Inkdrop-style. Do not add palettes to the desktop core.Checklist
pnpm test)pnpm build)developbranch (notmain)What changed
OFFICIAL_THEMESso Parchment/Wave/Night/Harbor Dusk/Solarized/Gruvbox/Glass/Midnight/Ember/Ion/Matcha/Phosphor/Fog are not registered without installing.tokens.css. Installedtheme.jsonpacks are scanned into the picker (including the Settings window, which has no PluginHost).appearance.activeThemeIdis one of the retireddripnex-*ids, restore clears it instead of waiting for a palette that will never load.data-frostedinstead ofdripnex-glass.Tests
officialThemes.test.ts: 10 passed (empty core list, retired-id fallback, installed pack registration).pnpm test: 19/19 tasks successful (@dripnex/desktop342 tests).