Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 8c10cd05de71775cd58a2986975c6d790546190d
parent 7a2e1f59e258c721f97942e5bd17745e6a0b7943
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Wed, 20 May 2026 11:59:29 -0400

Style changes

Diffstat:
Meditor/CHANGELOG.md | 2++
Meditor/app/channels/[slug]/components/StagesView.tsx | 17+++++++++++++++--
Meditor/app/channels/[slug]/components/VideoListPaneSection.tsx | 2+-
3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/editor/CHANGELOG.md b/editor/CHANGELOG.md @@ -18,5 +18,7 @@ ### Fixed - Channel page: clicking a pipeline stage in the side rail (or a mobile stage badge) no longer jumps up into the selected video's viewer panel. The per-video stage cards were emitting the same DOM ids as the channel-level pipeline sections, so the browser scrolled to the first match. The per-video cards now use a `video-stage-` prefix. +- Channel page sticky/anchor offsets bumped to clear the sticky `StatusHeader`. The left video list and the pipeline stage rail previously pinned too high (`top: 1rem` and `top: 8rem` respectively) and sat partially behind the header. Stage anchors used a fixed `scroll-margin-top: 8rem` that wasn't enough on narrow widths where the header's mobile badge row wraps. The video-list and stage-rail sticky tops are now `top: 7rem` (lg+), and stage sections use a responsive `scroll-margin-top` (11rem on mobile, 7rem on lg+). +- Clicking a mobile stage badge (or a stage rail item) now auto-expands the collapsible "Channel pipeline & settings" wrapper if the user had collapsed it. Previously the hash navigation succeeded but the target section was inside a closed `<details>` and not visible. The target is also re-scrolled into view after the expansion so it lands at the correct position. - Audio-check probe now flags `.part` files with heavy mid-stream codec corruption as malformed even when ffmpeg exits 0. Previously a stream could rack up hundreds of per-packet AAC decode failures (`Error submitting packet to decoder`) while ffmpeg still exited 0, and the file was promoted to a finished download. The classifier now also treats >5 decoder-error lines in stderr as malformed. - Editor's `/changelog` page no longer renders unstyled. The `@source` directive in `editor/app/globals.css` pointed at a non-existent path, so Tailwind never scanned the shared `<Changelog>` component for class usage. diff --git a/editor/app/channels/[slug]/components/StagesView.tsx b/editor/app/channels/[slug]/components/StagesView.tsx @@ -77,6 +77,19 @@ export function StagesView({ stages, stageOrder, panels }: Props) { next.add(fromHash); return next; }); + if (typeof document === "undefined") return; + const section = document.getElementById(`stage-${fromHash}`); + if (!section) return; + // Open the ancestor "Channel pipeline & settings" details so a badge + // click doesn't silently land on a collapsed section. + const parent = section.closest("details"); + if (parent && !parent.open) parent.open = true; + // The parent details (and on mobile, the section's own collapsible body) + // may have just expanded — re-scroll after the next paint so the anchor + // lands at the corrected position. + requestAnimationFrame(() => { + section.scrollIntoView({ block: "start", behavior: "auto" }); + }); }, [fromHash]); const toggle = useCallback((id: StageId) => { @@ -101,7 +114,7 @@ export function StagesView({ stages, stageOrder, panels }: Props) { <div className="lg:grid lg:grid-cols-[14rem_minmax(0,1fr)] lg:gap-6"> <nav aria-label="Pipeline stages" - className="hidden lg:flex lg:flex-col lg:gap-0.5 lg:sticky lg:top-32 lg:self-start" + className="hidden lg:flex lg:flex-col lg:gap-0.5 lg:sticky lg:self-start lg:top-28" > {stageOrder.map((id) => ( <StageRailItem @@ -123,7 +136,7 @@ export function StagesView({ stages, stageOrder, panels }: Props) { key={id} id={`stage-${id}`} aria-label={`${status.title} stage`} - className={`rounded-md border ${TONE_BORDER[status.tone]} bg-white dark:bg-zinc-900 scroll-mt-32`} + className={`rounded-md border ${TONE_BORDER[status.tone]} bg-white dark:bg-zinc-900 scroll-mt-44 lg:scroll-mt-28`} > <button type="button" diff --git a/editor/app/channels/[slug]/components/VideoListPaneSection.tsx b/editor/app/channels/[slug]/components/VideoListPaneSection.tsx @@ -41,7 +41,7 @@ export function VideoListPaneSection({ aria-label="videos" className={`grid ${gridCols} gap-4 lg:gap-6 min-h-[calc(100vh-22rem)]`} > - <div className="flex flex-col min-h-0 lg:sticky lg:top-4 lg:self-start lg:max-h-[calc(100vh-2rem)]"> + <div className="flex flex-col min-h-0 lg:sticky lg:self-start lg:top-28 lg:max-h-[80vh]"> {collapsed ? ( <button type="button"