Immutable
release. Only release title and notes can be modified.
What's new
Breaking changes
- OS keychain is now required — no more secrets.json fallback. fsd connect pre-checks keychain availability and fails with a clear error if none is found.
Security
- Credentials are now stored exclusively in the OS keychain (Windows Credential Manager, macOS Keychain, Linux Secret Service). Removed the unencrypted secrets.json fallback with base64 encoding.
- Rewrote security.md with a full credential storage table, threat model, and clearing guide.
Improvements
- fsd connect now validates keychain availability before prompting for credentials
Docs
- Purged all references to secrets.json and fallback storage across all documentation
- Removed versioning section from CONTRIBUTING.md
- Cleaned up troubleshooting.md (removed obsolete credential storage section, renumbered sections)
Internal
- Removed HAS_KEYRING boolean, _load_secrets, _save_secrets, and all JSON/base64 fallback code from security/keys.py
- Renamed version.txt to version in project root and updated ci for so