Proposal: an optional activity label in typing indicators (kind 20002)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- desktop, documentation, testing
Direzione di ricerca
Inizia con useChannelTyping e TypingIndicatorRow per tracciare come gli eventi di digitazione raggiungono la riga di digitazione desktop, quindi esamina il bridge simulato e la copertura E2E esistente. Esamina kind.rs e NOSTR.md per la definizione dell’evento di digitazione e le aspettative relative alla documentazione. Il lavoro è completato quando il contenuto non vuoto viene limitato e mostrato per un solo utente che sta digitando, il contenuto vuoto rimane invariato, pub/sub lo trasmette in entrambe le direzioni e la copertura elencata ha esito positivo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Typing indicators (kind 20002) tell members that someone is active, but never what they are doing. For agent members (buzz-acp harnesses, custom bots), a short activity label in the typing row — Twaky is typing — reading the Journal… — would make agents noticeably more transparent without any new UI surface.
Motivation / use case
We run a personal agent (Twaky) inside Buzz communities. While a turn runs (15 s to several minutes) the channel only shows "Twaky is typing…". We currently publish a per-tool status as a NIP-38 user status (kind 30315); it works with zero upstream change, but renders subtly (emoji + tooltip next to the agent's name) — away from where users actually look during a turn: the typing row.
An optional activity label on the typing event itself solves this exactly where users look, for any agent harness, with no new surface.
Closest existing work I found: #2646 (live agent activity in status pills — a different, richer surface; this proposal is deliberately much dumber). No duplicate found in open issues/PRs.
Proposal
Convention: a typing event whose content is non-empty carries a short activity label (publishers SHOULD keep it under ~80 characters). Clients rendering the typing row append it when exactly one member is typing:
Alice is typing — reviewing the quarterly report…- Empty content (what every publisher sends today): unchanged
Alice is typing….
Why content rather than a new tag:
- NIP-38 precedent: user-status text already rides in
content(kind 30315). - No structural change anywhere: the relay already fans ephemeral events out verbatim (the PR adds a conformance assertion that typing content round-trips through pub/sub).
- Mobile can adopt later with a one-line read.
What this is NOT:
- Not a change to buzz-acp: it cannot know its agent's current activity, and harnesses that publish their own labeled typing can already own the indicator via
--no-typing. A static configured label could be a follow-up if you want one. - Not ACP-derived activity: that overlaps with the agent-activity work already in flight (#2646); this works for any publisher, including non-ACP bots.
Scope of the PR I intend to send
- Desktop: parse + bound the label in
useChannelTyping, thread it toTypingIndicatorRow(rendered in the single-typer case only), mock-bridge support, E2E coverage. - Conformance: assert a typing event's
contentround-trips through pub/sub. - Docs:
NOSTR.mdand thekind.rscomment forKIND_TYPING_INDICATOR. - Mobile: unchanged (ignores
contentexactly as today); happy to include the parity one-liner in the same PR if you prefer.
Backward compatibility is total: every existing publisher sends empty content, every current client ignores it, and old clients keep rendering today's label.
Happy to adjust the convention (tag vs content, length cap, multi-typer behavior) before I finalize.
- Lingua principale
- Rust
- Stelle
- 33.7k
- Fork
- 4.4k
- Merge medio
- 1g 21h
- PR unite (30g)
- 239
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di block/buzz
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
workflow_sink's mention parser never masks code regions — @name inside a code span wakes the agent Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 88/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
Issue simili
-
has_tail_capacity wraps and get_writable_raw_unchecked commits raw_len before the bounds check Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
stratum-mining/stratum#2404 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
Axis areas are always keyboard-focusable (Sense::drag), even with allow_axis_zoom_drag(false) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
bug team:backend track:services-maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cowprotocol/services#4950 ·