You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Owner has no HQ_SECRET_KEY, so the D31 unlock-with-key path was impossible. crypto is now fully keyless: encrypt/decrypt ignore keyHex (params kept so a key can be wired back later); decrypt returns '' for any leftover legacy AES value (unreadable → treated as unset, never fed back as ciphertext). Key-based /admin/migrate-plaintext replaced by keyless /admin/clear-legacy-credentials (clearLegacyCiphertext) which NULLs unreadable pre-D31 values. .env.example marks HQ_SECRET_KEY removed. Ran the cleanup on live data: 76 SMS + 110 client DB passwords were unrecoverable and cleared (usernames intact) — must be re-populated in plaintext (APEX re-import / re-entry). Also fixes the one real defect the D31 adversarial review confirmed: maybeRefreshSmsDaily still had a 'keyHex==="" -> no-op' guard that would silently kill the DAILY auto-refresh once the key was gone (manual refresh masked it). Removed; the daily pull now runs keyless like the manual path. Full suite 416 green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 days ago | |
|---|---|---|
| .. | ||
| scripts | 4 days ago | |
| src | 3 days ago | |
| test | 3 days ago | |
| .env.example | 3 days ago | |
| build-server.mjs | 2 weeks ago | |
| package.json | 4 days ago | |
| schema.sql | 2 weeks ago | |
| tsconfig.json | 2 weeks ago | |