Re-pin .note and .stacked-note to 100dvh on mobile and bring back the
container height in useResizeContainer so (index + 1) * height has a
reachable scroll target. Switch the polled scroll helper to that same
formula instead of offsetTop.
Move position: sticky from the global .note rule into the desktop
@media block of the scoped stacked-note components, so mobile no longer
inherits sticky positioning (and no top is set there).
The skeleton was conditioned on `isLoading || !hasContent`, so it
persisted forever when readme resolved to null (e.g. private repo
visited while logged out). Skeleton now only shows while loading.
- Restore explicit overflow-y:auto on #main-app for mobile (removed in
63f5d64) — implicit coercion from overflow-x:auto is not reliable in
all Safari/WebKit versions.
- Override position:sticky on .readme to position:relative on mobile.
The desktop sticky (left:0) is correct for horizontal scroll, but on
mobile vertical scroll it pinned the 100dvh-tall readme across the
entire viewport, hiding all stacked notes behind it.
Three layered fixes for mobile note scrolling:
1. app.css / App.vue: on mobile, override overflow:hidden on html/body
and overflow:visible on #main-app so content from useResizeContainer
(which sets the note-container height to (n+1)*100vh) propagates to
the document and document.body.scrollTop works again.
2. FluxNote.vue: give each .note an explicit height:100dvh on mobile so
the percentage-based height:100% does not resolve against the
inflated container height set by useResizeContainer.
3. StackedNote / StackedPublicNote: replace overflow-y:hidden with
overflow-y:clip on the section. Unlike hidden, clip does not create a
scroll container, so touch events fall through to the page scroll and
the section never feels "draggable" when content fits within the note.
Add left offset to each stacked note so position: sticky activates
during horizontal scroll, pinning notes progressively to the right
of the readme column at calc((index + 1) * var(--note-width)).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contain horizontal overflow within #main-app instead of leaking to the
document, which caused a horizontal scrollbar to consume viewport height
and trigger an unwanted vertical scrollbar. Also fix note pane height
to use 100% instead of 100vh, and switch useResizeContainer to minWidth
so the flex container can grow when the window is wider than the notes.
Add a window resize listener to keep the value accurate on resize.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use HomeButton component in HeaderNote for logo, hover, and view-transition-name
- Eagerly import HeaderNote in FluxNote so the logo exists in the DOM when the transition snapshot is taken
- Wait for afterEach + nextTick in the view transition hook to handle lazy-loaded routes
- Add cursor: pointer to font change button
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>