feat(cli): add users set-status command for NIP-38 profile status - #3253
Merged
Conversation
The desktop client renders a persistent user status (kind:30315, d:general) on profiles, but the CLI had no way to set it — only ephemeral presence. Integrations such as a now-playing music bridge need a scriptable way to update the status line. `buzz users set-status --text "..." [--emoji "🎶"]` signs and submits the replaceable status event via the HTTP bridge. Empty text clears the status. Signed-off-by: Kagan Yaldizkaya <kagan@squareup.com>
The command built its kind:30315 event inline with a raw EventBuilder and a duplicated 30315 literal, bypassing buzz-sdk as the typed write boundary and leaving the event shape untested. build_user_status() now owns the d:general coordinate, trimming, and emoji omission, keyed off buzz-core's KIND_USER_STATUS. An empty --text no longer implies clearing: it left an emoji-only status whenever --emoji was supplied, which contradicted the help text. Clearing is now the explicit --clear flag, mutually exclusive with --text/--emoji, and --text "" --emoji "..." is an intentional emoji-only status. Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
buzz users set-status for the NIP-38 profile status line
wpfleger96
approved these changes
Jul 28, 2026
LordMelkor
added a commit
to LordMelkor/buzz
that referenced
this pull request
Jul 28, 2026
* origin/main: chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313) Polish mobile message and search layouts (block#3121) Add mobile message image galleries (block#3312) Signed-off-by: LordMelkor <kray@squareup.com>
tlongwell-block
pushed a commit
that referenced
this pull request
Jul 28, 2026
* origin/main: fix(desktop): paint community rail full height (#3382) fix(acp): disable goose cron scheduler in managed agent children (#3144) feat(desktop): add custom harness inline from agent dialogs (#3252) chore(compose): remove stale typesense env vars (#3332) feat(desktop): refine agent catalog sharing (#2439) fix(desktop): keep drafts out of the Inbox All view (#3217) docs: restructure DCO guidance into scannable subsection (#3337) Unify mobile loading spinners (#3314) fix(desktop): restore the inbox icon in the sidebar (#3341) fix(desktop): gate codex-acp on a minimum supported version (#3254) feat(cli): add users set-status command for NIP-38 profile status (#3253) fix(composer): scope multiline block formatting (#3246) feat(chart): add relay pod extension points (#3322) Refine mobile attachment picking (#3313) Polish mobile message and search layouts (#3121) Add mobile message image galleries (#3312) Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz> # Conflicts: # desktop/src-tauri/src/commands/personas/snapshot/import.rs # desktop/src-tauri/src/managed_agents/agent_snapshot.rs # desktop/src/features/agents/ui/AgentSnapshotImportDialog.tsx
dophsquare
pushed a commit
to sailt-k/buzz
that referenced
this pull request
Jul 28, 2026
Pull in nostr 0.44.6 (patched NIP-44 v2 DoS advisory) to clear the Security/cargo-deny failure. No conflicts. Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: (74 commits) chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313) ...
dophsquare
pushed a commit
to SHL0MS/buzz
that referenced
this pull request
Jul 28, 2026
Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313)
dophsquare
pushed a commit
to linxule/buzz
that referenced
this pull request
Jul 28, 2026
Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246)
dophsquare
pushed a commit
to bhargavms/buzz
that referenced
this pull request
Jul 28, 2026
Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: (111 commits) chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313) ...
dophsquare
pushed a commit
to darox/buzz
that referenced
this pull request
Jul 28, 2026
Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: (84 commits) chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313) ...
dophsquare
pushed a commit
to skyerus/buzz
that referenced
this pull request
Jul 28, 2026
Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: (111 commits) chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313) ...
dophsquare
pushed a commit
to arisgysel-design/buzz
that referenced
this pull request
Jul 28, 2026
Co-authored-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> Signed-off-by: Phuoc (Phu) Do <91568955+dophsquare@users.noreply.github.com> * origin/main: (126 commits) chore(ci): bump desktop smoke E2E timeout to 30 minutes (block#3409) release(chart): publish 0.1.7 (block#3393) feat(acp): steer claude-code and codex agents via _session/steering (block#3007) feat(desktop): apply WebKit rendering workarounds at startup on Linux (block#3271) fix(desktop): stabilize flaky DM expansion E2E ordering assertions (block#2004) docs(contributing): document the Linux system libraries just ci requires (block#3396) fix(desktop): paint community rail full height (block#3382) fix(acp): disable goose cron scheduler in managed agent children (block#3144) feat(desktop): add custom harness inline from agent dialogs (block#3252) chore(compose): remove stale typesense env vars (block#3332) feat(desktop): refine agent catalog sharing (block#2439) fix(desktop): keep drafts out of the Inbox All view (block#3217) docs: restructure DCO guidance into scannable subsection (block#3337) Unify mobile loading spinners (block#3314) fix(desktop): restore the inbox icon in the sidebar (block#3341) fix(desktop): gate codex-acp on a minimum supported version (block#3254) feat(cli): add users set-status command for NIP-38 profile status (block#3253) fix(composer): scope multiline block formatting (block#3246) feat(chart): add relay pod extension points (block#3322) Refine mobile attachment picking (block#3313) ...
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.
Summary
The desktop client renders a persistent user status (NIP-38 kind:30315,
d:general) as the status line on profiles, but the CLI had no way to set it — only ephemeral presence (set-presence, kind:20001). Integrations that want a scriptable, durable status line (for example a now-playing music bridge that shows the current TIDAL track on a profile) had no entry point.Screenshots
This adds:
d:generalcoordinate the desktop client already reads for the profile status line, and the sameemojitag shapeSetStatusDialogpublishes.buzz_sdk::build_user_status(), keyed offbuzz_core::kind::KIND_USER_STATUS, so the CLI command is a thin sign/submit wrapper. Text and emoji are trimmed; a blank emoji is omitted rather than emitted as an empty tag.--clearflag, mutually exclusive with--text/--emoji. It publishes an empty-content event carrying onlyd:general, which the desktop treats as no status.--text ""with an--emojiis an emoji-only status, not a clear.