From d8e03efda00c7b5e35579dd631860eab25b5fd9e Mon Sep 17 00:00:00 2001 From: RXWatcher <14085001+RXWatcher@users.noreply.github.com> Date: Mon, 25 May 2026 01:33:09 +0200 Subject: [PATCH] feat(audiobooks): show current chapter in MiniBar left column Renders playback.currentChapter.title between the book title and the time row. Truncates with a tooltip; absent when the chapter list is empty or the current position falls outside any chapter. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../pages/audiobooks/player/MiniBar.test.tsx | 23 +++++++++++++++++++ web/src/pages/audiobooks/player/MiniBar.tsx | 9 ++++++++ 2 files changed, 32 insertions(+) diff --git a/web/src/pages/audiobooks/player/MiniBar.test.tsx b/web/src/pages/audiobooks/player/MiniBar.test.tsx index d1ad39e1..db436a5a 100644 --- a/web/src/pages/audiobooks/player/MiniBar.test.tsx +++ b/web/src/pages/audiobooks/player/MiniBar.test.tsx @@ -43,4 +43,27 @@ describe("MiniBar", () => { await userEvent.click(screen.getByRole("button", { name: /close player/i })); expect(onClose).toHaveBeenCalled(); }); + + it("renders the current chapter title under the book title", () => { + render( + , + ); + expect(screen.getByText("The Astrophage")).toBeInTheDocument(); + }); + + it("omits the chapter row when no current chapter is known", () => { + render(); + expect(screen.queryByTestId("minibar-chapter-title")).not.toBeInTheDocument(); + }); }); diff --git a/web/src/pages/audiobooks/player/MiniBar.tsx b/web/src/pages/audiobooks/player/MiniBar.tsx index 707812b6..1bf645e4 100644 --- a/web/src/pages/audiobooks/player/MiniBar.tsx +++ b/web/src/pages/audiobooks/player/MiniBar.tsx @@ -38,6 +38,15 @@ export function MiniBar({ title, playback, onClose }: MiniBarProps) { {title} ) : null} + {playback.currentChapter ? ( +
+ {playback.currentChapter.title} +
+ ) : null}
{formatTime(playback.currentTime)}