Repository navigation
v0.8.1 — RDAP Ownership & Expiration Fixes
v0.8.1 — RDAP Ownership & Expiration Fixes (bugfix / stability release)
Bugfix release over v0.8.0 (which introduced admin authentication, the notification configuration UI, the Telegram channel, and encrypted secret storage — all unchanged here).
Fixed
- RDAP fallback ownership: registered-domain fallback no longer treats parent-domain data as child-domain ownership. A subdomain without its own RDAP object (e.g.
opusai.eu.cc→ 404) previously resolved to the parent (eu.cc) and the parent's expiration, registrar, nameservers and status were stored on the child row. RDAP results now carry explicit ownership detection (exact/parent), decided strictly from the RDAP object's canonical/LDH identity — never merely from "a fallback succeeded". - No parent data on the child: parent-derived expiration / registrar / nameservers / status are never written to the subdomain's own fields. The child is marked
rdap_status = ["no-object"]and its registration fields are cleared; the UI shows Unavailable instead of inventing a parent expiration for the subdomain. - Expiration-date UI duplication: the detail page showed the expiration twice (
Expirationheading plus anExpires: …prefix); it now renders a plain date. - Fallback safety net: fallback is allowed only for
not-found(HTTP 404 / no domain object) or a successful response without an expiration date; network, timeout, 429, 500 and invalid responses are never masked by a parent query; a bare TLD is never queried. - Production data repair: production records affected by the previous fallback behavior were corrected through the normal Refresh flow.
Notes
- No schema / migration changes.
updateDomainRdap(id, data, ownership)now requires an explicit ownership argument. - Telegram secret storage, authentication, and the notification pipeline are unchanged.
- Test suite: 708 tests (46 files) — tsc / lint / prettier all green.