diff --git a/src/components/OrbitQueueHead.tsx b/src/components/OrbitQueueHead.tsx
new file mode 100644
index 00000000..21530636
--- /dev/null
+++ b/src/components/OrbitQueueHead.tsx
@@ -0,0 +1,24 @@
+import { Users } from 'lucide-react';
+import type { OrbitState } from '../api/orbit';
+
+interface Props {
+ state: OrbitState;
+}
+
+/**
+ * Shared Orbit head strip rendered at the top of the queue for both host
+ * and guest. Shows the session name and a comma-separated list of every
+ * participant (host first, then guests in join order).
+ */
+export default function OrbitQueueHead({ state }: Props) {
+ const names = [state.host, ...state.participants.map(p => p.user)];
+ return (
+
+
{state.name}
+
+
+ {names.join(', ')}
+
+
+ );
+}
diff --git a/src/components/QueuePanel.tsx b/src/components/QueuePanel.tsx
index 18244748..65d917f0 100644
--- a/src/components/QueuePanel.tsx
+++ b/src/components/QueuePanel.tsx
@@ -2,6 +2,7 @@ import React, { useState, useRef, useMemo, useEffect } from 'react';
import { Track, usePlayerStore, songToTrack } from '../store/playerStore';
import { useOrbitStore } from '../store/orbitStore';
import OrbitGuestQueue from './OrbitGuestQueue';
+import OrbitQueueHead from './OrbitQueueHead';
import { Play, Music, Star, X, Trash2, Save, FolderOpen, Shuffle, Infinity, Waves, MicVocal, ListMusic, Check, ListPlus, MoveRight, Radio, HardDrive, ChevronDown, Info, Share2 } from 'lucide-react';
import { buildCoverArtUrl, coverArtCacheKey, getAlbum, getPlaylists, getPlaylist, updatePlaylist, deletePlaylist, SubsonicPlaylist } from '../api/subsonic';
import { usePlaylistStore } from '../store/playlistStore';
@@ -247,6 +248,8 @@ export default function QueuePanel() {
function QueuePanelHostOrSolo() {
const { t } = useTranslation();
const navigate = useNavigate();
+ const orbitRole = useOrbitStore(s => s.role);
+ const orbitState = useOrbitStore(s => s.state);
const queue = usePlayerStore(s => s.queue);
const queueIndex = usePlayerStore(s => s.queueIndex);
const currentTrack = usePlayerStore(s => s.currentTrack);
@@ -465,6 +468,9 @@ function QueuePanelHostOrSolo() {
borderLeftWidth: isQueueVisible ? 1 : 0,
}}
>
+ {orbitRole === 'host' && orbitState && (
+
+ )}