From 1da2274076ae0fadf7285d1bd4f03083e73a7481 Mon Sep 17 00:00:00 2001 From: Martin Bauer Date: Sat, 3 Oct 2026 07:19:06 +0200 Subject: [PATCH] Pi profile: no glass blur, keep the drift; consolidate the perf knobs With the ambient canvas off under ?pi=1, the backdrop blur no longer buys anything: it paid for itself by giving each panel a compositing layer above the animating canvas, and with nothing animating underneath it was just cost - enough to make the browse rows visibly sluggish on the device. So the Pi profile now drops every backdrop blur (`glassBlur`, which the music app and the typing game share), and turns the drift and the moving mascot back on: plain CSS transform loops the compositor runs by itself, which measured as noise. The knob set is consolidated to match: one glass toggle instead of panel and card blur, one shadows toggle for cards and tiles, the typing game's drift and view transitions folded into the shared ones, and the backing-store cap fixed by profile rather than a setting. The parent dialog groups them into Darstellung / Abspielen / System and hides the canvas tuning while the canvas is off. Stored settings move to musicmouse.perf.v2, since v1 drafts held the old preset in full. Co-Authored-By: Claude Opus 5.5 --- web/src/App.tsx | 3 +- web/src/components/BrowseView.tsx | 2 +- web/src/components/PerfPanel.tsx | 153 ++++++++++++--------- web/src/lib/__tests__/perfSettings.test.ts | 16 +-- web/src/lib/covers.ts | 2 +- web/src/lib/lowPower.ts | 22 +-- web/src/lib/perfSettings.ts | 84 +++++------ web/src/lib/theme.ts | 37 ++--- web/src/lib/tippen/theme.ts | 16 +-- web/src/styles/app.css | 11 -- 10 files changed, 172 insertions(+), 174 deletions(-) diff --git a/web/src/App.tsx b/web/src/App.tsx index 759ed99..cb8039c 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -41,7 +41,7 @@ import { targetForAlbum } from "./lib/remote"; import type { Group, Mode, Results, SongHit } from "./lib/search"; import { buildSearchIndex, categoryMatches, groupOf, results as computeResults } from "./lib/search"; import { SKIN } from "./lib/skins"; -import { SHOW_AMBIENCE, SHOW_CARD_BLUR, SHOW_GLASS_BLUR } from "./lib/theme"; +import { SHOW_AMBIENCE, SHOW_GLASS_BLUR } from "./lib/theme"; // The room page and the typing game are each a tab away from the player and together a // large share of the bundle; the kiosk parses and compiles only what it opens. @@ -449,7 +449,6 @@ export function App() { className="stage" data-phone={phone || undefined} data-blur={SHOW_GLASS_BLUR ? undefined : "off"} - data-cardblur={SHOW_CARD_BLUR ? undefined : "off"} > {state && SHOW_AMBIENCE && (
({ @@ -100,49 +116,62 @@ export function PerfPanel({ onClose }: { onClose: () => void }) {
-
- {TOGGLES.map(([key, label, hint]) => ( - - ))} - - {NUMBERS.map(([key, label, hint, min, max, step]) => ( -