You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Addresses the 3.0 follow-up items on top of the phase 1-6 hardening pass:
- backend/tests now run Alembic `upgrade head` against the in-memory DB, so
future migrations (like the Phase 4 CHECKs and the Phase 6 index) are
exercised every pytest run instead of bypassed via create_all.
- ruff baseline added via backend/pyproject.toml; CI's new lint step is
clean and pytest still green (182 passed, 8 skipped).
- frontend/src/types/electron.d.ts types window.electronAPI; LicenseContext
drops every `any` cast and TS strict mode stays green.
- /health returns git_sha + started_at alongside version so oncall can map
an incident to a specific deploy.
- rate_limit.py honours RATELIMIT_STORAGE_URI and logs a loud warning when
run with WORKERS>1 without a shared backend.
- requirements.txt / requirements-test.txt: pydantic >=2.10, sqlalchemy
>=2.0.32 etc — Python 3.13 contributors no longer need a Rust toolchain.
- auth.py top-of-module comment documents the CSRF-safety invariant (auth
state lives in the Authorization header, never a cookie).
- VERSION bumped to 3.0.0 across the three SSOT constants files, both
package.json, both package-lock.json. README banner + "What's new" block
added; CHANGELOG 3.0.0 entry with upgrade notes.
headers added, deprecated `X-XSS-Protection` removed, `/docs` and
34
+
`/openapi.json` return 404 publicly. A separate `nginx.dev.conf` and
35
+
`docker-compose.dev.yml` keep HTTP-only local dev frictionless.
36
+
- **Rate limits extended.** `/forgot-password`, `/reset-password`, and every
37
+
AWS-credential endpoint now carry slowapi limits. Set
38
+
`RATELIMIT_STORAGE_URI=redis://…` when running with multiple workers —
39
+
the app logs a warning if you don't.
40
+
- **Fleet stats is now a single query.** `/api/v1/machines/fleet-stats`
41
+
aggregates in SQL instead of loading every row into Python, and
42
+
`GET /api/v1/machines` is paginated (`?limit=…&offset=…`).
43
+
- **Grace-period lockout fix.** Paid desktop users are no longer kicked off
44
+
during the 7-day renewal grace window.
45
+
- **Credential encryption key is domain-separated** from the JWT signing key
46
+
via HKDF-SHA256 (with transparent fallback for legacy-encrypted rows).
47
+
48
+
See [`CHANGELOG.md`](CHANGELOG.md) for the full list plus upgrade notes.
49
+
50
+
---
51
+
16
52
Compliance tools like Vanta, Drata, and Sprinto scan your cloud infrastructure. That's useful — but they can't see what's happening **on the machines themselves**. Password policies, firewall rules, event logs, running services, local user accounts — that evidence lives on the endpoint, not in AWS.
17
53
18
54
ComplianceGuard lives on the endpoint too. It collects evidence directly from Windows, scores it against 29 SOC 2 Type II controls, and tells you exactly where the gaps are. Run it as a desktop app or deploy the web version with Docker — everything stays under your control.
0 commit comments