- Move pages/{fqdn}/pages/* to pages/{fqdn}/*
- Update setup.php to look at /user/pages/{hostname}
- Prepare for Git Sync to sync pages/ to user/pages/
- Merged 21 repos using git subtree (preserves full history)
- Content now at content/{fqdn}/pages/
- Updated setup.php to use user/data/content/ path for Git Sync
- Simplified docker-compose.yml for local testing
Sites included (238 total pages):
- charters.turnsys.com (199 pages)
- plan.knownelement.com (7 pages)
- plan.startinglineproductions.com (10 pages)
- plan.suborbital-systems.com (2 pages)
- 17 other plan.* sites (1 page each)
Assisted-by: GLM-5 via Crush <crush@charm.land>
- Use minimal setup.php that only overrides 'page' stream
- Override only page stream to avoid conflicts with Grav core streams
- Environment-specific pages now load correctly per hostname
- Remove unused add-streams.sh script
Root cause: Grav's core streams (data, config, etc.) cannot be
overridden in setup.php without causing initialization errors.
The solution is to only override the 'page' stream, which allows
each environment to have its own pages while sharing plugins,
themes, and data with the main installation.
Testing confirmed:
- charters.turnsys.com → "TSYS Group Charters"
- plan.knownelement.com → "Known Element Business Plan"
- plan.startinglineproductions.com → "Starting Line Productions Plan"
🤖 Generated with [Crush](https://crush.cbhops.com)
Assisted-by: GLM-5 via Crush <crush@charm.land>
- Fix setup.php to use Grav's native environment-based multi-site
- Set GRAV_ENVIRONMENT constant instead of overriding streams
- Return empty array to let Grav handle stream configuration
- Rename governance.turnsys.com to charters.turnsys.com
- Update setup.php hostname mapping
- Update configure-sites.sh site title
- Update etc-hosts-entries.txt
- Rename mdbook source directory
- Rename container environment directory
- Update site title from "TSYS Group Governance" to "TSYS Group Charters"
The stream initialization error was caused by setup.php returning
stream configurations that conflicted with Grav's core streams.
Grav's native environment handling properly manages stream prefixes
when GRAV_ENVIRONMENT is set.
Container is now healthy and responding with 302 redirects.
🤖 Generated with [Crush](https://crush.cbhops.com)
Assisted-by: GLM-5 via Crush <crush@charm.land>
- Add AGENTS.md with project requirements and site inventory
- Add JOURNAL.md for project tracking
- Add etc-hosts-entries.txt for local testing (22 domains)
- Add setup.php for Grav multi-site routing configuration
This project migrates 21 mdbook sites to a single Grav multi-site
installation. Each site will have its own environment directory under
user/env/{fqdn}/ with independent config, pages, and themes.
Development runs in Docker on port 12000 (container: tsysstatic-dev-grav).
Production target: Cloudron Grav app at staticsites.turnsys.com.
🤖 Generated with [Crush](https://crush.cbhops.com)
Assisted-by: GLM-5 via Crush <crush@charm.land>