mirror of
https://github.com/hoornet/vega.git
synced 2026-06-08 14:11:55 -07:00
6464ba2a79d12b56a3d65986cde3a0a531044cdc
Nostr layer: - fetchDMConversations: fetches all kind-4 events to/from the user (both directions in parallel), deduplicates, newest-first - fetchDMThread: fetches both directions for a specific conversation, sorted oldest-first for display - sendDM: NIP-04 encrypts content via NDK signer, publishes kind 4 - decryptDM: decrypts regardless of direction (ECDH shared secret is symmetric — always pass the other party to signer.decrypt) UI (DMView): - Two-panel layout: conversation list (w-56) + active thread - ConvRow: avatar, name, time; shows "🔒 encrypted" preview to avoid decrypting the whole inbox on load - MessageBubble: decrypts lazily on mount; mine right-aligned, theirs left-aligned; shows "Could not decrypt" on failure - ThreadPanel: loads full thread, auto-scrolls to bottom, re-fetches after send; Ctrl+Enter to send - NewConvInput: start a new conversation by pasting an npub1 or hex pubkey; validates and resolves before opening thread - Read-only (npub) accounts see a clear "nsec required" message Navigation: - ✉ messages added to sidebar nav - openDM(pubkey) in UI store → navigates to dm view with pending pubkey - ProfileView: "✉ message" button in action row opens DM thread Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wrystr
A cross-platform desktop Nostr client built with Tauri 2.0 + React + TypeScript. Polished UI, deep Lightning integration, and first-class support for long-form writing.
Named as a nod to Nostr with a wry twist.
Download
Grab the latest release from the Releases page.
| Platform | File |
|---|---|
| Linux | .AppImage (make executable, then run) |
| Windows | .exe installer |
| macOS (Apple Silicon) | aarch64.dmg |
| macOS (Intel) | x86_64.dmg |
No dependencies required — everything is bundled.
Features
Identity & accounts
- In-app key generation with plain-language nsec backup — no browser extension required
- Login with nsec (full access) or npub (read-only)
- Multi-account switcher — save multiple identities, switch instantly from the sidebar
- OS keychain integration — nsec stored in macOS Keychain / Windows Credential Manager / Linux Secret Service; sessions survive restarts
Feed & content
- Global and following feeds with live relay connection
- Compose notes, inline replies, full thread view
- Reactions (NIP-25) with live network counts
- Follow / unfollow (NIP-02) with contact list publishing
- Quote & Repost (NIP-18) — one-click repost or quote with compose modal
- Mute users (NIP-51) — muted list synced to relays, filtered from feed
- Long-form article editor (NIP-23) with title, tags, cover image, live preview, auto-save drafts
- Note rendering: images, video, mentions, hashtags, njump.me link interception
Lightning & zaps
- NWC guided wizard — wallet picker (Alby Hub, Alby Extension, Mutiny, Phoenix) with per-wallet setup steps and inline URI validation
- Send zaps via NWC (NIP-47 + NIP-57) with amount presets, custom amounts, comment
- Zap history — Received and Sent tabs with amounts, counterparts, comments
- Support / About page — zap the developer, Lightning + Bitcoin QR codes, Ko-fi and GitHub links
Performance & UX
- SQLite note cache — feed loads instantly from local cache on startup; profiles cached for immediate avatar display
- System tray — close button hides to tray; "Quit" in tray menu to fully exit
- Collapsible sidebar (icon-only mode)
- Search: NIP-50 full-text,
#hashtag, people search with inline follow - Relay management: add/remove relays with live connection status
Stack
| Layer | Technology |
|---|---|
| Desktop shell | Tauri 2.0 (Rust) |
| Frontend | React 19 + TypeScript + Vite |
| Nostr protocol | NDK 3.x (Nostr Dev Kit) |
| Styling | Tailwind CSS 4 |
| State | Zustand |
| Local storage | SQLite (rusqlite, bundled) |
| Keychain | keyring crate (OS-native) |
Development
# Prerequisites: Node.js 20+, Rust stable, @tauri-apps/cli
npm install
npm run tauri dev # full app with hot reload
npm run dev # browser only (no Tauri window)
npm run tauri build # production binary
Roadmap
See ROADMAP.md for the full prioritised next steps.
Up next:
- Sidebar improvements (auto-hide, clearer collapse affordance)
- Profile helpers (NIP-05 guide, image upload via NIP-96/Blossom)
- Search improvements (NIP-50 relay detection)
- Direct messages (NIP-44/17)
- Long-form article reader view
License
MIT — hoornet
Languages
TypeScript
91.1%
Rust
6.4%
Shell
1.3%
CSS
0.8%
JavaScript
0.3%