Commit Graph

29 Commits

Author SHA1 Message Date
Jure
af8a364e28 Bump to v0.3.1 — Phase 2 complete, AUR package, feed tab fix 2026-03-14 16:31:18 +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).
2026-03-13 19:40:14 +01:00
Jure
176cbe8ae3 Bump to v0.2.9 — image upload fix, sent zaps, clickable reply-to, feed refresh 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
bbf6291567 Bump to v0.2.8 — enable keyring platform backends (keychain was a no-op) 2026-03-13 10:22:34 +01:00
Jure
8e0d92c893 Bump to v0.2.7 — multi-account persistence fix 2026-03-13 09:04:36 +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>
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>
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>
2026-03-12 12:44:35 +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>
2026-03-12 12:21:44 +01:00
Jure
9d54bfb22f Bump to v0.2.2 — version files forgotten before tagging
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:54:59 +01:00
Jure
2c874de790 Bump to v0.2.1 — Batch 3 playtest fixes + auto-updater fix
- 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>
2026-03-12 11:17:33 +01:00
Jure
3a196cb9a0 Bump to v0.2.0 — Phase 2: Engagement & Reach
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>
2026-03-11 20:39:30 +01:00
Jure
181233796b Bump to v0.1.10 — Bitcoin QR to right edge on Support page
Use justify-between on the QR section so Lightning address sits flush
left and Bitcoin address sits flush right, making them visually
impossible to confuse when scanning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:02:30 +01:00
Jure
fdb7aab9d1 Bump version to v0.1.9 — fix account switch read-only bug (root cause)
Root cause: switchAccount fetched the nsec from the OS keychain on every
switch. Any keychain failure (timeout, Windows Credential Manager quirk,
no entry yet) silently fell through to loginWithPubkey → read-only mode.

Fix: cache each NDKPrivateKeySigner in-memory (_signerCache map) the
moment loginWithNsec succeeds. switchAccount checks the cache first;
the OS keychain is now only consulted at startup (restoreSession). Signers
are pure crypto objects with no session state — safe to reuse indefinitely.

Verified with a 9-switch stress test across 3 accounts (A1→A2→A3→A1→
A2→A1→A3→A2→A1): hasSigner=true and correct pubkey on every switch.

Also adds dev tooling:
- src/lib/tauri-dev-mock.ts: localStorage-backed keychain + SQLite stubs
  so the frontend can run in a plain browser for Playwright testing
- src/main.tsx: import mock first in DEV mode (no-op in production)
- test/gen-accounts.mjs: generates 3 deterministic test keypairs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 15:11:03 +01:00
Jure
cdf1a0b4a2 Bump version to v0.1.8 — Windows playtest fixes
- Fix switchAccount: check signer was set after loginWithNsec before
  returning; fall back to loginWithPubkey on silent failure; always
  navigate to feed after switch to clear stale UI
- Fix profile edit button: hidden in read-only (npub) mode; read-only
  badge shown in profile header to make state visible
- Sidebar: show version number (v0.1.8) below WRYSTR brand, auto-tracked
  from package.json — no more hardcoding
- Support page: increase QR code gap (gap-8 → gap-16) to prevent
  accidentally scanning the wrong address
- ROADMAP: add language/alphabet feed filter to Phase 3 backlog

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 13:39:30 +01:00
Jure
e8ad01117b Bump version to 0.1.7 — Windows playtest fixes
Critical:
- NWC wallet now stored per-account (wrystr_nwc_<pubkey>); switching
  accounts loads the correct wallet automatically
- Clear NDK signer before account switch to prevent race where old
  account could sign outgoing events
- LoginModal: add "New account" tab to create a fresh keypair inline
  (same flow as onboarding, with nsec copy + confirmation checkbox)
- ThreadView: add like + zap action row to the root note (was missing)

UX:
- Zap button now conditional on lud16/lud06 (NoteCard, ProfileView,
  RootNote) — no zap button shown for profiles without Lightning
- Remove "200 notes" counter from sidebar footer
- AccountSwitcher: larger active account avatar (w-8), name more
  prominent; sign-out/remove moved into dropdown only

