Editing a message inside a thread duplicates it on every save and reorders the thread by edit recency
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 38/100
Research direction
Reproduce on Tauri desktop at commit a9dd4d3 and capture the affected surface and authorship. Trace get_thread_replies, formatTimelineMessages/formatTimeline, and useEditMessageMutation while checking kind-40003 events and thread_metadata. Done means repeated edits update one row in place, show an edited indicator, and preserve thread order.
Written by the indexing model from the issue text.
Description
Describe the bug
Editing a message that is part of a thread appends a duplicate of the message on every save, with the duplicates ordered by most-recently-edited at the end of the thread. The signature matches a kind-40003 edit event being rendered as its own row: each save publishes a new event with a fresh created_at carrying the full new body — one duplicate per save, sorted to the end.
Steps to reproduce
- Open a thread in a channel.
- Message menu → Edit on a message in the thread; change the text; save.
- Repeat the edit — one duplicate appears per save.
Observed on a downstream desktop build pinned to exactly a9dd4d3 plus a branding-only patch (no message/thread code changes), so the pipeline is vanilla Buzz at that commit. The exact surface (channel thread panel / home inbox / agent conversation / DM) and authorship (human vs agent-attributed) are not yet narrowed.
Expected behavior
The message updates in place with an "edited" indicator; thread ordering unchanged; no new rows.
Version and platform
- Buzz version:
a9dd4d3(Tauri desktop) - OS: macOS (arm64)
Logs / additional context
At the pinned commit we verified clean, so the duplicate-producing path is still unidentified:
- NIP-10 ignores unmarked
etags, so edits never get athread_metadatarow andget_thread_repliesnever returns them. - Every thread surface traced (channel thread panel, project panels, huddle transcript, home inbox, mobile) formats through
formatTimelineMessages/formatTimeline, which never render kind 40003 as a row. - Live-subscription aux merges dedupe by id;
useEditMessageMutationpatches caches in place.
Happy to attach a get_thread_replies payload capture for the affected thread once reproduced — kind-40003 events in that payload would point at relay-side thread membership rather than client rendering.
- Dominant language
- Rust
- Stars
- 33.7k
- Forks
- 4.4k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 239
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from block/buzz
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
workflow_sink's mention parser never masks code regions — @name inside a code span wakes the agent Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 Half a day Newbie friendliness 88/100
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug team:backend track:services-maintenance
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
cowprotocol/services#4950 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·