176 Commits

Author SHA1 Message Date
Jure
6a7a0bccf3 Bump to v0.10.0 — paste nevent/naddr in search, copy npub from profiles v0.10.0 2026-03-30 21:48:30 +02:00
Jure
d5eeb2d819 Update AUR package name to vega-nostr-git (vega-git was taken) 2026-03-30 21:27:50 +02:00
Jure
f7b5394902 Remove accidentally committed artifacts, update .gitignore
squashfs-root (old AppImage), test screenshots, and stray PNGs
should not be in the repo.
2026-03-30 21:14:26 +02:00
Jure
5cbaa7b741 Rename Wrystr to Vega
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
2026-03-30 21:14:02 +02:00
Jure
383634fb56 Fix zap hang from dead outbox relay, add note preview to zap history
Override NDK default outbox relays (purplepag.es DNS failure was stalling
getZapInfo), add 45s zap timeout, disable outbox on NWC instance, fix
follower notification dedup in poller. Zap history rows now show a
clickable preview of the original zapped note.
2026-03-30 20:23:32 +02:00
Jure
1d86023779 Bump to v0.9.11 — notification cleanup, bookmark fixes
Follower notifications moved to Follows-only, deduped by pubkey.
Article bookmarks now appear under Articles tab. Updated docs.
v0.9.11
2026-03-30 08:32:28 +02:00
Jure
a507841292 Hide follower events from notifications list, fix article bookmark tab
Follower notifications (kind 3) now only appear in the Follows
badge, not in the Notifications list where they were confusing
since clicking them shows a contact list, not a note.

Articles bookmarked via e-tag (pre-fix) now correctly appear
under the Articles tab instead of Notes.
2026-03-30 08:27:26 +02:00
Jure
6ed0b50d33 Fix article bookmarks using note-style e tag instead of a tag
ArticleView was using addBookmark(eventId) which saves an e tag,
putting articles in the Notes tab. Now uses addArticleBookmark
with the 30023:pubkey:d-tag address so articles appear correctly
under the Articles tab in bookmarks.
2026-03-30 08:19:18 +02:00
Jure
5e8e548c42 Dedup kind 3 follower notifications by pubkey
Kind 3 events are replaceable — the same follower generates a new
event ID on every contact list update. Dedup by pubkey on load and
merge to prevent the notifications list from filling with repeats.
2026-03-29 23:38:14 +02:00
Jure
fa2eb42bf9 Fix repeated follower OS notifications
Kind 3 events are replaceable — same person produces a new event
ID every time they update their contact list. Dedup followers by
pubkey instead of event ID to prevent re-notifying.
2026-03-29 23:31:37 +02:00
Jure
56584d9b08 Bump to v0.9.10 — instant everything via SQLite caching
Followers, bookmarks, articles feed, and own profile all load
instantly from SQLite cache. Relay data merges in background.
v0.9.10
2026-03-29 20:49:54 +02:00
Jure
5d94220e5d SQLite-backed caching for bookmarks and articles feed
Bookmarks load instantly from DB cache, then fetch missing notes
from relays in background. Articles feed shows cached kind-30023
events immediately on the latest tab. Both persist to SQLite for
instant load on next visit.
2026-03-29 20:46:18 +02:00
Jure
d450f8fdeb SQLite-backed followers cache and instant own-profile load
Followers now load instantly from SQLite on startup, then merge
relay results in background. Own profile name/picture loads from
DB cache so sidebar badge never shows raw npub on slow relays.
2026-03-29 20:28:25 +02:00
Jure
2fed4e3e85 Add retry-on-empty for followers, articles, and hashtag feeds
Same pattern as profile notes and notifications: if the first relay
fetch returns empty, wait 3s and retry once. Prevents false "No X
found" messages when relays are slow to connect.
2026-03-29 20:06:00 +02:00
Jure
e86561379b Bump to v0.9.9 — instant threads, Linux upload fix, trending fix v0.9.9 2026-03-29 18:38:02 +02:00
Jure
dd565ccb16 Increase mention fetch timeout and retry on empty
Tag-based #p queries are slower on some relays. Increase timeout
from 8s to 12s for fetchMentions. Also retry once after 3s if the
initial notification fetch returns empty (helps on cold start when
relays need time to connect).
2026-03-29 18:23:02 +02:00
Jure
2bb1341eed Instant thread display, faster fetches, trending always shows notes
Threads now render the focused note immediately instead of showing a
loading skeleton. Root + ancestors fetch in parallel, timeouts cut
from 10s to 5s per round-trip, ancestor lookups from 5s to 2s.

