Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/buzz-cli/TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ buzz users presence --pubkeys "$MY_PUBKEY" | jq .
buzz users set-presence --status online | jq .
buzz users set-presence --status away | jq .
buzz users set-presence --status offline | jq .
# Note: set-presence may fail — kind:20001 is ephemeral and rejected by the HTTP bridge
# set-presence publishes kind:20001 over WebSocket because ephemeral events are rejected by the HTTP bridge

# users set-status — NIP-38 kind:30315 on the d:general coordinate
buzz users set-status --text "reviewing PRs" --emoji "🔍" | jq .
Expand Down
2 changes: 1 addition & 1 deletion desktop/src-tauri/src/managed_agents/nest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const NEST_AGENTS_VERSION: u32 = 5;

/// Template content version for SKILL.md.
/// Bump this when changing `nest_skill.md` to trigger refresh on existing installs.
const NEST_SKILL_VERSION: u32 = 5;
const NEST_SKILL_VERSION: u32 = 6;

const BEGIN_MARKER: &str = "<!-- BEGIN BUZZ MANAGED";
const END_MARKER: &str = "<!-- END BUZZ MANAGED -->";
Expand Down
27 changes: 27 additions & 0 deletions desktop/src-tauri/src/managed_agents/nest/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,33 @@ fn refresh_skips_when_version_current() {
);
}

#[test]
fn refresh_skill_updates_presence_guidance_from_version_five() {
let tmp = tempfile::tempdir().unwrap();
let root = tmp.path().join(".buzz");
ensure_nest_at(&root).unwrap();

let skill_dir = root.join(".agents/skills/buzz-cli");
fs::write(
skill_dir.join("SKILL.md"),
"# Buzz CLI Skill\n\n**`users set-presence` is broken** — will fail until WebSocket support is added.\n",
)
.unwrap();
fs::write(skill_dir.join(".skill-version"), "5\n").unwrap();

ensure_nest_at(&root).unwrap();

let content = fs::read_to_string(skill_dir.join("SKILL.md")).unwrap();
assert_eq!(content, BUZZ_CLI_SKILL_MD);
assert!(!content.contains("**`users set-presence` is broken**"));
assert_eq!(
fs::read_to_string(skill_dir.join(".skill-version"))
.unwrap()
.trim(),
NEST_SKILL_VERSION.to_string()
);
}

#[test]
fn refresh_skill_overwrites_on_version_bump() {
let tmp = tempfile::tempdir().unwrap();
Expand Down
2 changes: 1 addition & 1 deletion desktop/src-tauri/src/managed_agents/nest_skill.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ buzz messages send --channel <UUID> \
## Gotchas

1. **`feed get` sorts newest-first** — every other list command sorts oldest-first. Don't assume consistent sort order.
2. **`users set-presence` is broken** — sends ephemeral kind:20001 via HTTP POST; relay rejects ephemeral kinds over HTTP. Will fail until WebSocket support is added.
2. **`users set-presence` uses WebSocket** — it publishes ephemeral kind:20001 over the authenticated WebSocket connection because the relay rejects ephemeral kinds over HTTP.
3. **`workflow runs` always returns `[]`** — run history lives in the relay's database, not as Nostr events.
4. **`dms open` returns `dm_id`** — use this value as `--channel` for subsequent `messages send/get` commands on that DM.
5. **Content max 65,536 bytes** (exit 1 if exceeded). Diffs auto-truncate at 61,440 bytes at a hunk boundary.
Expand Down