From 0f719b525542dbe92da0497e8d2dec7add49af94 Mon Sep 17 00:00:00 2001 From: Blake McAnally Date: Fri, 30 Oct 2026 15:51:38 -0500 Subject: [PATCH] docs(cli): note concurrent sidebar sections edits can overwrite Each `sidebar sections` command reads the head and publishes the full snapshot, so concurrent edits from another CLI run or another client can overwrite each other and the last publish wins. Document this in the command help, the CLI README, and the nest skill. The relay-side compare-and-set fix is tracked in block/buzz#8805. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Blake McAnally --- crates/buzz-cli/README.md | 3 ++- crates/buzz-cli/src/lib.rs | 4 ++++ desktop/src-tauri/src/managed_agents/nest.rs | 2 +- desktop/src-tauri/src/managed_agents/nest_skill.md | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/buzz-cli/README.md b/crates/buzz-cli/README.md index b68d1e33de..4aebfa55bf 100644 --- a/crates/buzz-cli/README.md +++ b/crates/buzz-cli/README.md @@ -164,7 +164,8 @@ buzz channels list | jq '.[].name' `sidebar sections` edits the signing identity's own sidebar. Each command is one read and one publish, so a multi-channel `move` lands together. `--section` takes a section id or a unique section name. A repeated command prints -`"message": "unchanged"` and publishes nothing. +`"message": "unchanged"` and publishes nothing. Concurrent edits from another +CLI run or another client can overwrite each other, and the last publish wins. `protect set` replaces every existing rule for the exact ref pattern. Any constraint omitted from the command is removed. `protect list` reports malformed diff --git a/crates/buzz-cli/src/lib.rs b/crates/buzz-cli/src/lib.rs index 5a1e8ae6d2..df2924eece 100644 --- a/crates/buzz-cli/src/lib.rs +++ b/crates/buzz-cli/src/lib.rs @@ -1028,6 +1028,10 @@ pub enum ReactionsCmd { #[derive(Subcommand)] pub enum SidebarCmd { /// List, create, and arrange your channel sections (synced with Buzz desktop) + /// + /// Each edit reads your current sections and publishes the full result. + /// Concurrent edits from another CLI run or another client can overwrite + /// each other, and the last publish wins. #[command(subcommand)] Sections(SidebarSectionsCmd), } diff --git a/desktop/src-tauri/src/managed_agents/nest.rs b/desktop/src-tauri/src/managed_agents/nest.rs index 4f8adbc11d..c4b108c561 100644 --- a/desktop/src-tauri/src/managed_agents/nest.rs +++ b/desktop/src-tauri/src/managed_agents/nest.rs @@ -52,7 +52,7 @@ const NEST_AGENTS_VERSION: u32 = 7; /// Template content version for SKILL.md. /// Bump this when changing `nest_skill.md` to trigger refresh on existing installs. -const NEST_SKILL_VERSION: u32 = 7; +const NEST_SKILL_VERSION: u32 = 8; const BEGIN_MARKER: &str = ""; diff --git a/desktop/src-tauri/src/managed_agents/nest_skill.md b/desktop/src-tauri/src/managed_agents/nest_skill.md index 01542b2581..0d6b14cdac 100644 --- a/desktop/src-tauri/src/managed_agents/nest_skill.md +++ b/desktop/src-tauri/src/managed_agents/nest_skill.md @@ -71,6 +71,8 @@ Output varies by command group — `--help` shows flags but not response shapes. | `reactions get` | `{"reactions": [{emoji, count, pubkeys}]}` — aggregated, not raw events | | `pack validate/inspect` | human-readable text, not JSON | +`sidebar sections` commands each read and then publish your full sections list. Concurrent edits from another CLI run or another client can overwrite each other, and the last publish wins. + **Errors** go to stderr as `{"error": "", "message": ""}`. Exit codes: 0 = success, 1 = input/not-found, 2 = relay/network, 3 = auth, 4 = other, 5 = write conflict (value superseded). ## Compact Format