Commit Graph

126 Commits

Author SHA1 Message Date
Jure
9fbc71ac8c Bump to v0.9.0 — thread conversation overhaul, nested trees, multi-level nav v0.9.0 2026-03-21 16:00:10 +01:00
Jure
af32952fd8 Fix thread reply UX: inline reply boxes below each note, scroll-to-parent
Reply boxes now open directly below the note you're replying to instead of
scrolling to a top-level composer. "Replying to" link scrolls to the parent
note when already visible in the thread instead of re-pushing the same thread.
2026-03-21 15:41:48 +01:00
Jure
acb0d531c0 Add nested thread trees, recursive reply fetching, multi-level back navigation
Overhauls the thread view from flat single-level replies to proper nested
conversation trees. Fixes NIP-10 tagging (root + reply markers), adds
2-round-trip recursive thread fetch, ancestor chain display, reply-to-any-note
targeting, view stack navigation (up to 20 levels), and loading shimmer.
2026-03-21 15:21:46 +01:00
Jure
5a8250e7cf Add podcast subscriptions with My Podcasts tab
- Subscribe/unsubscribe button on podcast cards and episode list header
- "My Podcasts" tab shows subscribed podcasts, opens first if subscriptions exist
- Subscriptions persisted in localStorage
- Tab shows subscription count
- Empty state guides to search/trending
2026-03-21 14:53:20 +01:00
Jure
04498aeb21 Add repost/comment to article view, redesign audio cards in feed
Article view:
- Repost button in header and footer (kind-6 repost)
- Comment button opens inline input, publishes note with naddr reference
- Footer comment scrolls to top to show input

Audio cards:
- Replace inline <audio> elements with styled play cards
- Clean filename display (decode URI, strip extension, humanize separators)
- Single click loads into persistent podcast player
- Eliminates buffering spinners from slow podcast CDNs
2026-03-21 14:46:18 +01:00
Jure
04180cf186 Add podcast playback, Fountain.fm cards, V4V streaming, fix notifications
Podcast feature:
- Podcast discovery via Podcast Index API (trending + search)
- Persistent player bar with play/pause, seek, speed (1x/1.5x/2x), volume
- Audio persists across view navigation, resumes from saved position
- Fountain.fm URL detection in feed with rich playable cards
- "Play in Wrystr" button on inline audio blocks
- V4V streaming sats via NWC (LNURL-pay, 5min accumulation, split payments)
- Share what you're listening to (publish note with confirm)
- Space key toggles play/pause globally

Notification fixes:
- Per-notification read tracking (click to mark read) instead of mark-all-on-open
- Read notifications persist at 50% opacity, unread get accent border
- Always fetches last 7 days, keeps 15 most recent
- Filter out own replies from notifications
- Sidebar badge shows only unread count
2026-03-21 12:53:05 +01:00
Jure
1dafb3b456 Bump to v0.8.4 — codebase refactor, docs update, bug fixes
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
v0.8.4
2026-03-20 17:58:01 +01:00
Jure
80838fb204 Refactor: split overgrown files into focused modules
Split client.ts (1036 lines) into 11 domain modules under lib/nostr/ —
core, notes, social, articles, engagement, dms, bookmarks, muting,
search, relays, trending. Barrel index.ts re-exports all; zero consumer
import changes.

