Releases: useFormseal/decrypt
Releases · useFormseal/decrypt
Release list
v0.6.0
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
v0.5.1
Immutable
release. Only release title and notes can be modified.
What's new
Improvements
- Border width now comes from a single
BORDERconstant infsd.ui.styles— no more hardcoded"─" * Nacross files - Help section dividers now match the header divider (52 chars) — was 44, looked off
- Shortened help command descriptions (e.g. "configure source, destination, key" instead of "…and private key")
Docs
- Added
last_decryptandlast_formatto config.json example and field table
v0.5.0
Immutable
release. Only release title and notes can be modified.
What's new
Features
- Three-tier error system:
neutral()(😐) for user mistakes,warn()(⚠️ ) for warnings,fail()(Error:bright red-orange) for system issues - Strict flag validation:
connect,decrypt, anddisconnectreject unknown flags with "😐 Invalid flag." --formatsflag lists available export formats
Breaking changes
--aboutflag removed —fsdalone (no args) shows the about page- Format names simplified: "JSON Lines" → "JSONL", "Pretty JSON" → "JSON", format aliases dropped
- Format prompt removed from
connect— always storesjsonlas default; override at decrypt time with--format --helpand--versionare no longer commands, they're global flags
Fixes
version.pypath corrected ininject-version.ymlworkflowunknown_command()no longer takes acmdparameter it never used
Security
SECURITY.mdtrimmed from 115 lines of corporate boilerplate to a concise reporting guide
Improvements
- Case-insensitive format lookup via
get_formatter()— acceptsCSV,csv,Json,JSON,md,MD, etc. - Header format updated:
┌─ 🙈 formseal-decrypt \ [subtext]with dim separator and white-bold lowercase subtexts - Header subtexts added to
status,help,disconnectcommands disconnectwarning text dedented;--wipesuccess message says "Decrypted messages deleted."- Empty source file detected with "
⚠️ Source file contains no records." - Ciphertext error message improved: "The ciphertext may be corrupted or encrypted for a different key."
|pipe separators removed from all error/warning messages- Command paths highlighted in green (
C) in error messages
Docs
- Flattened docs tree: removed
concepts/,reference/,deployment/subdirectories - Added
4. output-formats.mdwith format specs, overwrite policy, CSV injection safety docs/README.mdmerged "Quick links" and "For developers" tables into onehow-it-works.mdtrimmed output model section, links to new output-formats pagegetting-started.mdadded disconnect confirmation prompt, overwrite note,.jsonlinteractive nuancecommands.mdadded-fshorthand,--source/--destflag syntax, disconnect confirm, error tierssecurity.mdadded keyring dependency note, runtime fields, disconnect confirm, accurate--wipescopeconfiguration.mdadded runtime behavior details
Internal
FORMATTERSis now the single source of truth for formats — no separate aliases dict- Version bumped to
0.5.0inversion.txt,version.py,pyproject.toml
v0.4.1
What's new
Features
fsd statusnow shows the format used in the last decrypt run
v0.4.0
What's new
This release adds CSV output, a new canonical JSONL architecture, and cleans up the format system.
Features
- CSV export — Spreadsheet-compatible output with sorted columns, value normalization, and formula injection protection.
- Canonical JSONL — fsd decrypt always writes formseal.decrypted.jsonl as the source of truth. Additional formats are derived projections via --format.
- --format flag (in
decryptcommand) — Override the export format per-run (fsd decrypt --format csv). No need to reconnect. - --formats flag — Lists available export formats.
Improvements
- Streamlined connect — Format prompt removed. Always defaults to JSON Lines.
- Richer status — Shows decryption status: entry counts and last decrypt timestamp.
- Removal of dead code throughout.
v0.3.0
What's new
This release adds Markdown table output and improves format handling.
- Markdown format — All submissions in a single flat table. Opens in any markdown viewer, editor, or git diff.
- Dynamic field detection — Columns adapt automatically to whatever fields exist in your data. No hardcoded schema.
- Smarter format validation — Both display names (
JSON Lines) and internal keys (jsonl) are accepted during connect.
Changes
- Format validation now case-insensitive and display-name-aware
- Stale docs cleaned up (removed
client_tz, added markdown references)
v0.2.0
What's new
This release introduces a modular output format system and migrates from formseal-inbox (fsi) to formseal-decrypt (fsd).
- Output format selection — Choose between JSON Lines or JSON during
connect - Modular format system — Easy to add new output formats (CSV, table, etc.)
- Auto-generated filenames — Output files named
formseal.decrypted.{jsonl|json}
Changes
- CLI renamed from
fsitofsd - Source file must end in
.jsonl(auto-appended if missing) - Destination is now a directory (not a full file path)
v0.1.0: See grayguava/formseal-inbox — original CLI with JSON Lines-only output.