- 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>
Root-owned node_modules/dist/public from the container blocked git pull
(public/fonts could not be created). Chown once, then keep artifacts
user-owned via --user + HOME/npm cache in /tmp.
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>
- deploy/auto-build.sh: git pull + rebuild only when the repo HEAD or any
vault file mtime changed (sha256 signature in .build_state); replaces
the Quartz update_quartz_docker.sh loop
- systemd user units (5-min cadence, matching the old Quartz timer)
- compose service/container renamed garden-next -> garden
Co-Authored-By: Claude Opus 4.8 <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>