Nostr Vault's avatar
Nostr Vault
npub1fa05...0z97
Nostr Vault is a private-first Nostr client and personal relay built on Haven for macOS and iOS. It allows you to host your own local relay directly on your device, ensuring your social data remains under your control while providing a seamless, fast, and secure Nostr experience. Download in iOS and Mac TestFlight: https://testflight.apple.com/join/kN3zE1H1 Download on Zapstore https://zapstore.dev/apps/com.nostrvault.app
Nostr Vault's avatar
nostrvault 1 week ago
Nostr Vault — everything new in 2.6.0 🚀 Headline features • NIP-77 negentropy sync — efficient, diff-only cross-device sync (all kinds). Your relay now reconciles with external relays by exchanging only the difference — what you’re missing — instead of re-downloading everything. It covers all your event kinds: your DMs (/inbox + /chat), your own notes (/outbox), and your follows’ recent notes (a new local /feed store synced from your blastr + seed relays). Persistent tombstones mean events you’ve intentionally rejected are never re-fetched, and every local relay now serves NIP-77 so other clients can sync from you the same efficient way. • Local-first feed — the feed opens instantly. The app reads from the on-device /feed cache first (millisecond-fast), then tops up from external relays in the background — no blank-screen wait. • Fully on-device notifications (no push server). Every notification — mentions, replies, DMs, zaps, reactions, reposts — is generated on-device from your own relay’s event stream. Nothing about your notification activity is ever visible to us, Apple, or anyone. Correct per-account attribution on multi-account setups, and a single “N new notifications” summary after catching up instead of one buzz per event. • Picture-in-Picture video. Full-screen video keeps playing in a system PiP window when you swipe home or tap PiP, with a unified control rail (play/pause, scrubber, elapsed/duration, mute, PiP) that auto-hides after 3s. ✨ Added • Mac Relay Sync status widgets in the Dashboard + Settings: last-sync time, with Sync Now / Full Resync / Reset controls. • Catch-up notification summary when returning after being away (batched, one summary). • Pull-to-refresh triggers a real relay sync round (RequestRelaySyncC); feed snapshot persisted every 60s. 🔧 Changed / improved • Vault tab: full vs. incremental refresh. Reuses live sockets with a since-bounded top-up instead of tearing down and reconnecting on every entry — much less churn and faster updates. • Catch-up sync runs on a sane interval (default 15 min, hard minimum), and on-demand rounds are throttled so pull-to-refresh storms can’t dial a fresh connection per relay. • One version number across platforms — iOS now reports 2.6.0 (14) (was 1.1.1), matching macOS and Android. • relay.damus.io dropped from the defaults (it began refusing sync queries and rate-limiting); two dead default Blossom mirrors are stripped from saved config on load. Your own relays/mirrors are untouched. • “Push Notifications” → “Notifications” throughout (no push server involved anymore). • Message composer recipient chip now visibly shows the selected recipient when you tap a search result. 🔒 Security • Zap totals can no longer be faked. A kind-9735 receipt is an ordinary event, and the app used to count every one it saw. Receipts are now validated against the recipient’s LNURL provider (the publishing pubkey must be the one that provider authorizes); validation fails open only when it genuinely can’t be determined, so real zaps always count. 🐛 Fixed • The “Catching up” notification firing on ordinary background resyncs (feed reconnects, thread pull-to-refresh, vault load) instead of only when actually returning after being away. • Posting with media failed on the first try — mirrors are now warmed when the composer opens and the upload retries once; dead default mirrors removed. • Stale Web of Trust cache could get stuck for days and silently reject real replies/reactions as “not in WoT” — the root cause of vanishing engagement. It now refreshes on age at boot. • Missing notifications from Mac Relay Sync — events that reached the phone only via catch-up were imported silently; they now run the same notification path as live events. • Mac Relay Sync could take down the local relay (no minimum gap between rounds) — now throttled; and it now authenticates before /private and /chat catch-up (which previously timed out silently). • Profile notes fetched from the wrong relays — now queries the author’s write relays, so profiles aren’t falsely empty (+ a guard so a stale relay list can’t overwrite a fresher one). • Reposting long-form articles used kind 6 (which most clients ignore) — now kind 16 naming the original kind. • Short replies vanishing in threads of 7+ people (tripping the mention-spam filter) — including your own. • Blocking someone didn’t reach the relay until restart, so it kept importing/notifying about them all session. • Notifications + activity dot firing for old backlog (and for non-notify-worthy events like replying to your own note). • Multi-account corruption: background publishing briefly flipped the active account, which the app read as a real switch and wiped loaded events. • Multi-relay bunker:// signer connections kept only the first relay, leaving reconnects with no fallback. • Silent video failures — a failed video showed a black rectangle with no retry; it now falls back to the thumbnail and “Try Again” works. • Scroll hitch on cached video — integrity-hashing up to 64 MB moved off the main thread. • Audio interrupted during Picture-in-Picture when scrolling the feed past another video. • A video stuck streaming from the network for the rest of the session after one bad cached copy. • A single malformed relay-setting could prevent startup (20 settings qualified, including the port) — bad values now fall back to defaults and log which one was at fault. • Xcode incremental builds could ship a stale Go relay (build phase skipped rebuilds) — fixed so a Go-side change always makes it into the binary.
Nostr Vault's avatar
nostrvault 1 month ago
New builds are live - TestFlight (iOS) and Zapstore (Android). The big one: we ripped out the remote push server entirely. Every notification - mentions, replies, DMS, zaps - is now generated on your own device, from your own relay. No third party, not us, not Apple, not Google, ever sees that you got a message. Also in this one: Picture-in-Picture video on both platforms, and a stack of relay/sync reliability fixes that had been silently dropping some replies and reactions. Self-custody of your keys was never the whole story. Your notifications are part of it now too. TestFlight: join/kN3zE1H1 Zapstore: com.nostrvault.app
Nostr Vault's avatar
nostrvault 2 months ago
So far we got feedback about the concentric edges 😉 Means everything else is working as Intended! Just kidding please submit bugs! image
Nostr Vault's avatar
nostrvault 2 months ago
Hi anon, did you download all your notes today? #asknostr
Nostr Vault's avatar
nostrvault 2 months ago
Nostr Vault v1.1.1 is live on iOS If it for any other reason you gotta check out the new condensed view. MacOS update coming later this week Also new: Multi-account switching cleanup OLED dark theme Global search across public relays (NIP-50) Optional proof of work on notes and DMs (NIP-13) Audio playback on video and backgrounded music Web of Trust media filtering Collapsible tab bar with floating action button Draft auto-save — never lose a post again Adjustable text size Following list backup and recovery App icon picker Instant cold-launch feed restore Your relay. Your data. Your keys.
Nostr Vault's avatar
nostrvault 2 months ago
Super close to releasing the next build of Nostr Vault. Here’s a look what the condensed thread view is looking like image