Repository navigation
Conversation
…flag An isolated exploration of a new visual direction for the Home page, mounted instead of the app when the URL carries ?proto=fluid-editorial in development builds only. The production shell, HomeView and every provider are untouched; vite build drops the branch and its chunk. - Listening Canvas replaces the greeting banner and the four stat cards - Mood Radio becomes a continuous tempo spectrum with keyboard support - editorial mosaic, shelf and journal replace the uniform card grids - compact player bar with a wave progress indicator, quieter sidebar - accent and atmosphere derived from the playing artwork - fixtures generated from a real profile by scripts/fluid-proto-fixtures.ts; album art stays in the gitignored prototypes/ folder, served by a serve-only Vite middleware
- the mood segment no longer nests a control inside the radio button: the start button is a sibling drawn over the reserved footprint, and arrow keys walk the moods that have tracks only - a cover tile forgets a load failure when its source changes - a late colour sample cannot land on a track that has no cover - the fixtures generator runs one resize + palette job per cover, shared by the album lists that overlap - the dev middleware is confined to prototypes/fluid-editorial with a separator-aware prefix check
- the dev middleware forwards a stream error to Vite instead of hanging - the sidebar toggle announces its state with aria-expanded - a mosaic cell whose image fails falls back to the palette gradient - the fixtures generator refuses a profile with no play history rather than writing a JSON the page cannot render from - drop the ts-expect-error on process.env: the node imports added to vite.config.ts brought the Node globals, so the directive was unused
…type - the fixtures generator probes its copy of the database and copies again when a checkpoint landed mid-copy; the README says so - plays without an album are dropped by the generator too, and the typed loader fails loudly instead of leaving recentPlays[0] undefined - reaching the end of a track advances the queue instead of looping; the refs behind play/next are written synchronously so two calls in one tick do not read the same state - reduced motion also stops button transitions and the hover/press lifts - the covers path in the fixtures comment matches the generator
Review of the first iteration asked for better use of a wide screen, a cover that lights the canvas rather than sitting apart from it, larger secondary type, a reason for the oversized tile and a player bar that speaks the same language. - container widened to 1680 px with wider gutters from 2xl - a blurred, masked copy of the current cover glows behind the title and the queue, cross-fading on track change - secondary sizes up one notch, tertiary ink lighter, labels heavier - the lead "recently added" tile carries "latest addition · when" - the progress wave becomes the player bar's top edge, full width, elapsed and total at its ends; the bar stays at 88 px
The Fluid Editorial prototype, reviewed and approved as a direction, now lives in the app as a skin alongside Studio, Editorial, Lounge, Pulse and Liquid, on real data, with every control kept. - skins.ts: the `fluid` preset (DM Sans Variable, pill actions, tonal surfaces); app.css lists it with the dark-only skins; index.html whitelists it for the first paint; the backend's skin-recovery whitelist accepts it (it refused the id with "unknown skin") - styles/skins/fluid.css: tokens, the atmosphere (two pools of the cover's colour + grain), chrome by landmark (quiet sidebar with an accent bar for the active row, flat header, borderless footer with the cover's light), tonal cards and inputs for every view, the flow line under section titles, high-contrast and reduced-motion blocks - HomeView becomes a switch: under Fluid it renders FluidHome, which loads recent plays, albums by added_at, the all-time top album, the listening total and the queue after the cursor; the listening canvas, the mood spectrum, the editorial mosaic, the shelf and the history list are wired to playback and navigation - MoodRadioGrid renders MoodSpectrum under Fluid (same counts, same start_mood_radio, keyboard radiogroup over the moods with tracks) - ProgressBar gains an `edge` variant (full-width wave with the times at its ends, same slider and keyboard contract); PlayerBar mounts it as its top edge under Fluid and keeps only the transport in the centre - useCoverGlow samples the cover's average through dominantColor() and writes --fe-glow; the accent stays --accent-400, so the theme, custom and cover accent modes drive it - 17 locales: the skin's label and description, and the Home's strings (home.fluid.*, plural forms per locale) - docs: ui.md skins table and architecture notes, CLAUDE.md, README The dev-only prototype (src/prototype, the fixtures script, the Vite middleware and the ?proto= branch in main.tsx) is removed: the skin supersedes it.
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
⛔ Files ignored due to path filters: 17
📒 Files selected for processing: 22
✨ Finishing Touches
Comment |
5 of 6 tasks
Owner
Author
|
Closed for now: the branch continues with the view-by-view polish. The final PR opens once the work is complete and validated, so the bot reviews a finished diff rather than every iteration. |
6 tasks done
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
fluid, alongside Studio, Editorial, Lounge, Pulse and Liquid — opt-in from Settings → Appearance, dark-only like Lounge and Pulse, working with all 14 themes and the three accent modes of feat(ui): custom accent colour over any theme, or the playing track's cover #895 (the skin reads--accent-400).HomeViewis now a switch that rendersFluidHomeunder Fluid (listening canvas around the current or last-played track, Mood Radio as a tempo spectrum, an editorial mosaic for the mixes with the all-time top album featured, a shelf for recent additions, a two-column history), all on real data and real actions.MoodRadioGridrendersMoodSpectrum(samestart_mood_radio, keyboard radiogroup),PlayerBarmountsProgressBar variant="edge"as its top edge (same slider, same keyboard contract, three times the seek travel).skin_recovery.rs) accepts the new id — it refused it with "unknown skin", which madesetSkinIdfail silently. One line of Rust, formatted.home.fluid.*, plural forms per locale). Docs:ui.mdskins table + architecture notes,CLAUDE.md,README.src/prototype, its fixtures script, the Vite middleware, the?proto=branch) is removed: this branch continues feat(home): fluid editorial home prototype behind a dev-only flag #905 and the diff againstmainno longer contains it.How I tested
bun run tauri devwith the WebView2 debug port, switched the running app to Fluid through CDP (the provider'ssetSkinId), and captured: Home at the top and scrolled (canvas, spectrum, mosaic, shelf, history), Library → Albums and Tracks, Settings → Appearance (the picker shows Fluid selected, cards and inputs take the tonal treatment, the title's accent bar becomes the flow line).bun run typecheck,bun run lint,rustfmt --checkon the one Rust file; the Rust change compiled throughtauri dev's rebuild.cargo checkwas not run separately (it would fight the running dev build for the target directory) — CI covers it.Screenshots / clips
Local captures in
prototypes/fluid-editorial/screenshots/app-*.png(the user's own covers, not committed).Checklist
type(scope): subject, kebab-case scope)bun run lint+bun run typecheckpass locallycargo fmt --checkon the touched file;cargo checkleft to CI (see above)src/i18n/locales/updated (fr + 16)CLAUDE.mdanddocs/features/ui.mdupdatedLinked issues
Refs #905 (the prototype this supersedes).
Summary by CodeRabbit