Prevents white space below the app on Android Chrome where the
system nav bar makes 100vh > 100dvh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
On Chrome Android, cross-axis stretch doesn't always produce a
definite height for inner flex items. Adding height: 100dvh to
.home ensures flex: 1 on .welcome-world resolves to full viewport.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace space-between with flex-start + margin-top:auto on footer and
add gap to avoid wide spacing while async components are loading.
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>
The favicon animates from its large position in the WelcomeWorld title
to the smaller header position in PublicNoteListView and PublicNoteListByDidView.
- Show skeleton in PublicNoteView and StackedPublicNote while note
content is pending author resolution
- Show skeleton h1 in PublicNoteListByDidView while author loads
- Show skeleton in SignInAtproto until auth state is known
- Load cached session from IndexedDB before OAuth restore so the
homepage resolves immediately without waiting for network
- Pass didrkey (with colons) instead of classNameId to scrollToFocusedNote in StackedPublicNote, so findIndex matches the URL-stored ID
- Revert includes() to strict === in findIndex for semantic correctness
- Use buildLoopbackClientId(window.location) for dev to include port in redirect URI
- Bind Vite dev server to 127.0.0.1 explicitly
- Remove scope override in signInRedirect (use metadata default)
- Clear OAuth callback params from URL after session restore
- Replace follows badge with DaisyUI tabs (All / Following)
- Use separate PublicNoteList instances per tab to isolate v-infinite-scroll state
- Add isLoading guard in onLoadMore to prevent concurrent fetches