Manual rebuild hook + polish: single title h1, '›' tree marker

- 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>
This commit is contained in:
wes
2026-07-21 21:45:36 -04:00
co-authored by Claude Fable 5
parent 8efb1ecf80
commit 3d70e23471
6 changed files with 210 additions and 3 deletions
+1 -1
View File
@@ -455,7 +455,7 @@ const showToc = headings.filter((h) => h.depth <= 3).length >= 2;
list-style: none;
}
.sidebar summary::before {
content: '';
content: '';
display: inline-block;
width: 0.9em;
color: var(--muted);
+6 -1
View File
@@ -61,6 +61,11 @@ const title = entry
: listing.name;
const rendered = entry ? await render(entry) : null;
const Content = rendered?.Content ?? null;
// notes whose body already opens with an identical h1 (common vault
// pattern) would show a doubled title — skip the synthetic one
const contentLeadsWithTitle =
rendered?.headings?.[0]?.depth === 1 &&
rendered.headings[0].text.trim() === String(title).trim();
---
<Base
@@ -68,7 +73,7 @@ const Content = rendered?.Content ?? null;
description={entry?.data.description}
headings={rendered?.headings ?? []}
>
<h1>{title}</h1>
{!contentLeadsWithTitle && <h1>{title}</h1>}
{Content && <Content />}
{
listing && (