feat: show thread replies in channel - #6695
satunnaisotus-juho wants to merge 21 commits into
Conversation
52c9674 to
b256a43
Compare
Add an opt-in channel timeline mode that renders the selected thread's visible replies directly under the root message while preserving the existing thread panel as the default and explicit fallback. Keep channel-window paging unchanged by decorating the client-side timeline with already loaded thread-panel data, and cover inline row keys, hidden descendants, and virtualizer prepend behavior with tests. Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
b256a43 to
2727560
Compare
UI EvidenceDefault panel mode: thread replies stay behind the root summary row. Inline mode: clicking the summary expands visible replies in the main timeline, with Note: the repo screenshot helper could not push to |
Store a community profile flag that lets owners and admins project thread replies into the main channel window. Render projected replies as flat chronological channel rows with thread context, a root backlink, and a main-composer reply path that targets the original thread. Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
|
@block/buzz-oss-team ready for code-owner re-review after the final schema desired-state fix. Current head: The last follow-up commit only adds |
…plies Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com> # Conflicts: # crates/buzz-relay/src/nip11.rs # desktop/src/features/channels/ui/ChannelPane.tsx # desktop/src/features/channels/ui/ChannelScreen.tsx
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
|
@block/buzz-oss-team latest Current head: Verification:
One GitHub automation note: |
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
🔐 Codex Security Review
|
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
|
@block/buzz-oss-team PR is green and mergeable again at |
…plies Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com> # Conflicts: # crates/buzz-db/src/runtime/migration.rs # desktop/src/features/channels/ui/ChannelPane.tsx # desktop/src/features/messages/ui/MessageRow.tsx # desktop/src/features/messages/ui/persistentAgentAudienceHosts.test.mjs # desktop/src/testing/e2eBridge.ts
…plies Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com> # Conflicts: # crates/buzz-db/src/runtime/migration.rs
…plies Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>
Co-authored-by: Juho <juho@satunnaisotus.com> Signed-off-by: Juho <juho@satunnaisotus.com>


Summary
Show thread replies in channel, stored on the community profile and defaulting offReplying to <root author>context plus aView original threadbacklink that jumps to the root and opens the side thread panelReplyon a projected reply target the original thread/reply from the main composer without opening the side panelMotivation
Thread replies often go unnoticed and get buried when people read only the main channel. This gives communities that prefer Slack-style channel visibility an owner/admin-controlled way to surface thread replies chronologically in the channel timeline, while keeping the original thread reply as the single source of truth.
Review Status
bc3e8df3dbdb6477b29f64546ff8ff35d61f2292origin/mainat779af8886caae1317b4de962082429867ab61503into the PR branch.migrations/0047_thread_replies_in_channel.sqlto follow upstream migrations through0046_storage_accounting_snapshots.sql.Codex Security Reviewrequires a Block organizationMEMBERorOWNERto authorize the current head with@buzz-security-review bc3e8df3dbdb6477b29f64546ff8ff35d61f2292.@block/buzz-oss-team.Successfully merging this pull request may close these issues.
Closes #5514.
Duplicate Search / Issue
feat(desktop): "Also send to channel" option when replying in a thread, describes the same channel-visibility problem and explicitly notes a single-event/rendered-in-both-places approach as preferred."thread replies" "channel"returned feat(desktop): "Also send to channel" option when replying in a thread #5514 plus unrelated mobile/ACP thread bugs."inline thread"returned feat(desktop): pin open threads in a persistent switchable rail #4266, a persistent thread rail request rather than channel-row projection."thread replies" "channel"found mobile/notification/thread-reply fixes and this PR, but no duplicate projection PR."also send to channel"returned no results.UI Evidence
Community setting:
Projected replies in the channel feed:
Manual Testing
Check out the PR branch locally:
Expected head at update time:
bc3e8df3dbdb6477b29f64546ff8ff35d61f2292.Start the desktop app from the PR worktree:
As a community owner/admin, open Settings -> Appearance and enable
Show thread replies in channel.Open a stream channel with thread replies and verify:
Replying to <root author>andView original threadView original threadjumps to the root message and opens the side thread panelReplyon a projected row targets that thread/reply in the main composer without opening the side panelTests
bc3e8df3dbdb6477b29f64546ff8ff35d61f2292:CARGO_INCREMENTAL=0 ./bin/just cipassed after mergingorigin/main; the same shell printedHEAD_AFTER_CI=bc3e8df3dbdb6477b29f64546ff8ff35d61f2292.bc3e8df3dbdb6477b29f64546ff8ff35d61f2292:git diff --check origin/main...HEADpassed.DCO Checkpasses.Codex Security Reviewis awaiting manual authorization by a Block organizationMEMBERorOWNERfor the exact head SHA../bin/cargo test -p buzz-relay 9033 -- --ignoredpassed, including the rosterless icon-allowed/thread-display-rejected handler regression.threadRepliesInChannelenabled.