Repository navigation
feat(cli): roll up domain status into single diagnostic state - #206
Conversation
✅ Deploy Preview for staging-void-cloud ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9d3d9ba697
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sections are conditionally rendered (ownership and SSL can be absent on a deadline-miss or unusual CF response), so "Add all three records" contradicted what users actually saw. Use neutral wording that references the printed records instead of a fixed count. Resolves bot review comments on #206. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
`void domain status` now reports one of 8 computed states with a one-line diagnostic (error, awaiting_deployment, awaiting_dns, verifying_dns, issuing_cert, deploying_cert, active, pending), replacing the Status / SSL Status / Ownership / Errors block that read as contradictory whenever Cloudflare's state diverged from our DB row. The legacy multi-line breakdown is preserved behind --verbose for debugging, separated by a Details: header. `void domain add` uses explicit named locals for section ordering (CNAME -> ownership TXT -> SSL TXT), appends a one-line summary directing the user to `void domain status <host>`, and on the SSL deadline-miss path replaces the SSL section with a "records will appear shortly" hint instead of silently omitting it. computeRollup and RolledUpStatus are exported so the state-machine priority is verified by a table-driven unit test in addition to the integration tests that exercise the rendered output. DomainStatusResponse gains optional cf_status and awaiting_deployment fields consumed from the platform API. Both are optional so the CLI tolerates pre-rollout API responses cleanly. Refs: meta/design-docs/0072-custom-domain-verification-ux-improvements.md Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sections are conditionally rendered (ownership and SSL can be absent on a deadline-miss or unusual CF response), so "Add all three records" contradicted what users actually saw. Use neutral wording that references the printed records instead of a fixed count. Resolves bot review comments on #206. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
55ecc6e to
58b7cab
Compare
…below The DNS record details render in a separate note block below the status, not above it. Switched the directional reference. Resolves bot review comment on #206. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c11e4e566e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c11e4e5. Configure here.
Previously, status.status === 'active' alone produced "Live." even when ssl_status indicated the cert was re-validating. Against pre-rollout platforms (which don't return cf_status) the cert-renewal window would slip past the issuing_cert clause and land at active, falsely reporting the domain as live while SSL was still pending. The issuing_cert clause already keys off per-field SSL signals when cf_status === 'active'; this change applies the same principle to the active branch, so a non-active ssl_status keeps the rollup honest regardless of whether cf_status is present. Resolves bot review comment on #206. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Nice. |
Platform PR #162 merged before framework PR #206. Both PRs were squash-merged, so the platform's submodule pointer on main now references an orphan feature-branch SHA (ab94e66) that is not reachable from framework's main. This commit bumps the pointer to 8e76767 — the framework PR's squash-merge commit on framework main — so `git submodule update` on a fresh clone of platform main resolves cleanly. No platform code changes; submodule pointer only. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

Summary
void domain statusnow reports one of 8 computed states with a one-line diagnostic (error,awaiting_deployment,awaiting_dns,verifying_dns,issuing_cert,deploying_cert,active,pending), replacing the separateStatus:/SSL Status:/Ownership:/Errors:lines that often read as contradictory whenever Cloudflare's state diverged from our DB row.void domain status --verbosepreserves the legacy multi-line breakdown for debugging, separated by aDetails:header.void domain adduses explicit named locals for section ordering (CNAME → ownership TXT → SSL TXT), appends a one-line summary directing the user tovoid domain status <host>, and on the SSL deadline-miss path replaces the SSL section with a "records will appear shortly" hint instead of silently omitting it.DomainStatusResponsegains optionalcf_statusandawaiting_deploymentfields consumed from the platform API (both optional for backward compat with pre-rollout API responses).computeRollupandRolledUpStatusare exported so the state-machine priority is verified by a table-driven unit test in addition to the integration tests.Paired with platform-side changes in voidzero-dev/void-platform (short-poll for SSL records, additive API fields). Implements design doc 0072.
Test plan
vp test run packages/void/test/unit/domain-command.test.ts— 43/43 pass locallyvp run --filter ./packages/void typecheck— cleanvoid domain add <hostname>on a project with TXT-DCV — verify CNAME, ownership TXT, SSL TXT all appear in one screenvoid domain status <hostname>— verify rolled-up state line showsvoid domain status <hostname> --verbose— verify legacy multi-line breakdown still appears underDetails:void domain statuson a hostname without a deployment — verifyawaiting_deploymentdiagnostic appears🤖 Generated with Claude Code
Note
Medium Risk
Changes the
void domain statusoutput and logic to compute a new roll-up state machine based on additional API fields, which could misclassify domain states or confuse users if edge cases are missed. Backward-compat handling is included but depends on optional platform response fields.Overview
Custom domain status output is revamped.
void domain statusnow computes and prints a single rolled-up state plus a one-line diagnostic (via exportedcomputeRollup), with an optional--verboseflag to also show the prior multi-line breakdown under aDetails:section.Platform response + CLI UX updates.
DomainStatusResponseadds optionalcf_statusandawaiting_deploymentfields (with fallback behavior when absent),void domain addnow enforces deterministic DNS section ordering and includes a summary line, and the docs/help text are updated accordingly. Unit tests are expanded to cover the rollup priority/state matrix,--verboserendering, and the updateddomain addmessaging.Reviewed by Cursor Bugbot for commit ab94e66. Bugbot is set up for automated code reviews on this repo. Configure here.