Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ This file is an **index, not a manual**. It carries the map plus the one-line fo
| How a feature actually works | [`docs/features/`](docs/README.md#features) |
| The visual direction (tokens, shapes) | [`docs/design/fluid-editorial.md`](docs/design/fluid-editorial.md) |
| The second direction, Liquid's glass | [`docs/design/liquid-aurora-glass.md`](docs/design/liquid-aurora-glass.md) |
| The third material, Pulse's neon | [`docs/design/pulse-neon-deck.md`](docs/design/pulse-neon-deck.md) |
| Crate split, audio topology, DB layout | [`docs/architecture/`](docs/README.md#architecture) |
| Design decisions not yet built | [`docs/rfcs/`](docs/README.md#rfcs) |
| Release / packaging procedure | [`docs/RELEASING.md`](docs/RELEASING.md) |
Expand Down Expand Up @@ -48,7 +49,7 @@ React 19 + TypeScript. Entry: `src/main.tsx` → `src/App.tsx`.
- **Hooks** wrap each context: `useTheme`, `usePlayer`, `useLibrary`, `usePlaylist`, `useProfile`, `usePageScroll`. The playback position is the exception: it ticks at 4 Hz, so it lives outside `PlayerContext` in [`usePlayerPosition`](src/hooks/usePlayerPosition.ts) ([why](docs/architecture/invariants.md#events)).
- **Tauri wrappers** (`src/lib/tauri/`): one typed `invoke()` per backend command.
- **Views**: `HomeView`, `LibraryView`, `PlaylistView`, `AlbumDetailView`, `ArtistDetailView`, `LikedView`, `HistoryView`, `StatisticsView`, `WrappedView`, `SettingsView`, …
- **Layout**: a skin preset declares its `layout` (`classic` | `fluid`, the 2.0 interface) and the views branch on `skin.layout`, never on a skin id; the fluid layout's structure is [`fluid.css`](src/styles/skins/fluid.css), keyed on `data-layout`, and Liquid paints its glass over it. Classic: Apple-Music-style sidebar, TopBar with search, PlayerBar at the bottom, right-edge panels (`NowPlayingPanel` / `QueuePanel` / `LyricsPanel`) mutex'd via `PlayerContext`. A second `WebviewWindow` (label `mini`, `?mini=1`) ships the always-on-top mini-player — [`docs/features/ui.md`](docs/features/ui.md#mini-player) — and a third (label `lyrics`, `?lyrics=1`, created by the backend) the transparent desktop lyrics overlay — [`#desktop-lyrics`](docs/features/ui.md#desktop-lyrics).
- **Layout**: a skin preset declares its `layout` (`classic` | `fluid`, the 2.0 interface) and the views branch on `skin.layout`, never on a skin id; the fluid layout's structure is [`fluid.css`](src/styles/skins/fluid.css), keyed on `data-layout`, and Liquid paints its glass over it, Pulse its neon. Classic: Apple-Music-style sidebar, TopBar with search, PlayerBar at the bottom, right-edge panels (`NowPlayingPanel` / `QueuePanel` / `LyricsPanel`) mutex'd via `PlayerContext`. A second `WebviewWindow` (label `mini`, `?mini=1`) ships the always-on-top mini-player — [`docs/features/ui.md`](docs/features/ui.md#mini-player) — and a third (label `lyrics`, `?lyrics=1`, created by the backend) the transparent desktop lyrics overlay — [`#desktop-lyrics`](docs/features/ui.md#desktop-lyrics).

### Backend (`src-tauri/`) — Cargo workspace, two members

Expand Down
9 changes: 5 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@ User-facing references and per-feature deep dives. The top-level [README](../REA

## Design

| Doc | Scope |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Fluid Editorial](design/fluid-editorial.md) | The visual direction since 2.0: principles, colour / type / shape / motion tokens, the wave mark, every component's shape, and how to carry it to the web app, the Android app and the landing site |
| [Liquid — Aurora Glass](design/liquid-aurora-glass.md) | The second direction on the same interface: music as light and material — pastel pools tinted by the cover, four glass levels, separation by light, states as light, the mood capsules and the light progress |
| Doc | Scope |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Fluid Editorial](design/fluid-editorial.md) | The visual direction since 2.0: principles, colour / type / shape / motion tokens, the wave mark, every component's shape, and how to carry it to the web app, the Android app and the landing site |
| [Liquid — Aurora Glass](design/liquid-aurora-glass.md) | The second direction on the same interface: music as light and material — pastel pools tinted by the cover, four glass levels, separation by light, states as light, the mood capsules and the light progress |
| [Pulse — Neon Deck](design/pulse-neon-deck.md) | The third material on the same interface: a club control panel — OLED black, the chrome drawn as hairlines, the theme's accent as neon on whatever is live, the tempo deck, the floating pill of a player bar, the spring |

## RFCs

Expand Down
2 changes: 1 addition & 1 deletion docs/design/fluid-editorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ The structure above — the canvas, the band, the spectrum, the rail, the contro
| rails and bars are flush | the rail, the bar and the panel float: inset `0.75–1 rem` from the window, `1.5–1.75 rem` corners |
| a hover is a tone | a hover is a tone, and a press is instant — `scale(0.94–0.97)` on pointer-down, before anything else |

What does not change between the two: the base type system (the serif italic line excepted, as the row above says), the mark, the accent rule, the rhythm, the ease. A third material (a paper, a neon) would be written the same way — the tokens redeclared, the few surface rules added, nothing moved.
What does not change between the two: the base type system (the serif italic line excepted, as the row above says), the mark, the accent rule, the rhythm, the ease. A third material is written the same way — the tokens redeclared, the few surface rules added, nothing moved — and the neon one exists: [Pulse — Neon Deck](./pulse-neon-deck.md), OLED black, the chrome as hairlines, the accent lit on whatever is live, its own spring in place of the ease.

## Carrying it to another surface

Expand Down
2 changes: 1 addition & 1 deletion docs/design/liquid-aurora-glass.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Liquid — Aurora Glass

The second direction of WaveFlow 2.0, beside [Fluid Editorial](./fluid-editorial.md). Both sit on the same interface — the canvas, the rail, the control rail, the tabbed panel, the page heroes — and both are written down here so the web app, the Android app and the landing site can carry them. The desktop implementation is the `liquid` skin ([`src/styles/skins/liquid.css`](../../src/styles/skins/liquid.css) over [`fluid.css`](../../src/styles/skins/fluid.css), [`src/lib/skins.ts`](../../src/lib/skins.ts)); this page is the intent and the values.
The second direction of WaveFlow 2.0, beside [Fluid Editorial](./fluid-editorial.md) (and, since, [Pulse — Neon Deck](./pulse-neon-deck.md)). Both sit on the same interface — the canvas, the rail, the control rail, the tabbed panel, the page heroes — and both are written down here so the web app, the Android app and the landing site can carry them. The desktop implementation is the `liquid` skin ([`src/styles/skins/liquid.css`](../../src/styles/skins/liquid.css) over [`fluid.css`](../../src/styles/skins/fluid.css), [`src/lib/skins.ts`](../../src/lib/skins.ts)); this page is the intent and the values.

The one-line brief: **music as light and material — a luminous, airy glass, tinted by what is playing, with a light that answers the hand.**

Expand Down
Loading
Loading