Module-by-module catalog of every feature shipped in the WECO admin, host-api, and renderer.
| Feature | Status |
| Email + bcrypt password (cost 12, ≥12 chars), per-IP rate limit, 15-min lockout | Shipped |
| TOTP 2FA (RFC 6238) with single-use recovery codes | Shipped v0.0.19 |
| Email one-time-code 2FA via SMTP | Shipped |
| WebAuthn / FIDO2 passkey (AAL3) | v0.0.37 — API only, GUI planned |
| SAML 2.0 SSO (SP) + OIDC RP (PKCE S256) | Shipped v0.0.35 |
| Just-In-Time provisioning on first SSO login (domain-allowlisted) | Shipped v0.0.38 |
| SCIM 2.0 provisioning | v0.0.37 — API only, GUI planned |
SSO-only sealed mode (FF_SSO_ONLY=1) | Shipped v0.0.35 |
Step-up MFA on destructive routes (FF_REQUIRE_STEP_UP=1) | Shipped v0.0.36 |
Read-only freeze (FF_FREEZE=1) | v0.0.36 — runtime only, banner GUI planned |
| Feature | Status |
Add a host through the UI; admin SSHes in, uploads source, runs bootstrap.sh with phase-by-phase progress | Shipped |
| SSH auth — key (default) | Shipped |
| SSH auth — password + non-22 port (for VyOS-NAT customers) | NEW v0.0.74 |
| Resume bootstrap (idempotent re-run after a failure) | Shipped |
| Capabilities + cert-expiry telemetry pulled on every deploy | NEW v0.0.75 |
| Daily TLS-cert-expiry probe on each host (systemd timer); banner appears in admin when any host's cert is < 14 days from expiry | NEW v0.0.75 |
| Customer registry (Settings → Customers): per-customer admin VM IP, host VM IPs, web panel URL+credentials, VyOS router URL+credentials. Encrypted at rest with AAD bound to row id. | NEW v0.0.74 |
Operator credential vault (workspace-side _vault/) + tiny CLI for SSH-command lookup | NEW v0.0.74 |
| Feature | Status |
| 21 block types: navigation, hero, text+image, documents (PDF), footer, text section, news, contacts, accordion, table, divider, stats, team, gallery, partner logos, CTA, schedule, Q&A inbox, capital tracker, custom embeds, investor login. See blocks.html for field-level reference. | Shipped v1.0.0 |
| Theme presets — 11 curated palettes (Classic Corporate, Modern Minimal, Legal Document, Financial Gold, Dark Professional, Sunset Bronze, Ocean Slate, Forest Sage, Pastel Calm, High Contrast, Brutalist Yellow) | NEW v0.0.74 (6 added) |
| Per-site multi-language (BCP-47 tab strip; per-language block content) | Shipped |
Atomic deploys (renderer writes a side dir, rename(2) swaps over live, prior live is preserved as <slug>.prev/) | Shipped |
Per-site snapshot + restore (one click → tar.gz at /var/sites/_backups/<slug>/<ts>.tar.gz; retention keeps 10 newest) | NEW v0.0.76 |
Site export (.orxsite signed bundle) and import | Shipped v0.0.49 |
Site delete with optional host purge (default OFF — admin record removed but host data preserved; checkbox to also wipe /var/sites/<slug>/ + /var/www/<slug>/ + per-site nginx file; bytes freed audited) | NEW v0.0.74 |
| Feature | Status |
Hash-chained audit log (every event carries prev_mac + mac; tampering breaks every later row) | Shipped v0.0.30 |
| Ed25519 witness signature on each chain head (dual-control, key disjoint from chain HMAC secret) | Shipped v0.0.32 |
| Real-time SIEM forward with back-pressure queue (Splunk HEC, Elastic, any HTTP receiver). Optional sealed-mode refuses to write when forward fails. | Shipped v0.0.36 |
| Anomaly detection (outside-business-hours logins, impossible-travel) | Shipped v0.0.36 |
Verifier CLI (npm run audit:verify) — exit 0 only when chain validates | Shipped |
| CSV export (license-gated) | Shipped |
v0.0.74-76 audit actions: site.purged_from_host, customer_site.{create,update,delete}, site.snapshot_{created,restored} | NEW |
| Feature | Status |
4-eyes JIT approval for destructive actions (site.delete, host.rotate_credentials, self-update); 30-min TTL, single-use | v0.0.38 — API only, approver GUI planned |
| Break-glass account (one-time admin via CLI, audited) | v0.0.36 — CLI only |
| IP allowlist for admin panel (CIDR-based) | v0.0.36 — env-only, GUI planned |
| Device-bound sessions (cookie tied to obtaining IP) | v0.0.36 — runtime only, session list GUI planned |
| Auto-update kill switch (Stop / Resume the daily timer) | Shipped v0.0.72 |
| Feature | Status |
| AES-256-GCM with per-row AAD on every sensitive column (host SSH keys, host bearers, 2FA seeds, customer panel + VyOS credentials) | Shipped |
| 5-provider master-key chain (file, env-cmd, HashiCorp Vault Transit, AWS KMS, GCP KMS) with rotation CLI | Shipped v0.0.23 / rotation v0.0.34 |
CI-enforced AAD-binding lint (npm run check:security) | Shipped |
Backup encryption with separate KEK (refuses BACKUP_PASSPHRASE == MASTER_SECRET) | Shipped v0.0.34 |