getActiveAnchorId derives the active entry from scroll position alone,
so on a page short enough that scrollHeight never exceeds
window.innerHeight, the answer can never change. Clicking a TOC entry
still updates location.hash, but nothing ever picks it up as active.
Falls back to the hash when the page can't scroll, honoured only if
it names an entry the TOC actually lists. Pages that do scroll are
unaffected - this only fires when scroll position can't answer the
question at all.
Fixes#3087
The global keydown handler calls event.key.toLowerCase() without checking
that event.key is defined. Some keydown events carry no key property
(browser autofill, IME composition, some mobile virtual keyboards), which
throws TypeError: Cannot read properties of undefined (reading
'toLowerCase') and breaks the handler for that keystroke.
Add a truthiness guard before calling toLowerCase(), matching the style
already used for the other event.key comparisons in the same handler.
No behavior change for real Cmd/Ctrl+K presses.
The floating header's backdrop blur makes the pill a containing block
for fixed-position descendants, so the fullscreen mobile menu rendered
at the pill's height instead of filling the viewport. Lift the filter
while the menu is open. Fixes#3057.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 3.1.0 and 3.2.0 release bumps used an unanchored replacement that
also rewrote eight dependencies' lockfile version fields. Restore each
to the version embedded in its resolved tarball URL.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The dropdown panel only closed through its own X button. Escape already
dismissed it, so the missing pointer equivalent left the panel stuck open
over the page after a stray tap.
Close it on any click landing outside the panel and outside the labels that
toggle it. Both early returns are load-bearing. A label forwards a synthetic
click to its checkbox, so without skipping the input the menu closes in the
same gesture that opened it. And without skipping the opener, opening then
closing with the hamburger leaves the panel open, because this handler and
the label's default action cancel each other out.
The fullscreen panel needs no special case. It covers the viewport, so
every click lands inside it and the handler stays inert.
The submenu panel carried both `pt-2` and `p-5`. Tailwind emits shorthand
utilities before their longhand counterparts, so `padding-top` resolved to
`0.5rem` while the other three sides stayed at `1.25rem`, regardless of the
order the classes appear in the markup. The first submenu entry sat flush
against the top edge.
This went unnoticed while the panel was translucent. v3 made it opaque, which
draws the edge and exposes the imbalance.
Drop `pt-2` so the panel keeps the uniform `p-5` it was styled for. No new
utility classes, so the compiled stylesheet is unchanged.
* feat: localize 404 page quotes
* 🐛 Fix 404 quote localization: build-time filtering and dub lines
Filter quotes to the page language at build time (case-insensitive,
with base-language and English fallbacks), fixing the double-encoded
language variable that made every locale fall back to English, and
correct several translations to their canonical dub lines.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Friday <friday@openclaw.local>
Co-authored-by: Nuno Coração <nunocoracao@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Extract the comments block into a shared article-comments partial and
include it from both single and simple layouts. Fixes#2938.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Stale marking now warns 14 days before closing instead of closing
immediately, messages invite a comment or reopen, and triaged labels
are exempt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>