From 532b4bd4ebfa473ff60aea5167cf0b275dc52eb8 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 2 Sep 2026 15:32:22 +0100 Subject: [PATCH] Document #009's substring-check limitation; fix #011's CDN docs and theme typo #009: html_fragment's content-shape check is substring-based, so it can false-positive on inert text inside " +} +``` + +→ `400 {"detail":"html_fragment must be body-only HTML; do not include doctype/html/body"}` + +This content is legitimate, safe, body-only HTML (a ` + + + +``` + +**Offline caveat:** Daybook can run fully self-hosted/air-gapped. Any +artifact that links a CDN script won't render fully (or at all, for +Tailwind's in-browser compiler) without internet access. If the deployment +target is offline, don't reach for these — use `markdown`/`html_fragment` +instead, which are styled entirely server-side with no external requests. + +Only use this for `html_full` specifically — never add CDN references to +`markdown`/`html_fragment`/`deck`. Those kinds exist so Daybook, not the +poster, owns styling; injecting a default CDN habit into them would +undermine that. + ## Images Inside Content To embed an image *within* a markdown or HTML artifact (rather than posting it as its own diff --git a/skills/daybook-posting/scripts/daybook_post.py b/skills/daybook-posting/scripts/daybook_post.py index cc8c9a8..5c92249 100644 --- a/skills/daybook-posting/scripts/daybook_post.py +++ b/skills/daybook-posting/scripts/daybook_post.py @@ -92,7 +92,7 @@ def parse_args(): parser.add_argument("--content-file", help="Read text artifact content from this file.") parser.add_argument("--file", help="Upload this file as image/pdf/binary, or render as markdown with --as-markdown.") parser.add_argument("--tags", help="Comma-separated tags.") - parser.add_argument("--theme", help="Theme for markdown/html_fragment. Example: report, tasks, bootstrap.") + parser.add_argument("--theme", help="Theme for markdown/html_fragment. Example: report, tasks, base. See docs/api.md for the current list.") parser.add_argument("--meta", action="append", default=[], help="Metadata key=value. Repeatable.") parser.add_argument("--meta-json", help="Metadata JSON object. Merged with --meta values.") parser.add_argument("--source-name", help="Human-readable source name. Defaults to --source.")