references/config-file.md | Full craft-cloud.yaml key reference: php-version, node-version, node-path, npm-script, artifact-path, app-path, webroot, cache.rules, redirects, rewrites | 154 |
references/deploy-pipeline.md | Build → Migrate → Release flow, On Push vs Manual triggers, 15-min build cap, build-time system vars (CRAFT_CLOUD_*, GIT_SHA), runtime env vars in Console, reserved/injected vars you must NOT set (CRAFT_SECURITY_KEY, CRAFT_APP_ID, CRAFT_OMIT_SCRIPT_NAME_IN_URLS, CRAFT_DB_*, REDIS_*, …), failed-migration rollback semantics | 130 |
references/extension.md | craftcms/cloud package: Yii2 module bootstrap, App::isEphemeral(), Path service usage, cloud.esi() Twig helper, cloud/up internals (verified from source), asset-bundle CDN publisher, binary response auto-upload, log target | 201 |
references/assets-and-transforms.md | Cloud filesystem type (mandatory assets/ subpath), aws s3 sync migration, edge image transforms (70MB / 100MP / 12,000px limits, AVIF 1,600px cap, stretch-mode constraint), no template-side changes required | 87 |
references/database.md | MySQL 8.0 / Postgres 15 only (no MariaDB), tablePrefix ban, php craft db/drop-table-prefix, auto-wired connection, nightly + on-demand backups, restore commands | 105 |
references/caching-and-edge.md | Static caching rules (pattern + query-string.mode/keys + session, first-match wins), opt-outs ({% expires %}, setNoCacheHeaders()), asyncCsrfInputs force-enabled, cloud.esi(...) for dynamic islands (scalar vars only, no nesting), tag-based auto-invalidation | 223 |
references/domains.md | DNS setup (_cf-custom-hostname TXT, CNAME to edge.craft.cloud, apex A records, Orange-to-Orange Cloudflare), preview URL format, auto SSL, www not auto-added, extra-domain pricing | 104 |
references/commands-and-cron.md | Console command runner (no SSH, 255-char cap, 15-min cap, no shell interpolation), scheduled commands (hourly minimum, max 5 per env), queue jobs auto-processed (don't schedule a runner), 15-min per-job cap, batched jobs for long work | 143 |
references/plugin-development.md | Cloud-compatible plugin checklist: asset-bundle constraints, App::isEphemeral() gating, Path service, Craft::info() for logs, queue-job budgeting, cookie-free design, csrfInput() function (CSRF-token leakage warning), sendContentAsFile() auto-handling, asset-select preference, Craft 4.6+ minimum | 234 |
references/migration.md | Self-hosted → Cloud cutover: audit (table prefix, MariaDB, file writes, .htaccess, third-party S3 plugins), php craft db/drop-table-prefix, asset migration via aws s3 sync, DNS cutover sequence, project-config sync | 132 |
references/local-dev.md | DDEV recipe to mirror Cloud: matching PHP from craft-cloud.yaml, DB engine + version, the Cloud extension self-detection and no-op locally, optional CRAFT_EPHEMERAL for testing guards, S3 emulation pointers | 145 |
references/limitations.md | Documented unsupported features (MariaDB, tablePrefix, .htaccess, SSH, sendmail, devMode in prod, 6MB response cap, 60s request timeout, 200MB upload cap, no env cloning, no region change, no per-PR previews, CP DB-backup utility disabled, forked repos can't deploy) + community-knowledge plugin compatibility matrix (ImageOptimize, Imager-X, Blitz, Typesense, etc.) clearly marked as not Pixel & Tonic-blessed + mail strategy + logging gap | 196 |