Bump buzz-core/buzz-sdk pin to 209536ade (post-v0.5.3) + client-side follow-ups - #2
Merged
Conversation
v0.4.23 -> post-v0.5.3 (2026-07-31). The public API is purely additive over this range; the huddle wire protocol and NIP-OA are byte-identical. Notable behavioural changes upstream: channel names are canonicalized (leading '#' stripped, empty rejected), presence contract moved to a 60s heartbeat against a 180s relay TTL, and the relay REQ page ceiling is now honestly advertised as 1000. Brings in the IPv6 SSRF hardening (#2801), the invite module, build_user_status, and kind 30177/30178.
…e codes
Follows the upstream pin bump with the client-side work it enables:
- build_user_status_event / BuzzClient.set_status — kind 30315 on
d:general; blank text with no emoji clears the status.
- verify_auth_tag binding + buzzkit.agents.verify_agent_profile +
BuzzClient.resolve_agent — mirrors buzz-cli #3178: agent-by-name
lookup scoped to the owner's kind-30177 records, each candidate
profile requiring exactly one cryptographically valid NIP-OA auth
tag (conditions applying) to assert ownership.
- BuzzClient.close_code — surfaces the WebSocket close code so callers
owning the reconnect loop can honour 1012 (relay graceful restart).
- Presence docstring documents the new 60s/180s heartbeat contract
(older relays: 30s/90s); a canonicalization test pins the new
create-channel name behaviour ('#' stripped, empty rejected).
The hardcoded string had already drifted (0.1.3 vs pyproject's 0.1.4); importlib.metadata makes pyproject.toml the single source of truth.
Exposes the remaining zero-I/O buzz-sdk builders an agent needs to be a first-class channel citizen, each with a thin BuzzClient method: - threaded replies: reply_to/reply_root on build_message_event and send_message (NIP-10 root/reply markers) - react / remove_reaction (kinds 7 / 5) — e.g. acknowledge a request - edit_message (kind 40003) — refine streamed replies in place - delete_message (kind 9005 tombstone, optional room-facing reason) - set_topic (kind 9002), leave_channel (kind 9022) Reactions and edits post over the HTTP bridge; the NIP-29 management kinds (9005/9002/9022) publish over the WebSocket like join_channel.
Owner
Author
|
Added two more commits while we're here:
|
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
Bumps the
buzz-core/buzz-sdkgit pin fromacfbb1bb(v0.4.23, 2026-07-22) to209536ade(post-v0.5.3, 2026-07-31) — 255 upstream commits. The public API over this range is purely additive (310 → 329 items, nothing removed or re-signatured), the huddle Opus wire protocol is byte-identical (wire.rs / jitter.rs / playout.rs blob hashes unchanged on both client and relay sides), and the NIP-OA spec +nip_oa.rsare untouched.Also lands the client-side work the bump enables:
build_user_status_event+BuzzClient.set_status(kind 30315,d:general).verify_auth_tagbinding,buzzkit.agents.verify_agent_profile, andBuzzClient.resolve_agent— mirrors buzz-cli #3178 (owner-scoped kind-30177 lookup, exactly one cryptographically valid auth tag with applying conditions required to assert ownership).BuzzClient.close_codesurfaces the WebSocket close code so caller-owned reconnect loops can honour 1012 (relay graceful restart, upstream #3774).__version__now derives from package metadata (was hardcoded and had drifted).Behavioural changes validated
start_huddlenames are safe; new test pins'###dev'→devand empty →ValueErrorlist_channels500,resolve_agent1000, no pagination-as-exhaustion logic)close_code00ecf2cac)build_join_channel_eventis a plain self-join (role=bot on self);Also picked up for free: IPv6 SSRF hardening in
buzz-core::network(#2801), the invite v2 module, kinds 30177/30178.Checks
cargo fmt/clippy -D warnings/cargo test(10) /ruff check+format/ty/pytest(30 passed, 1 skipped live-relay) all green locally.