feat(marketplace): add 19 themes from itsbariscan/superset-themes#4215
Conversation
12 originals (Atlas, Brutalist, Console, Ferro, Hangar, Inkwell, Kintsugi, Reactor, Riso, Supernova, Twilight Run, Vellum) by Baris Can Sayin, plus 7 ports (Dracula, Gruvbox Dark, Nord, Rosé Pine, Solarized Dark/Light, Tokyo Night) attributed to their upstream authors with itsbariscan as submitter. Skipped Catppuccin Mocha — already shipped from the Catppuccin org PR.
📝 WalkthroughWalkthroughThis PR expands the marketplace theme catalog by adding twenty new theme definitions as JSON files and registering them in the central theme listing. Each theme contains UI color tokens and terminal palette mappings for consistent styling across the application. ChangesTheme Catalog Expansion
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
Greptile SummaryAdds 19 new themes to the marketplace — 12 originals by Baris Can Sayin and 7 ports of well-known palettes (Dracula, Gruvbox Dark, Nord, Rosé Pine, Solarized Dark/Light, Tokyo Night) — along with their corresponding
Confidence Score: 4/5This PR is safe to merge; it adds purely additive data files and TypeScript listing entries with no logic changes. The change is entirely additive — 19 new JSON color-value files and matching listing objects. The JSON files carry no executable content, no URLs, and all values are well-formed hex or rgba strings. The only imperfection is that ported-theme author strings diverge between the marketplace card and the imported theme record in the desktop app, which is a cosmetic inconsistency rather than a functional defect. The author field alignment between apps/marketing/src/lib/marketplace.ts and the corresponding JSON files for ported themes is worth a second look.
|
| Filename | Overview |
|---|---|
| apps/marketing/src/lib/marketplace.ts | Adds 19 new ThemeListing entries; all required fields present and slugs are unique, but author strings for ported themes differ from the author field inside the downloadable JSON files. |
| apps/marketing/public/marketplace/themes/dracula.json | Well-structured theme JSON matching the zod import schema; all values are hex/rgba color strings; no URLs or script payloads. Author includes full port attribution that diverges from the marketplace.ts listing. |
| apps/marketing/public/marketplace/themes/solarized-dark.json | Valid JSON with complete solarized-dark color palette including all optional bright-* terminal colors; safe to serve. |
| apps/marketing/public/marketplace/themes/solarized-light.json | Valid JSON; light variant counterpart to solarized-dark with expected palette inversion; no issues. |
| apps/marketing/public/marketplace/themes/atlas.json | Original theme by Baris Can Sayin; valid JSON, all color values in expected formats, passes zod schema. |
| apps/marketing/public/marketplace/themes/nord.json | Port of the Nord palette; valid structure and color values, safe to serve. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph Marketplace_Web["Web Marketplace (apps/marketing)"]
ML["marketplace.ts\nThemeListing[]"] -->|"source.href"| JSON["public/marketplace/themes/*.json"]
ML -->|"author (display only)"| CARD["Theme Card UI\nauthor: 'Zeno Rocha'"]
end
subgraph Desktop["Desktop App (apps/desktop)"]
DL["User clicks Download"] --> JSON
JSON -->|"parseThemeConfigFile()"| ZOD["import.ts\nzod schema validation"]
ZOD --> THEME["Installed Theme\nauthor: 'Zeno Rocha (port: Baris Can Sayin)'"]
end
JSON -. "author field differs\nfrom marketplace.ts listing" .-> MISMATCH["⚠ Attribution mismatch\nfor 7 ported themes"]
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 1
apps/marketing/src/lib/marketplace.ts:783
**Author attribution mismatch between marketplace card and downloaded JSON**
For the 7 ported themes, the `author` field in `marketplace.ts` shows only the original upstream author (e.g. `"Zeno Rocha"`), but the corresponding JSON files on disk include the port credit (e.g. `"Zeno Rocha (port: Baris Can Sayin)"`). A user viewing the marketplace card sees `"Zeno Rocha"`, then imports the JSON and sees `"Zeno Rocha (port: Baris Can Sayin)"` in their desktop settings — two different strings for the same identity.
This affects all 7 port themes: Dracula, Gruvbox Dark, Nord, Rosé Pine, Solarized Dark, Solarized Light, and Tokyo Night. Either strip the porter suffix from the JSON files to keep them in sync, or mirror the full attribution string in the `author` field of the marketplace listings so both surfaces agree.
Reviews (1): Last reviewed commit: "feat(marketplace): add 19 themes from it..." | Re-trigger Greptile
| slug: "dracula", | ||
| name: "Dracula", | ||
| type: "dark", | ||
| author: "Zeno Rocha", |
There was a problem hiding this comment.
Author attribution mismatch between marketplace card and downloaded JSON
For the 7 ported themes, the author field in marketplace.ts shows only the original upstream author (e.g. "Zeno Rocha"), but the corresponding JSON files on disk include the port credit (e.g. "Zeno Rocha (port: Baris Can Sayin)"). A user viewing the marketplace card sees "Zeno Rocha", then imports the JSON and sees "Zeno Rocha (port: Baris Can Sayin)" in their desktop settings — two different strings for the same identity.
This affects all 7 port themes: Dracula, Gruvbox Dark, Nord, Rosé Pine, Solarized Dark, Solarized Light, and Tokyo Night. Either strip the porter suffix from the JSON files to keep them in sync, or mirror the full attribution string in the author field of the marketplace listings so both surfaces agree.
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/marketing/src/lib/marketplace.ts
Line: 783
Comment:
**Author attribution mismatch between marketplace card and downloaded JSON**
For the 7 ported themes, the `author` field in `marketplace.ts` shows only the original upstream author (e.g. `"Zeno Rocha"`), but the corresponding JSON files on disk include the port credit (e.g. `"Zeno Rocha (port: Baris Can Sayin)"`). A user viewing the marketplace card sees `"Zeno Rocha"`, then imports the JSON and sees `"Zeno Rocha (port: Baris Can Sayin)"` in their desktop settings — two different strings for the same identity.
This affects all 7 port themes: Dracula, Gruvbox Dark, Nord, Rosé Pine, Solarized Dark, Solarized Light, and Tokyo Night. Either strip the porter suffix from the JSON files to keep them in sync, or mirror the full attribution string in the `author` field of the marketplace listings so both surfaces agree.
How can I resolve this? If you propose a fix, please make it concise.There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
apps/marketing/public/marketplace/themes/ferro.json (1)
37-41: ⚡ Quick win
chart1anddestructiveshare the same color (#c63a1c).In a dashboard with error/warning indicators and chart series both visible,
chart1data series will be visually indistinguishable from destructive/error UI states. Consider nudgingchart1slightly (e.g., toward the terra-cotta orange range already established by the theme) to preserve the semantic distinction.🤖 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 `@apps/marketing/public/marketplace/themes/ferro.json` around lines 37 - 41, chart1 currently uses the same hex as the theme destructive color, causing visual ambiguity; update the "chart1" value in the ferro.json theme so it is a slightly different terra-cotta/brick orange (e.g., a slightly lighter or more orange variant of `#c63a1c`) to preserve distinction between chart series and error/destructive states while keeping the palette harmony with existing colors like "chart5" and the "destructive" token.
🤖 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/marketing/public/marketplace/themes/solarized-dark.json`:
- Line 52: selectionBackground is using an outlier alpha of 0.95 which makes the
selection nearly opaque; update the "selectionBackground" rgba value in the
solarized-dark theme to an alpha within the project's range (e.g., 0.80 or any
value between 0.65–0.85) to restore a subtle overlay, and ensure the change is
consistent with the other themes' alpha values for selection styling.
---
Nitpick comments:
In `@apps/marketing/public/marketplace/themes/ferro.json`:
- Around line 37-41: chart1 currently uses the same hex as the theme destructive
color, causing visual ambiguity; update the "chart1" value in the ferro.json
theme so it is a slightly different terra-cotta/brick orange (e.g., a slightly
lighter or more orange variant of `#c63a1c`) to preserve distinction between chart
series and error/destructive states while keeping the palette harmony with
existing colors like "chart5" and the "destructive" token.
🪄 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: 41b46020-af01-445e-9b45-f0f42bc87850
📒 Files selected for processing (20)
apps/marketing/public/marketplace/themes/atlas.jsonapps/marketing/public/marketplace/themes/brutalist.jsonapps/marketing/public/marketplace/themes/console.jsonapps/marketing/public/marketplace/themes/dracula.jsonapps/marketing/public/marketplace/themes/ferro.jsonapps/marketing/public/marketplace/themes/gruvbox-dark.jsonapps/marketing/public/marketplace/themes/hangar.jsonapps/marketing/public/marketplace/themes/inkwell.jsonapps/marketing/public/marketplace/themes/kintsugi.jsonapps/marketing/public/marketplace/themes/nord.jsonapps/marketing/public/marketplace/themes/reactor.jsonapps/marketing/public/marketplace/themes/riso.jsonapps/marketing/public/marketplace/themes/rose-pine.jsonapps/marketing/public/marketplace/themes/solarized-dark.jsonapps/marketing/public/marketplace/themes/solarized-light.jsonapps/marketing/public/marketplace/themes/supernova.jsonapps/marketing/public/marketplace/themes/tokyo-night.jsonapps/marketing/public/marketplace/themes/twilight-run.jsonapps/marketing/public/marketplace/themes/vellum.jsonapps/marketing/src/lib/marketplace.ts
| "foreground": "#839496", | ||
| "cursor": "#93a1a1", | ||
| "cursorAccent": "#002b36", | ||
| "selectionBackground": "rgba(7, 54, 66, 0.95)", |
There was a problem hiding this comment.
selectionBackground alpha (0.95) is a significant outlier.
All other seven themes in this batch use alpha values between 0.65 and 0.85. At 0.95 the selection overlay is nearly fully opaque, which can make selected text harder to perceive as "selected" (the overlay swamps rather than tints) and deviates from the subtle layering that characterises Solarized's base tone design. Most reference Solarized terminal ports use ≤ 0.85.
🎨 Suggested adjustment
- "selectionBackground": "rgba(7, 54, 66, 0.95)",
+ "selectionBackground": "rgba(7, 54, 66, 0.80)",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "selectionBackground": "rgba(7, 54, 66, 0.95)", | |
| "selectionBackground": "rgba(7, 54, 66, 0.80)", |
🤖 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 `@apps/marketing/public/marketplace/themes/solarized-dark.json` at line 52,
selectionBackground is using an outlier alpha of 0.95 which makes the selection
nearly opaque; update the "selectionBackground" rgba value in the solarized-dark
theme to an alpha within the project's range (e.g., 0.80 or any value between
0.65–0.85) to restore a subtle overlay, and ensure the change is consistent with
the other themes' alpha values for selection styling.
🧹 Preview Cleanup CompleteThe following preview resources have been cleaned up:
Thank you for your contribution! 🎉 |
Summary
Adds 19 themes from @itsbariscan's superset-themes catalog to the marketplace, with proper upstream attribution.
12 originals by Baris Can Sayin: Atlas, Brutalist, Console, Ferro, Hangar, Inkwell, Kintsugi, Reactor, Riso, Supernova, Twilight Run, Vellum.
7 ports with upstream author preserved +
submittedBy: itsbariscan:Skipped Catppuccin Mocha — already shipped from the Catppuccin org PR.
Security audit
apps/desktop/src/shared/themes/import.ts). Two extra optional keys (highlight,highlightForeground) are already supported via.passthrough().javascript:,data:-URI base64,<script>,eval(,onerror/onload, orfile://payloads.rgba()color or human-readable name/description text.Attribution to upstream author
Credit to @itsbariscan for the catalog. Originals are MIT-licensed; ports retain their upstream licenses (reproduced verbatim per subfolder in the source repo).
Test plan
bun run lint— passesbun run typecheck— passes/marketplace/themeslocally and verify all 19 new cards render with correct preview swatches and downloadsSummary by cubic
Adds 19 new themes from
itsbariscan/superset-themesto the marketplace with proper attribution, available for preview and download. Publishes JSONs under/marketplace/themesand registers listings inapps/marketing/src/lib/marketplace.ts.submittedBy: itsbariscan: Dracula, Gruvbox Dark, Nord, Rosé Pine, Solarized Dark, Solarized Light, Tokyo Night.Written for commit cfeaaff. Summary will update on new commits.
Summary by CodeRabbit