TitleA native Mac app, and a CLI that works on the same vault→A native Mac appDescriptionBradley (2026-09-29) wants two things: - **A native Mac app** alongside the iOS one, to keep items and fill codes on the Mac. - **A CLI** (`vault`) that can ...→Bradley (2026-09-29) wants a native Mac app alongside the iOS one, to keep items and fill codes on the Mac. This is an epic. Write the design doc first, then...
A native Mac app, and a CLI that works on the same vault
TitleMap the app's interface: every screen, how you reach it, and the code behind it→A native Mac app, and a CLI that works on the same vaultDescriptionBradley wants a simple map of Vault's interface, as the place to find any screen and the code behind it while he gets set up in the code again. Nothing in th...→Bradley (2026-09-29) wants two things: - **A native Mac app** alongside the iOS one, to keep items and fill codes on the Mac. - **A CLI** (`vault`) that can ...
Map the app's interface: every screen, how you reach it, and the code behind it
Bradley wants a simple map of Vault's interface, as the place to find any screen and the code behind it while he gets set up in the code again. Nothing in th...
Make Vault available in France with the next release
Vault 2.0 was submitted with France as the only territory it isn't available in (174 of 175). It was probably left out because of Apple's French encryption d...
Encrypt items and backups with CryptoKit, and record the export compliance reasoning
Done in https://github.com/badbundle/vault-app/pull/710 (merged as f1c2bb2a). - **Code:** `AESGCMEncryptor` and `AESGCMDecryptor` use CryptoKit's `AES.GCM`, ...
Encrypt items and backups with CryptoKit, and record the export compliance reasoning
Every build tells Apple `ITSAppUsesNonExemptEncryption = NO`. What Vault encrypts, and with what: - **The App Lock Password's vault file:** CryptoKit (`AES.G...
Keep "Open Source Backup" in the App Store name, and add App Review notes
Done in https://github.com/badbundle/vault-app/pull/709 (merged as 2e4ce0a5). `make validate` passed. `bundle exec fastlane ios upload_metadata` then ran fro...
Keep "Open Source Backup" in the App Store name, and add App Review notes
Follow-up to VAULT-95. Bradley wants the name to stay **"Vault – Open Source Backup"**, because it's the truer description. So the subtitle and keywords move...
Bring the README and the GitHub project description up to date
Done in https://github.com/badbundle/vault-app/pull/708 (merged as 5d28234e), and in the repo settings. - **README:** a new opening and "Who it's for", then ...
Rewrite the App Store description and promotional text for the app as it is now
Done in https://github.com/badbundle/vault-app/pull/707 (merged as b9f98346). - **Description** (2,467 of 4,000 characters): an opening, then 2FA codes, note...
Bring the README and the GitHub project description up to date
The README's intro and feature list predate most of the app. It's missing: - recovery phrases; - locked and encrypted items; - hidden items; - AutoFill, widg...
Rewrite the App Store description and promotional text for the app as it is now
The App Store description is two lines from the first version: > Secure storage for 2FA codes and secret notes. > > Backup to a PDF document which you can pr...
Choose the App Store name, subtitle and keywords from keyword research
The listing's searchable fields were chosen before Vault became an authenticator with duress features, and without evidence: - **Name:** "Vault – Open Source...
Right App Lock Password doesn't reset the wait after wrong ones
Fixed in https://github.com/badbundle/vault-app/pull/705 (merged as c9d56c69), as decided above: any password that opens a vault, a duress one included, now ...
Fixed in https://github.com/badbundle/vault-app/pull/704 (merged as 1b031c7e). The New Item sheet now opens straight on the Code, Note and Recovery Phrase ca...
The first step of the New Item sheet (`CreateItemPickerView`) opens with a step header: a plus icon, the title "Type", and "Choose what kind of item to add t...
Record fresh App Store screenshots of the new design, using the framer's new layouts
Done in badbundle/vault-app#703 (squash-merged as 2eed3835) and uploaded to App Store Connect. **Images:** nine per device class (iPhone 6.9", iPad 13"), mad...
Right App Lock Password doesn't reset the wait after wrong ones
## Bug 1. Enter the App Lock Password wrong until the lock screen makes you wait. 2. Wait, then enter it right. The vault opens. 3. Lock, then enter it wrong...
Make the release lane replace screenshots instead of adding to them
Fixed in https://github.com/badbundle/vault-app/pull/702 (merged as 29632990), validated locally: lint, Fastlane config, build, tests and UI tests all passed...
Record fresh App Store screenshots of the new design, using the framer's new layouts
**Decision (Bradley, 2026-09-28): the listing shows duress features.** The screenshots and their captions can show and name them, for example: - killphrases;...
Record fresh App Store screenshots of the new design, using the framer's new layouts
## Why - **The screenshots are out of date.** The App Store images in `fastlane/screenshots/en-US` were made on 2026-09-19 (#579), over 120 commits ago. Much...
Make the release lane replace screenshots instead of adding to them
`ios release` calls `upload_to_app_store` without `overwrite_screenshots`. So deliver skips any screenshot whose checksum is already in App Store Connect, **...
Security review: check the app upholds its security guarantees
The review is done. Detailed notes are kept outside the repo and the tracker, as the disclosure rule asks. **What was checked.** Every area listed in the tic...
Test that lock, unlock, encryption and restore work end to end
All six sub-issues are done, and `make validate` now runs every new suite, including the UI test plan. - **VAULT-84**, #695: the app lock through the real se...
Test restores end to end, against a corpus of old backups
Done in https://github.com/badbundle/vault-app/pull/699, merged as 03f8f062. - **The corpus** is in `Vault/Tests/VaultFeedTests/Fixtures/Backups/`, with a RE...
Make the import flow look like the other backup screens
All four sub-issues are done: - VAULT-78, #694: the source picker's hero header, with errors in the header. - VAULT-79, #691: Decrypt Backup, with the shield...
Ready to Import and Imported: hero headers and a success moment
Done in https://github.com/badbundle/vault-app/pull/697, merged as 74aa4860. - **The screen:** the ready and imported screens are their own view, `BackupImpo...
Done in https://github.com/badbundle/vault-app/pull/695, merged as 62701be6. - **Not unit-tested:** `OverlayWindow` needs a window scene, which the test runn...
QR import: headline under the camera and animate each code as it's scanned
Done in https://github.com/badbundle/vault-app/pull/692, merged as 612725e4. - **Camera in snapshots:** the camera could be stubbed. In the simulator, the sc...