Repository navigation
Commit 2263964
feat(cli): simplify domain add/status output for HTTP-DCV (#214)
## What
Custom-domain certificate validation is moving from TXT-DCV to
**HTTP-DCV** (validated at Cloudflare's edge once the hostname proxies
through it). Under HTTP-DCV there are **no user-facing `_acme-challenge`
SSL-validation records** and renewals are fully automatic, so the CLI's
domain output can be simplified.
This is the **framework half** of the migration. The platform half (API
activation gate + create-flow + janitor) is a separate PR in
`voidzero-dev/void-platform` that bumps the submodule pointer to this
commit.
## Changes
- **`domain add`** now prints exactly **two** sections — traffic
**CNAME** + ownership **TXT** — and drops the "TXT (SSL validation)"
section plus its deadline-miss fallback hint (both dead/misleading under
HTTP-DCV). Summary updated to "Add both records above".
- **`domain status`** only surfaces the ownership TXT while it is still
outstanding; the SSL-DCV record block is removed (issuance and renewals
never surface user records). `computeRollup` state machine is unchanged.
## Why
Adding a custom domain previously forced **3+ DNS records** (CNAME +
`_cf-custom-hostname` ownership TXT + 1–2 **rotating** `_acme-challenge`
TXT). The `_acme-challenge` set rotates on every ~90-day renewal and
silently drops domains back to pending/404 when nobody re-publishes it
(hit live on `viteplus.dev`). HTTP-DCV collapses the set to **1 CNAME +
1 non-rotating ownership TXT**.
## Tests
`packages/void/test/unit/domain-command.test.ts` — 39 passing
(two-section reveal assertions; SSL-record/SSL-pending-block assertions
removed).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> CLI and documentation-only UX changes for custom domains; no auth or
deploy logic touched, though users on older TXT-DCV expectations may
need the paired platform PR.
>
> **Overview**
> Aligns **`void domain add`** and **`void domain status`** with
**HTTP-DCV**: users only configure a traffic **CNAME** and a
`_cf-custom-hostname` ownership **TXT**. All **`_acme-challenge` / TXT
(SSL validation)** output and the “records will appear in status
shortly” fallback are removed.
>
> **`domain status`** now shows pending DNS as **CNAME (while
`ssl_status` is not active) + ownership TXT (while present)**, with
singular/plural note titles and **`issuing_cert`** diagnostics that
mention the CNAME only when a **`cname_target`** is actually printed.
CLI reference docs are updated (HTTP validation, no wildcards, automatic
activation / background reconcile).
>
> Unit tests in **`domain-command.test.ts`** are rewritten for the
two-record model and the new status pending-block behavior.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
206a073. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent f0706f8 commit 2263964
3 files changed
Lines changed: 142 additions & 158 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
572 | 572 | | |
573 | 573 | | |
574 | 574 | | |
575 | | - | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
576 | 578 | | |
577 | 579 | | |
578 | 580 | | |
| |||
596 | 598 | | |
597 | 599 | | |
598 | 600 | | |
599 | | - | |
| 601 | + | |
600 | 602 | | |
601 | 603 | | |
602 | 604 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
59 | 59 | | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
62 | | - | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
| 72 | + | |
87 | 73 | | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
94 | 78 | | |
95 | 79 | | |
96 | 80 | | |
| |||
177 | 161 | | |
178 | 162 | | |
179 | 163 | | |
180 | | - | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
181 | 172 | | |
182 | 173 | | |
183 | 174 | | |
| |||
238 | 229 | | |
239 | 230 | | |
240 | 231 | | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
259 | 241 | | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
275 | 248 | | |
276 | | - | |
277 | | - | |
278 | | - | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
279 | 257 | | |
280 | 258 | | |
0 commit comments