Repository navigation
Move staging web app to app-staging.useorbit.org - #640
Conversation
There was a problem hiding this comment.
Important
The documented cutover removes the old staging origin from the API and upload allowlists before the new web release, interrupting active staging sessions.
Reviewed changes The staging web hostname moves to app-staging.useorbit.org across DNS, Render domains, auth and billing configuration, upload CORS, and rollout instructions.
- Routing: Adds the new unproxied CNAME while retaining the old Render custom domain for a permanent redirect.
- Configuration: Switches staging Turnstile, API and web origins, OAuth redirect, Stripe return URLs, and upload CORS to the new hostname.
- Rollout: Documents external OAuth and build-variable changes followed by Terraform apply and staging releases.
GPT Sol | 𝕏
staging.useorbit.org stays a domain of the staging web service and redirects to app-staging.useorbit.org. The staging API CORS origins, its Google redirect URIs and the staging upload bucket CORS keep the old host beside the new one, so a tab still on the previous web build keeps working while the new build is released. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes The follow-up commit preserves access for tabs using the old staging hostname during the web cutover.
- API access: Kept
staging.useorbit.orgalongside the new host in staging API CORS and Google redirect URI settings. - Uploads: Allowed both staging origins in the upload bucket CORS configuration while leaving the production origin unchanged.
- Rollout: Documented the overlap for tabs running the previous web build.
GPT Sol | 𝕏
|
…ign main (#746) (#645) * Move staging web app to app-staging.useorbit.org (#640) * fix: move staging web host to app-staging.useorbit.org * Keep the old staging host allowed through the host cutover staging.useorbit.org stays a domain of the staging web service and redirects to app-staging.useorbit.org. The staging API CORS origins, its Google redirect URIs and the staging upload bucket CORS keep the old host beside the new one, so a tab still on the previous web build keeps working while the new build is released. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 53c1d83) * fix: trust render operations OIDC subject for staging role (#642) (cherry picked from commit 561fb43) * fix: allow unlogging after due date advances (#643) * fix: allow unlog and bulk replay after due date advances * fix: preserve date limits when unlogging habits Keep the future and overdue guards before the unlog branch, ignore deleted logs when toggling, and restore the next unresolved due date after a historical relog. Covers thomasluizon/orbit-tickets#874. (cherry picked from commit d3552a8) * Restore logged habits in calendar month (#644) * Fix logged habit dates in calendar month * fix: keep flexible calendar parent for logged child * fix: send no calendar occurrences for an exhausted flexible parent A flexible parent kept in the month only because a child logged there still sent every projected day of its window, which the calendar drew as missed. Send only its own logged dates when its target is exhausted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 35e141d) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>




Closes thomasluizon/orbit-tickets#833
Change
app-staging.useorbit.orgto the staging Render custom domain set and point a new unproxied Cloudflare CNAME at the staging web service. Keepstaging.useorbit.orgattached for the web proxy's permanent redirect.api-staging.useorbit.orgstay as configured.infra/README.md.The Terraform settings live in
infra/variables.tf,infra/cloudflare.tf,infra/configuration.tf, andinfra/uploads.tf. Keeping both Render custom domains lets the old host reach the existing web proxy while the new host becomes canonical. No web service resource configuration was added.Cutover safety (review fix)
staging.useorbit.orgstays a domain oforbit-web-stagingand redirects to the new host. The staging API keeps it asCors__AllowedOrigins__1and asGoogle__AllowedRedirectUris__2, and the staging upload bucket CORS allows both hosts, so a tab still on the previous web build keeps working while the new build is released.terraform fmt -checkandterraform validate(providers installed withinit -backend=false) passed;node --test infra/ses-isolation.test.mjs infra/check-web-plan.test.mjspassed.Verification
terraform fmt -check infra/variables.tf infra/cloudflare.tf infra/configuration.tf infra/uploads.tf: passed.terraform -chdir=infra validate: unavailable because the Render, Cloudflare, and AWS provider plugins are not cached in this worktree.node tools/check-dashes.mjs --files infra/variables.tf infra/cloudflare.tf infra/configuration.tf infra/uploads.tf infra/README.md: passed.node tools/check-timeless.mjs --base main: passed.dotnet build Orbit.slnx: zero errors.dotnet test Orbit.slnx --no-build: 6,875 passed, zero failed.render_web_service.staging_webhas no planned update.Manual steps
orbit-web-staging, addapp-staging.useorbit.orgunder Custom Domains before the targeted Terraform apply. Confirm both staging hosts are attached and the targeted plan shows no update torender_web_service.staging_web.orbit-ui-mobileGitHub repository, set the Actions variableSTAGING_NEXT_PUBLIC_SITE_URLtohttps://app-staging.useorbit.org. Confirm the variable displays that exact value.https://app-staging.useorbit.org/auth-callbackto Authorized redirect URIs. Confirm an authorization request using that URI is accepted.redesign/main. Confirmhttps://app-staging.useorbit.org/api/healthreports the released commit,https://staging.useorbit.org/responds with a permanent redirect to the new host, and email code and Google sign-in work on the new host.