# Vault 0.3 workspace — security and data model

Vault's private workspace stores documents and task boards inside the same local KeePass KDBX4 file as passwords and cards. It does not use Notion's API or service. There is no online workspace database, cloud account, telemetry, remote embedding, page sharing or AI access. Web hosting serves the application; the application's Content Security Policy sets `connect-src 'none'`.

## Encrypted data

Page titles, nesting, tags, favorites, block content, task descriptions, due dates, priorities and status are all inside the encrypted KDBX database. Structured content is a KdbxWeb ProtectedValue named `ManeulerWorkspace` on a `Kind=page` entry. A protected Notes field contains a bounded readable summary for file interoperability. Like other titles, page titles are visible in app memory while unlocked but are encrypted on disk. Search is local and uses only the unlocked in-memory data.

The cryptographic format is unchanged: new vaults use KDBX4 AES-256 with Argon2id (64 MiB, three iterations, one lane). No master passphrase is saved or sent to a server. Pages travel in the same encrypted export or approved native Wi-Fi snapshot as the rest of the vault. `compareVaults` includes structured content in its change detection. This is whole-vault snapshot synchronization, not simultaneous collaborative editing or an automatic merge.

## Editing and locking

Save page (or Cmd/Ctrl+S) encrypts the edited page before storing it. Saving uses an isolated KDBX working copy. A failed encryption or storage write leaves the previous committed vault unchanged and clears the working copy. Page drafts, search, rendered content and decrypted titles are never persisted outside KDBX. Unsaved draft changes remain in memory and are discarded on lock or reload. Navigation within the workspace asks the user to save or discard a dirty page.

Manual, hidden-page, desktop/native and five-minute idle locks remove the editor immediately, including during an in-flight encryption or I/O operation. A save already underway may finish writing ciphertext, but it cannot reopen the UI. Its working key material is cleared when the operation settles. JavaScript and the host browser/OS cannot guarantee forensic memory erasure.

Browser/extension saves now compare the encrypted bytes read by that tab with the stored bytes in the same IndexedDB write transaction. A stale tab cannot silently replace a newer file. Failed page saves offer a separate encrypted recovery download that includes the current draft and that tab's saved vault; it does not replace the device's newer copy. This is conflict refusal and recovery, not merge support. Native revision and atomic-write checks remain in place.

## Untrusted input

Workspace content is schema-validated data, never HTML, JavaScript, Markdown execution or a remote embed. React text inputs render markup as text. Code blocks are inert text. Drag-and-drop transfers only local block/task IDs. There are no image-fetch or link-preview requests. Text fields disable browser spellchecking and autocomplete, although the host OS, keyboard software and extensions remain outside this application's control.

Versioned pages accept only known fields and block types. Bounds include 65,000 serialized characters per page, 120 blocks (4,000 characters each), 100 tasks, eight short tags and 12 nesting levels. IDs must be unique within each page. Invalid dates, unknown types/fields, cyclic nesting and excessive depth are rejected. Whole-vault limits remain 8 MiB and 2,000 active entries for creation. Imported files also have bounded fields, groups and histories. Deleting a parent moves it to the recycle bin and promotes its children to My space; backups retain old copies.

## Compatibility and release boundary

Vault 0.3 web and developer extensions edit the workspace. The 0.3 CLI can list/read workspace records, preserve them while editing other items, rotate the vault passphrase and export the same file; its terminal form does not edit block pages. The 0.3 macOS DMGs, Windows installer and Android APK now contain the workspace editor. The 0.3 native source also includes the iOS project. Native installer publication remains dependent on supported download hosting; the live download page identifies available files. iOS compilation, signing and distribution are still pending. Available downloads are labeled on the download page.

This is an unaudited preview, not a claim to be the most secure vault or to be immune unless an OS is compromised. A malicious web deployment, extension, vulnerable app, weak passphrase or compromised device can expose unlocked data. Device signing/notarization, independently reviewed native releases, an independent security assessment and operational release hardening remain necessary before making strong assurance claims. No security level is inferred from the interface or from the number of automated tests.

Primary format references: [KeePass security design](https://keepass.info/help/base/security.html), [KDBX specification](https://keepass.info/help/kb/kdbx.html), [KdbxWeb](https://github.com/keeweb/kdbxweb).
