40f9d90fad
Unit Tests / test (push) Successful in 7m29s
Setup wizard (Issue 1 — UI): - pic.ngo subdomain input now uses the same split-field style as DuckDNS: input + static '.pic.ngo' suffix in a flex row, availability status below Setup wizard (Issue 2 — Caddy not regenerating after completion): - complete_setup route now fires IDENTITY_CHANGED after a successful wizard submission so CaddyManager regenerates the Caddyfile immediately; users no longer need to press 'Renew Certificate' to start ACME Settings — DDNS status (Issue 2 — domain status missing): - New GET /api/ddns/status endpoint: returns registered flag, domain_name, public_ip (ipify with 30s cache), last_ip from heartbeat - Settings DDNS section for pic_ngo now shows a live status row with color-coded dot (green=registered+current, yellow=registered+stale, gray=not registered), current public IP, and a Check button - Status auto-refreshes on mount and after each successful re-registration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>