Commit graph

296 commits

Author SHA1 Message Date
Avi
40ec9a0dfa Checkpoint: DRY relay fan-out 2026-08-24 22:12:12 -05:00
Avi
1c428a9ff2 DRY: single parallel relay fan-out for notes and metadata
publish_with_keys and publish_metadata_async carried ~55 identical
lines (JoinSet per-relay sends, 6s timeout, outcome collection,
disconnect, result split) that had to be hand-synced once already.
Extracted into publish::send_to_all_relays; callers keep their own
relay-add policy (note path hard-fails on add errors, metadata path
ignores them), so behavior and user-facing strings are unchanged.
METADATA_SEND_TIMEOUT and profiles::failure_for folded away.
2026-08-24 22:11:22 -05:00
Avi
b21678fafb Checkpoint: NIP-46 signer handshake fix 2026-08-24 20:54:09 -05:00
Avi
64ad94d0b5 Signer: listen before announcing so the handshake reply is not lost
The NIP-46 task created its notification receiver only after
publishing the connect announcement. An automated client answers
within milliseconds, so its ack and first request landed in the
relay pool broadcast channel before a receiver existed and were
dropped silently — the client then waited forever for a reply and
never left its connect/QR screen (seen with Yakihonne).

Open the notification stream right after adding relays, before
connect/subscribe/announce, closing the drop window.

Verified end-to-end with a reference NIP-46 client over live relays:
before the fix get_public_key was never answered; after it the full
round-trip (announce, ack, get_public_key) completes.
2026-08-24 20:53:45 -05:00
Avi
ae8452602f Checkpoint: Aurora rename + dropdown fix 2026-08-24 19:49:52 -05:00
Avi
dd50b24ec1 Rename glass theme display to Aurora; fix unreadable select options
The theme dropdown popup inherited the near-transparent select
background and rendered white-on-white under the glass theme.
Options now get an explicit dark surface, plus color-scheme: dark
so native controls render correctly. User-facing name is Aurora;
the internal 'glass' id is unchanged so saved settings keep working.
2026-08-24 19:49:30 -05:00
Avi
0cab88364b Checkpoint: glass theme look 2026-08-24 19:44:31 -05:00
Avi
ecb666bc1d Glass theme: real frosted-glass look
Translucent surfaces with backdrop blur over an aurora gradient
backdrop, hairline light borders, softened accent tints, frosted
modal scrim, inverted sidebar logo. Scoped entirely to
html[data-theme='glass'] — other themes untouched.
2026-08-24 19:44:11 -05:00
Avi
1aae81ca04 Checkpoint: glass theme fix 2026-08-24 19:40:05 -05:00
Avi
bfe14f0d97 Fix glass theme: repair broken Default impl that blocked all builds
Commit a01f258 removed Theme::System but missed Settings::default(),
so the crate failed to compile and every desktop launch kept spawning
a stale backend binary that rejected 'glass'. Also untangles the
glass palette CSS that was duplicated as nested blocks inside the
neon rule, and re-applies the theme reactively when settings change.
2026-08-24 19:39:32 -05:00
Avi
db2d22f999 Theme: add glass theme (CAJAFUERTE-inspired) alongside light/dark/neon 2026-08-24 14:34:35 -05:00
Avi
a01f258d4b Remove system theme, keep light/dark/neon only 2026-08-24 14:23:15 -05:00
Avi
c080a8d1c8 App icon: remove white border, restore original 512x512 dimensions 2026-08-24 13:52:47 -05:00
Avi
542f3e5472 Checkpoint: app icon 2026-08-24 12:32:39 -05:00
Avi
90d699cff1 App icon: subtle white border around black artwork 2026-08-24 12:30:37 -05:00
Avi
4722ecdabd Checkpoint: neon theme 2026-08-24 12:15:36 -05:00
Avi
74072b7d6d Neon theme: pure-black Matrix palette (CAJAFUERTE-inspired) alongside light/dark/system 2026-08-24 12:14:39 -05:00
Avi
ef6ea171f8 Checkpoint: sidebar brand mark 2026-08-24 11:58:19 -05:00
Avi
a00c7c9897 Sidebar brand mark: hummingbird-key artwork replaces the shield icon 2026-08-24 11:56:16 -05:00
Avi
5f27c4585b Checkpoint: taskbar icon via desktop entry 2026-08-24 11:48:34 -05:00
Avi
cbbe779faa Desktop entry + Wayland app id so the taskbar shows the app icon 2026-08-24 11:46:48 -05:00
Avi
4d9489b5ac Checkpoint: app icon 2026-08-24 11:34:47 -05:00
Avi
8a644afd80 App icon: hummingbird-key mark for window and packaged Linux builds 2026-08-24 11:33:45 -05:00
Avi
48efaad0d9 Checkpoint: security dependency upgrades 2026-08-24 11:01:18 -05:00
Avi
c11ab9f735 Security: major dependency upgrades clearing all npm advisories; show per-advisory fix paths 2026-08-24 11:00:18 -05:00
Avi
a1915bb1c1 Checkpoint: updates card 2026-08-24 09:55:00 -05:00
Avi
8bce42810a Updates card: scan npm/cargo deps, surface security advisories, install compatible updates 2026-08-24 09:54:04 -05:00
Avi
3dfd15f9c1 Checkpoint: feed profile filter 2026-08-24 00:14:23 -05:00
Avi
55a49b442b Feed: 'My notes' scope with per-profile dropdown filter 2026-08-24 00:13:58 -05:00
Avi
8f637618bc Checkpoint: note publish latency trim 2026-08-24 00:04:01 -05:00
Avi
b001b3c7b1 Trim note publish latency: skip global connection wait, parallel sends, 6s cap 2026-08-24 00:03:12 -05:00
Avi
2ad054e6e1 Checkpoint: NIP-05 identifiers 2026-08-23 22:00:13 -05:00
Avi
045fa47476 Add NIP-05 identifiers: store, publish, GUI modal, CLI helpers
- Store an optional nip05 on each profile; publish it in kind 0 metadata
- set-nip05 CLI (+ validation, lower-casing, clear) and nip05-file helper
  that prints the .well-known/nostr.json document for a domain
