Skip to content

visual(themes): add Banana, Lava, Beach, Xray themes, scrollable theme picker, remove developer theme - #342

Merged
aaf2tbz merged 1 commit into
mainfrom
visual/themes-banana-lava-beach-xray
Jul 29, 2026
Merged

visual(themes): add Banana, Lava, Beach, Xray themes, scrollable theme picker, remove developer theme#342
aaf2tbz merged 1 commit into
mainfrom
visual/themes-banana-lava-beach-xray

Conversation

@aaf2tbz

@aaf2tbz aaf2tbz commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds four new app themes — Banana, Lava, Beach, Xray — reworked the theme picker from a dropdown into an in-place scrollable popover (now that there are 10 themes), and removes the developer theme. Renderer-only change; no backend, launch-path, or bottle behavior touched.

Changes

  • Banana — soft creamy yellow surfaces, white text, saturated yellow buttons with dark text; seamless banana-slices.png background tile (offset-crossfade seamless + wrap-aware blur)
  • Lava — crimson fire palette, red-hued game cards, truly black smoldering buttons and search/inputs with ember hover/focus rings; lava-cracks.png glowing-cracks tile
  • Beach — tropical sand tones, white text, sandy buttons, clean blue underglow on cards and hovers; full-bleed beach-sand.png dune background (background-size: cover, no tile seams)
  • Xray — near-black base with a soft phosphor-green wireframe grid, orange accent highlights, green-on-black bordered buttons (retrofuturist poster look)
  • Each new theme has its own nav-icon set (library/sharp/logs/refresh/steam) via themeNavIcons
  • Theme picker — now a scrollable popover: capped height, scroll-snap, themed thin scrollbar, header row, and auto-scrolls the active theme into view on open
  • Developer theme removed (theme only — the developerMode settings feature is untouched); the two main-process spots that passed theme: "developer" to windows now fall back to "dark"

PR Readiness (MANDATORY)

  • Compatibility verified with at least one real game (game + launch method noted below)
  • No hardcoded paths, secrets, or absolute /Users/... paths introduced
  • Config/rules TOML validated if configs/mtsp-rules.toml or DLL maps changed
  • Version triple (CMakeLists.txt, Cargo.toml, package.json, package-lock.json) in sync if version bumped
  • Bottle/runtime migration and launch behavior preserved (rollback plan noted if changed)
  • Docs / compatibility matrix updated for user-facing changes
  • Regression test added for each bug fix

Local toolchain (run before push)

  • cargo fmt --all -- --check passes (Rust) — N/A, no Rust changes
  • cargo clippy --all-targets -- -D warnings passes (Rust) — N/A
  • cargo build --release passes (Rust backend) — passes (unchanged, verified locally)
  • cargo test passes (Rust) — N/A, no Rust changes
  • C++ compiles if changed — N/A, no C++ changes
  • clang-format --dry-run --Werror passes — N/A
  • ctest --test-dir build-native passes if tests changed — N/A
  • TypeScript compiles if changed: cd app && npx tsc --noEmit — passes
  • Biome + Prettier pass if TS/JS changed — biome ci src/ passes (3 pre-existing warnings on main pattern) and prettier --check passes
  • Shell scripts lint if changed — N/A
  • tools/ci/validate-rules-toml.py passes — N/A
  • python3 tools/ci/verify-dmg-workflow.py passes — N/A
  • Tested with at least one game — N/A: renderer-only theming; verified in Electron preview (npm run preview:dev, backend built with cargo build --release); all 10 themes cycled via the picker
  • No hardcoded paths, secrets, or absolute /Users/... paths
  • No new files should be added to the repo root; place them under app/, tools/, tests/, etc. — new assets under app/src/renderer/assets/

Test notes

Built the Rust backend (cargo build --release) and launched the Electron app via npm run preview:dev. Cycled through all 10 themes with the new scrollable picker: verified token application, per-theme nav icons, button treatments per theme spec (yellow/black/sandy/wireframe), background textures (no seams/kaleidoscope artifacts), picker scroll + snap + active-theme-into-view, and localStorage persistence across relaunch. No game launch testing — this PR does not touch launch, bottle, runtime, or routing code.

Risk

Low. Renderer CSS/TS only plus a two-line theme-fallback change in main/index.ts. Worst case is a visual regression in one theme; rollback is reverting this commit. The removed developer theme falls back to dark automatically for any stale saved preference.

…e picker; remove developer theme

- Four new themes with full token blocks, glass-header/sidebar/body-surface
  styling, per-theme nav icons, and theme-specific button treatments:
  Banana (creamy yellow, yellow buttons), Lava (crimson fire, black
  smoldering buttons/inputs, red-hued cards), Beach (tropical sand,
  sandy buttons, blue underglow), Xray (phosphor-green wireframe grid
  on black, orange accents)
- New generated background textures: banana-slices.png (seamless
  offset-crossfade tile), lava-cracks.png (mirror tile), beach-sand.png
  (full-bleed cover), all with wrap-aware soft blur
- Theme picker reworked from dropdown into in-place scrollable popover:
  capped height, scroll-snap, themed scrollbar, auto-scrolls active
  theme into view
- Remove the developer theme entirely (developerMode setting untouched);
  main-process theme fallbacks now use dark
@aaf2tbz aaf2tbz added Feature Adds a new feature to the codebase. Javascript Touches javascript based files. labels Jul 29, 2026
@aaf2tbz
aaf2tbz merged commit 6455ce1 into main Jul 29, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature Adds a new feature to the codebase. Javascript Touches javascript based files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant