- Set HOMEPAGE_ALLOWED_HOSTS=* so Homepage accepts requests from
localhost, LAN IPs, and Tailscale FQDNs (appropriate for demo)
- Add host validation to docker-compose.yml.template and demo.env.template
- Bootstrap HOMEPAGE_ALLOWED_HOSTS in ensure_env() for existing installs
- Harden Playwright tests: check for "host validation failed" and
"internal server error" text, verify page titles, use stronger
content assertions based on actual rendered content
- Pin @playwright/test to exact 1.52.0 (no caret) to prevent npm
resolving to a version incompatible with the Docker image
- Gitignore additional Homepage auto-generated files (custom.css/js,
proxmox.yaml)
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Remove duplicate `deploy:` block in atomictracker service that
caused YAML parse failure on docker compose up
- Fix yamllint errors: wrap long lines in socket proxy label and
Elasticsearch health check
- Add MAILHOG_SMTP_PORT migration to ensure_env() so older demo.env
files get the new variable appended automatically
- Verified: full stack deploys, 91/91 tests pass (52 unit + 39 e2e),
all 16 services healthy, 13/13 smoke ports accessible
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Root README.md: proper project overview with quick start
- Root AGENTS.md: add MAILHOG_SMTP_PORT, update env config note
- demo/README.md: add MailHog SMTP port (4019) to service table
- demo/scripts/validate-all.sh: fall back to demo.env.template
when demo.env not present, add MAILHOG_SMTP_PORT to required vars,
mask variable values in validation output
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
demo-stack.sh:
- Add ensure_env() to create demo.env from template if missing
- Add envsubst prerequisite check
- Fix wait_healthy() to use docker inspect instead of fragile
sed/awk parsing of docker ps output
- Fix smoke_test() to use env vars instead of hardcoded ports
- Remove fix_env() which overwrote TA_HOST with wrong value
- Add MailHog SMTP port to display_summary()
- Add service names to smoke test output
demo-test.sh:
- Fix security compliance test to expect only 1 socket mount
(proxy only, now that Dockhand uses DOCKER_HOST)
- Add Dockhand proxy routing check
- Fix arithmetic increment operators for set -e compatibility
- Remove scripts/fix-and-ship.sh (was identical copy of demo-stack.sh)
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Rewrite demo-stack.sh, demo-test.sh, validate-all.sh, and all test
files to match the current 16-service stack reality.
Key changes:
- demo-stack.sh: full rewrite with deploy/stop/restart/status/smoke/summary
- demo-test.sh: fix hardcoded kneldevstack filter to use $COMPOSE_PROJECT_NAME,
raise volume threshold from 10 to 15, remove curl dependency (use /dev/tcp),
fix security compliance check for Dockhand direct socket mount
- validate-all.sh: remove port 4005 check (internal only), add missing env
var validation (TA_PASSWORD, ELASTIC_PASSWORD, GF_*, PIHOLE_WEBPASSWORD)
- integration tests: fix container names, add TubeArchivist companion tests
- e2e tests: use correct project-relative paths, dynamic port lists from env
- Add fix-and-ship.sh as convenience wrapper for demo-stack.sh
- Remove stale tmp_template.yml
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>