- Profiles screen: NIP-05 button, handle shown on cards, Nip05Modal with
  client-side validation and Remove action
- Fix Modal stealing focus from autoFocus inputs one frame after open
2026-08-23 21:59:11 -05:00
Avi
f2c30d397f Checkpoint: publish latency trim 2026-08-23 19:10:12 -05:00
Avi
cb23a5e32d Trim metadata publish latency: skip global connection wait, 6s send cap 2026-08-23 19:09:46 -05:00
Avi
ad70890efc Checkpoint: concurrent IPC responsiveness fix 2026-08-23 19:04:11 -05:00
Avi
4d70b25628 Make IPC concurrent so relay checks and feeds never block the UI 2026-08-23 19:03:16 -05:00
Avi
6df690fe8f Checkpoint: profile rename feature 2026-08-23 18:49:50 -05:00
Avi
d618a5a4a0 Add profile rename with metadata republish (GUI + CLI) 2026-08-23 18:48:45 -05:00
Avi
808f011876 Checkpoint: narrow-window button wrap fix 2026-08-23 16:25:30 -05:00
Avi
64502c1b14 Wrap profile card action buttons on narrow windows 2026-08-23 16:25:07 -05:00
Avi
355e07f40f Checkpoint: card-click profile selection 2026-08-23 15:35:00 -05:00
Avi
653945a5e8 Select a profile by clicking anywhere on its card 2026-08-23 15:34:24 -05:00
Avi
2e4005d24d Checkpoint: project folder renamed to Nostr_Keynctr 2026-08-23 12:46:26 -05:00
Avi
24b34b6f93 Remove duplicate productName entries from package.json 2026-08-23 11:06:32 -05:00
Avi
6ead6f418c Fix hardcoded dev window title to Keynectr 2026-08-23 11:04:09 -05:00
Avi
31ef3057e0 Rebrand remaining UI strings to Keynectr
Sidebar brand, home welcome title, settings version line, stylesheet
header comment and the three tests asserting them.
2026-08-23 10:43:20 -05:00
Avi
70aa688ae1 Checkpoint: Keynectr rename 2026-08-23 10:22:38 -05:00
Avi
7c6a085bf1 Rename the app to Keynectr
- Crate/binary: nostr-manager-backend -> keynectr
- Data directory: nost-feed-manager -> keynectr, migrated automatically
  on first data_dir() call (existing vaults, settings and backups move)
- Electron extraResources/spawn path, executableName, productName,
  window title and CLI usage strings updated to match
- Deliberately unchanged: crypto.rs KDF verifier string, so previously
  encrypted vault backups remain decryptable

Verified live: existing vault with two profiles migrated to
~/.local/share/keynectr and loads correctly.
2026-08-23 10:22:25 -05:00
Avi
1116dfdbb4 Checkpoint: NIP-05 as next feature, relay config notes 2026-08-22 21:17:56 -05:00