Files
Musify/web-player
Admin 6be5c43e6d Let sidebar and queue show the same ambient backdrop as the center
Sidebar and Queue painted their own opaque bg-bg, which sat in front of
the fixed, full-viewport app-backdrop div (z-index: -10) that carries
--mf-ambient's radial-gradient glow in dark mode. Since the main content
area has no background of its own, the glow only ever showed through
there — sidebar and queue blocked it with a flat, gradient-less fill of
the same base color.

Drop bg-bg from both so the same app-backdrop (color + ambient gradient)
shows through underneath them too. In light mode this is a no-op
(--mf-ambient is 'none' and app-backdrop's flat color already matches
what bg-bg painted), so only dark mode is visually affected.
2026-09-22 19:46:25 +02:00
..
2026-09-09 23:18:42 +02:00

web-player

Musify's web client: SvelteKit 2 (adapter-node), Svelte 5 runes, Tailwind 4, TypeScript. Authentication is server-side OIDC against Zitadel (openid-client and jose) with an encrypted session cookie; the backend is called from load functions and form actions through a typed openapi-fetch client.

Development

npm install
npm run dev      # :5173

Configuration lives in .env (template in .env.example). Bring the infrastructure stack up first (see ../deploy/README.md) and copy the WEB_CLIENT_ID / WEB_CLIENT_SECRET it writes to deploy/.env into this .env once, then run the dev server.

npm run check    # svelte-check — must be clean before closing a change
npm run lint     # prettier --check . && eslint .
npm run format   # prettier --write .
npm run build    # production build into build/
npm run gen:api  # regenerate src/lib/api/schema.d.ts from the running API

Production

Built and run as a container by the production stack — see ../deploy/README.md. There the same variables come from deploy/.env.prod through compose instead of from .env.

Conventions and the design system are documented in CLAUDE.md and in the musify-web skill.