The homepage had two competing visuals once the reading map landed, and the
park heat map was in the header — above the hero. Moved to /knoebels; the
homepage keeps the one-line crowd verdict as a teaser that links there.
Extracted verbatim into KnoebelsMap.astro. Its styles stay `is:global`: every
element inside the <svg> is built with createElementNS and so never carries
Astro's scoping attribute, which would make a scoped `.knb-map text` selector
silently match nothing.
Homepage HTML drops ~4 KB and no longer fetches /knoebels/rides or the Esri
tiles; the strip's own /knoebels/now call is unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
An orbiting point cloud of all 8,424 indexed passages, with the 262 highlighted
ones lit and threaded in the order they were marked. Data comes from library-rag
(chunks + embeddings) projected to 3D with UMAP; the page never touches Postgres.
Projection is `airy` (n_neighbors=50, min_dist=0.8) and the palette is `frost` --
both chosen by eye against the alternatives. Note that airy shows the underlying
book-territory structure LESS than the tight projection the pre-flight measured,
so the 0.805 k-NN purity figure describes that one, not this.
Page weight: the wrapper adds 321 B gzip to the homepage's blocking load. `three`
(127 KB gz) and the payload (56 KB gz) are a dynamic chunk fetched after render.
It fails closed -- no WebGL, no payload, or a dead fetch leaves a plain page.
The payload is a static snapshot; the 5-minute auto-build rebuilds the site, not
the data. New reading reaches this map only when export.py is re-run.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- two static quotes above the name line in every footer
- Toc component renders h1-h3 from Astro's render() headings as a sticky
right column on >=88rem screens (hidden below); scroll-position
highlighting via a small passive listener; shown only when a page has
2+ headings, so listings and short notes stay clean
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- buildNavTree: every non-draft page nested by vault folder; folders link
to their (real or synthetic) index page and take its title when set
- NavTree component: recursive details/summary tree, no JS — folders on
the current path render open, current page gets aria-current styling
- layout: sticky left sidebar >=72rem, flows after the footer as a site
index on narrow screens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>