GLMChat V2.2.1 Release Hardening Report
Generated: 22 July 2026 12:56 UTC

Implemented:
- AES-GCM protection for sensitive IndexedDB cache records, drafts, conflict payloads and queued mutation payloads after PIN unlock.
- Automatic migration of existing plaintext V2.2 offline records after the next successful PIN unlock.
- Seven-day maximum age for offline credentials before online sign-in is required.
- Offline lock now clears both the in-memory session and local data-decryption key.
- Service-worker updates wait for explicit user installation rather than activating over a live tab.
- Normal update-ready and service-worker-failure user notices.
- Fixed the non-navigation service-worker fallback to always return a Response.
- No-cache headers for non-fingerprinted runtime helper scripts.
- Production preview-query bypass removed.
- Mock Together provider restricted to APP_ENV=test.
- New-chat manifest shortcut added.
- Unused Workbox Window asset removed.
- Light-only production palette applied.
- Public-root duplicate documentation removed; external documentation remains authoritative.
- SBOM and deployment manifest regenerated for the final V2.2.1 tree.
- Third-party licence notices added to the distribution.

Not claimed as completed:
- Live LiteSpeed root and nested-path acceptance.
- Live Together text, vision, tools or TTS calls.
- Physical Android Chrome, Samsung Internet or TalkBack acceptance.
- Reproduction of the original source-level Node/PHP/browser suites, because their source and test files are absent from this deployment-only bundle.
