Skip to content

feat(channels): show typing status on sidebar dm rows - #305

Merged
wesbillman merged 4 commits into
mainfrom
peon/dm-sidebar-typing
Sep 28, 2026
Merged

wesbillman merged 4 commits into
mainfrom
peon/dm-sidebar-typing

Conversation

@kalvinnchau

@kalvinnchau kalvinnchau commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Show remote human typing on sidebar DM rows (1:1 and group).

  • Animated dots in the row badge slot, labelled (aria-label and title) with the block/buzz composer typing copy: X is typing..., X and Y are typing..., X, Y, and Z are typing..., X, Y, and N others are typing....
  • Reads the existing session typing store; expiry, stop-on-message, self-suppression, stale rejection and access/disconnect clearing come from that store. No new relay subscriptions.
  • Typing anywhere in the DM, threads included, counts once per signer; each scope clears independently.
  • Human-only: signers whose loaded profile marks them as agents are excluded, leaving the existing Agent working indicator as their signal. Classification is reactive to profile loads.
  • Rows select a per-channel key, so idle rows skip re-rendering and never read names or profiles.
  • Pulse animation runs only under prefers-reduced-motion: no-preference. Regular channel rows and the composer are unchanged.
Screen.Recording.2026-09-28.at.9.18.15.AM.mov

Testing

  • DmTypingBadge.test.tsx drives a real relay session into rendered sidebar rows: exact copy, row isolation, selection switching, group thread/top-level dedupe and independent clearing, the 8 s expiry boundary, stale pulses, disconnect, agent-only and mixed human/agent DMs, an unknown signer reclassified as an agent, and idle rows not re-rendering.
  • vitest run src/bundled/channels src/features/channel-navigation, pnpm check, pnpm lint.
  • Built-app Playwright journey (Chromium and WebKit) against the fixture broker for the 1:1 DM flow; not committed, as the component tests cover the contract.

peon and others added 2 commits September 25, 2026 16:18
Render animated typing dots on 1:1 and group DM rows from the session
typing store, labelled with the block/buzz composer typing copy. Typing
in any DM scope, including threads, counts once per signer. Rows select
a per-channel key so unrelated typing changes do not re-render them.

Co-authored-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: peon <9ac6794b000690b7e814eb1805ad32405d0bec7d52838de3a86cf967565dacc0@buzz.block.builderlab.xyz>
Known agents are represented by the Agent working signal, so the DM row
typing label names humans only. Classification uses already-loaded
profiles in the active renderer; unclassified signers keep the pubkey
fallback until a loaded profile marks them as agents.

Co-authored-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: peon <9ac6794b000690b7e814eb1805ad32405d0bec7d52838de3a86cf967565dacc0@buzz.block.builderlab.xyz>
@kalvinnchau
kalvinnchau force-pushed the peon/dm-sidebar-typing branch from f27fede to 4aaa33f Compare September 25, 2026 23:22
peon and others added 2 commits September 28, 2026 09:13
Render the sidebar typing indicator over the DM identity slot, replacing
the avatar or group count while a remote human types, instead of beside
the unread/working stack.

Co-authored-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
Match the participant-count chip in the DM identity slot: subtle
affordance background with subtle text-colored dots instead of the
accent color.

Co-authored-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
@kalvinnchau
kalvinnchau marked this pull request as ready for review September 28, 2026 16:18
@kalvinnchau
kalvinnchau requested review from a team, comp615 and wesbillman as code owners September 28, 2026 16:18

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord automated source review

Posted through Wes’s account (wesbillman). No actionable findings. Source-review assessment: 9/10 for minimalness, elegance, and correctness, within the validation limits below.

  • Head: 7b3eea2bb8bd7265a00745e7b4ebaf5b2f0ab138
  • Base: 67fe94c750fc739e49caf3ee57e0f0940944cb04

Reviewed the complete five-file delta and traced the persistent sidebar, row/navigation composition, typing lifecycle, loaded-profile classification and shared naming subscriptions. The per-DM primitive snapshot deduplicates signers across thread scopes without adding relay reads or a second expiry owner. Profile changes reactively remove known agents; expiry/completion restores the existing identity slot. Regular channel rows and the separate agent-working/unread indicators retain their existing paths. The dots have an accessible name and native title; animation is opt-in to prefers-reduced-motion: no-preference.

The new component assertions use the real relay session and a controlled clock for expiry, scope clearing, stale pulses, disconnect, classification and unaffected-row render counts. These are appropriate lower-layer tests; no committed browser journeys were added or removed.

Validation limits: source-only analysis of Git-blob-verified inputs, with no dirty checkout inputs. No PR code, tests, builds, browser/native app, or CI jobs were executed. A single read-only CI snapshot at this head showed JavaScript, DCO, Semgrep, zizmor and browser measurements successful; Rust/tool integration and six browser shards were still in progress, and Windows validation was skipped. Author-reported browser checks were not independently reproduced. Rendered layout, assistive-technology behavior, native behavior and human acceptance remain unverified. This COMMENT is not approval, readiness certification, or merge authorization.

@kalvinnchau kalvinnchau changed the title feat(channels): show remote typing on sidebar dm rows feat(channels): show typing status on sidebar dm rows Sep 28, 2026
@wesbillman
wesbillman merged commit 96f0743 into main Sep 28, 2026
14 checks passed
@wesbillman
wesbillman deleted the peon/dm-sidebar-typing branch September 28, 2026 17:15
johnmatthewtennant pushed a commit that referenced this pull request Sep 29, 2026
* origin/main:
  Keep custom emoji animated in reactions (#354)
  Polish community dialogs, agent cards, and conversation controls (#342)
  fix(channels): paginate membership discovery beyond 500 channels (#326)
  Remove local project context from docs (#350)
  feat(github): render PR descriptions with inline media (#335)
  feat(dev): measure channel opens, warming cost and live setup (#315)
  fix(agents): start new agents on Create and make their status clear (#332)
  fix(macos): close the window without quitting Buzz (#349)
  fix: allow parallel desktop dev worktrees (#336)
  feat(relay): complete packaged community access and recovery (#338)
  fix(workflows): clarify controls and align compact workflow UI (#337)
  feat: add custom emoji from settings (#346)
  feat(channels): show typing status on sidebar dm rows (#305)
  fix(workflows): page batched definition reads (#325)

Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>

# Conflicts:
#	src/bundled/agents/AgentsPage.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants