Release v0.14.1 — fix Support view crash, add proxy/Tor support

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).
This commit is contained in:
Jure
2026-07-15 11:16:07 +02:00
parent 7f4eab58c2
commit 7b7116fd58
10 changed files with 45 additions and 6 deletions
+5
View File
@@ -69,6 +69,11 @@ jobs:
> **Windows note:** The installer is not yet code-signed. Windows SmartScreen will show an "Unknown publisher" warning — click "More info → Run anyway" to install.
### v0.14.1 — Support view crash fix + proxy/Tor support
- **Fixed the Support view crash.** Opening Support showed a blank "Vega crashed" screen. This affected every release build since v0.13.2; it now opens correctly.
- **Network proxy (HTTP / SOCKS5), including Tor.** A new Settings section routes Vega's traffic — including update checks — through a proxy. Thanks to [Anderseta](https://github.com/Anderseta) for contributing this (#10). Note: the proxy routes traffic but does not yet guarantee DNS privacy.
### v0.14.0 — Vega moves to its own app identifier
Vega's internal app identifier changes from `com.hoornet.vega` to `com.veganostr.Vega`, so it is anchored to a domain the project controls. This is a prerequisite for publishing Vega on Flathub and winget, and it makes the app's identity consistent across every platform.
+12
View File
@@ -2,6 +2,18 @@
> Note: entries for v0.12.10 through v0.13.1 live in the [GitHub Releases](https://github.com/hoornet/vega/releases) notes; this file resumes at v0.13.2.
## v0.14.1 — Fix Support view crash, add proxy/Tor support (2026-07-15)
### Fixed
- **Support view no longer crashes.** Opening Support (the About/donate view) crashed the app with a blank "Vega crashed" screen (React error #130). `react-qr-code` ships CommonJS, and since the Vite 8 / Rolldown migration (v0.13.2) its default import resolved to the module namespace object instead of the component, making the QR code an invalid element. The import now unwraps to the real component. Reproduced and verified fixed against the production build.
### Added
- **Configurable network proxy (HTTP / SOCKS5), including Tor.** New section in Settings routes Vega's traffic — relay WebSockets, Rust-side fetches, and update checks — through a proxy. Contributed by [Anderseta](https://github.com/Anderseta) ([#10](https://github.com/hoornet/vega/pull/10)).
- **Contributors section** in the README.
### Known limitation
- The proxy routes traffic but DNS may still resolve locally, so relay hostnames can leak. Full DNS privacy (e.g. `socks5h` for Tor) is not guaranteed yet — noted in the proxy settings and tracked in [#11](https://github.com/hoornet/vega/issues/11).
## v0.14.0 — App identifier moves to `com.veganostr.Vega` (2026-07-14)
### Changed
+1 -1
View File
@@ -1,6 +1,6 @@
# Maintainer: hoornet <hoornet@users.noreply.github.com>
pkgname=vega-nostr
pkgver=0.14.0
pkgver=0.14.1
pkgrel=1
pkgdesc="Cross-platform Nostr desktop client with Lightning integration"
arch=('x86_64')
+9
View File
@@ -233,6 +233,15 @@ Vega is free and open-source. If it's useful to you:
| ♥ GitHub Sponsors | [github.com/sponsors/hoornet](https://github.com/sponsors/hoornet) |
| ★ GitHub star | Helps with visibility and grant applications |
## Contributors
Vega is built by one person, but it's better because of the people who've pitched in. Thank you:
- **[Anderseta](https://github.com/Anderseta)** — configurable HTTP/SOCKS5 network proxy, including Tor support, with the update checks routed through the proxy too ([#10](https://github.com/hoornet/vega/pull/10)).
- **[SondreB](https://github.com/SondreB)** — Vega's first external contributor; early new-user-experience feedback that shaped onboarding ([#2](https://github.com/hoornet/vega/issues/2)).
Spotted a bug or have an idea? Issues and pull requests are welcome.
## Acknowledgements
Vega is built on the shoulders of excellent open-source projects:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "vega",
"private": true,
"version": "0.14.0",
"version": "0.14.1",
"type": "module",
"scripts": {
"dev": "vite",
+1 -1
View File
@@ -5429,7 +5429,7 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vega"
version = "0.14.0"
version = "0.14.1"
dependencies = [
"dirs",
"futures-util",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "vega"
version = "0.14.0"
version = "0.14.1"
description = "Cross-platform Nostr desktop client with Lightning integration"
authors = ["hoornet"]
edition = "2021"
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "Vega",
"version": "0.14.0",
"version": "0.14.1",
"identifier": "com.veganostr.Vega",
"build": {
"beforeDevCommand": "npm run dev",
+10 -1
View File
@@ -1,8 +1,17 @@
import { useState } from "react";
import QRCode from "react-qr-code";
import QRCodeImport from "react-qr-code";
import { ZapModal } from "../zap/ZapModal";
import pkg from "../../../package.json";
// react-qr-code ships CommonJS. Under the app's bundler (Vite 8 / Rolldown) the
// default import can resolve to the module namespace object ({ QRCode, default })
// rather than the component itself, which makes <QRCode/> an invalid React element
// and crashes the whole view with "Element type is invalid" (#130). Unwrap to the
// real component, tolerating both a correct default import and the namespace form.
const QRCode =
(QRCodeImport as unknown as { default?: typeof QRCodeImport }).default ??
QRCodeImport;
const DEV_NPUB = "npub1ezt7xcq87ljj65jkjsuagwll4yp75tacgkuyjdhkw6mza8j3azfq2vrvl6";
const DEV_PUBKEY = "c897e36007f7e52d52569439d43bffa903ea2fb845b84936f676b62e9e51e892";
const LIGHTNING_ADDRESS = "jure@getalby.com";
+4
View File
@@ -525,6 +525,10 @@ function ProxySection() {
<p className="text-text-dim text-[10px] mt-1.5 ml-12">
Applies after restart. Example: socks5://127.0.0.1:9050
</p>
<p className="text-text-dim text-[10px] mt-1 ml-12 leading-relaxed">
Note: this routes your traffic, but DNS may still be resolved locally, so
relay hostnames can leak. Full DNS privacy (e.g. for Tor) is not guaranteed yet.
</p>
{(error || validationError) && (
<p className="text-danger text-[10px] mt-1 ml-12">{error ?? validationError}</p>
)}