3 Commits
Author SHA1 Message Date
Hermes 414c962d3c docs(catalog): audit and fix 10 hallucinations in install guides
Round-1 docs claimed things the code does not do. This commit rewrites
all 77 per-template pages + the catalog index to match reality:

CORRECTED:
- REST API payload shape: was {template, subdomain, port, environment}
  Real Joi schema (src/utilities/validate.js appDeploy) is
  {appId, config: {subdomain, port, mediaPath?, plexClaimToken?, ...}}
  All optional fields now documented per-schema.

- Auth methods: was just "Authorization: Bearer" — real middleware
  accepts three (TOTP session cookie, Authorization: Bearer JWT,
  X-API-Key header). All three now shown.

- Deploy is synchronous: was "poll GET /api/v1/apps/{id}/status" — there
  is no status endpoint. Response shape documented as
  {success, containerId, url, message, setupInstructions}.

- AI Intent Router: was "starts the deployment" — it returns a
  structured intent; the caller must POST /api/v1/apps/deploy to
  actually provision. Documented accurately.

- MCP dashcaddy_deploy_app: was treated as full deploy — it only writes
  the Caddy route + services.json entry, NOT the container. Documented
  as such with manual docker pull as next step.

- Watchtower: was claimed to auto-update every 24h — DashCaddy does NOT
  poll for new digests. Watchtower is a separate template with default
  schedule 0 0 4 * * * (cron 04:00). Documented.

- Update button: was "Apps → {Name} → Update" — no such endpoint exists.
  Manual docker pull + restart now documented.

- Restore-on-install: was "prompt to restore from snapshot during install"
  — no such prompt. POST /api/v1/apps/{appId}/restore documented.

- Backups: was "default daily snapshot" — backup schedule is
  configurable via backup-config.json, not "nightly" by default.
  Volumes ARE included; documented.

- Dashboard menu: was "Apps → Catalog" — actual entry is the
  "App Selector" button on the dashboard home. Documented.

- Dashboard URL: status.sami confirmed correct (configurable via
  dashboardHost).

Also fixes default port resolution: was using portList[0].split(":")[0]
which leaks "{{PORT}}" literal when the template uses the placeholder.
Now uses t.defaultPort (Joi-validated) first, falling back to portList.

Build: 78 routes prerender as static, TypeScript clean.
2026-08-15 03:28:15 -07:00
Hermes dcb8eeda4e chore: add regenerate-catalog-docs.sh for future template additions
Whenever app-templates.js gains or changes a template, run this script
to keep /docs/catalog in sync. It generates all 78 static pages and
verifies the Next.js build still passes.
2026-08-15 02:46:11 -07:00
Hermes 81493a9076 docs(catalog): add full install guides for all 77 app templates
Generate one dedicated install page per template in /docs/catalog/<id>/.
Each page covers:
- Prerequisites (with claim-token reminders where applicable)
- Three install paths: dashboard UI, REST API (with curl), AI Intent Router
- Post-install first-run checklist (from the template metadata)
- Volume mounts and persistent data
- Environment variables
- Watchtower auto-update behavior
- Backup inclusion
- Common troubleshooting
- Related services (category-aware cross-links)

Also add /docs/catalog index page grouping all 77 templates by 17
categories, with difficulty badges and popularity-sorted entries.

Sidebar updated to show the new App Catalog entry.

Generated by /tmp/generate-template-docs.js (run from /opt/dashcaddy
in a follow-up to keep content in sync with app-templates.js).
2026-08-15 02:45:47 -07:00