Wes
07d0265cfc
fix(desktop): retire prepend mode on every reader wheel ( #2913 )
...
## Summary
- retire Virtua prepend reconciliation on every ordinary reader wheel
event, including events suppressed from its separate wheel-timing
heuristic
- keep Ctrl+wheel browser zoom excluded from reader ownership
- arm the Ctrl+wheel prepend probe before pagination begins so it cannot
miss the commit
- preserve ESM/CJS patch parity and update the patch lock hash
## Why main was red
PR #2855 added the reader-wheel retirement action after Virtua's
existing suppression guard. Once the first event set that guard, later
events in the same wheel burst returned before retiring prepend mode. A
late ResizeObserver correction could then pull the viewport backward by
20–40px. The same test had failed twice on #2855 but passed its final
retry, so the PR job appeared green; the merge commit lost all three
retries.
The separate Ctrl+wheel failure was a test race: its MutationObserver
was registered after the request had already been triggered and could
miss the prepend commit.
## Validation
- desktop full unit suite: 3,515 passed
- pre-push desktop check: passed
- `git diff --check`: passed
- CI is the E2E verification; no local E2E was run
Fixes the main-branch failure in CI run 30180099007.
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz >
2026-07-25 17:22:15 -07:00
Wes
25e7864b35
fix(desktop): consolidate prepend scroll correction ( #2855 )
...
## Summary
- make Virtua the sole prepend geometry/correction owner by accumulating
active prepend ResizeObserver corrections from the live DOM offset
- retire prepend reconciliation on ordinary reader wheel input, while
preserving it for Ctrl+wheel browser zoom
- remove Buzz's competing three-second semantic-anchor watcher and
corrective `scrollBy` loop
- keep ESM/CJS Virtua patch behavior equivalent and update the patch
lock hash
## Why
Buzz admitted prepended rows using seeded estimates, then Virtua
received multiple measurement corrections for the same transaction. Each
correction was based on the same stale model offset, so a later write
replaced an earlier correction instead of accumulating it. In the
reproduced first page, that resurrected 452px of anchor drift; the
app-level watcher merely corrected the lost virtualizer write afterward.
This fixes the correction inside Virtua and deletes the competing app
writer, following the single-owner geometry invariant used by Berd
rather than copying its spacer implementation.
## Validation
- watcher-off desktop virtualization matrix: 11/11 passed, including 15
cascading prepends, continued wheel input, detached rich-row growth,
channel switching, bottom follow, and buffered live arrivals
- focused cascading prepend/Ctrl+wheel regression passed
- desktop typecheck passed
- desktop unit suite passed: 3,495 tests
- Biome passed on changed desktop files
- `git diff --check` clean
## Manual behavior
Load older history repeatedly while scrolling upward, then wheel
downward during/after a prepend. The visible anchor should stay within
the existing 5px contract during reconciliation, and deliberate reader
movement should not be pulled back. Ctrl+wheel during the prepend commit
must not cancel reconciliation.
---------
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz >
2026-07-25 16:49:56 -07:00
klopez4212
50655ac097
Style mobile pairing QR codes ( #2775 )
...
## Summary
- render mobile pairing QR codes locally with Wallet-inspired styling
- hide the raw pairing URI behind a matching copy button
- add focused rendering and dialog coverage
## Test plan
- desktop lint and 3,489 desktop tests
- focused pairing dialog Playwright test
- decoded the rendered QR back to the exact pairing URI
2026-07-24 19:46:59 -07:00
renovate[bot]
65f399ba22
chore(deps): update dependency @tanstack/react-virtual to v3.14.6 ( #2153 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-20 14:23:03 +00:00
renovate[bot]
6da407742a
chore(deps): update all non-major dependencies ( #2152 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-20 08:02:42 -06:00
Kalvin C
68e670e001
feat: add read-only deployment moderation dashboard ( #1999 )
...
Signed-off-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1ntr8jjcqq6gt06q5avvqttfjgpwshmra22pcmcagdnukw4ja4nqqsa9g54 <9ac6794b000690b7e814eb1805ad32405d0bec7d52838de3a86cf967565dacc0@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co >
2026-07-17 12:50:06 -07:00
Wes
406cf7911e
fix(desktop): seed timeline virtualization row heights ( #1887 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-15 07:41:21 -07:00
Matt Toohey
366567ac20
fix(desktop): dedupe react-dismissable-layer to stop modal menu → dialog freezes ( #1899 )
...
Signed-off-by: Matt Toohey <contact@matttoohey.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-15 07:34:50 -07:00
renovate[bot]
d38a7ef775
chore(deps): update radix-ui-primitives monorepo ( #1779 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 15:35:41 +00:00
renovate[bot]
221aceb1c2
chore(deps): update all non-major dependencies ( #1778 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-13 14:47:17 +00:00
Tyler
b0ad2b66dd
Retain a stable message window in channel timelines ( #1698 )
...
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-12 21:41:38 -04:00
Wes
2a24765fd7
fix(deps): unversion isomorphic-git pnpm patch key ( #1529 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-06 07:53:18 -07:00
renovate[bot]
b66a53f5b5
chore(deps): update dependency @tanstack/react-virtual to v3.14.5 ( #1523 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:48:09 +00:00
renovate[bot]
dc383c1993
chore(deps): update radix-ui-primitives monorepo ( #1524 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 14:29:50 +00:00
Taylor Ho
654b6c374b
feat(profile): embed live activity feed in profile aux panel ( #1380 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-03 15:40:29 +00:00
renovate[bot]
1c221eaafd
chore(deps): update dependency @tanstack/react-virtual to v3.14.4 ( #1342 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-29 16:35:27 +00:00
Will Pfleger
a4fbebb397
perf(desktop): virtualize unbounded lists and warm the emoji index ( #1089 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-17 19:01:09 +00:00
klopez4212
7b0500c93e
Use Inter for app typography ( #899 )
2026-06-17 18:56:57 +01:00
renovate[bot]
56a5ac2790
chore(deps): update react monorepo ( #1048 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-16 16:25:10 +00:00
klopez4212
116486592d
Add animated profile avatars ( #1031 )
2026-06-15 22:52:50 +01:00
Taylor Ho
ae430d4dd9
feat: preview features (experiments settings UI) ( #888 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-06-09 09:53:09 -07:00
renovate[bot]
97bdb79ded
chore(deps): update radix-ui-primitives monorepo ( #898 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-07 22:32:11 -04:00
Will Pfleger
247ac52391
feat(desktop): add user-defined channel sections to sidebar ( #789 )
2026-06-01 12:42:19 -07:00
renovate[bot]
33e37de6e3
chore(deps): update all non-major dependencies ( #804 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-01 08:26:26 -07:00
Wes
5670ffc6a6
fix(deps): re-pin isomorphic-git patch to 1.38.3 ( #807 )
...
Signed-off-by: npub1yxv5wk0u0fh6dwt925wntn7h397jvteyj4r87ttcd9xae7n2t3lqqj9jmm <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1yxv5wk0u0fh6dwt925wntn7h397jvteyj4r87ttcd9xae7n2t3lqqj9jmm <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-01 07:41:02 -07:00
renovate[bot]
033d92f103
chore(deps): update dependency @tanstack/react-query to v5.100.14 ( #805 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-01 06:45:43 -07:00
renovate[bot]
6789f5f78c
chore(deps): update dependency @tanstack/react-query to v5.100.13 ( #746 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-25 15:21:50 +00:00
renovate[bot]
86eca930af
chore(deps): update all non-major dependencies ( #735 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-24 03:03:36 +00:00
renovate[bot]
939d5d893e
chore(deps): update tanstack-router monorepo ( #738 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
2026-05-23 23:26:17 +00:00
renovate[bot]
41c8610de0
chore(deps): update dependency @types/react to v19.2.15 ( #736 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
2026-05-23 23:08:56 +00:00
renovate[bot]
75556747b1
chore(deps): update all non-major dependencies ( #739 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 18:59:00 -04:00
renovate[bot]
608e3af634
fix(deps): update dependency lucide-react to v1 ( #685 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 17:52:25 +00:00
renovate[bot]
3e7f21aff6
chore(deps): update dependency typescript to v6 ( #669 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 21:58:08 -04:00
Will Pfleger
839097112c
fix(deps): migrate Tailwind CSS from v3 to v4 ( #711 )
2026-05-22 20:45:47 -04:00
Will Pfleger
4e060bfec2
fix(deps): upgrade Vite v8 and @vitejs/plugin-react v6 ( #710 )
2026-05-21 19:03:59 -04:00
Will Pfleger
5b75ce4755
fix(deps): upgrade pnpm to v11 with versioned patch keys ( #709 )
2026-05-21 18:53:26 -04:00
renovate[bot]
1220e9938a
chore(deps): update all non-major dependencies ( #650 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-21 01:26:47 +00:00
renovate[bot]
f7eae0a6cf
chore(deps): update dependency nostr-tools to v2.23.5 ( #681 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-21 01:24:40 +00:00
renovate[bot]
740d2545ea
chore(deps): update tanstack-router monorepo ( #659 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 23:10:05 +00:00
renovate[bot]
97eacb86f4
chore(deps): update dependency @tanstack/react-query to v5.100.11 ( #635 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 23:06:59 +00:00
renovate[bot]
8082019cb6
chore(deps): update tanstack-router monorepo ( #649 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 22:49:22 +00:00
renovate[bot]
420aedecd1
chore(deps): update dependency @tauri-apps/cli to v2.11.2 ( #636 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 22:47:06 +00:00
renovate[bot]
584c7ae818
chore(deps): update dependency @playwright/test to v1.60.0 ( #651 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 22:39:49 +00:00
renovate[bot]
3ab836d8e0
chore(deps): update dependency shiki to v4.1.0 ( #682 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 22:37:56 +00:00
renovate[bot]
72f57d7d6d
chore(deps): update react monorepo to v19.2.6 ( #637 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 22:34:20 +00:00
renovate[bot]
6ada9da386
chore(deps): update all non-major dependencies (patch) ( #634 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 17:36:06 -04:00
tlongwell-block
d1097aa91f
chore(desktop): upgrade Tauri to 2.11.x to fix blank window after sleep on macOS ( #600 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-15 18:59:16 -04:00
Matt Toohey
f0549b5038
feat(desktop): channel hover state and right-click mark-unread context menu ( #578 )
...
Signed-off-by: Matt Toohey <contact@matttoohey.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-14 08:33:57 -07:00
Wes
809275795a
feat(web): browse git repos in-browser via isomorphic-git ( #554 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 15:05:57 -07:00
Wes
a76fe529ce
fix(desktop): consolidate settings page — switch toggles, remove General section ( #497 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-07 10:20:31 -07:00