Frontend redesign: Hi-Fi Archival + bun/oxlint/oxfmt/tsgo/knip toolchain #2

Merged
kleb merged 3 commits from kleb/redesign-hifi-archival into electron-port 2026-06-14 13:34:41 +02:00 AGit
Owner

Frontend redesign (presentation only; hooks/lib/types/IPC reused unchanged):

  • New "Hi-Fi Archival" design system in index.css: warm-neutral charcoal/bone
    chrome, single gold "signal" accent, self-hosted Bricolage Grotesque /
    Hanken Grotesk / JetBrains Mono, cover-art hero backdrops, VU-meter progress,
    spec-sheet metadata, glass surfaces.
  • New app shell: frameless TitleBar, expandable grouped Sidebar, Cmd/Ctrl+K
    command palette (hand-rolled on Radix Dialog).
  • Rebuilt every view: Track/Album/Playlist/Artist heroes (MediaHero + HeroActions)
    with Spotify-style track rows; Home/Search; Download Queue; Batch Queue; Audio
    Analysis; File Manager (+ dialogs); Advanced Tools; Databases; Debug Logger.
  • Simplified theme settings to a segmented Auto/Light/Dark + sound; removed the
    dead 18-accent picker and lib/themes.ts.
  • Restyled shadcn primitives (segmented Tabs, elevated Dialog surface).

Renderer now uses real React 19 instead of the preact/compat alias: Preact broke
every Radix dialog (react-remove-scroll calling getComputedStyle on a non-element),
leaving dialog content unmounted. Removed orphaned primitives/deps (Card, Badge,
Progress, Toggle, Tooltip + their radix deps, motion, react-virtual); knip reports
0 unused dependencies.

Toolchain: pnpm -> bun (workspaces, trustedDependencies), eslint -> oxlint, added
oxfmt (tabWidth 4), tsgo typecheck, knip. Whole repo formatted with oxfmt.

Gate: typecheck, lint, build, and format:check all pass.

Frontend redesign (presentation only; hooks/lib/types/IPC reused unchanged): - New "Hi-Fi Archival" design system in index.css: warm-neutral charcoal/bone chrome, single gold "signal" accent, self-hosted Bricolage Grotesque / Hanken Grotesk / JetBrains Mono, cover-art hero backdrops, VU-meter progress, spec-sheet metadata, glass surfaces. - New app shell: frameless TitleBar, expandable grouped Sidebar, Cmd/Ctrl+K command palette (hand-rolled on Radix Dialog). - Rebuilt every view: Track/Album/Playlist/Artist heroes (MediaHero + HeroActions) with Spotify-style track rows; Home/Search; Download Queue; Batch Queue; Audio Analysis; File Manager (+ dialogs); Advanced Tools; Databases; Debug Logger. - Simplified theme settings to a segmented Auto/Light/Dark + sound; removed the dead 18-accent picker and lib/themes.ts. - Restyled shadcn primitives (segmented Tabs, elevated Dialog surface). Renderer now uses real React 19 instead of the preact/compat alias: Preact broke every Radix dialog (react-remove-scroll calling getComputedStyle on a non-element), leaving dialog content unmounted. Removed orphaned primitives/deps (Card, Badge, Progress, Toggle, Tooltip + their radix deps, motion, react-virtual); knip reports 0 unused dependencies. Toolchain: pnpm -> bun (workspaces, trustedDependencies), eslint -> oxlint, added oxfmt (tabWidth 4), tsgo typecheck, knip. Whole repo formatted with oxfmt. Gate: typecheck, lint, build, and format:check all pass.
Frontend redesign (presentation only; hooks/lib/types/IPC reused unchanged):
- New "Hi-Fi Archival" design system in index.css: warm-neutral charcoal/bone
  chrome, single gold "signal" accent, self-hosted Bricolage Grotesque /
  Hanken Grotesk / JetBrains Mono, cover-art hero backdrops, VU-meter progress,
  spec-sheet metadata, glass surfaces.
- New app shell: frameless TitleBar, expandable grouped Sidebar, Cmd/Ctrl+K
  command palette (hand-rolled on Radix Dialog).
- Rebuilt every view: Track/Album/Playlist/Artist heroes (MediaHero + HeroActions)
  with Spotify-style track rows; Home/Search; Download Queue; Batch Queue; Audio
  Analysis; File Manager (+ dialogs); Advanced Tools; Databases; Debug Logger.
- Simplified theme settings to a segmented Auto/Light/Dark + sound; removed the
  dead 18-accent picker and lib/themes.ts.
- Restyled shadcn primitives (segmented Tabs, elevated Dialog surface).