Quick wins:
- AboutView: add GitHub Sponsors link
- ComposeBox: paste image from clipboard → uploads via nostr.build,
  inserts URL at cursor with "uploading image…" status

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 12:19:48 +01:00
Jure
7d68b1fa6f Bump version to 0.1.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 22:44:03 +01:00
Jure
98f5d70024 Bump version to 0.1.5 + update release notes (Phase 1 complete)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 21:05:42 +01:00
Jure
5659f18099 Add auto-updater (Phase 1 #4)
- tauri-plugin-updater + tauri-plugin-process registered (Rust + npm)
- Updater endpoint: github.com/hoornet/wrystr/releases/latest/download/latest.json
- Ed25519 signing keypair generated; public key in tauri.conf.json;
  private key added to TAURI_SIGNING_PRIVATE_KEY GitHub secret
- Release workflow passes TAURI_SIGNING_PRIVATE_KEY env var so
  tauri-action signs artifacts and generates latest.json manifest
- useUpdater hook: checks for updates 5 s after startup (silent on
  error); exposes available, version, install(), dismiss()
- UpdateBanner: dismissible top-of-app bar shown when an update is
  available — "Update & restart" downloads, installs, and relaunches

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 21:00:14 +01:00
Jure
ab7af96c45 Add long-form article reader (Phase 1 #1, NIP-23)
- fetchArticle(naddr): fetches kind 30023 by d-tag + author pubkey
- fetchAuthorArticles(pubkey): for future profile articles tab
- ArticleView: cover image, title, italic summary, author row (avatar +
  name + date), tag pills, full markdown body (DOMPurify sanitized),
  zap author button in header and footer, copy nostr: link, njump.me
  fallback on fetch error
- prose-article CSS: reader-optimised typography (15px base, 1.8 line
  height, h2 border, styled blockquote/code/pre/links/images)
- NoteContent: naddr1 clicks for kind 30023 now open ArticleView
  instead of falling through to njump.me
- openArticle(naddr) added to UI store with previousView tracking

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 20:42:13 +01:00
Jure
65d103f252 Bump version to 0.1.4 + update release notes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 20:22:48 +01:00
Jure
faaf8ac4a4 Bump version to 0.1.3 + update README and release notes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 19:37:57 +01:00
Jure
acf171bb74 Bump version to 0.1.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 18:26:01 +01:00
Jure
926a7cbdae Add About / Support page (roadmap #4)
- New 'about' view wired into sidebar nav (♥ support) and App.tsx
- Sections: in-app zap button (reuses ZapModal + NWC infra), Lightning
  address QR + copy, Bitcoin address QR + copy, Ko-fi link, GitHub link,
  version/tech credits footer
- QR codes rendered as SVG via react-qr-code (no canvas dependency)
- lightning: URI and bitcoin: URI formats for wallet-scannable QR codes
- Tasteful and non-nagging — lives in the nav, never pops up unprompted

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 18:16:54 +01:00
Jure
ee26edfe65 Bump version to 0.1.1 2026-03-10 08:14:15 +01:00
Jure
bf1d68bb93 Add long-form article editor (NIP-23)
- ArticleEditor with title, markdown body, summary, cover image, tags
- write/preview toggle with markdown rendering via marked
- Auto-save draft to localStorage
- Publish as kind 30023 with NIP-23 tags (d, title, published_at, etc.)
- 'write article' button in sidebar when logged in
- Article preview prose styles in CSS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 19:04:43 +01:00
Jure
b75ccb7f46 Working feed: NDK + relay connection + live notes from Nostr
- Tailwind CSS + Zustand + NDK installed and configured
- Sidebar with feed/relays/settings navigation
- Global feed view with live notes from relays
- Profile fetching with caching and deduplication
- Relay connection with timeout handling
- Note cards with avatar, name, timestamp, content
- Dark theme, monospace, no-slop UI
- Devtools enabled for debugging
2026-03-08 14:54:04 +01:00
Jure
43e14f9f04 Scaffold Tauri 2.0 + React + TypeScript app 2026-03-08 14:28:25 +01:00