fix(desktop): clear stale thread new-message pill - #3411
Merged
Conversation
Reconcile anchored-scroll state when passive layout changes put the native thread scroller at its physical floor, and let composer padding changes use the same hook-owned settlement path. Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz> Signed-off-by: Wes <wesbillman@users.noreply.github.com>
dophsquare
pushed a commit
to linxule/buzz
that referenced
this pull request
Jul 28, 2026
* origin/main: feat: add explicit entry for claude-opus-5 in model config (block#2831) fix(desktop): clear stale thread new-message pill (block#3411) fix(ci): ratchet file sizes against the base tree (block#3352) Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> # Conflicts: # desktop/scripts/check-file-sizes.mjs
tlongwell-block
pushed a commit
that referenced
this pull request
Jul 29, 2026
* origin/main: feat: add explicit entry for claude-opus-5 in model config (#2831) fix(desktop): clear stale thread new-message pill (#3411) fix(ci): ratchet file sizes against the base tree (#3352) chore(ci): bump desktop smoke E2E timeout to 30 minutes (#3409) release(chart): publish 0.1.7 (#3393) Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
atishpatel
added a commit
that referenced
this pull request
Jul 29, 2026
…ounting-and-solo * origin/main: fix(acp): per-runtime env defaults at spawn — isolate Hermes from configured MCP startup (#3420) fix(relay): avoid subscription lock inversion (#3413) feat: add explicit entry for claude-opus-5 in model config (#2831) fix(desktop): clear stale thread new-message pill (#3411) fix(ci): ratchet file sizes against the base tree (#3352) chore(ci): bump desktop smoke E2E timeout to 30 minutes (#3409) release(chart): publish 0.1.7 (#3393) Signed-off-by: Atish Patel <atish@squareup.com>
tlongwell-block
pushed a commit
that referenced
this pull request
Jul 29, 2026
* origin/main: feat(agent): fix Anthropic prompt caching with Databricks (+ MCP proxy/TLS passthrough) (#3463) Fix mobile attachment and gallery polish (#3370) fix(acp): per-runtime env defaults at spawn — isolate Hermes from configured MCP startup (#3420) fix(relay): avoid subscription lock inversion (#3413) feat: add explicit entry for claude-opus-5 in model config (#2831) fix(desktop): clear stale thread new-message pill (#3411) fix(ci): ratchet file sizes against the base tree (#3352) chore(ci): bump desktop smoke E2E timeout to 30 minutes (#3409) release(chart): publish 0.1.7 (#3393) feat(acp): steer claude-code and codex agents via _session/steering (#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (#2004) docs(contributing): document the Linux system libraries just ci requires (#3396) fix(desktop): paint community rail full height (#3382) fix(acp): disable goose cron scheduler in managed agent children (#3144) feat(desktop): add custom harness inline from agent dialogs (#3252) chore(compose): remove stale typesense env vars (#3332) feat(desktop): refine agent catalog sharing (#2439) fix(desktop): keep drafts out of the Inbox All view (#3217) docs: restructure DCO guidance into scannable subsection (#3337) Unify mobile loading spinners (#3314) fix(desktop): restore the inbox icon in the sidebar (#3341) fix(desktop): gate codex-acp on a minimum supported version (#3254) feat(cli): add users set-status command for NIP-38 profile status (#3253) fix(composer): scope multiline block formatting (#3246) feat(chart): add relay pod extension points (#3322) Refine mobile attachment picking (#3313) Polish mobile message and search layouts (#3121) Add mobile message image galleries (#3312) chore(release): release Buzz Desktop version 0.5.0 (#3213) Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
wesbillman
added a commit
that referenced
this pull request
Jul 29, 2026
## Buzz Desktop release v0.5.1 ### Changes since v0.5.0: - perf(desktop): move observer-feed archive and decrypt commands off main thread ([#3415](#3415)) ([`294c8c821`](294c8c8)) - fix(desktop): preserve shared agent fidelity ([#3553](#3553)) ([`f7a3988ba`](f7a3988)) - feat(agent): route Claude/GPT model families to their native gateway wire ([#3538](#3538)) ([`6438dedf8`](6438ded)) - Refine community invite limits ([#3529](#3529)) ([`24d90d128`](24d90d1)) - feat(agent): fix Anthropic prompt caching with Databricks (+ MCP proxy/TLS passthrough) ([#3463](#3463)) ([`c405ad1d4`](c405ad1)) - feat: add explicit entry for claude-opus-5 in model config ([#2831](#2831)) ([`90e058ebf`](90e058e)) - fix(desktop): clear stale thread new-message pill ([#3411](#3411)) ([`55a3ed7b9`](55a3ed7)) - fix(ci): ratchet file sizes against the base tree ([#3352](#3352)) ([`9227bdf58`](9227bdf)) - feat(desktop): apply WebKit rendering workarounds at startup on Linux ([#3271](#3271)) ([`3ece4461d`](3ece446)) - fix(desktop): stabilize flaky DM expansion E2E ordering assertions ([#2004](#2004)) ([`913d564ce`](913d564)) - fix(desktop): paint community rail full height ([#3382](#3382)) ([`1d3b810ad`](1d3b810)) - feat(desktop): add custom harness inline from agent dialogs ([#3252](#3252)) ([`b0503d80c`](b0503d8)) - feat(desktop): refine agent catalog sharing ([#2439](#2439)) ([`a35771fc4`](a35771f)) - fix(desktop): keep drafts out of the Inbox All view ([#3217](#3217)) ([`3afa129ee`](3afa129)) - fix(desktop): restore the inbox icon in the sidebar ([#3341](#3341)) ([`00ede2e7a`](00ede2e)) - fix(desktop): gate codex-acp on a minimum supported version ([#3254](#3254)) ([`4e3998f36`](4e3998f)) - feat(cli): add users set-status command for NIP-38 profile status ([#3253](#3253)) ([`60158fce3`](60158fc)) - fix(composer): scope multiline block formatting ([#3246](#3246)) ([`5457c947a`](5457c94)) **To release:** merge this PR. The tag and build will happen automatically. Signed-off-by: Wes <wesbillman@users.noreply.github.com>
wesbillman
added a commit
that referenced
this pull request
Jul 29, 2026
## Summary - reconcile stale native-scroll anchors when a reply arrives at the physical floor - clear the thread new-message affordance instead of incrementing it from stale cached state - preserve the existing mid-history path and add direct lifecycle regression coverage ## Why PR #3411 fixed geometry-driven reconciliation, but the reply-arrival branch still trusted a cached `message` anchor without checking the rendered position. Native anchoring could return a short thread to the floor without another scroll/resize callback, then the next reply incremented the pill anyway. ## Verification - Desktop checks passed - Desktop typecheck passed - focused lifecycle test passed (6/6) - push hook full Desktop unit suite passed (3,770/3,770) - `git diff --check` passed Signed-off-by: Wes <wesbillman@users.noreply.github.com> Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Root cause
Thread bottom state was updated primarily by native
scrollevents. Deferred replies, viewport changes, and composer-overlay padding can finish changing geometry after the user's last scroll—or after the initial open pin—without another scroll event. The thread could visibly reach the floor whileisAtBottomandnewMessageCountremained stale, leaving the “N new messages” pill visible.Verification
pnpm checkpnpm typecheckpnpm test— 3,768 passed