CLISeptember 2026
Custom Tracking Domains & Proven-Orphan Cleanup
Custom tracking domains resolve over HTTPS by default, and doctor --cleanup no longer guesses at orphaned resources.
wraps email domains addandwraps email domains configaccept--tracking-domain, so open and click links resolve through a host under your own domain instead ofr.<region>.awstrack.me.--tracking-httpsrequests an ACM certificate and puts a CloudFront distribution in front of that host — two runs, since ACM validation takes 5 to 30 minutes: the first prints the validation record, the second finishes once the certificate is ISSUEDwraps email domains listand the dashboard report whether tracking links are HTTPS, per configuration set — a multi-domain account no longer reports one set’s state as the whole account’s. The failure hides well, since opens keep working over plain HTTP and only clicks break. Every tracking-domain write now carries an explicitHttpsPolicyinstead of leaving itOPTIONAL, which wrapped click links in the original link’s protocol and produced a certificate warning instead of the destination — three paths could reach thatOPTIONALdefault, includingdomains verifyre-issuing a policy-less write that downgraded an already-REQUIREconfiguration set- Fix:
wraps email doctor --cleanupno longer treats an unreachable Pulumi stack probe or an unchecked CloudFormation stack as a proven orphan — a failed probe used to sweep in the console access role and the configuration setsdomains addcreates, and a CloudFormation quick-create deployment was mistaken for loose resources. A check that cannot confirm an orphan now refuses--cleanupinstead of assuming, and names the owning stack when it finds one - Fix: disabling and re-enabling HTTPS no longer hands back a CloudFront distribution the CLI had already switched off, breaking every click link until it is restored. A failed HTTPS provision during
domains addnow warns and falls back to plain HTTP instead of aborting and orphaning the identity it already created
Also fixed (8)
- The five tracking-domain error codes are documented at /docs/reference/errors; a subdomain that was never added separately inherits the primary domain's tracking host.
- If you saw "Cannot find module '@wraps/core'" in index.d.ts when installing @wraps.dev/cdk or @wraps.dev/pulumi, upgrade to CDK v0.3.1 or Pulumi v0.4.1 — the published type declarations no longer reference the unpublished @wraps/core package.
- domains config --tracking-domain now offers HTTPS at the point it sets the domain, instead of requiring a second trip through the menu.
- A zone-scoped Cloudflare token (Zone → DNS → Edit) now validates correctly for DNS automation; validation previously required the broader User → API Tokens → Read scope it didn't need.
- Two DNS paths that used to fail silently now report whether the record was written: the tracking CNAME print, and the ACM validation push that gates certificate issuance.
- ACM and CloudFront listings are paginated too, so a second page no longer causes a fresh certificate request on every run.
- wraps --help was hiding thirteen shipped subcommands across five groups, including email reply, email logs and workflow entirely; a parity test now checks the dispatcher against the help output.
- @wraps.dev/pulumi and @wraps.dev/cdk both accepted tracking.customRedirectDomain and failed differently — Pulumi deployed it with SES's OPTIONAL policy and no CloudFront, CDK ignored it entirely; both now warn at deploy time.
CLI v3.6.0 · CLI v3.7.0

