From 4dbf8fe526aac79caedb05245861b73b450985ea Mon Sep 17 00:00:00 2001 From: Wesley Ray Date: Thu, 13 Aug 2026 08:51:36 -0400 Subject: [PATCH] Reading map: honour reduced-motion for the orbit; give /knoebels a real nav link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two follow-ups on yesterday's hero. The `prefers-reduced-motion` branch only skipped the trace *animation* — the scene kept orbiting continuously, which is precisely what a reader who asked for reduced motion is asking not to get, on the homepage no less. The cloud now holds still; it still renders in full. /knoebels was reachable only from the homepage crowd strip, and that strip is hidden whenever the park API is unreachable — so an API outage made the page unreachable from anywhere on the site. It gets a sidebar entry, the same way /notebooks does, since neither is a vault note that buildNavTree could carry. Co-Authored-By: Claude Opus 5 --- src/layouts/Base.astro | 16 ++++++++++++++++ src/lib/reading-map.js | 5 ++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro index d748e0d..ae6b62b 100644 --- a/src/layouts/Base.astro +++ b/src/layouts/Base.astro @@ -181,6 +181,22 @@ const pageUrl = new URL(Astro.url.pathname, Astro.site); ) } + {/* Standalone pages — not vault notes, so buildNavTree cannot carry them. + /knoebels in particular is otherwise reachable only from the homepage + strip, which is hidden whenever the park API is unreachable. */} + { showToc && ( diff --git a/src/lib/reading-map.js b/src/lib/reading-map.js index a5340c5..fbee526 100644 --- a/src/lib/reading-map.js +++ b/src/lib/reading-map.js @@ -306,7 +306,10 @@ export function build(container, data) { const dt = Math.min((now - last) / 1000, 0.05); last = now; - if (!paused) world.rotation.y += ORBIT_RATE * dt; + // `reduced` stops the orbit outright, not just the trace draw. This sits on a public + // homepage, and a continuously rotating scene is exactly what a reader who asked for + // reduced motion is asking not to get. The cloud still renders — it just holds still. + if (!paused && !reduced) world.rotation.y += ORBIT_RATE * dt; elapsed += dt; const cycle = DRAW_SECONDS + HOLD_SECONDS;