Skip to content

fix(desktop): preserve shared agent fidelity - #3553

Merged
wesbillman merged 2 commits into
mainfrom
carl/fix-shared-agent-fidelity
Jul 29, 2026
Merged

fix(desktop): preserve shared agent fidelity#3553
wesbillman merged 2 commits into
mainfrom
carl/fix-shared-agent-fidelity

Conversation

@wesbillman

Copy link
Copy Markdown
Collaborator

Summary

Fixes two distinct fidelity failures in direct agent sharing:

  • The sender now puts the same effective avatar shown on the agent card into People-share and file-export snapshot PNGs, including profile/kind:0 fallback avatars.
  • The importer now persists the visible PNG body as the portable avatar instead of ignoring it in favor of sender-local manifest references.
  • Export materializes inherited runtime, provider, and model identifiers verbatim, while preserving explicit definition values. It does not translate or substitute configuration for a different recipient setup.
  • Sharing waits for a profile-only fallback avatar query, preventing an early-click race.

The PNG import path keeps the existing safety invariant: decode is capped at 2048×2048 / 32 MiB and re-encoded avatars above the 2 MiB inline limit fall back to the manifest reference. The exact transparent 1×1 no-avatar placeholder is ignored.

The original Tyler↔Wes screenshot demonstrates both stages: Wren's attachment had an avatar that disappeared after Add agent (receiver/import failure), while Pinky's attachment was already blank (sender/projection failure).

Related issue

N/A — reported and traced in the linked Buzz conversation.

Testing

  • cargo test --manifest-path desktop/src-tauri/Cargo.toml commands::personas::snapshot — 57 passed
  • pnpm exec tsc --noEmit
  • Biome check on changed frontend/E2E files
  • Pre-push hooks:
    • desktop check
    • desktop tests
    • desktop Tauri tests — 1853 passed, 14 ignored
    • file-size ratchet

The People-share E2E regression asserts that a profile-only avatar reaches avatarPngDataUrl in the real encode command payload.

Carry the effective avatar into snapshot PNGs, recover portable avatar pixels
on import, and materialize inherited runtime configuration without translating
provider or model identifiers.

Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
@wesbillman
wesbillman requested a review from a team as a code owner July 29, 2026 14:45
The helpers are imported locally by the tests that use them. Removing the
module-level duplicates keeps the all-targets clippy build warning-free.

Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
@wesbillman
wesbillman merged commit f7a3988 into main Jul 29, 2026
25 checks passed
@wesbillman
wesbillman deleted the carl/fix-shared-agent-fidelity branch July 29, 2026 15:13
wesbillman added a commit that referenced this pull request Jul 29, 2026
## Summary

- run Desktop Tauri clippy from pre-push for every path that can affect
the Tauri crate
- reuse `just desktop-tauri-clippy`, keeping the local command identical
to Desktop Core CI
- leave the existing Tauri test hook unchanged

## Why

PR #3553 exposed a hook gap: `cargo test` allowed an unused-import
warning that CI's `clippy -D warnings` correctly rejected. Running the
same recipe before push catches that class of failure locally without
duplicating CI flags in Lefthook.

## Validation

- `lefthook run pre-push --command desktop-tauri-clippy --force`
- confirmed it invokes `cargo clippy --manifest-path
desktop/src-tauri/Cargo.toml --all-targets -- -D warnings`
- command passed

Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>
wesbillman added a commit that referenced this pull request Jul 29, 2026
## Buzz Desktop release v0.5.1

### Changes since v0.5.0:

- perf(desktop): move observer-feed archive and decrypt commands off
main thread ([#3415](#3415))
([`294c8c821`](294c8c8))
- fix(desktop): preserve shared agent fidelity
([#3553](#3553))
([`f7a3988ba`](f7a3988))
- feat(agent): route Claude/GPT model families to their native gateway
wire ([#3538](#3538))
([`6438dedf8`](6438ded))
- Refine community invite limits
([#3529](#3529))
([`24d90d128`](24d90d1))
- feat(agent): fix Anthropic prompt caching with Databricks (+ MCP
proxy/TLS passthrough)
([#3463](#3463))
([`c405ad1d4`](c405ad1))
- feat: add explicit entry for claude-opus-5 in model config
([#2831](#2831))
([`90e058ebf`](90e058e))
- fix(desktop): clear stale thread new-message pill
([#3411](#3411))
([`55a3ed7b9`](55a3ed7))
- fix(ci): ratchet file sizes against the base tree
([#3352](#3352))
([`9227bdf58`](9227bdf))
- feat(desktop): apply WebKit rendering workarounds at startup on Linux
([#3271](#3271))
([`3ece4461d`](3ece446))
- fix(desktop): stabilize flaky DM expansion E2E ordering assertions
([#2004](#2004))
([`913d564ce`](913d564))
- fix(desktop): paint community rail full height
([#3382](#3382))
([`1d3b810ad`](1d3b810))
- feat(desktop): add custom harness inline from agent dialogs
([#3252](#3252))
([`b0503d80c`](b0503d8))
- feat(desktop): refine agent catalog sharing
([#2439](#2439))
([`a35771fc4`](a35771f))
- fix(desktop): keep drafts out of the Inbox All view
([#3217](#3217))
([`3afa129ee`](3afa129))
- fix(desktop): restore the inbox icon in the sidebar
([#3341](#3341))
([`00ede2e7a`](00ede2e))
- fix(desktop): gate codex-acp on a minimum supported version
([#3254](#3254))
([`4e3998f36`](4e3998f))
- feat(cli): add users set-status command for NIP-38 profile status
([#3253](#3253))
([`60158fce3`](60158fc))
- fix(composer): scope multiline block formatting
([#3246](#3246))
([`5457c947a`](5457c94))

**To release:** merge this PR. The tag and build will happen
automatically.

Signed-off-by: Wes <wesbillman@users.noreply.github.com>
joahg added a commit to joahg/buzz that referenced this pull request Jul 29, 2026
…-style

* origin/main:
  chore(release): release Buzz Desktop version 0.5.1 (block#3566)
  Run Tauri clippy in pre-push (block#3555)
  perf(desktop): move observer-feed archive and decrypt commands off main thread (block#3415)
  fix(desktop): preserve shared agent fidelity (block#3553)
  Polish mobile navigation and menus (block#3486)
  feat(agent): route Claude/GPT model families to their native gateway wire (block#3538)
  Refine community invite limits (block#3529)
  Polish mobile typing indicator (block#3528)

Signed-off-by: Joah Gerstenberg <joah@squareup.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant