May 2026v3.2.0FeatureSecurityFixed
Enterprise air-gapped tier, multi-framework scoring, premium UI overhaul
- Enterprise tier — air-gapped Docker deployment bundle (zero outbound calls): enterprise-bundle.sh / enterprise-install.sh / enterprise-update.sh and hardened Nginx config (TLS 1.2+, HSTS, strict headers)
- Tamper-evident audit log — SHA-256 hash chain covering all 7 fields per entry; GET /api/v1/enterprise/audit-log/verify walks the chain from genesis; Postgres app user REVOKEd DELETE/UPDATE
- Self-audit events automatically injected at service call sites — evaluation_run, evidence_collected, enterprise_config_updated, role_assigned, export_generated
- Custom PDF branding (Enterprise) — company name, logo (PNG/JPEG only, SVG rejected at MIME + magic-byte layers, 512 KB cap), and report footer via PUT /api/v1/enterprise/branding
- NDJSON streaming data export — GET /api/v1/enterprise/export streams evidence, evaluations, and audit log as application/x-ndjson; Electron dialog-chosen save paths only
- RBAC — admin + auditor roles via /api/v1/enterprise/users with last-admin lockout guard (HTTP 409); first registered user seeded as admin
- ENTERPRISE_MODE Sentry guard — air-gapped deployments never make outbound calls from the application layer
- Multi-framework scoring in the Electron desktop app — SOC 2, ISO 27001:2013, and HIPAA Security Rule all scored from a single Windows evidence pass; YAML is now the single source of truth for both the Browse Frameworks tab and the scoring engine
- Web-mode ISO 27001 and HIPAA scoring — new POST /api/v1/iso27001/evaluate-from-evidence and POST /api/v1/hipaa/evaluate-from-evidence endpoints
- Scheduled automatic evidence collection — Daily/Weekly schedule, powerMonitor.resume catch-up after sleep, tray notifications on success/failure
- Browse Frameworks tab in Electron — read-only reference library for SOC 2 / ISO 27001 / HIPAA with live search, risk-level filter, and category accordions (works fully offline)
- Premium UI overhaul — dual light/dark theme (Slate/Indigo tokens), frosted-glass topbar, ContextSidebar with Framer Motion sliding active pill (layoutId), animated ScoreHero with spring count-up and color transition, MotionCard hover lift, staggered list entry, page transitions tuned to 0.14s
- Auth additions — GET /auth/me, POST /auth/resend-verification, PATCH /auth/profile, DELETE /auth/account (GDPR Article 17 hard-delete with password confirmation)
- Evidence search and status filter — ?status= and ?search= params on GET /api/v1/evidence/items; GET /evidence/items/{id}/controls returns mapped SOC 2 controls
- Railway one-click deploy via railway.toml at repo root
- Alembic migration 3cef531bbe2e creates audit_log, enterprise_config, user_roles; seeds first admin; idempotent on SQLite
- Fixed duplicate framework selector — Dashboard ToggleButtonGroup removed; framework selection now lives exclusively in the sidebar URL-param flow
- Fixed auth API routing — 7 call sites corrected from /api/auth/* to /api/v1/auth/*
- Fixed naive datetime in compliance service — 4 datetime.now() calls replaced with timezone-aware equivalents
- Test count grown to 530 passing across backend, frontend, Electron, scheduler, and Playwright