Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
87f8ff8
feat(desktop): refine repository-aware project workspaces (#6003)
thomaspblock Aug 19, 2026
e5a6e20
fix(desktop): morph the drawer panel icon instead of sliding it (#6306)
thomaspblock Aug 19, 2026
08eb46e
Revert "fix(acp): gate relay-signed workflow messages on their attrib…
TheSentinel454 Aug 19, 2026
a567dfc
Unify mobile channel details (#6113)
klopez4212 Aug 19, 2026
fe7c680
fix(desktop): hide archived channels from #/Tab autocomplete (#6156)
loganj Aug 19, 2026
196d62f
fix(media): accept portrait video resolutions (#6058)
jedwards27 Aug 19, 2026
bbd20fa
perf(desktop): move five hot renderer paths from JS into Rust (#6024)
tlongwell-block Aug 19, 2026
7f69b13
fix(buzz-dev-mcp): expand leading ~ in read_file/str_replace paths (#…
salman1993 Aug 19, 2026
934f332
fix(buzz-acp): loosen workspace-scan guardrail to allow named paths (…
salman1993 Aug 19, 2026
81567b7
chore: serialize mobile pre-push checks (#6322)
wpfleger96 Aug 19, 2026
f96f188
fix(desktop): restore emoji recents (#6263)
wesbillman Aug 19, 2026
9a1e861
Add appearance preference previews (#6193)
morgmart Aug 19, 2026
9c2f053
fix(desktop): show complete repository trees (#5102)
evanchen7 Aug 19, 2026
09718fb
refactor(desktop): coordinate TTS playback (#6341)
tlongwell-block Aug 20, 2026
f88cda9
feat(desktop): make the Projects overview follow the selected section…
thomaspblock Aug 20, 2026
c003dd4
Merge remote-tracking branch 'upstream/main' into upstream-sync-20260820
adrienlacombe Aug 20, 2026
9c44b68
fix(desktop): drop the PTT plugin builder upstream deleted
adrienlacombe Aug 20, 2026
52a91c5
docs(agents): record the Bitcoin markets patch surface and the PTT re…
adrienlacombe Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 39 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,12 @@ place.
| `linux-canary.yml`, `windows-canary.yml` | `RELEASE_REPO` guard | Were pinned to `block/buzz` |
| `infra/aws/` | new directory | Terraform deploying the relay to AWS account `618867225791` (`eu-west-3`) on ECS Fargate + RDS + ElastiCache + S3 + EFS, serving `wss://relay.bitcoinmarkets.app`. Upstream deploys via `deploy/charts/buzz` (Helm) and has no Terraform, so this adds only new paths and should never conflict. See [`infra/aws/README.md`](infra/aws/README.md) |
| `.github/workflows/deploy-aws.yml` | new | Continuous deployment of the relay to AWS on every push to `main`. Runs after `docker.yml` via `workflow_run`, authenticates by OIDC (no stored keys), and applies Terraform with the commit's immutable `:sha-<7>` image |
| `desktop/src/features/sidebar/ui/AppSidebarPinnedHeader.tsx` | Inbox and Markets share one primary-menu row | The nav entry point for [Bitcoin markets](#bitcoin-markets-fork-local-feature-31). Packing Markets as its own `SidebarMenuItem` pushed the sortable sections down and broke `virtualization.spec.ts` "06", so the two buttons live in one flex row inside a single height-stable item — the badge is `right-1` rather than upstream's `right-2` because the Inbox button is now half-width. **Upstream develops this file steadily and the fork's hunk sits on its first menu item, so expect a conflict whenever upstream reorders the primary menu.** #6003 (2026-08-20 sync) wrapped the whole header in a fragment and appended `<SidebarProjectsSection />`, which re-indented every line and conflicted; resolution is *take upstream's structure and indentation, re-seat the fork's combined row where upstream's plain Inbox item was* |
| `desktop/src/features/sidebar/ui/AppSidebar.tsx` + `AppSidebar.types.ts` | `markets` view, `onSelectMarkets`, `"markets"` in the `SidebarSelectedView` union | Threads the Markets selection down to the header row above. `AppSidebar.types.ts` is fork-added and additive; the `AppSidebar.tsx` changes are one-line insertions into existing prop lists, so they resolve as *keep ours, take upstream's* |
| `desktop/src/features/markets/**`, `desktop/src/app/routes/markets.tsx`, `desktop/src-tauri/src/commands/markets.rs`, `crates/buzz-core/src/markets.rs`, `crates/buzz-avnu-proxy/` | new | The [Bitcoin markets](#bitcoin-markets-fork-local-feature-31) implementation. All additive paths upstream has no counterpart for, so they should never conflict. Their *declaration* sites do — `commands/mod.rs`, `lib.rs`'s invoke handler, `crates/buzz-core/src/lib.rs`, `desktop/package.json`, `tsconfig.json`, `vite.config.ts`, `routes.ts`, `routeTree.gen.ts` — each a one-to-few-line insertion into an existing list |
| `desktop/src-tauri/src/relay/allowlist.rs` | new | Single-relay host allowlist. Upstream is multi-community by design; this fork ships a client that reaches only `relay.bitcoinmarkets.app`. **Lives under `relay/`, not at the crate root** — see the `relay.rs` row |
| `desktop/src-tauri/src/native_websocket.rs` | allowlist call in `open_connection` | The transport is the one path every relay session takes, so a host restriction there cannot be bypassed from the UI |
| `desktop/src-tauri/src/relay.rs` | release builds default to the allowlisted relay; also declares `pub mod allowlist;` | Without the default a release build uses `ws://localhost:3000`, which the allowlist then rejects — a client that cannot connect at all. The module is declared *here* because `lib.rs`'s sorted module list is a permanent conflict site, and because `lib.rs` was itself at the 1000-line desktop ratchet when the move was made in the 2026-08-01 sync. `lib.rs` now carries no fork patch at all. **`relay.rs` has since become the constrained file, and the ratchet is how you find out — as a red check, not a merge conflict.** Upstream #6187 (2026-08-19 sync) made the file-size policy a first-class gate: it is now `just file-size-check`, run repository-wide as the **`File size policy`** step of the `scripts` CI job, and it no longer hangs off the per-surface `desktop`/`web`/`mobile` path filters. So an overflow here fails on every PR regardless of which paths it touched, and it surfaces under `scripts` rather than `Desktop Core` — run `just file-size-check` locally to reproduce. The 2026-08-14 sync merged cleanly and pushed it 987 → 1002 against a hard limit of 1000 (`desktop/scripts/check-file-sizes.mjs`; upstream's own `mod get;` was +3, the fork's block +14). Fixed by condensing the fork's two comment blocks to 995, since AGENTS.md is where the reasoning belongs — **do not split or reorganise upstream's `relay.rs` to make room**, that trades 5 lines for a permanent conflict surface. Upstream is extracting submodules from this file on its own (`mod get;`, `mod submit;`), so the pressure should ease; if it does not, the fork's ~11 lines here are the budget to work within |
| `desktop/src-tauri/src/relay.rs` | release builds default to the allowlisted relay; also declares `pub mod allowlist;` | Without the default a release build uses `ws://localhost:3000`, which the allowlist then rejects — a client that cannot connect at all. The module is declared *here* because `lib.rs`'s sorted module list is a permanent conflict site, and because `lib.rs` was itself at the 1000-line desktop ratchet when the move was made in the 2026-08-01 sync. `lib.rs` now carries no fork patch at all. **`relay.rs` has since become the constrained file, and the ratchet is how you find out — as a red check, not a merge conflict.** Upstream #6187 (2026-08-19 sync) made the file-size policy a first-class gate: it is now `just file-size-check`, run repository-wide as the **`File size policy`** step of the `scripts` CI job, and it no longer hangs off the per-surface `desktop`/`web`/`mobile` path filters. So an overflow here fails on every PR regardless of which paths it touched, and it surfaces under `scripts` rather than `Desktop Core` — run `just file-size-check` locally to reproduce. The 2026-08-14 sync merged cleanly and pushed it 987 → 1002 against a hard limit of 1000 (`desktop/scripts/check-file-sizes.mjs`; upstream's own `mod get;` was +3, the fork's block +14). Fixed by condensing the fork's two comment blocks to 995, since AGENTS.md is where the reasoning belongs — **do not split or reorganise upstream's `relay.rs` to make room**, that trades 5 lines for a permanent conflict surface. Upstream is extracting submodules from this file on its own (`mod get;`, `mod submit;`), so the pressure should ease; if it does not, the fork's ~11 lines here are the budget to work within. **It has not eased, and the budget is now nearly spent.** The 2026-08-20 sync merged cleanly and pushed it 996 → 1003; condensing the fork's two comment blocks again — 5 comment lines down to 2, one per block — brought it to 999. That leaves ~4 fork lines in this file (2 comments, 2 code) and no further comment slack, so the next overflow cannot be absorbed the same way. **When it recurs, move `pub mod allowlist;` back to `lib.rs` rather than touching upstream's code here** — `lib.rs` was the reason for the original move and is now 936 lines with 64 to spare, so the conflict-surface trade has reversed. Re-check both line counts before deciding; do not split upstream's `relay.rs` |
| `mobile/lib/shared/relay/relay_allowlist.dart` | new | Mobile counterpart. Skips enforcement under `flutter test` (`FLUTTER_TEST`) because upstream tests use `wss://relay.example.com`; editing those 13 files would be a large permanent conflict surface |
| `mobile/lib/shared/relay/relay_socket.dart` | allowlist call in `connect()` | Transport choke point, as on desktop |
| `mobile/lib/shared/relay/relay_validation.dart` | allowlist call after the shape checks | One hunk covers all four invite/deep-link call sites; placed after the existing checks so malformed input keeps its original error |
Expand All @@ -219,6 +222,41 @@ place.
| `scripts/mobile-worktree-overrides.sh` | branch-labelled debug name | Generates the gitignored per-worktree `APP_DISPLAY_NAME` |
| `scripts/test-mobile-worktree-overrides.sh` | assertions derive the production name from `mobile-worktree-overrides.sh` instead of matching the literal `Buzz` | Four assertions hardcoded `Buzz` and **failed CI on `main` for three commits** after the rename (`ff5e83c28`…`684a15f50`), cascading into `Desktop` and `Desktop E2E Integration` through their gate steps. Deriving the name tests the contract the file is for — release unlabelled, debug labelled, iOS and Android agreeing — so a future rename cannot fail it for the wrong reason |

#### Bitcoin markets (fork-local, feature #31)

A hidden-L2, Lightning-funded Bitcoin difficulty betting surface, added by
`1e80e837a` (#31). It is a substantial fork-local feature — ~40 files, a new
crate (`buzz-avnu-proxy`), a new `buzz-core` module, a new Tauri command module,
and a new desktop route — and it went **eleven syncs with no row in the patch
table above**. The 2026-08-20 sync paid for that: upstream #6003 conflicted in
`AppSidebarPinnedHeader.tsx` and the resolver had nothing to consult, having to
reconstruct the fork's intent from `git log` on the file. The rows are there now;
keep them current.

Almost all of it is additive and cannot conflict. What conflicts is the small set
of *declaration* and *nav* sites listed in the table, and of those only
`AppSidebarPinnedHeader.tsx` sits in a file upstream actively redesigns.

**Its file-size relocation was superseded by upstream and has been deleted.** To
shed 92 lines from `desktop/src-tauri/src/lib.rs` under the 1000-line ratchet, #31
moved the PTT global-shortcut plugin construction out of `lib.rs` and into
`ptt_shortcut.rs` as `global_shortcut_plugin()`. Upstream's #6024 then made the
*same* relocation into the *same* file, naming it `install()` and additionally
giving it a `cfg(test)` no-op arm. The fork's copy was dropped in the 2026-08-20
sync and `ptt_shortcut.rs` is now byte-identical to upstream again.

**The way that failure presents is worth remembering.** Both sides moved the same
code to the same file, but into different regions of it, so git auto-merged and
kept **both** copies with no conflict marker anywhere. `lib.rs` calls only
`install()`, so the fork's copy became unreferenced — and it surfaced as
``error: function `global_shortcut_plugin` is never used`` from
`cargo clippy --manifest-path desktop/src-tauri/Cargo.toml --all-targets`, which
reads like a fresh upstream defect rather than a merge artifact. A duplicated
relocation is invisible to `git diff --stat` on the merge and invisible to the
file-size gate (it makes the file *bigger*, not smaller). Tauri clippy is the only
gate that catches it, which is a reason not to skip it when a sync looks
frontend-only.

#### Dependabot can open a fork-local divergence that looks like routine upkeep

`benchmarks/harbor-buzz-orchestra/testbed/uv.lock` is **deliberately byte-identical
Expand Down
2 changes: 1 addition & 1 deletion crates/buzz-acp/src/base_prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ Your persistent workspace is in your working directory:

Knowledge files use `ALL_CAPS_WITH_UNDERSCORES.md` naming. `AGENTS.md` lists active agents and roles. See `AGENTS.md` in your working directory for full workspace conventions.

These paths are relative to your working directory — keep exploration there. Never run `find` or recursive searches over `$HOME` or `/` hunting for workspace files: they live under your working directory, not elsewhere on disk.
These paths are relative to your working directory — start there for your own files rather than scanning `$HOME` or `/`. When the user names a specific path, read it.

## Agent Memory

Expand Down
Loading
Loading