layout and remote fix
🏗️ Build and Test JellyTau / Run Tests (push) Successful in 4m31s
Traceability Validation / Check Requirement Traces (push) Successful in 20s
Build & Release / Run Tests (push) Successful in 5m24s
🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 4m29s
Build & Release / Build Linux (push) Successful in 17m27s
Build & Release / Build Android (push) Successful in 22m14s
Build & Release / Create Release (push) Successful in 12s

This commit is contained in:
2026-07-16 22:53:03 +02:00
parent 532ffa661a
commit 1992a8187d
10 changed files with 272 additions and 192 deletions
+8 -7
View File
@@ -5,10 +5,9 @@
import { commands } from "$lib/api/bindings";
import { auth, isAuthenticated, isLoading as isAuthLoading, currentUser } from "$lib/stores/auth";
import { library } from "$lib/stores/library";
import { bottomUiHeight } from "$lib/stores/appState";
import { reservedBottomPadding } from "$lib/utils/layoutShell";
import { useScrollGuard } from "$lib/composables/useScrollGuard";
import Search from "$lib/components/Search.svelte";
import BottomUi from "$lib/components/BottomUi.svelte";
import SleepTimerModal from "$lib/components/player/SleepTimerModal.svelte";
// Scroll guard prevents accidental taps on library cards during/after scrolling (Android)
@@ -190,18 +189,20 @@
</div>
</header>
<!-- Main content. The fixed bottom UI (mini player + nav) is owned entirely
by the root layout on every platform, and its live-measured height is
published to `bottomUiHeight`. We reserve exactly that here (plus a
little breathing room) so the last row never hides behind the nav. -->
<!-- Main content. The BottomUi below is an in-flow flex sibling, so this
scroller is physically bounded above it and its last row can never
render behind the nav — no measurement, no reserved padding. -->
<main
class="flex-1 overflow-y-auto p-4 min-h-0"
style="padding-bottom: {reservedBottomPadding($bottomUiHeight, 1)}; overscroll-behavior: contain"
style="overscroll-behavior: contain"
onscroll={scrollGuard.onScroll}
>
{@render children()}
</main>
<!-- Bottom UI (mini player + nav), in-flow below the scroller. -->
<BottomUi />
<!-- Sleep Timer Modal -->
<SleepTimerModal
isOpen={showSleepTimerModal}