feat(app): theme pack, theme picker, and dev library preview mode#339
Merged
Conversation
- Add four themes: Skeleton, Forest, Orange Peel, Dragonfruit, using the existing per-theme variable/tint pattern (shared glass-header blur, sidebar geometry, and card scaling are unchanged) - Polish light and developer themes (contrast, glass tints, button shape) - Replace theme cycle button with a picker popover listing all themes - Per-theme nav icon sets for custom themes (dark/light unchanged) - Add METALSHARP_DEV_LIBRARY=1 skip-to-library flow and preview:dev script - Widen dev-mode backend /status timeout to survive first-run bottle scans
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
Adds four new UI themes (Skeleton, Forest, Orange Peel, Dragonfruit), a theme-picker popover replacing the cycle button, per-theme nav icon sets, light/developer theme polish, and a
METALSHARP_DEV_LIBRARY=1developer flow (npm run preview:dev) that skips first-launch/migration gates straight to the library view. Also widens the dev-mode backend/statustimeout so a first-run bottle scan no longer triggers a backend kill/restart loop that left the library empty.Changes
useTheme.ts+variables.css(full variable sets, same structure as existing themes); per-theme glass-header tints inbase.cssand sidebar backgrounds inSidebar.vue. Shared glass blur values, sidebar widths, header sizing, and card hover scaling are unchanged — new themes supply tints only.app/src/main/index.ts:METALSHARP_DEV_LIBRARY=1appendsskip-to=libraryto the loadFile query;App.vueconsumes it, waits for backend readiness, then callsinitApp()directly. Newpreview:devnpm script.rust-bridge.ts: dev-mode/statustimeout raised 1500ms → 10000ms soensureRunningdoes not restart a busy dev backend mid-scan.shims-vue.d.ts:~icons/*module declaration for tsc.PR Readiness (MANDATORY)
/Users/...paths introducedconfigs/mtsp-rules.tomlor DLL maps changedCMakeLists.txt,Cargo.toml,package.json,package-lock.json) in sync if version bumpedBypassed intentionally via
checklist-exception: UI/renderer-only change — no launch behavior, configs, or version bumps touched.Local toolchain (run before push)
cd app && npx tsc --noEmitcd app && npx @biomejs/biome ci src/(4 pre-existing CSS specificity warnings, unchanged)/Users/...pathsTest notes
Verified on macOS via
npm run preview:dev(Electron, dev backendmetalsharp-backend0.56.8 on port 9276 against a real~/.metalsharplibrary): app boots straight into the library view, real installed game cards load and render, all 7 themes apply correctly through the picker, sidebar/header glassmorphism and geometry intact in every theme. No games launched — UI-only change.Risk
Low: renderer-only styling plus an opt-in dev env var. The one main-process behavior change (longer dev
/statustimeout) only affects unpackaged dev runs; production timeout unchanged. Rollback: revert this commit.