Renderer now uses real React 19 instead of the preact/compat alias: Preact broke
every Radix dialog (react-remove-scroll calling getComputedStyle on a non-element),
leaving dialog content unmounted. Removed orphaned primitives/deps (Card, Badge,
Progress, Toggle, Tooltip + their radix deps, motion, react-virtual); knip reports
0 unused dependencies.

Toolchain: pnpm -> bun (workspaces, trustedDependencies), eslint -> oxlint, added
oxfmt (tabWidth 4), tsgo typecheck, knip. Whole repo formatted with oxfmt.

Gate: typecheck, lint, build, and format:check all pass.
Collaborator

Codex review

Verdict: no findings

No must-fix issues were found in the reviewed diff.

No must-fix issues were found across the reviewed diff. Some files were not fully reviewed (partial coverage).

Not reviewed

The diff exceeded the configured size limit. These files were not reviewed:

12 skipped files
  • frontend/src/hooks/useDownload.ts
  • src/main/providers/songlink.ts
  • src/main/providers/spotify.ts
  • src/main/providers/tidal-api-list.ts
  • src/main/providers/tidal-hifi.ts
  • src/main/providers/tidal-manifest.ts
  • src/main/providers/tidal.ts
  • src/main/window.ts
  • src/preload/index.ts
  • src/shared/channels.ts
  • tsconfig.json
  • tsconfig.node.json

Excluded as generated or vendored (not reviewed): bun.lock, frontend/package-lock.json, frontend/pnpm-lock.yaml, pnpm-lock.yaml.

Reviewed by Codex at 7f8e7cf807. This comment is conservative and based only on the PR diff, metadata, and supplied repository context.

Est. cost ~$3.30 (635.3k in / 6.5k out / gpt-5.5).

<!-- codex-forgejo-review --> <!-- codex-forgejo-review-head:7f8e7cf807420f9f3cff062db518da0648426e8a --> ## Codex review **Verdict:** no findings No must-fix issues were found in the reviewed diff. No must-fix issues were found across the reviewed diff. Some files were not fully reviewed (partial coverage). ### Not reviewed The diff exceeded the configured size limit. These files were not reviewed: <details> <summary>12 skipped files</summary> - `frontend/src/hooks/useDownload.ts` - `src/main/providers/songlink.ts` - `src/main/providers/spotify.ts` - `src/main/providers/tidal-api-list.ts` - `src/main/providers/tidal-hifi.ts` - `src/main/providers/tidal-manifest.ts` - `src/main/providers/tidal.ts` - `src/main/window.ts` - `src/preload/index.ts` - `src/shared/channels.ts` - `tsconfig.json` - `tsconfig.node.json` </details> _Excluded as generated or vendored (not reviewed):_ `bun.lock`, `frontend/package-lock.json`, `frontend/pnpm-lock.yaml`, `pnpm-lock.yaml`. _Reviewed by Codex at `7f8e7cf807`. This comment is conservative and based only on the PR diff, metadata, and supplied repository context._ _Est. cost ~$3.30 (635.3k in / 6.5k out / gpt-5.5)._ <!-- codex-forgejo-review-state:eyJoZWFkU2hhIjoiN2Y4ZTdjZjgwNzQyMGY5ZjNjZmYwNjJkYjUxOGRhMDY0ODQyNmU4YSIsInN1bW1hcnkiOiJObyBtdXN0LWZpeCBpc3N1ZXMgd2VyZSBmb3VuZCBhY3Jvc3MgdGhlIHJldmlld2VkIGRpZmYuIFNvbWUgZmlsZXMgd2VyZSBub3QgZnVsbHkgcmV2aWV3ZWQgKHBhcnRpYWwgY292ZXJhZ2UpLiIsImZpbmRpbmdzIjpbXX0= -->
- README: switch build instructions from pnpm to Bun (matches bun.lock and the
  release workflow); document the tsgo/oxlint/oxfmt/knip dev tooling.
- window.ts: gate the dev screenshot-capture hook behind !app.isPackaged so a
  packaged app launched with SPOTIFLAC_CAPTURE set can never capture-and-quit.
kleb referenced this pull request from a commit 2026-06-14 01:03:30 +02:00
Selecting "Search Spotify for ..." in the command palette dropped the typed query:
handlePaletteSearch ignored its argument and only switched into search mode. The
SearchBar owns its search field internally (it is not driven by spotifyUrl, which
is the URL-mode input), so seed it explicitly.

- App: thread the palette query through handlePaletteSearch into a {query, nonce}
  seed passed to SearchBar; the nonce re-applies the same query on repeat.
- SearchBar: accept searchSeed/searchSeedNonce and set the search field from them,
  which triggers the existing debounced Spotify search.
kleb merged commit 0345a7a262 into electron-port 2026-06-14 13:34:41 +02:00
kleb referenced this pull request from a commit 2026-08-24 01:37:03 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kleb/SpotifFLAC!2
No description provided.