Skip to content

feat: add Winamp vibe theme#745

Open
kianhub wants to merge 2 commits intoRunMaestro:rcfrom
kianhub:winamp-theme
Open

feat: add Winamp vibe theme#745
kianhub wants to merge 2 commits intoRunMaestro:rcfrom
kianhub:winamp-theme

Conversation

@kianhub
Copy link
Copy Markdown
Contributor

@kianhub kianhub commented Apr 7, 2026

Summary

  • Add new "Winamp" vibe theme inspired by the classic Winamp media player aesthetic
  • Green LED ticker text (#00e000), orange playlist accent (#ff8924), yellow current-track highlight (#ffff00) on a dark charcoal body
  • Includes full ANSI 16-color terminal palette

Test plan

  • Theme count assertion updated (18 → 19)
  • All 24,542 tests pass
  • TypeScript lint clean across all tsconfig targets

Summary by CodeRabbit

  • New Features
    • Added a new "Winamp" theme with a curated color palette and vibe mode styling, now available for selection in the application.

@kianhub
Copy link
Copy Markdown
Contributor Author

kianhub commented Apr 7, 2026

@pedramamini do you mind taking a screenshot for this theme so that we can add it to THEMES.md? maybe we need a universal/dummy way of taking those screenshots so they stay consistent.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 7, 2026

📝 Walkthrough

Walkthrough

A new "Winamp" theme is added to the theme system by extending the ThemeId union type, registering it as valid, introducing a new Winamp ANSI palette, defining the theme with vibe mode and associated colors, and updating the themes count test from 18 to 19.

Changes

Cohort / File(s) Summary
Type System
src/shared/theme-types.ts
Added 'winamp' as a new valid ThemeId union member and included it in the isValidThemeId type guard allowlist.
Theme Definitions
src/shared/themes.ts
Introduced winampAnsi ANSI 16-color palette constant and defined a new winamp theme entry in the THEMES record with vibe mode, Winamp-specific colors, and the ANSI palette spread into the color set.
Test Assertions
src/__tests__/renderer/constants/themes.test.ts
Updated theme count assertion from 18 to 19 to reflect the addition of the new Winamp theme.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • feat: Solarized Dark Theme #532: Implements the same theme system changes—adding the Winamp theme entry, extending ThemeId, and updating the theme count test.

Poem

🎵 A rabbit hops through colors bright,
Winamp's vibe now shines in sight,
Palettes hop, palette spread wide,
Nineteen themes to coincide! 🐰

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add Winamp vibe theme' directly and clearly summarizes the main change: introducing a new Winamp-themed visual theme to the application.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Apr 7, 2026

Greptile Summary

This PR adds a new "Winamp" vibe theme inspired by the classic Winamp media player aesthetic — green LED text (#00e000), orange accent (#ff8924), and yellow highlight (#ffff00) on a dark charcoal background. All three required touchpoints for a new theme (type union, theme definitions, and test count) are updated consistently and correctly.

Confidence Score: 5/5

Safe to merge — pure data addition with no logic changes and no issues found

All three required touchpoints (ThemeId type, THEMES object, test count) are updated consistently. The accentDim rgba value correctly matches the hex accent color. The winampAnsi palette is properly defined and spread. No P0/P1/P2 issues identified.

No files require special attention

Important Files Changed

Filename Overview
src/shared/themes.ts Adds winampAnsi ANSI palette and THEMES.winamp vibe entry following the established theme pattern; accentDim rgba matches accent hex exactly
src/shared/theme-types.ts Adds 'winamp' to the ThemeId union type and to the isValidThemeId runtime guard array
src/tests/renderer/constants/themes.test.ts Updates theme count assertion from 18 to 19 to match the new total

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["theme-types.ts\nThemeId union + isValidThemeId"] --> B["themes.ts\nwinampAnsi ANSI palette"]
    B --> C["themes.ts\nTHEMES.winamp entry"]
    C --> D["renderer/constants/themes.ts\nre-export shim (no changes needed)"]
    D --> E["themes.test.ts\nstructural validation (count 18→19)"]
Loading

Reviews (1): Last reviewed commit: "test: update theme count assertion for W..." | Re-trigger Greptile

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
src/shared/themes.ts (1)

761-761: Note: Vibe mode fallback behavior in URL builder.

The buildMaestroUrl function in src/renderer/utils/buildMaestroUrl.ts (lines 9-20) uses a ternary that treats any non-light mode as 'dark':

url.searchParams.set('theme', theme.mode === 'light' ? 'light' : 'dark');

This means vibe themes like winamp will be mapped to 'dark' when the theme ID cannot be passed directly. This is pre-existing behavior affecting all vibe themes, not specific to this PR. If vibe themes should have distinct handling, consider updating that function separately.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/shared/themes.ts` at line 761, The URL builder currently collapses any
non-'light' mode to 'dark' in buildMaestroUrl, causing vibe themes (e.g., mode
=== 'vibe') to be treated as 'dark'; update buildMaestroUrl (the function that
sets url.searchParams.set('theme', ...)) to preserve valid mode values instead
of the ternary, for example by using the actual theme.mode if it is one of the
accepted values ('light','dark','vibe') or by adding a conditional that maps
'vibe' to 'vibe' and only falls back to 'dark' for unknown modes, ensuring vibe
themes are transmitted correctly when the theme ID cannot be passed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/shared/themes.ts`:
- Line 761: The URL builder currently collapses any non-'light' mode to 'dark'
in buildMaestroUrl, causing vibe themes (e.g., mode === 'vibe') to be treated as
'dark'; update buildMaestroUrl (the function that sets
url.searchParams.set('theme', ...)) to preserve valid mode values instead of the
ternary, for example by using the actual theme.mode if it is one of the accepted
values ('light','dark','vibe') or by adding a conditional that maps 'vibe' to
'vibe' and only falls back to 'dark' for unknown modes, ensuring vibe themes are
transmitted correctly when the theme ID cannot be passed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3d408a15-d30f-4d36-978c-4bfcefd99da2

📥 Commits

Reviewing files that changed from the base of the PR and between 796343e and 04c2e7b.

📒 Files selected for processing (3)
  • src/__tests__/renderer/constants/themes.test.ts
  • src/shared/theme-types.ts
  • src/shared/themes.ts

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