From 773275e9161bc41174838215b9acb2e51e9a8ddb Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sun, 14 Jun 2026 21:40:16 -0400 Subject: [PATCH] feat(web): surface "Start radio" in the track kebab menu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Radio was fully wired (playRadio → /api/radio + 80% auto-refresh) but its only entry point was TrackRow's inline 📻 button, so it was unreachable from the kebab — i.e. missing on the Most Played compact cards and the mini-player. Add a "Start radio" item to TrackMenu, shown even under hideQueueActions since reseeding a station from the current track is meaningful there. Co-Authored-By: Claude Opus 4.8 (1M context) --- web/src/lib/components/TrackMenu.svelte | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/web/src/lib/components/TrackMenu.svelte b/web/src/lib/components/TrackMenu.svelte index d883211c..2007b46f 100644 --- a/web/src/lib/components/TrackMenu.svelte +++ b/web/src/lib/components/TrackMenu.svelte @@ -3,6 +3,7 @@ MoreVertical, ListPlus, Plus, + Radio, Heart, HeartOff, ListMusic, @@ -24,7 +25,7 @@ import { createLikedIdsQuery, likeEntity, unlikeEntity } from '$lib/api/likes'; import { createMyQuarantineQuery, unflagTrack } from '$lib/api/quarantine'; import { qk } from '$lib/api/queries'; - import { playNext, enqueueTrack } from '$lib/player/store.svelte'; + import { playNext, enqueueTrack, playRadio } from '$lib/player/store.svelte'; import type { TrackRef } from '$lib/api/types'; let { @@ -87,6 +88,11 @@ closeAll(); } + function onStartRadio() { + playRadio(track.id); + closeAll(); + } + async function onToggleLike() { closeAll(); if (liked) { @@ -168,6 +174,14 @@ {/if} + + + + +