diff --git a/web/src/pages/SongPage.tsx b/web/src/pages/SongPage.tsx index ca77c37..f64d1b9 100644 --- a/web/src/pages/SongPage.tsx +++ b/web/src/pages/SongPage.tsx @@ -116,20 +116,22 @@ function Avatar({ } return (
{getInitials(name)}
@@ -200,19 +202,21 @@ function WaveformPins({ return (
setHoveredId(c.id)} onMouseLeave={() => setHoveredId(null)} onClick={() => { @@ -223,34 +227,38 @@ function WaveformPins({ {/* Tooltip */} {isHovered && (
{getInitials(c.author_name)}
@@ -266,20 +274,22 @@ function WaveformPins({ )} {/* Avatar circle */}
{getInitials(c.author_name)}
@@ -307,7 +317,7 @@ export function SongPage() { const [composeFocused, setComposeFocused] = useState(false); const [waveformWidth, setWaveformWidth] = useState(0); - // ── Data fetching ──────────────────────────────────────────────────────── + // ── Data fetching ────────────────────────────────────────────────────── const { data: me } = useQuery({ queryKey: ["me"], @@ -338,7 +348,7 @@ export function SongPage() { enabled: !!songId, }); - // ── Version selection ──────────────────────────────────────────────────── + // ── Version selection ────────────────────────────────────────────────── const activeVersion = selectedVersionId ?? versions?.[0]?.id ?? null; @@ -361,7 +371,7 @@ export function SongPage() { return () => ro.disconnect(); }, []); - // ── Keyboard shortcut: Space ────────────────────────────────────────────── + // ── Keyboard shortcut: Space ──────────────────────────────────────────── useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { @@ -401,26 +411,27 @@ export function SongPage() { }, []); - - // ── Styles ──────────────────────────────────────────────────────────────── + // ── Styles ────────────────────────────────────────────────────────────── const border = "rgba(255,255,255,0.055)"; - // ── Render ──────────────────────────────────────────────────────────────── + // ── Render ────────────────────────────────────────────────────────────── return (
{/* ── Breadcrumb header ──────────────────────────────────────────── */}
@@ -484,38 +499,42 @@ export function SongPage() { )}
{/* ── Body: waveform | comments ────────────────────────────────── */} -
+
- {/* ── Left: waveform + transport ──────────────────────────────── */} -
+ {/* ── Waveform section (top) ──────────────────────────────── */} +
{/* Waveform card */}
@@ -559,13 +578,15 @@ export function SongPage() { {/* Transport */}
{/* Skip back */} seekTo(Math.max(0, currentTime - 30))} title="−30s"> @@ -576,20 +597,22 @@ export function SongPage() {
- {/* ── Right: comment panel ──────────────────────────────────────── */} + {/* ── Comments section (bottom) ──────────────────────────────── */}
{/* Header */}
Comments {comments && comments.length > 0 && ( {comments.length} )}
- {/* Comment list */} + {/* Compose section (moved to top) */} +
+
+ {/* My avatar */} + {me ? ( + + ) : ( +
+ )} + +
+ {/* Timestamp pill */} +
+
+ {isPlaying && ( +
+ )} + {formatTime(currentTime)} +
+ · pins to playhead +
+ + {/* Textarea */} +