feat(deploy): switch to dash 4 — dash-proxy features, doctor pre-flight - #74
Merged
Conversation
dash (zoolutions/dash) is the maintained fork with dash-proxy: load balancing, readiness gates, response caching, traffic shaping. The on-server artifacts are unchanged, so existing hosts upgrade in place. - reusable workflow installs `dash` and runs `dash deploy --skip-push` - registry secret is DASH_REGISTRY_PASSWORD; KAMAL_REGISTRY_PASSWORD is still exported so sites on a scaffolded .kamal/secrets keep deploying - docs site + `docs-kit new` template use .dash/secrets - dockerignore excludes /.dash/ alongside the legacy /.kamal/ - README, docs pages, and comments updated Claude-Session: https://claude.ai/code/session_01SdEc37DFCkYzwpQpadu9My
|
Running ultrareview automatically — This PR swaps the deployment tool from Kamal to dash across the reusable workflow, templates, and secrets; a subtle incompatibility or secret mismatch could silently break deploys for every docs-kit site.. I'll post findings when complete. |
|
I can't run this ultrareview because your workspace has reached its monthly review limit. cubic has reviewed 102,664 of the 80,000 allowed lines of code this month. Reviews resume on 10 September 2026 (in 15 days). Enable flex capacity to cover overages automatically and resume reviews now. Learn how flex capacity works. To help optimise your usage, you can tune cubic to get the most out of your usage limits:
|
dash 4.0.0 renames the on-host proxy (kamal-proxy → dash-proxy) and migrates hosts in place, so the deploy.yml now says minimum_version: 4.0.0 and the workflow installs `dash -v "~> 4.0"`. The scaffolded deploy.yml (docs/ + the `docs-kit new` template) turns on the per-app dash-proxy features a docs site benefits from: compress, a shared response cache, security headers, intercept_errors backed by public/502|503|504.html, exclude_metrics_paths, retain_containers: 2. proxy.run stays untouched (host-wide, shared by sibling sites) and rate_limit/deny_ips wait for a pinned client_ip.trusted_proxies. The workflow runs `dash doctor` before `dash deploy` — one report of host/registry/proxy/ports/readiness instead of one failure at a time. Claude-Session: https://claude.ai/code/session_01SdEc37DFCkYzwpQpadu9My
This was referenced Aug 27, 2026
Merged
Merged
Merged
chore(deploy): upgrade the docs deploy to dash 4 and repoint at zoolutions
zoolutions/phlex-forms#25
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
deploy.ymlinstallsdash -v "~> 4.0"and runsdash doctor(pre-flight: host, registry, proxy incl. the 4.0 migration, ports, readiness gates — raisesDoctorError→ job fails) beforedash deploy --skip-push --version=…DASH_REGISTRY_PASSWORD;KAMAL_REGISTRY_PASSWORDis still exported so sibling sites on a scaffolded.kamal/secretskeep deploying (dash reads a legacy.kamal/until 5.0)docs/config/deploy.yml+ thedocs-kit newtemplate now use dash-proxy properly:minimum_version: 4.0.0,retain_containers: 2,error_pages_path: public(+public/502|503|504.html)proxy.compress: true,proxy.cache { enabled, max_ttl: 300 }, securityheaders(nosniff, Referrer-Policy, strip Server/X-Powered-By),intercept_errors: [502,503,504],exclude_metrics_paths: [/up]proxy.run(host-wide; sibling sites share the proxy and a differingrun:reboots it each alternate deploy),rate_limit/deny_ips/client_ip(dash rejectsclient_ipwithout an access-control feature, andtrusted_proxiesmust be the tunnel's address — unknown from here)docs/.kamal/secrets→docs/.dash/secrets; both.dockerignores exclude/.dash/; README + Deploy docs page document the features and the one-off 4.0 proxy-rename outageTest plan
bundle exec rakegreen (94.7% line coverage, rubocop clean); docs-siterspec15/15dash configon dash main (000affd, the 4.0.0 commit) accepts the new deploy.yml (validated withminimum_versiontemporarily lowered — main still reads 3.2.1 until the release bump)workflow_dispatch) here — expect the doctor report, then the one-offkamal-proxy→dash-proxymigration (short outage on the shared host) and a green deploydash migrate, rename the secret, and copy theproxy:block when convenient — the first of them to deploy after this pays no extra outage, the host is already migratedhttps://claude.ai/code/session_01SdEc37DFCkYzwpQpadu9My