Fixes a crash that blanked the Support (About/donate) view with React
error #130 on every release build since v0.13.2. react-qr-code ships
CommonJS, and since the Vite 8 / Rolldown migration its default import
resolved to the module namespace object ({ QRCode, default }) instead of
the component, making <QRCode/> an invalid element. AboutView now unwraps
the import to the real component. Reproduced against the production bundle
and verified fixed the same way.
Also ships the configurable HTTP/SOCKS5 network proxy (incl. Tor) from
PR #10 by Anderseta, merged earlier: routes relay WebSockets, Rust-side
fetches and update checks through the proxy. The proxy settings and the
README/CHANGELOG note that DNS is not yet guaranteed private (issue #11).
Adds a Contributors section to the README (Anderseta, SondreB).
The app identifier changes from `com.hoornet.vega` to `com.veganostr.Vega`.
A reverse-DNS app ID must sit on a domain the project controls; the old one
did not, which blocks publishing on Flathub and leaves Vega's identity
inconsistent across Flathub, winget and the native installers.
The identifier keys every per-app directory, so this migrates existing
installs on first launch: the SQLite cache (vega.db), the embedded relay's
database (relay.db), and webview localStorage (themes, drafts, podcast
subscriptions, article read-state).
Migration runs at the top of run(), before tauri::Builder — not inside
.setup(). Tauri builds the config-defined windows before invoking the setup
hook, and building a webview create_dir_all's <LocalData>/<identifier>, which
on Linux is the same directory that holds vega.db. Migrating from setup()
would therefore always find a non-empty destination, skip, and silently
strand every Linux user's data with no way for a later fix to recover it.
Entries are moved individually rather than renaming the whole tree, so a
destination the webview already created does not block the migration, and a
failed attempt retries on the next launch. An entry that already exists at
the destination is never overwritten — the live copy always wins.
All three per-platform roots are covered: WebView2 keeps localStorage under
%LOCALAPPDATA% on Windows (not %APPDATA%), and WKWebView keeps it under
~/Library/WebKit on macOS, neither of which is the app data dir.
Keys are unaffected — the keychain service name is independent of the
identifier, so users stay logged in.
Windows installs v0.14.0 alongside v0.13.2 rather than replacing it, since
the changed identifier reads as a new application. Documented in the README,
CHANGELOG and release notes.
- CHANGELOG: add v0.13.2 entry (note re: v0.12.10–v0.13.1 in GitHub Releases)
- README: mute-aware search, resizable sidebar, collapsing compose box, update-banner changelog; bump verify example to 0.13.2
- CLAUDE.md: add the four v0.13.2 features to the Implemented list
- Themes: 7 -> 8, add the new Reader theme.
- Add Easy-Read Font (Atkinson Hyperlegible) to Personalization.
- Add 'view your secret key in Settings' to Identity.
- Drop the false 'Live streaming feed — no manual refresh needed' claim:
the live subscription has been disabled since v0.12.8. Replaced with an
accurate virtualized-feed / infinite-scroll description. (Auto-refresh
returns in v0.13.1 — README feed line to be revisited then.)
- Bump the minisign verify example to 0.13.0.
- Website was never linked from the README. Add a header link line
(Website / Download / AUR) directly under the tagline and a second
pointer in the Download section.
- Verify example used vega_0.12.1_amd64.AppImage.tar.gz — AppImage was
dropped in v0.1.6. Swap in a current .deb example.
- Sig note was stale: .deb and .rpm actually ship with minisign
signatures now (tauri-action unified installer and updater artifacts).
Only .dmg is unsigned.
- Web of Trust wasn't mentioned in the features list despite shipping
in v0.11.0 and being extended to reactions/zaps/all tabs in v0.12.9.
Added under Feed & content next to keyword muting.
- Drop "custom Go relay" from Up Next — Vega Relay is live and is
Vega's default relay. Swap in real remaining work (NIP-96, WoT-
powered feed ranking).
- Add NIP-32 row — partial support via the language filter's script
tags.
NIP-1068 polls: create and vote on polls inline in the feed.
Switch default relay to custom Go relay (relay2.veganostr.com).
Note action icons with tooltips, sidebar icon cleanup,
search dedup fix, thread indentation fix.
- Add audio.load() reset to prevent cascading failures between episodes
- Add onPlaying event handler for reliable post-buffer playback in WebKitGTK
- Add 15s loading timeout with user-friendly error for broken audio URLs
- Fix V4V LNURL-pay: use Tauri HTTP plugin instead of CORS-blocked browser fetch
- Fix Podcast Index API: use Tauri HTTP plugin for V4V enrichment
- Fall back to Podcast Index enclosure URL when Fountain.fm CDN is broken
- Update Lightning address to jure@getalby.com (Alby cloud migration)
- Add broad HTTPS scope for LNURL-pay across Lightning providers
Named after Jurij Vega (1754-1802), Slovenian mathematician who made
knowledge accessible through his logarithm tables. Rebrand before
OpenSats application (April 1).
- Product name, window title, identifiers, binary name all renamed
- Cargo package: wrystr -> vega, wrystr_lib -> vega_lib
- PKGBUILD: wrystr -> vega (new AUR package name)
- Release workflow: artifact names, release text updated
- README: new tagline referencing Jurij Vega
- DB migration: auto-renames wrystr.db -> vega.db on first launch
- Keyring service name kept as "wrystr" for backward compatibility
- localStorage keys kept as wrystr_* to preserve existing user data
Pending manual steps:
- Rename GitHub repo hoornet/wrystr -> hoornet/vega
- Create new AUR package vega-git, orphan wrystr-git
- Update local .desktop launcher
- Relay status badge in feed header: shows connected/total relay count with
color coding (green >75%, yellow 25-75%, red <25%), hover tooltip with
per-relay status
- Toast notification system: transient messages for connection lost,
reconnecting, relay reset, and back-online events
- Per-tab "last updated" relative timestamp in feed header (global,
following, trending tracked independently)
- Consolidated all relay management into RelaysView (removed duplicate
relay section from Settings); per-relay remove button on health cards
- Show all supported NIP badges on relay cards (was filtering to 11 notable)
- Tooltips on relay status dots explaining green/yellow/red/gray meaning
- Fix relay removal with trailing-slash URL normalization
- Fix stale health results lingering after relay removal
- Add acknowledgements section to README
Last stabilization release before the podcast playback sprint.
- Add Supported NIPs table to README (20 NIPs documented)
- Update README features with everything since v0.8.0: NIP-46,
media feed, trending, emoji picker, keyword muting, hashtag
pages, profile media gallery, relay recommendations, data export,
reading list tracking, syntax highlighting, OS notifications
- Update ROADMAP: NIP-46 marked shipped, v0.8.x entries added,
podcast playback listed as next milestone
- Update CLAUDE.md architecture to reflect refactored file structure
- Update release notes in CI workflow
- Version bump in all 4 files
Article discovery feed with Latest/Following tabs, article search
(NIP-50 + hashtag for kind 30023), Notes/Articles tab on profiles,
reading time + bookmark + like buttons on article reader. Event
passed directly from card to reader to avoid relay re-fetch failures.
Add GStreamer codec dependencies to PKGBUILD and install instructions
to README for Linux video/audio playback. Add periodic relay pool
status check so connection indicator stays accurate after reconnects.
Apple Silicon (macos-latest) is sufficient for current Mac user base.
Intel can be revisited if demand arises.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix: repost + quote buttons added to RootNote in ThreadView (Issue A)
- Fix: switchAccount no longer silently goes read-only when nsec keychain
entry is missing — nsec accounts stay logged out so the login button
handles recovery; loginType field added to SavedAccount (Issue B)
- Fix: macos-12 runner replaced with macos-13 in release.yml — macos-12
was deprecated by GitHub, causing macOS jobs to never run, which
prevented latest.json from being assembled and broke the auto-updater
for every user since v0.1.5
- Bump Cargo.toml version (was stuck at 0.1.10)
- Release notes updated with v0.2.1 + v0.2.0 Phase 2 changelog
- README: Windows unsigned installer note added
- ROADMAP: NIP-05 monetization added to brainstorm backlog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Show full "MIT License — Copyright (c) 2026 Jure Sršen" in both
places to match the LICENSE file exactly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Four features shipped in this release:
- Feed reply context: replies show "↩ replying to @name" above the
note content; clicking fetches and opens the parent thread
- NIP-65 outbox model: fetchUserRelayList + publishRelayList +
fetchUserNotesNIP65 in client.ts; profile notes fetched via the
author's write relays; "Publish relay list to Nostr" button in
Settings (kind 10002)
- Notifications: new store (notifications.ts) + NotificationsView;
🔔 sidebar nav item with unread badge; DM nav item also shows
unread conversation count; badges clear on open/select
- Keyboard shortcuts: useKeyboardShortcuts hook + HelpModal;
n=compose, /=search, j/k=feed nav with ring highlight,
Esc=back, ?=help overlay
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
README: add v0.1.7 features (per-account NWC, image paste, new account
tab, conditional zap, etc.), update "Up next" to Phase 2, add GitHub
Sponsors to Support table.
ROADMAP: mark Phase 1 complete, move all shipped items to changelog
(v0.1.3–v0.1.7), Phase 2 is now the active target.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AppImage library bundling causes cascading compatibility failures on
rolling-release distros (Arch, mesa 26+): libwayland-egl conflicts
break EGL, removing it cascades into GLib version mismatches, and so
on. Native packages sidestep this entirely.
- tauri.conf.json: targets now ["deb","rpm","nsis","msi","dmg","updater"]
— no AppImage
- release.yml: drop LINUXDEPLOY_EXCLUDELIST workaround (no longer needed);
update install instructions in release body
- PKGBUILD: added for Arch/Manjaro users; builds from source via git tag;
desktop entry sets WEBKIT_DISABLE_DMABUF_RENDERER=1 (required on Wayland)
- README: install table updated with distro-specific commands
Arch users: build from source with PKGBUILD or `npm run tauri build`.
Ubuntu/Debian/Fedora/openSUSE: install the .deb or .rpm from Releases.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fixes broken "Zap the developer" link in GitHub release notes.
Includes Lightning, Bitcoin, Ko-fi, and in-app zap instructions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CLAUDE.md: updated architecture map, current state (implemented/not yet), conventions
- README.md: full feature list updated, roadmap trimmed to what's actually next
- ROADMAP.md: mark completed items done, collapse into 'Up next' section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>