Outline docs with the same title under different parents (e.g. Peer Support
Playbook > Session Guides > Session 0 vs Manual > Session Content > Session 0)
were silently overwriting each other under the flat {collection}--{title}.md
naming, dropping 9 of 99 docs on every export. Use the full slugified doc
path instead, and have orphan cleanup scope to known collection-slug roots
(sweeping legacy flat files too) so sibling dirs like hub/, _local/, .claude/
stay untouched.
Also switch the cron's git add to -A so doc deletions and renames in Outline
actually propagate.
With yesterday's cron infrastructure fix in place, both daily jobs got
to actually execute today and revealed bugs that had been hiding behind
the silent failures.
1. Wiki export crashed on docs whose body starts with `---` (markdown
horizontal rule). matter.stringify(str, data) re-parses str as if
it might already contain frontmatter, so a leading `---` makes
gray-matter try to YAML-parse the body and choke on the first
`Title: subtitle` colon. Pass {content: str} instead — the parser
only runs on bare strings, so an object skips the re-parse path.
2. outline-backup.sh referenced docker container names `outline-postgres`
and `outline`, but DokPloy names containers `${project}-${service}-1`,
so the backup got `Error response from daemon: No such container`.
Derive names from $APP_NAME (set to the compose project name) with
POSTGRES_CONTAINER / OUTLINE_CONTAINER overrides for portability.
- Add cron service to docker-compose with backup (3 AM) and export (4 AM) schedules
- Remove redundant content/articles/ and content/curriculum/ (now in Outline, exported to content/wiki/)
- Fix env var mismatch: support both OUTLINE_API_KEY and OUTLINE_API_TOKEN
- Drop updatedAt from export frontmatter to reduce noisy commits
- Add backups/ to gitignore
9 session pages and 10 PS Guide markdown files for the Baby Ghosts
cooperative foundations curriculum. Import script creates documents in
Outline wiki with cross-links between paired session/PS Guide pages.
Export script pulls all Outline documents via API and writes them as
flat markdown files to content/wiki/ with frontmatter metadata.
Cron wrapper auto-commits changes daily.
Strip the Nuxt 4 static site and replace with Docker Compose config
for self-hosted Outline wiki (Outline + PostgreSQL 16 + Redis 7).
Adds nginx reverse proxy with WebSocket support and CSS injection,
migration script for existing markdown articles, backup script,
and starter theme CSS.