feat(desktop): add password-protected backups in settings - #3701
Merged
Conversation
tellaho
marked this pull request as ready for review
July 30, 2026 14:59
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Preload NIP-49 encryption silently while preserving the editable password until submission. - Replace queued-download status text with randomized progress and automatically open the native save dialog when encryption completes. - Move the temporary backup workflow into a compact confirmation dialog with aligned guidance and actions. - Preserve encrypted backups after canceled saves so the download dialog can be reopened without repeating encryption. - Expand reducer and browser coverage for preload, retry, progress, modal lifecycle, and repeated downloads. Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
- Add an app-level encrypted backup provider to preserve encryption and native save work after the modal or settings screen closes. - Replace the standalone backup settings rows with private-key menu actions and a focused backup confirmation dialog. - Preload NIP-49 encryption silently, show simulated progress after submission, and open the native save dialog automatically. - Keep completed backups available for five minutes with a descending Download backup button and actionable Sonner status updates. - Extend the masked private-key display with reusable overflow-menu actions for creating and testing backups. - Update Playwright coverage for modal lifecycle, background completion, temporary downloads, expiry, and backup verification. Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
tellaho
force-pushed
the
tho/nip49-settings-backup
branch
from
July 30, 2026 16:40
23caa9f to
329f20e
Compare
Contributor
Author
|
Resolved the blocking NIP-49 verification finding and rebased onto current
Independent review confirmed the resource ceiling is on the only untrusted decrypt path and upstream-compatible backups at or below the ceiling still work. Full frontend/Rust suites and focused Settings/security tests passed locally; all PR checks are now green. Two previously noted items remain non-blocking follow-ups: the stale |
tlongwell-block
approved these changes
Jul 30, 2026
wpfleger96
added a commit
that referenced
this pull request
Jul 30, 2026
…chive * origin/main: Fix video reviews in thread replies (#3719) feat(release): make desktop releases immutable (#3568) Make relay reconnect backoff authoritative (#3774) feat(desktop): add password-protected backups in settings (#3701) Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz> Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
wpfleger96
added a commit
that referenced
this pull request
Jul 30, 2026
* origin/main: (59 commits) Fix video reviews in thread replies (#3719) feat(release): make desktop releases immutable (#3568) Make relay reconnect backoff authoritative (#3774) feat(desktop): add password-protected backups in settings (#3701) fix(desktop): reuse profiles when joining communities (#2155) Render mobile agent mention chips (#3702) fix(catalog): update Amp description (#3758) fix(acp): preserve truncated thread context (#3340) feat(catalog): resolve publisher display name in catalog detail pane (#3640) feat(mesh): upgrade embedded mesh to v0.74 and harden shared compute (split 1/2 of #3467) (#3741) docs(nips): specify kind:30621 multi-repo projects (NIP-MP) (#3163) Refine agent sharing dialog (#3699) desktop: enable getUserMedia in the Linux WebKitGTK webview (#3607) fix: align responsive agent views (#3688) Add macOS agent menu-bar menu (#3565) Fix pending message feedback (#3543) fix(desktop): remove remaining Projects panel fills (#3742) feat(mobile): desktop-parity emoji and thread experience (#3485) desktop: restore direct community member adds (#3634) fix(desktop): explain open agent access (#2561) ... # Conflicts: # desktop/scripts/check-file-sizes.mjs
joahg
added a commit
to joahg/buzz-dev-mode
that referenced
this pull request
Jul 30, 2026
…-style * origin/main: feat(desktop): improve agent activity header ui (block#3321) perf(presence): reduce heartbeat frequency (block#3783) Tighten continuation message rows (block#3724) Fix video reviews in thread replies (block#3719) feat(release): make desktop releases immutable (block#3568) Make relay reconnect backoff authoritative (block#3774) feat(desktop): add password-protected backups in settings (block#3701) fix(desktop): reuse profiles when joining communities (block#2155) Signed-off-by: Joah Gerstenberg <joah@squareup.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Category: new-feature
User Impact: Users can create, download, and verify a password-protected backup of their private identity from desktop Settings.
Problem: Buzz does not currently give signed-in users a Settings-based path to protect or validate their private identity independently of onboarding. Solution: Add a focused backup menu to the private-key row, keep encryption and verification local in Rust, and preserve completed encrypted backups briefly so native saves can be retried without repeating encryption.
File changes
desktop/src/features/settings/
Adds the background backup lifecycle, create and test dialogs, private-key menu integration, password handling, and focused unit coverage.
desktop/src/features/onboarding/ui/NsecMaskedDisplay.tsx
Extends the masked private-key display with reusable overflow-menu actions used by Settings.
desktop/src/app/App.tsx
Mounts the backup provider at app scope so encryption and save work survive closing Settings or the modal.
desktop/src/shared/api/tauriIdentity.ts
Adds typed desktop bindings for local backup creation, save, selection, and verification.
desktop/src-tauri/src/key_backup.rs and desktop/src-tauri/src/commands/identity.rs
Implements local NIP-49 encryption, password generation, file handling, and public-identity-only verification results.
desktop/src-tauri/src/egress_guard.rs and guarded call sites
Blocks encrypted secret material from relay, websocket, snapshot, sharing, and huddle egress paths.
desktop/src-tauri tests and fixtures
Covers encryption, verification, file behavior, and fail-closed no-egress protections.
desktop/src/testing/e2eBridge.ts, desktop/tests/, and desktop/playwright.config.ts
Expands the mock native bridge and browser coverage across create, retry, expiry, and current/different-identity verification states.
desktop/src-tauri/Cargo.toml, Cargo.lock, and assets
Adds the local cryptography/password-generation dependencies and embedded short-word list.
Reproduction steps
.ncryptsecfile; cancel and retry to confirm the temporary download remains available.npub.Screenshots
Visual review and additional states: Buzz thread