fix(1.5.1): mini-player white screen + Pulse halo leak in skin picker#282
Merged
Conversation
ThemeProvider grew a `useProfile()` call in #264 (per-profile theme + skin storage), but MiniPlayerApp.tsx was left with the legacy nesting where ThemeProvider wraps ProfileProvider. React StrictMode catches the "must be used within ProfileProvider" throw and surfaces it as a white window — mini-player has been blanked since 1.5.0. Mirror the main App.tsx nesting (ProfileProvider outer) so the mini boots into the same provider chain.
Pulse's shadowCard is a neon halo `0 0 24px -4px var(--accent-500)` that leaks visibly past the picker button's overflow-hidden clip in the Settings → Appearance grid. The other skins' shadows are either too subtle (Studio's 1px black, Lounge's soft drop) or absent (Editorial, Liquid) to read at ~200×100 px anyway, so the shadow channel was carrying zero signal for four skins and one clear bug for the fifth. Drop `boxShadow` from the inline preview style. Each card still sells its skin via the display font + heading weight + tracking + border-radius — the surface treatment shows up on the real chrome the moment the user clicks.
📝 WalkthroughWalkthrough
ChangesCorrections de nesting providers et styles thème-aware
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 3❌ Failed checks (3 warnings)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
The Hero card hardcoded `bg-linear-to-br from-zinc-900 to-zinc-800
text-white` + a stack of `text-zinc-{300,400,500,600}` and
`text-white/5` classes designed for a guaranteed-dark surface.
That worked on Studio's light variant (where the dark gradient
deliberately contrasted with the page) but breaks on Liquid Light:
liquid.css:349 strips `background-image` on every `rounded-3xl`
under `main` to apply its universal glass treatment, leaving the
dark text classes stranded on pale glass — the version watermark,
subtitle, year, license and "Check for updates" button were all
invisible.
Pair every colour with a `dark:` variant so the hero renders
correctly on every (theme × skin) combo: light page surfaces get
dark text against a soft light gradient (or the skin's glass
override), dark surfaces keep the original white-on-zinc look.
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.
WIP — patch bundle pour la 1.5.1. Encore la race condition Liquid light (Mood Radio) à investiguer avant merge.
Closes #279
Closes #281
L'issue #280 (deux dossiers
plugins/web-radio/) n'est PAS dans cette PR : c'est l'architecture standard Tauri NSIS où le bundle plugin vit sous%LocalAppData%\WaveFlow\plugins\(resource dir, read-only) et est copié au boot vers%AppData%\Roaming\app.waveflow\waveflow\plugins\(runtime). Le runtime charge toujours depuis Roaming. Pour l'éliminer il faudrait loader les plugins bundled directement depuisBaseDirectory::Resource— refactor du loader, mieux scopé pour 1.6.0.Bugs corrigés
1. Mini-player blanche depuis 1.5.0 (#279)
ThemeProviderappelleuseProfile()depuis #264 (per-profile theme + skin storage), maisMiniPlayerApp.tsxétait resté avec l'ancien ordre oùThemeProviderwrapProfileProvider. React StrictMode catch le"must be used within ProfileProvider"throw → fenêtre blanche.Fix (
985e4e5) : remettreProfileProvideren outer comme dansApp.tsx.2. Glow neon Pulse leak dans le skin picker (#281)
SkinPickerCardappliquepreset.surface.shadowCardenboxShadowinline sur la div interne. Pulse seul utilise une halo neon saturée (0 0 24px -4px var(--accent-500)) qui escape le clipoverflow-hiddendu bouton parent et bleed en bas de la card preview.Les autres skins ont des shadows soit trop subtiles pour être visibles à ~200×100 px (Studio, Lounge), soit
none(Editorial, Liquid). Le canal porte zéro signal utile pour 4 skins et un vrai bug pour le 5e.Fix (
a066a17) : dropboxShadowdupreviewStyle. L'identité du skin reste portée par la typographie + le radius — les shadows se révèlent au clic sur le vrai chrome.3. About hero illisible en Liquid light
Le Hero hardcodait
bg-linear-to-br from-zinc-900 to-zinc-800 text-white+ classestext-zinc-{300,400,500,600}dark-only. Marchait sur Studio Light (gradient dark contraste avec la page), maisliquid.css:349stripbackground-imagesur toutrounded-3xlsousmainpour appliquer son glass universel → texte dark stranded sur glass pâle, version watermark / subtitle / year / license / bouton tous invisibles.Fix (
a802da9) : paire chaque couleur avec un variantdark:pour que le hero rende correctement sur chaque combo (theme × skin).Bug à investiguer avant merge (blocker)
Race condition Liquid light → Mood Radio tiles blanchissent
Pré-investigation :
liquid.css:443-486—.liquid-mood-tile::beforea opacity 0.55 par défaut + transition opacity 240ms, override à 0.95 quand:not(.dark)matche. Le double-effect pattern deThemeContext(cache→DB) peut toggle.darkbrièvement pendant un profile load, déclencher la transition opacity, et un second reapply pendant l'animation persiste l'état intermédiaire.Trois itérations précédentes ont échoué (
debc42freverted,a2c0cb4WIP deleted) parce qu'elles patchaient le symptôme CSS, pas la race. À adresser à la source : court-circuiterapplyTheme+applySkinquand cache et DB matchent.Test plan
bun run typecheckpasseSummary by CodeRabbit
Bug Fixes
Style