Both pages reimplemented the same accessors over the target union and a byte-identical queue-item mapper. Moves the domain type (renamed ContextMenuTarget -> TrackTarget, since tiles and the queue use it too) and its helpers to $lib/tracks.ts; TrackContextMenu keeps only its menu geometry. Home drops from 341 to ~230 lines. Unifies two divergences the duplication was hiding: home compared the active tile against track.id while the queue is keyed by queueIdForTrack, so YouTube-sourced tracks never highlighted; and it hardcoded explicit to false for local tracks, hiding the badge. Also cancels in-flight youtube filler results when the effect re-runs, so a slow response cannot overwrite newer ones.
sv
Everything you need to build a Svelte project, powered by sv.
Creating a project
If you're seeing this, you've probably already done this step. Congrats!
# create a new project
npx sv create my-app
To recreate this project with the same configuration:
# recreate this project
npx sv@0.16.2 create --template minimal --types ts --add tailwindcss="plugins:none" --no-download-check --install npm frontend
Developing
Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
Building
To create a production version of your app:
npm run build
You can preview the production build with npm run preview.
To deploy your app, you may need to install an adapter for your target environment.