fix(player): remove duplicate inline player and declutter bottom bar
Some checks failed
Release / Test backend (push) Successful in 37s
Release / Check ui (push) Successful in 1m47s
Release / Docker / caddy (push) Successful in 50s
Release / Docker / backend (push) Successful in 3m11s
Release / Docker / runner (push) Successful in 2m42s
Release / Upload source maps (push) Successful in 1m30s
Release / Docker / ui (push) Failing after 1m35s
Release / Gitea Release (push) Has been skipped

When the mini-player is active on the current chapter, the collapsible
'Listen to this chapter' panel now shows a brief note instead of rendering
a full second AudioPlayer.

Bottom bar track info column: removed chapter title and book title lines
so the time display fits on one line without crowding the controls.
This commit is contained in:
Admin
2026-04-05 20:31:01 +05:00
parent eb137fdbf5
commit 55df88c3e5
2 changed files with 22 additions and 18 deletions

View File

@@ -857,12 +857,6 @@
aria-label={audioStore.chapters.length > 0 ? m.player_toggle_chapter_list() : undefined} aria-label={audioStore.chapters.length > 0 ? m.player_toggle_chapter_list() : undefined}
title={audioStore.chapters.length > 0 ? m.player_chapter_list_label() : undefined} title={audioStore.chapters.length > 0 ? m.player_chapter_list_label() : undefined}
> >
{#if audioStore.chapterTitle}
<p class="text-xs text-(--color-text) truncate leading-tight">{audioStore.chapterTitle}</p>
{/if}
{#if audioStore.bookTitle}
<p class="text-xs text-(--color-muted) truncate leading-tight">{audioStore.bookTitle}</p>
{/if}
{#if audioStore.status === 'generating'} {#if audioStore.status === 'generating'}
<p class="text-xs text-(--color-brand) leading-tight"> <p class="text-xs text-(--color-brand) leading-tight">
{m.player_generating({ percent: String(Math.round(audioStore.progress)) })} {m.player_generating({ percent: String(Math.round(audioStore.progress)) })}

View File

@@ -471,18 +471,28 @@
</button> </button>
{#if audioExpanded} {#if audioExpanded}
<div class="border border-t-0 border-(--color-border) rounded-b-lg overflow-hidden"> <div class="border border-t-0 border-(--color-border) rounded-b-lg overflow-hidden">
<AudioPlayer {#if audioStore.slug === data.book.slug && audioStore.chapter === data.chapter.number && audioStore.active}
slug={data.book.slug} <!-- Mini-player is already playing this chapter — don't duplicate controls -->
chapter={data.chapter.number} <div class="px-4 py-3 flex items-center gap-2 text-sm text-(--color-muted)">
chapterTitle={data.chapter.title || m.reader_chapter_n({ n: String(data.chapter.number) })} <svg class="w-4 h-4 text-(--color-brand) shrink-0" fill="currentColor" viewBox="0 0 24 24">
bookTitle={data.book.title} <path d="M12 3v10.55A4 4 0 1014 17V7h4V3h-6z"/>
cover={data.book.cover} </svg>
nextChapter={data.next} <span>Controls are in the player bar below.</span>
chapters={data.chapters} </div>
voices={data.voices} {:else}
playerStyle={layout.playerStyle} <AudioPlayer
onProRequired={() => { audioProRequired = true; }} slug={data.book.slug}
/> chapter={data.chapter.number}
chapterTitle={data.chapter.title || m.reader_chapter_n({ n: String(data.chapter.number) })}
bookTitle={data.book.title}
cover={data.book.cover}
nextChapter={data.next}
chapters={data.chapters}
voices={data.voices}
playerStyle={layout.playerStyle}
onProRequired={() => { audioProRequired = true; }}
/>
{/if}
</div> </div>
{/if} {/if}
</div> </div>