Repository navigation
fix(messages): keep own sends from before the loaded history off the timeline - #2525
Merged
johnmatthewtennant merged 8 commits intoNov 5, 2026
Merged
Conversation
…timeline The outbox keeps confirmed sends, and the channel window added every one of them to its rows regardless of the history floor. After a channel reopened on its latest page, the viewer's older messages showed above it with everyone else's replies missing until paging reached them. Own sends now wait for their page like every other row. Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
A failed or unknown send has no relay echo, and its row is the only place that offers Retry, so the history floor applies only to confirmed sends. Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
A head page dated ahead of this clock set a floor above the viewer's next send and its echo, hiding both. Cap the floor at the time the page loads. Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
Capping the floor at the clock still hid a send made while the head read was pending, after a clock rollback, or on a cached head adopted later. Instead, a window keeps showing every send it saw unconfirmed, whatever its date, so only confirmed sends from before it opened wait for their page. Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
johnmatthewtennant
marked this pull request as ready for review
November 5, 2026 16:07
kalvinnchau
reviewed
Nov 5, 2026
kalvinnchau
left a comment
Contributor
There was a problem hiding this comment.
🤖 One remaining history-loading defect.
Before the head page answers, a window has no floor, and the floor check read that as unbounded history: restored confirmed sends from any date showed alone, then vanished when the head arrived and returned with their older page. Until a page sets the floor, a confirmed send now waits for the page that holds it. Failed, unknown and window-observed sends still show. Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
A mounted window kept every outgoing operation it ever saw unconfirmed, so its exemption set grew with cumulative activity. It now keeps only message rows the outbox still holds; once the outbox retires a send, its row comes from history like any other. Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: John Tennant <[email protected]>
Signed-off-by: John Tennant <[email protected]> * origin/main: (47 commits) fix(messages): pass verified labels to the forward recipient picker (#2633) feat(messages): forward a message to a person (#2167) docs(agents): design relay-facing paths for the whole fleet at once (#2620) Route debug sessions through the credential helper (#2541) perf(search): skip no-op slow-search resets on each keystroke (#2605) perf(agents): dedupe channel members only for dm connection setup (#2603) perf(search): keep the search tab row across palette keystrokes (#2588) perf(sidebar): skip the hidden actions menu in solo and team headers (#2582) perf(search): rank each palette name once per render (#2606) perf(sidebar): skip re-rendering unchanged animated channel rows (#2572) feat(settings): follow the system clock and let people hide message times (#2440) feat(plugins): repository access rules for Git imports (#2484) feat(desktop): add Settings to the macOS app menu (#2594) Preserve and renew external app approval (#2464) fix(direct-messages): show verified identity in new message recipient search (#2585) Offer plugin updates from the Buzz shell (#2491) fix(messages): keep decoded images across virtualized remounts (#2474) Keep /leave commands out of channel history (#2476) fix(agents): ask before switching or closing drops unsaved edits (#2503) fix(agents): keep the Model settings row full width (#2577) ...
johnmatthewtennant
deleted the
jtennant/martha/history-floor-own-messages
branch
November 5, 2026 19:30
wpfleger96
added a commit
that referenced
this pull request
Nov 5, 2026
…leanup * origin/main: fix(goose): track every replaced protected worker and check its security gate (#2528) docs(agents): say Pi agents don't take plugin notes yet (#2534) feat(agents): reorder agent cards with hold and drag (#1837) fix(messages): keep own sends from before the loaded history off the timeline (#2525) feat(github): rework the GitHub settings page (#2450) # Conflicts: # src/bundled/github/watcher.test.ts
wpfleger96
added a commit
that referenced
this pull request
Nov 5, 2026
…-service * origin/main: (29 commits) Normalize profile names for verified-name matching (#2348) Add BuzzTerm font settings and compact glyph spacing (#2502) feat(plugins): let a host command run only verified bytes (#2535) NEXUS-4228: Add plugin toolbar actions and panel links (#2645) Keep plugin update controls stable and spaced (#2636) feat(inbox): rename to Activity and simplify the filter bar (#2543) fix(goose): track every replaced protected worker and check its security gate (#2528) docs(agents): say Pi agents don't take plugin notes yet (#2534) feat(agents): reorder agent cards with hold and drag (#1837) fix(messages): keep own sends from before the loaded history off the timeline (#2525) feat(github): rework the GitHub settings page (#2450) fix(mcp): accept create scopes in durable approvals (#2650) feat(bestie): Bestie tab and Remembers you for a hosted Bestie (#2478) fix(relay): p-tag a one-to-one DM's agent partner on new messages (#2475) fix(agents): show each message author's username and display name (#2628) fix(agents): preserve visible edits in conversation history (#2355) fix(canvas): keep todo edits from approving unrelated instructions (#2350) fix(messages): keep messages in their canonical channel (#2349) NEXUS-4165: Add Thinking to agent creation (#2409) feat(plugins): let a plugin paint a backdrop behind the shell (#2437) ... # Conflicts: # src/bundled/goose/runtime.ts
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.
Why
Bug fix. After reopening a busy channel and scrolling up, the timeline showed a run of your own messages with every other reply between them missing. In John's Solo chat with his agents, everything his agents posted between 4:13 and 5:53 PM was missing, but his own messages from that span were there.
The channel window keeps rows from before its loaded history off the timeline until an older page reaches them (#1256), but only for events it read from the relay. The outbox keeps up to 2,048 confirmed sends, and the window added every one of them to its rows without that check. So when a channel reopened on its latest page, your earlier sends showed up above it, out of the context of the replies around them, until paging reached and filled the gap partway up the list.
What
The window applies the same floor and ceiling to the viewer's own confirmed sends as to every other row. Older sends appear once the page that holds them loads (while the latest page is still loading, none show yet), in order with the replies around them. A send the open window saw while it was unconfirmed keeps showing wherever its date falls, as it did before: a failed one's row is the only place that offers Retry, and a new one can sort below the loaded history when a peer's fast clock dates the latest page ahead. Reactions, edits and deletions from the outbox are not message rows, so they're unaffected.
Validation
live-session.test.tssets up a confirmed send older than the head page. It fails onmain, where the head shows that send alongside the latest message. It passes on this branch: before the head answers, only the failed send shows; the head then shows the latest message, and the older page shows the send in order between the replies before and after it. A failed send from the same span stays visible throughout.traffic.integration.test.tsopens a channel whose latest page is dated an hour ahead, then sends and confirms a message. The send stays on the timeline through confirmation.4e3975bf4andb3c37dc34, before sends were withheld while the latest page loads.