From f5a7fc1b1ae7671a55ef8f9227d5d7425d3ce009 Mon Sep 17 00:00:00 2001 From: Arvin Date: Thu, 10 Sep 2026 19:45:20 +0200 Subject: [PATCH] fix(web): protect TV startup controls and unhydrated profile settings --- web/app/dev/stabilization/fixture.tsx | 4 +++- web/app/dev/stabilization/page.tsx | 2 +- web/app/tv-guide.css | 4 ++-- web/components/player/PlayerOverlay.tsx | 2 +- web/lib/settingsOutbox.ts | 8 +++++++- web/lib/store.tsx | 3 +++ web/tests/tv-polish.test.cjs | 19 ++++++++++++++++++- 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/web/app/dev/stabilization/fixture.tsx b/web/app/dev/stabilization/fixture.tsx index f03b46b07..6a4da6bb1 100644 --- a/web/app/dev/stabilization/fixture.tsx +++ b/web/app/dev/stabilization/fixture.tsx @@ -29,7 +29,7 @@ const posters = ["/1pdfLvkbY9ohJlCjQH2CZjjYVvJ.jpg", "/qJ2tW6WMUDux911r6m7haRef0 const titles = ["Dune: Part Two", "The Dark Knight", "Interstellar", "The Shawshank Redemption"]; const media: MediaItem[] = Array.from({ length: 24 }, (_, i) => ({ id: -i - 1, mediaType: "movie", title: titles[i % 4], year: "2024", image: `https://image.tmdb.org/t/p/w500${posters[i % 4]}`, backdrop: `https://image.tmdb.org/t/p/w780${posters[i % 4]}`, rating: "8.4", overview: "Controlled test data", activityAt: 100 - i })); -export function StabilizationFixture() { +export function StabilizationFixture({ testLiveUrl }: { testLiveUrl?: string } = {}) { const [ready, setReady] = useState(false); useEffect(() => setReady(true), []); const [page, setPage] = useState("tv"); @@ -83,6 +83,8 @@ export function StabilizationFixture() {
+ + {testLiveUrl && } diff --git a/web/app/dev/stabilization/page.tsx b/web/app/dev/stabilization/page.tsx index 3e77d89a6..49418dae3 100644 --- a/web/app/dev/stabilization/page.tsx +++ b/web/app/dev/stabilization/page.tsx @@ -6,5 +6,5 @@ export const dynamic = "force-dynamic"; export default async function Page({ searchParams }: { searchParams: Promise<{ mobile?: string }> }) { if (process.env.NODE_ENV !== "development" || process.env.ARVIO_UI_FIXTURES !== "true") notFound(); if ((await searchParams).mobile === "1") return