Skip to content

Releases: docsector/docsector-reader

v4.21.8

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 19 Jul 13:25
v4.21.8
b3a40df

Focus: The on-load sidebar scroll now glides like route changes.

Changes

  • 🧭 The load-time sidebar centering (introduced in v4.21.7) now uses the same 300 ms smooth glide the after-route scroll performs, instead of an instant jump
  • ✅ Verified by sampling the drawer scroll position over time (progressive glide to the same centered position, menu still un-hydrated); 337 tests passing

v4.21.7

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 19 Jul 12:53
v4.21.7
1342bd1

Focus: The sidebar centers the active page on load again.

Changes

  • 🧭 Fixed the sidebar not scrolling to the active page on load: the menu hydrates on interaction only, so its mounted scroll-to-active never ran for a fresh visit (it only fired after a hover) — the scroll routine now lives in a shared composable and the layout, which hydrates immediately, centers the active item on the server-rendered markup without waking the menu
  • ✅ Verified with an interaction-free probe (deep route loads with the drawer pre-scrolled and the active item centered, menu still un-hydrated); 337 tests passing

v4.21.6

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 19 Jul 00:27
v4.21.6
5fcc236

Focus: Roboto on first visit and canonical trailing-slash URLs.

Changes

  • 🔤 Switched the self-hosted Roboto faces from font-display: optional to font-display: fallback: without a font preload, Chrome's optional only consults the disk cache at style resolution, so first-time visitors kept the Arial-metric fallback and only saw Roboto after a reload — fallback swaps Roboto in when it arrives, with zero layout shift thanks to the size-adjusted metric fallback, while keeping the font out of Lighthouse's text-LCP dependency graph
  • 🔗 Canonical URLs: every prerendered page emits <link rel="canonical"> and a matching og:url in the trailing-slash form, consolidating the slash-less and slashed variants of a route into a single indexable page
  • 🗺️ Sitemap routes are listed in their canonical trailing-slash form (file-like paths such as llms.txt stay untouched), so the listed URLs never redirect
  • ✅ Verified with DevTools platform-font inspection (cold profile renders Roboto), median-of-3 Lighthouse runs (score/FCP/LCP/CLS unchanged) and sitemap/canonical specs; 337 tests passing

v4.21.4

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 13:37
v4.21.4
749b07a

Focus: SEO hygiene — one title and one meta set per prerendered head.

Changes

  • 🧹 Fixed duplicated <title> and description/OG/Twitter meta tags in SSR-prerendered heads: useMeta renders the per-route tags but the template's static defaults stayed behind them — the rendered (data-qmeta) tag now wins and its static twin is dropped, while statics without a rendered counterpart survive as fallbacks
  • ✅ Verified across prerendered routes (single title with the per-route value, unique meta set, viewport untouched); 335 tests passing

v4.21.3

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 13:17
v4.21.3
4ca5c20

Focus: Dark-theme polish — no more white flash on server-rendered code blocks.

Changes

  • 🎨 Fixed dark-theme code blocks painting a light first frame: the tone classes hydrate as the serialized white and only flip to dark post-mount, so the light/dark palettes are now keyed on the body theme too — white rules apply only under body:not(.body--dark) and the dark surface/token palette also applies under body.body--dark, making the server-rendered markup born dark and the class flip a visual no-op
  • ✅ Verified with a serialized-markup fixture (frame, gutter and Prism token colors all compute the dark palette pre-hydration) and screenshots in both themes; 335 tests passing

v4.21.2

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 13:07
v4.21.2
b0f4fd4

Focus: Unchain webfonts from the text LCP — SSR builds no longer emit font preloads.

Changes

  • 🔤 SSR-prerendered pages no longer emit <link rel="preload" as="font">: with font-display: optional the first paint always uses the metric-matched fallback, but a preloaded font gets chained into the text-LCP dependency graph by Lighthouse's simulator — measured ≈600ms lower LCP without the preload, with identical real-world rendering (the @font-face fetch still warms the cache for later views)
  • 🧹 preloadTag reduced to stylesheets only (JS modulepreloads were already stripped in v4.21.0)
  • ✅ Validated with median-of-3 Lighthouse mobile runs and a live probe confirming the font still loads via CSS and applies on fast connections; 335 tests passing

v4.21.1

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 04:22
v4.21.1
fd9b1b3

Focus: Dark sidebar polish — the standard-field underline on the un-hydrated markup.

Changes

  • 🎨 Fixed the sidebar search and version-select underline being invisible for dark visitors: the .q-field__control:before border serializes with the light black-alpha tone and only gains q-field--dark on hydration — body--dark CSS now paints Quasar's dark border color (rgba(255,255,255,.6)), scoped with :not(.q-field--dark) so hydration takes over without conflicts
  • ✅ Verified via computed-style measurement on the pure server markup (335 tests passing)

v4.21.0

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 04:12
v4.21.0
3385c26

Focus: Content-first mobile delivery — about 1s faster FCP/LCP on slow connections for SSR builds.

Changes

  • 📱 Content-first mobile delivery: SSR-prerendered pages no longer emit any JS modulepreload link (22 per page before) and the entry module is fetched with fetchpriority=low — the render-blocking CSS now owns slow links, since the first paint ships as server-rendered HTML and needs no JavaScript
  • 🔤 Font preloads slimmed to the latin subset only, at fetchpriority=low — latin-ext glyphs still load on demand via unicode-range
  • ⚡ Early Hints are now stylesheet-only and finally include the bundler's main CSS (the previous quote-sensitive regex missed minified attributes)
  • 🐢 Below-the-fold code blocks and tables lazy-render on phones via content-visibility: auto (anchors, find-in-page and scroll integrity verified; prose stays eager to keep scroll anchoring stable)
  • 🔕 The SPA-era route-preload plugin stays quiet in SSR builds (its modulepreloads are counterproductive there)
  • ✅ Validated on slow-4G emulation with median-of-3 Lighthouse runs: mobile score 69 → 81 (home) and 87 (guide page), FCP −990ms, LCP −908ms, CLS unchanged; 335 tests passing

v4.20.7

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 03:34
v4.20.7
b16ebcf

Focus: Dark sidebar polish — field text colors on the un-hydrated markup.

Changes

  • 🎨 Fixed the sidebar search placeholder and version-select text being nearly invisible for dark visitors: Quasar fields serialize with light text colors and only gain q-field--dark via JS on hydration — body--dark CSS now themes the field text directly, scoped with :not(.q-field--dark) so hydration takes over without conflicts
  • ✅ Validated pixel-identical to the hydrated state on the pure server markup (335 passing tests)

v4.20.6

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 03:22
v4.20.6
22f3fe0

Focus: The sidebar search is part of the server-rendered markup.

Changes

  • 🔍 Fixed the sidebar search bar being invisible until the menu hydrates: Vue SSR renders <transition appear> as an inert <template> tag, so the serialized input never painted — the wrapper only provided a cosmetic entrance animation and was removed
  • ✅ Validated on the un-hydrated server markup: search bar visible with full dark contrast, zero interaction required (335 passing tests)