Extract ProfileView sub-components (ImageField, Nip05Field,
EditProfileForm, ProfileMediaGallery), NoteContent renderers
(TextSegments, MediaCards), and NoteCard actions (NoteActions,
InlineReplyBox). All component files now ≤270 lines, all lib files ≤300.
2026-03-20 16:32:50 +01:00
Jure
1c3e58cdb0 Update CLAUDE.md with emoji picker, external link opener, EmojiPicker component 2026-03-20 15:34:56 +01:00
Jure
c65ddb1c26 Fix test bugs: mute filtering, notification toggles, external links, emoji picker
- Fix mute button having no effect in Media Feed (missing filter)
- Fix notification toggle switches overlapping labels (sizing + shrink-0)
- Fix external links not opening in system browser (use Tauri opener plugin)
- Fix trending refresh showing no visual feedback (clear list on force refresh)
- Fix emoji reactions inaccessible behind WebKitGTK context menu (visible + button)
- Add emoji picker to compose box, inline reply, and thread reply
- New shared EmojiPicker component with categorized emoji groups
2026-03-20 15:32:57 +01:00
Jure
0bcbba6e8f Bump to v0.8.3 — trending feed, NIP-46 remote signer, media feed, profile media gallery v0.8.3 2026-03-20 12:45:58 +01:00
Jure
57630227e1 Add NIP-05 badges, hashtag pages, keyword muting, suggestion dismissal, notification poller
- Article cover: aspect-video replaces max-h-72 for consistent 16:9
- NIP-05 verification badge on note cards with 1-hour TTL cache
- Dedicated hashtag feed pages (clicking #tag opens live feed, not search)
- Keyword muting: word-boundary matching, applied across all feed views
- Follow suggestion dismissal: persistent "don't suggest again" per person
- Background notification poller (60s): mentions, zaps, new followers
- All notification types independently toggleable in settings
- Centralized notification firing (removed inline store notifications)
2026-03-20 12:09:11 +01:00
Jure
989ed01dfc Add syntax highlighting in code blocks and OS push notifications
Syntax highlighting: shared markdown renderer with highlight.js
(atom-one-dark theme), 12 language grammars registered (JS, TS,
Python, Rust, Go, Bash, JSON, YAML, SQL, CSS, HTML, Markdown).
Applied to both article reader and editor preview.

OS notifications: Tauri notification plugin for mentions, DMs, and
zaps. Per-type toggles in Settings with custom toggle switches.
Fires on new unread mentions/DMs; requests OS permission on first
enable. Notification utility at src/lib/notifications.ts.
2026-03-20 11:11:53 +01:00
Jure
93ca13cc51 Add zen writing mode and auto-save indicator with relay confirmation
Zen mode: fullscreen distraction-free writing via F11 or "zen" button;
hides all chrome, centers content in serif font at 17px, shows only
title + content + word count. Esc/F11 to exit, exits on unmount.

Auto-save indicator: shows "saved Xs ago" in editor header, updates
every 10s. After publishing, shows "published to N relays" confirmation
in green, or warning if zero relays confirmed.
2026-03-20 11:05:05 +01:00
Jure
afb8fed97b Bump to v0.8.2 — writing & reading polish, article TOC
- Remove 280-char note limit, soft warning at 4000
- Serif reading font (Georgia) at 17px for articles
- Reading progress bar on articles
- Article table of contents (floating right, scroll-aware)
- Connection indicator fix (data-aware, 25s grace)
v0.8.2
2026-03-20 11:00:46 +01:00
Jure
d62cf73510 Writing & reading polish: remove 280-char limit, serif reader font, progress bar
- ComposeBox: remove hard 280-char post limit (Nostr has none); show counter
  only after 3000 chars with yellow/red warnings at 3500/4000
- Article reader: switch from monospace to serif font (Georgia stack) at 17px
  for comfortable long-form reading; article preview gets serif at 15px
- ArticleView: add 2px accent-colored reading progress bar (sticky top,
  scroll-driven, smooth transition)
- Connection indicator: data-aware checking (wraps fetchEvents), 30s recent-
  fetch grace period, 25s offline grace (5 checks) before marking disconnected
2026-03-20 10:50:33 +01:00
Jure
7ed478eb0e Bump to v0.8.1 — banner height fix, search timeout
Fix profile banner cropping square images (h-36 → h-44 with top-biased
focal point). Fix search hanging forever when no relay supports NIP-50
(8s timeout on fetchEvents in advancedSearch).
v0.8.1
2026-03-20 08:46:17 +01:00
Jure
7411cbf981 Fix release notes: recommend AUR for Arch/Manjaro install v0.8.0 2026-03-19 19:56:49 +01:00
Jure
d993ae1131 Bump to v0.8.0 — polish, portability, discovery
Profile banner polish (hero height, click-to-lightbox, avatar overlap),
data export (bookmarks/follows/relays as JSON), relay recommendations
(discover from follows' NIP-65 lists), reading list tracking (read/unread
on bookmarked articles with sidebar badge), trending hashtags (clickable
pills on search idle screen). Updated CLAUDE.md and release notes.
2026-03-19 19:54:14 +01:00
Jure
d257075023 Bump to v0.7.1 — relay health checker, advanced search v0.7.1 2026-03-19 19:23:39 +01:00
Jure
092553ab9b Bump to v0.7.0 — writer tools, NIP-98 uploads, multi-draft, article bookmarks
- NIP-98 HTTP Auth for image uploads with fallback services (void.cat, nostrimg.com)
- Markdown toolbar (bold, italic, heading, link, image, quote, code, list) + Ctrl+B/I/K
- Multi-draft management with draft list, resume, delete, auto-migrate
- Cover image file picker in article meta panel
- Article bookmarks via NIP-51 'a' tags; Notes/Articles tabs in BookmarkView
- Removed Rust upload_file command; dropped reqwest/mime_guess deps
- Upload spinner, draft count badge, empty states
v0.7.0
2026-03-18 18:36:08 +01:00
Jure
c66885440a Fix CI: top-level permissions, bump checkout@v6 + setup-node@v5 2026-03-18 15:02:48 +01:00
Jure
fbf05e8f90 Bump to v0.6.1 — native file upload, mention names, connection stability
- Native file picker (+) in compose box uploads via Rust backend (reqwest)
- Pasting a local file path auto-uploads instead of inserting text
- @mentions resolve to profile display names via useProfile hook
- Connection indicator uses 15s grace period before showing offline
- Upload uses correct nostr.build v2 API; Rust-side multipart for native picks
- Content parser extracted to src/lib/parsing.ts
v0.6.1
2026-03-18 14:55:29 +01:00
Jure
ef189932e6 Bump to v0.6.0 — article discovery, search, profile tab, reader polish
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.
v0.6.0
2026-03-17 21:47:24 +01:00
Jure
8ce1d43d2d Bump to v0.5.0 — note sharing, reply counts v0.5.0 2026-03-15 21:49:52 +01:00
Jure
5b4f6381da Add NIP-17 gift-wrapped DMs, follow-from-menu, fix new conversation crash
DMs now send via NIP-17 (kind 1059 gift-wrap) with self-copy for sent
messages. Receive supports both NIP-17 and legacy NIP-04 for backward
compat. Protocol indicator shown in conversation list and compose footer.

Note card context menu (⋯) now includes follow/unfollow option so users
can follow authors directly from the feed without visiting their profile.

Fix crash (black screen) when starting a new DM conversation — empty
event array caused undefined access on lastEvent.
2026-03-15 21:30:54 +01:00
Jure
ad79ab99de Add GStreamer codec docs, fix connection indicator reactivity
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.
2026-03-15 20:30:50 +01:00
Jure
17011252d6 Preserve feed scroll position across navigation
Keep Feed component mounted (hidden via CSS) instead of unmounting
when navigating to threads/profiles/etc. Back button now returns to
the exact scroll position in the feed.
2026-03-15 19:44:10 +01:00
Jure
35fac6bab9 Bump to v0.4.1 — media players, YouTube/Spotify cards, feed fix
Add inline video/audio players for direct media URLs, rich link cards
for YouTube (with thumbnails), Vimeo, Spotify, and Tidal. Fix video
clicks navigating to thread by splitting NoteContent into inline/media
modes. Fix published notes not appearing on Following tab.
v0.4.1
2026-03-15 12:32:00 +01:00
Jure
e965cf9427 Add TODO.md to gitignore for private planning 2026-03-14 18:49:01 +01:00
Jure
c8d2b05440 Bump to v0.4.0 — Phase 3: image lightbox, bookmarks, discover, language filter, UI polish v0.4.0 2026-03-14 18:00:28 +01:00
Jure
af8a364e28 Bump to v0.3.1 — Phase 2 complete, AUR package, feed tab fix v0.3.1 2026-03-14 16:31:18 +01:00
Jure
ef35f20688 Persist feed tab across navigation — back button returns to correct tab
Feed tab (Global/Following) moved from local state to UI store so it
survives thread/profile navigation. Fixed hardcoded "feed" in openThread
calls to pass currentView instead.
2026-03-14 16:23:51 +01:00
Jure
3ca73a8b01 Bump to v0.3.0 — instant post/reply feedback
Published notes now appear in the feed immediately. Thread replies
show up without waiting for the relay round-trip. Includes all
v0.2.9 fixes (image paste, sent zaps, reply-to clickable, feed
refresh on login).
v0.3.0
2026-03-13 19:40:14 +01:00
Jure
7c10423b4a Show published note in feed immediately after posting 2026-03-13 18:08:40 +01:00
Jure
176cbe8ae3 Bump to v0.2.9 — image upload fix, sent zaps, clickable reply-to, feed refresh v0.2.9 2026-03-13 15:46:43 +01:00
Jure
17304a2432 Fix image upload: use Tauri HTTP plugin to bypass WebView fetch restrictions 2026-03-13 15:44:44 +01:00
Jure
1d4ab27d08 Make reply-to @name clickable to open profile separately from thread 2026-03-13 12:38:49 +01:00
Jure
93963de28d Fix sent zaps: query kind 9735 receipts with #P tag instead of ephemeral kind 9734 2026-03-13 11:17:45 +01:00
Jure
7746e31051 Navigate to feed and refresh after login with new account 2026-03-13 10:59:29 +01:00
Jure
aef7cdf658 Use GitHub noreply email in PKGBUILD maintainer field 2026-03-13 10:26:55 +01:00
Jure
bbf6291567 Bump to v0.2.8 — enable keyring platform backends (keychain was a no-op) v0.2.8 2026-03-13 10:22:34 +01:00
Jure
8e0d92c893 Bump to v0.2.7 — multi-account persistence fix v0.2.7 2026-03-13 09:04:36 +01:00
Jure
56cf0bae4d Fix multi-account restore and switch after restart
- restoreSession pre-loads all nsec accounts from keychain into signer
  cache at startup, not just the active one
- switchAccount updates state to target account on failure instead of
  leaving UI stuck on previous account
- AccountSwitcher shows re-login prompt when account has no signer
- store_nsec now logs warnings instead of silently swallowing errors
2026-03-12 16:14:23 +01:00
Jure
f33d78ebcf Update PKGBUILD to 0.2.6 and add it to release checklist 2026-03-12 15:43:53 +01:00
Jure
6ee02eb586 Bump to v0.2.6 — add createUpdaterArtifacts for updater signing
Tauri 2 requires bundle.createUpdaterArtifacts: true to produce .sig
files and updater zip/tar.gz archives. Without it, TAURI_SIGNING_PRIVATE_KEY
is ignored and latest.json is never generated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.2.6
2026-03-12 15:30:45 +01:00
Jure
cc05a80433 Bump to v0.2.5 — fix updater signing key (regenerate without password)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.2.5
2026-03-12 13:27:38 +01:00
Jure
4e06aa2d00 Bump to v0.2.4 — retrigger with signing key set
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.2.4
2026-03-12 12:44:35 +01:00
Jure
0b02f34338 Document release procedure in CLAUDE.md — version bump before tagging, includeUpdaterJson
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 12:26:03 +01:00
Jure
7ca0e804f1 Bump to v0.2.3 — add includeUpdaterJson: true to fix latest.json generation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.2.3
2026-03-12 12:21:44 +01:00