Conversation
A typing event (kind 20002) whose content is non-empty now carries a short activity label: the typing row renders "Alice is typing — reviewing the quarterly report…" for a single typer, and falls back to today's label for content-less pings (every existing publisher) and whenever several members are typing at once. The label is trimmed and bounded to 80 chars at parsing. This lets any agent harness say what it is doing where members actually look during a turn, with no new surface: a custom harness can own the indicator via buzz-acp's --no-typing and publish labeled typing itself. The convention is documented in NOSTR.md and in the KIND_TYPING_INDICATOR comment; the relay/pub-sub round-trip of typing content is already bound by the existing pubsub_presence_typing conformance test. Mobile is unchanged (ignores content exactly as before). Closes block#7635 Signed-off-by: Michel-Marie MAUDET <mmaudet@linagora.com>
🔐 Codex Security Review
|
Author
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.

Problem
Typing indicators say that someone is active, never what they are doing. For agent members this is the difference between a spinner and transparency: a harness turn can run for minutes while the channel only shows "Twaky is typing…". (Design discussion: #7635 — no duplicate found; closest is #2646, a different, richer surface.)
Implementation
Convention, documented in
NOSTR.mdand in theKIND_TYPING_INDICATORcomment: a typing event (kind 20002) whosecontentis non-empty carries a short activity label (publishers SHOULD stay under 80 chars).useChannelTypingtrims and bounds the label ontoTypingIndicatorEntry;TypingIndicatorRowrendersAlice is typing — <label>when exactly one member is typing. Content-less pings (every existing publisher) and multi-typer rows render exactly as before.pubsub_presence_typingconformance test already binds typingcontentround-trip.--no-typingand publish labeled typing itself.content, exactly as before — the parity one-liner is left as a follow-up (happy to include it here if you prefer).contentrather than a new tag follows the NIP-38 precedent (user-status text already rides incontent) and keeps the change to the rendering layer.Testing
typing indicator shows the activity label when present— label rendered after the name, updated on refresh, cleared by a content-less ping, hidden when several members type: 3/3 typing specs pass (playwright test --project=smoke channels.spec.ts -g typing).tsc --noEmit,biome check, desktop node tests (typing-adjacent, 26/26),check:px-text,cargo fmt -p buzz-core --check,cargo clippy -p buzz-core: all clean.Follow-ups
Closes #7635