Security · 5 min read

Security, Privacy & Cryptographic Update Architecture

How Typen guarantees zero keystroke logging, automatic password field exclusion, Ed25519 manifest verification, and atomic Zstandard delta updates.

01Zero Keystroke Logging & Ephemeral Memory Buffers

Typen is architected so that your typed documents, messages, and passwords can never be reconstructed from disk. SQLitePreferenceStore (preferences.sqlite3) stores only your explicit custom dictionary words, rejected correction pairs, preferred variants, and aggregate counters.

The active word buffer holds at most the single word currently being typed, and the context ring buffer holds at most 5 integer word IDs—both flushed immediately on every window switch or mouse click.

02Automatic Password Field & Security App Exclusions

Before evaluating any keystroke, the platform FocusInspector checks the active window and UI control:

  • Windows (Win32FocusInspector): Inspects Win32 window styles for ES_PASSWORD and excludes password managers (1password.exe, bitwarden.exe, keepassxc.exe, dashlane.exe).
  • macOS (MacAXFocusInspector): Checks AXSubrole == 'AXSecureTextField' and Quartz IsSecureEventInputEnabled().
  • Linux (X11FocusInspector / WaylandIBusEngineAdapter): Inspects window class exclusions and IBUS_INPUT_PURPOSE_PASSWORD.

03Ed25519-Signed Zstandard Delta Updates & Atomic Rollback

Language Intelligence Library updates (.tar.zst and .patch.zst) are decoupled from application binary updates. LanguageResourceUpdater verifies the Ed25519 signature over the canonical release descriptor, checks the SHA-256 digest, blocks any archive containing path traversal ('..') or executable extensions (.exe, .dll, .so, .dylib, .py, .sh), verifies per-artifact hashes in manifest.json, and performs a pre-flight smoke load before atomically swapping active_version.json.

If any check fails, or if you click 'Rollback to Last Known Good' in the Updates screen, ResourceManager immediately falls back to last_known_good_dir or the bundled baseline.

Spotted an inaccuracy or want to improve this guide? Edit security-privacy.md on GitHub (TypenApp/docs) ↗