65057473c6
auth/store.svelte.ts no longer imports from $lib/player. Logout broadcasts via auth/sessionEnd.svelte.ts (a tiny tick + outgoing userId pair); player subscribes through $effect.root and owns the player-specific teardown (clearPersistedQueue + playQueue([]) + closeQueueDrawer()). Cycle fully inverted — auth is now a pure leaf for player; future session-end consumers (download cache, recent-search history) plug in by adding their own effect on the same signal. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>