Trending feed adds a base recency score so notes always appear even
when engagement data times out from relays.
2026-03-29 17:50:10 +02:00
Jure
8e685f2d4b Fix image upload on Linux/Wayland (WebKitGTK)
WebKitGTK can't serialize FormData with Blob objects through Tauri's
HTTP plugin, throwing "InvalidStateError: Unable to read form data
blob". Build the multipart/form-data body manually as raw bytes
instead. Also add void.cat and nostrimg.com to the HTTP scope.
2026-03-29 17:38:03 +02:00
Jure
c5ddd88cbd Bump to v0.9.8 — Web of Trust, instant notifications, profile retry v0.9.8 2026-03-29 16:28:33 +02:00
Jure
ef81ca8ada Retry profile notes fetch on empty result
If the first relay query returns no notes (common on cold start when
relays aren't connected yet), wait 3s and retry once before showing
the empty state.
2026-03-29 16:26:40 +02:00
Jure
4cc844df28 SQLite-backed notifications, WoT profile fix, reaction queue fix
Notifications now load instantly from SQLite on startup instead of
waiting for relay responses. New events merge in as they arrive.
Read state persists in DB across restarts.

Also: filter profile owner from WoT followers list, make "+N more"
clickable to expand, fix reaction throttle queue jamming on errors.
2026-03-29 16:12:36 +02:00
Jure
2c17361e50 Add Web of Trust reputation on profiles via Vertex DVM
Query Vertex Verify Reputation API (kind 5312) for each profile and
display "Followed by people you trust" with clickable top-follower
avatars. Includes in-memory cache, request dedup, and graceful
fallback when logged out or API unreachable.
2026-03-29 10:42:19 +02:00
Jure
8bc38c11e6 Bump to v0.9.7 — emoji reactions, npub search, notification fix v0.9.7 2026-03-27 18:25:57 +01:00
Jure
616c3cad27 Remove unused useReactionCount, seed reactions from batch engagement
- Delete useReactionCount hook (replaced by useReactions)
- Remove fetchReactionCount (no longer referenced)
- Seed per-note reaction cache from fetchBatchEngagement in trending
  feed, so emoji pills render instantly without individual fetches
2026-03-27 18:21:36 +01:00
Jure
b46d383200 Grouped emoji reactions, npub search, notification fix, dev logger
- Emoji reactions now display as grouped pills (❤️5 🤙3 🔥2) instead
  of a single aggregated count. Multi-reaction per note supported.
- Throttled reaction fetch queue (max 4 concurrent) prevents relay overload.
- Searching a bare npub/nprofile navigates directly to that profile.
- Notification poller waits for relay connection before first fetch,
  fixing empty results on startup.
- Dev-only debug logger (src/lib/debug.ts) — silent in production builds.
2026-03-27 18:20:00 +01:00
Jure
fe2740c00e Always include focused note in thread tree
When relay doesn't return the clicked note in the thread fetch
results, the user sees only the root note with 'No replies yet' —
making it look like the wrong thread opened. Now the focused event
and its ancestors are always injected into the thread tree since
we already have them in memory.
2026-03-26 10:40:12 +01:00
Jure
ac061a8d4b Show image attachments as thumbnails instead of raw URLs
Uploaded images are now kept in a separate attachments list with
thumbnail previews and remove buttons. URLs are appended to note
content only at publish time. This keeps the textarea clean for
writing and avoids URLs appearing mid-sentence at the cursor position.
2026-03-26 08:43:18 +01:00
Jure
0189433269 Fix notification badges disappearing on relay timeout
Don't overwrite existing notifications with empty results when relay
times out or disconnects. Also fetch notification counts immediately
on startup instead of waiting for the first poll cycle.
2026-03-25 19:10:40 +01:00
Jure
bb084182d7 Bump to v0.9.6 — content-only zoom, font size fix v0.9.6 2026-03-25 16:35:22 +01:00
Jure
6da5f6a74c Move zoom from document root to main content area only
Sidebar now stays at fixed size regardless of font setting. Only the
content area (feed, settings, thread, articles, etc.) scales with the
font size preference. This prevents the sidebar from bloating and
eating into content space at larger zoom levels.
2026-03-25 16:34:55 +01:00
Jure
0ee9476825 Bump to v0.9.5 — large font overflow fix for Windows v0.9.5 2026-03-25 15:35:12 +01:00
Jure
5b627879ac Fix large font overflow on Windows — flex-wrap all dense rows
Feed header, note card header, note actions, compose box, settings
theme grid, font size presets, media feed tabs, and profile header
buttons all now wrap gracefully when CSS zoom makes content overflow
the viewport. Also add AgentDocs fetch instruction to CLAUDE.md.
2026-03-25 15:34:19 +01:00
Jure
f460a53875 Bump to v0.9.4 — search, follows, editor, polish
Search overhaul with dedicated NIP-50 relays, follows view, article
editor image previews, auto-expanding textareas, profile layout fix,
thread stability fix.
v0.9.4
2026-03-25 12:03:05 +01:00
Jure
ef21667d9f Fix thread disappearing bug, improve article editor UX
Move selectedNote guard after hooks in ThreadView to fix React rules
of hooks violation that caused thread content to blank out. Article
editor gets inline image previews, readable toolbar labels, and
drag-and-drop image support. Thread reply textareas now auto-expand.
2026-03-25 12:01:47 +01:00
Jure
5b94162ce1 Auto-expanding textareas and proper article comment box
Add useAutoResize hook that grows textareas to fit content up to a max.
Applied to compose box, inline replies, thread replies, and article
comments. Article comment input changed from single-line input to a
multi-row textarea with Shift+Enter support.
2026-03-25 11:11:01 +01:00
Jure
0604b5b452 Fix profile banner and avatar layout
Remove avatar-overlaps-banner approach that caused squashed avatars.
Banner and avatar are now cleanly separated with a border between them.
Banner hides entirely on load error instead of leaving empty gray space.
Avatar uses inline dimensions to prevent flex compression.
2026-03-25 10:40:41 +01:00
Jure
ec13c58b26 Overhaul search with dedicated NIP-50 relays and hybrid results
Text search now queries relay.nostr.band and search.nos.today via a
persistent NDK instance, while also running hashtag lookups on user
relays. Results are merged and deduplicated. Hashtag searches now show
all three tabs (notes, articles, people) instead of notes-only. Added
loading spinner and clear-on-search for better UX.
2026-03-25 10:21:25 +01:00
Jure
255faefbdc Add follows view with followers/following tabs and new follower badges
Followers tab fetches kind 3 events referencing the user, following tab
shows the contact list. Each row has avatar, NIP-05 badge, follow/unfollow
button, and "follows you" indicator. New follower notifications from the
background poller increment a sidebar badge that clears on view open.
2026-03-25 10:21:18 +01:00
Jure
4e04ad38c3 Image upload in replies, multi-image articles, UX fixes
Add image support to InlineReplyBox (paste, file picker), paste-to-upload
in article editor, multi-select for article image toolbar. Fix emoji picker
opening off-screen (right-align), enlarge emoji/attach buttons, make note
card names clickable to open profile.
2026-03-24 16:04:30 +01:00
Jure
f4e7c2d7cd Make entire note card clickable to open thread 2026-03-24 15:22:58 +01:00
Jure
9a09e464b5 Fix lightbox Escape navigating away, sidebar profile hidden at large font v0.9.3 2026-03-24 15:14:12 +01:00
Jure
6b77765e1c Mask nsec on backup screen with reveal toggle 2026-03-24 12:45:22 +01:00
Jure
ad028c7406 Bump to v0.9.3 — color themes, font size, settings polish
7 color themes (Midnight, Light, Catppuccin Mocha, Tokyo Night, Gruvbox,
Ethereal, Hackerman), font size presets (Small/Normal/Large/Extra Large),
collapsible muted accounts list, removed old sidebar connection indicator.
2026-03-24 12:16:08 +01:00
Jure
97fd6c55bf Bump to v0.9.2 — relay status, toasts, debug panel, relay UX v0.9.2 2026-03-23 19:18:10 +01:00
Jure
1f50afded7 Add subscription debug panel (Ctrl+Shift+D)
Hidden dev tool showing NDK uptime, live subscription status,
per-relay connection state, per-tab last-updated timestamps,
and recent feed diagnostics log. Polls every 2s while visible.
Closes with Ctrl+Shift+D, Escape, or X button.
2026-03-23 19:12:29 +01:00
Jure
911cbea72d Widen scrollbar from 6px to 12px for easier mouse dragging 2026-03-23 11:42:12 +01:00
Jure
ac4e39fcbf Add relay status badge, toast notifications, per-tab feed timestamps, relay UX improvements
- 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
2026-03-23 11:28:53 +01:00
Jure
c9a92b9b47 Bump to v0.9.1 — live feed, relay reliability, timeout fixes v0.9.1 2026-03-22 11:42:05 +01:00
Jure
b3e7ff7029 Add live feed subscription, timeouts on all relay fetches
Global feed now uses a persistent live subscription (closeOnEose: false)
so new notes stream in real-time instead of requiring manual refresh.
Inspired by Wisp's streaming architecture.

Every fetchEvents call across the entire codebase now uses
fetchWithTimeout with groupable: false — prevents NDK from
batching/reusing stale subscriptions. This fixes Articles, DMs,
Notifications, Zaps, and Trending hanging indefinitely.

Also adds since filters on global (2h) and follow (24h) feeds
to ensure relay freshness, and fixes ArticleFeed re-fetch bug
where follows changes wiped latest tab results.
2026-03-22 11:35:28 +01:00
Jure
2e03c6ce11 Fix relay connectivity: remove aggressive liveness probe, add fetch timeouts
The liveness probe in ensureConnected was causing a death spiral —
it force-disconnected working relays when a 3s probe timed out,
then resetNDK killed new connections before they could establish.

Now ensureConnected trusts relay.connected and only reconnects when
zero relays are connected. All fetchEvents calls have timeouts
(5-10s) so nothing hangs. resetNDK kept as background-only recovery
in the connection monitor after 30s of continuous failure.

Also adds feed diagnostics (feedDiagnostics.ts) for tracking fetch
timing, event freshness, and relay states via console helpers.
2026-03-22 10:42:27 +01:00