Reading map: honour reduced-motion for the orbit; give /knoebels a real nav link

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 <noreply@anthropic.com>
This commit is contained in:
wes
2026-08-13 08:51:36 -04:00
co-authored by Claude Opus 5
parent b8d7dad3e3
commit 4dbf8fe526
2 changed files with 20 additions and 1 deletions
+16
View File
@@ -181,6 +181,22 @@ const pageUrl = new URL(Astro.url.pathname, Astro.site);
</div> </div>
) )
} }
{/* 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. */}
<div class="sidebar-section">
<p class="sidebar-title">elsewhere</p>
<ul class="nav-tree">
<li>
<a
href="/knoebels"
aria-current={navPath === '/knoebels' ? 'page' : undefined}
>
Knoebels park map
</a>
</li>
</ul>
</div>
</aside> </aside>
{ {
showToc && ( showToc && (
+4 -1
View File
@@ -306,7 +306,10 @@ export function build(container, data) {
const dt = Math.min((now - last) / 1000, 0.05); const dt = Math.min((now - last) / 1000, 0.05);
last = now; 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; elapsed += dt;
const cycle = DRAW_SECONDS + HOLD_SECONDS; const cycle = DRAW_SECONDS + HOLD_SECONDS;