- footer: 'built <ts> · <hash> · <n> notes', hash linking to Gitea
(GARDEN_COMMIT passed in by build.sh; '+' marks dirty-tree builds)
- homepage header: live strip fed by api.c0smere.net/spotify/summary
(weekly aggregate + monthly top artist/genre), fail-closed like the
odometer and header quote
- /og/<slug>.png satori+resvg cards for every note + the homepage;
og:/twitter: meta in Base
- shiki github-dark-default (#0d1117 sits closer to the page ground)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- deploy/rebuild-hook.py: tiny stdlib HTTP service (:18101) — button
page for the Homepage dashboard iframe, POST /rebuild runs
auto-build.sh --force, /status + /healthz for feedback/monitoring
- auto-build.sh: --force flag + flock so timer and manual builds
serialize
- [...slug].astro: skip the synthetic h1 when the note body already
opens with an identical h1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fixed-dark theme matching blog.c0smere.net (Source theme + injections):
bg #0b0d12, white/64%-white text, accent green #218107 (links lifted to
#2fa50f for contrast). Self-hosted JetBrains Mono + Libre Baskerville —
the same woff2 files the blog serves. Site header with logo + nav
mirroring gh-head; serif-italic quotes; blog-style borderless tables;
single dark shiki/mermaid theme; homepage styled as a typographic feed.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pulled client-side from /highlights/random (max_len=280); attribution
from the API's parsed title/author; hidden when the API is unreachable.
Co-Authored-By: Claude Opus 4.8 <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>
Widget + script + styles live in Base.astro now, so every page ticks;
index.astro is back to just rendering the vault homepage.
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>