Setting overflow-x: auto forces overflow-y off 'visible' per CSS spec,
which caused an unwanted vertical scrollbar in stacked note sections.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace <a> (no href) with <button> so both elements receive tab focus.
BackButton gets text-base-content to preserve icon color; LinkedNotes
uses btn class="link" to keep the inline text-link appearance.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
<button> gets color:ButtonText from the browser UA stylesheet, making
SVG stroke="currentColor" render black. Add text-base-content to
inherit the DaisyUI theme color like the <a>-based router-links do.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
<button> defaults to color: ButtonText (black) in browsers, unlike <a>
which inherits. Adding color: inherit restores the theme color for the
SVG stroke (which uses currentColor).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace <a> with <button> for the typography icon in HeaderNote so it
receives tab focus — <a> without href is excluded from the tab order.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use v-model with writable computeds instead of :value+@change so selects
re-sync when the options list changes asynchronously
- Always include currently chosen fonts in sortedFontFamilies so a selected
font not present in .remanso.json fontFamilies still shows in the select
- Initialize userSettings instead of returning early in font setters so
changes made before async GitHub fetch completes are not silently dropped
- Back font choices with localStorage so they survive hard reloads even when
PouchDB/IndexedDB fails silently in the web worker
Move the v-if guard from the outer FontChange wrapper to only the font-family
selects, so ThemeSwap and the font-size select are always visible in the modal
even before userSettings.fontFamilies resolves asynchronously.
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
Move the duplicated <ul> + infinite scroll + note row markup into a
new PublicNoteList component with a #meta scoped slot. Both list views
now delegate rendering to it, supplying only their view-specific
author/date markup via the slot.