Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
1b7e5ac
feat(model-capabilities): drive model capabilities and labels from on…
wpfleger96 Aug 17, 2026
f716eef
fix(desktop): enforce shared agent access across devices (#6086)
wesbillman Aug 17, 2026
edc4a09
feat(workflows): add responsive library card actions (#6008)
tellaho Aug 17, 2026
5b3f037
fix(acp): replace Goose native system prompt (#5964)
atishpatel Aug 17, 2026
54f1121
fix(acp): gate relay-signed workflow messages on their attributed aut…
TheSentinel454 Aug 17, 2026
d12d825
fix(desktop): resolve agent profiles through one archive-aware select…
wpfleger96 Aug 17, 2026
076081b
Rename Bumble agent to Pollen (#5864)
klopez4212 Aug 17, 2026
85bacea
Remove GitHub security advisory commitment (#6144)
jmecom Aug 17, 2026
a282e06
fix(cli): keep project replacement timestamps at or after wall clock …
Illuminfti Aug 17, 2026
57feca2
fix(desktop): repair dropped team membership links at boot and on edi…
wpfleger96 Aug 17, 2026
439c037
fix(desktop): align preview sidebar row styling (#6163)
wesbillman Aug 17, 2026
f64899e
Remove Startup Recovery section in base prompt (#6161)
salman1993 Aug 17, 2026
f7a01bd
fix(workflows): preserve multi-channel listing semantics (#6009)
tellaho Aug 17, 2026
7f61cf4
Preserve managed agent mentions during relay errors (#6167)
wesbillman Aug 17, 2026
c8c8eb5
chore(release): release Buzz Desktop version 0.5.15 (#6173)
wesbillman Aug 17, 2026
f8692fa
test(desktop): cover exact workflow batch limit (#6168)
wesbillman Aug 17, 2026
ee992ff
fix(desktop): restore release agent mentions (#6182)
wesbillman Aug 18, 2026
978e585
chore(release): release Buzz Desktop version 0.5.16 (#6191)
wesbillman Aug 18, 2026
f0234f1
fix(desktop): eliminate mounted-view CPU burn — compositor-safe shimm…
wesbillman Aug 18, 2026
6d45f98
ci: make file-size policy a first-class gate (#6187)
wesbillman Aug 18, 2026
0819104
fix(desktop): bind presence retry timers (#6213)
wesbillman Aug 18, 2026
cc8a8b0
fix: bump h2 for RUSTSEC-2026-0258 (#6222)
loganj Aug 18, 2026
3fdf289
fix(desktop): bound remote agent mention authorization (#6224)
wesbillman Aug 18, 2026
5694e78
fix(mcp): scope todo usage (#6216)
salman1993 Aug 18, 2026
d2cfd37
fix(prompt): simplify pickup follow-through (#6186)
salman1993 Aug 18, 2026
8232299
chore(release): release Buzz Desktop version 0.5.17 (#6234)
wesbillman Aug 18, 2026
417eea2
Polish mobile timeline navigation (#5874)
klopez4212 Aug 18, 2026
c442a90
fix(desktop-chrome): preserve balanced layout when sidebar collapses …
tellaho Aug 18, 2026
d7e8fdb
fix(shared-ui): delay hover disclosures by default (#5821)
tellaho Aug 18, 2026
b74700d
chore(hooks): keep mobile analysis out of pre-commit (#6236)
wesbillman Aug 18, 2026
50a7113
feat(managed-agents): close five Claude Code agent-config gaps (#4557)
wpfleger96 Aug 18, 2026
4f9727a
chore(scripts): add buzz-adopt-prod-agents.sh (#6250)
wpfleger96 Aug 18, 2026
40f1dac
Refine mobile pairing confirmation (#6018)
klopez4212 Aug 18, 2026
78267b0
Polish mobile message actions (#5873)
klopez4212 Aug 18, 2026
6ea7a2b
fix(desktop): preserve early relay auth challenges (#3320)
tlongwell-block Aug 18, 2026
e2ade93
fix(desktop): downscale large avatars for agent-share PNG body (#6260)
wpfleger96 Aug 18, 2026
6e8d078
fix(desktop): emit camelCase config-write payload fields (#6062)
Chessing234 Aug 18, 2026
7e26517
Add font size and conversation density preferences (#5644)
klopez4212 Aug 18, 2026
121e4b3
fix(desktop): exclude archived agents from nest, order regeneration (…
wpfleger96 Aug 18, 2026
359fe64
Refine the mobile emoji picker (#5853)
klopez4212 Aug 18, 2026
a362fec
perf(desktop): parallelize relay agent directory rebuild (#6258)
wpfleger96 Aug 18, 2026
93114c9
Fix mobile Activity thread navigation (#5850)
klopez4212 Aug 18, 2026
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
da818ed
Polish mobile timeline and emoji interactions (#6297)
klopez4212 Aug 20, 2026
a9640c7
Add Buzz-native collaboration benchmarks (#6264)
salman1993 Aug 20, 2026
2b7be93
feat(desktop): make Projects workspaces selectable (#6368)
thomaspblock Aug 20, 2026
2a236e4
refactor(prompt): simplify Buzz agent guidance (#6340)
salman1993 Aug 20, 2026
e5d1dfe
feat(desktop): close Buzz window with Cmd+W (#6314)
kursmark-sq Aug 20, 2026
2e7583b
fix(desktop): distinguish duplicate agent devices (#6337)
wesbillman Aug 20, 2026
3c228b1
feat(desktop): refine context-aware Projects collaboration (#6396)
thomaspblock Aug 20, 2026
d274a6e
fix(acp): guard against unrequested public relay skills (#6394)
wpfleger96 Aug 20, 2026
2ce8df8
fix(models): curate Databricks alias-aware labels for 5 missing endpo…
wpfleger96 Aug 20, 2026
886cef7
test(desktop): use a wordlist-safe separator in passphrase word-count…
ngthuydiem Aug 20, 2026
7ebe3ea
fix(desktop): preserve huddle speech boundaries (#6397)
tlongwell-block Aug 20, 2026
1934e83
feat(workflows): add workflow editor (#6248)
tellaho Aug 20, 2026
84c095f
feat(cli): accept Buzz message links for thread reads (#6359)
morgmart Aug 20, 2026
ee0c707
Fix cross-owner relay agent mentions in owner-only builds (#6338)
wesbillman Aug 20, 2026
b728a2a
feat(llm): stamp thinking effort on call-completed log line (#6424)
wpfleger96 Aug 20, 2026
54bbe73
perf(desktop): resolve references without directory scans (#6328)
wpfleger96 Aug 20, 2026
3ee465e
Enforce a three-day dependency cooldown (#6426)
jmecom Aug 20, 2026
cd0d33f
fix(hooks): scope pre-push lanes to branch merge-base diff (#6423)
wpfleger96 Aug 20, 2026
06e8be9
fix(desktop): make reconnect repair lossless (#6415)
wesbillman Aug 20, 2026
b298a17
fix(desktop): isolate main timeline stacking context from focus drawe…
kruegermj Aug 20, 2026
569308c
fix(desktop): restore recent channel sorting (#6402)
wesbillman Aug 20, 2026
c63ac74
perf(desktop): split discover_acp_providers into cheap and forced pat…
wpfleger96 Aug 20, 2026
c6e3fe7
feat(workflows): reply in-thread from send_message action (#6178)
wpfleger96 Aug 20, 2026
de8a274
feat(desktop-messages): show compact Buzz link metadata (#6252)
tellaho Aug 21, 2026
24ec6a4
Repair stale large channel roster snapshots (#6251)
wesbillman Aug 21, 2026
9891e64
fix(desktop): clarify add agents channel action (#6374)
matt2e Aug 21, 2026
9b32e05
polish(desktop): finish Projects navigation and context chrome (#6429)
thomaspblock Aug 21, 2026
2edacde
chore(deps): pin earshot below 1.2.0 pending a VAD threshold re-pick …
tlongwell-block Aug 21, 2026
ffb12d3
Fix mobile thread tail and iOS channel header (#6399)
klopez4212 Aug 21, 2026
8740a1f
docs: clarify two-layer moderation ownership (#6481)
wpfleger96 Aug 21, 2026
4e3c9e6
fix(desktop): sender names in notifications + macOS click-through rou…
wesbillman Aug 21, 2026
b56a52c
test(benchmarks): expand Buzz-native dataset (#6448)
salman1993 Aug 21, 2026
aea0ef8
fix(desktop): simplify duplicate agent provenance (#6401)
wesbillman Aug 21, 2026
1e6f1a2
chore(release): release Buzz Desktop version 0.5.18 (#6489)
wesbillman Aug 21, 2026
6039fed
fix(desktop): restore human barge-in over agent TTS in huddles (#6431)
tlongwell-block Aug 21, 2026
fc2ce67
feat(archive): add observer-frame retention schema and gated DB adapt…
wpfleger96 Aug 21, 2026
7da8f9a
Clarify huddle message destination (#6496)
tlongwell-block Aug 21, 2026
aeb741f
Polish mobile channel navigation and message sends (#6488)
klopez4212 Aug 21, 2026
0254255
fix(benchmarks): wait for scripted event delivery (#6487)
salman1993 Aug 21, 2026
d97780b
docs(nips): comprehensive NIP-FI — core + claimable profiles (EDGE/LI…
tlongwell-block Aug 21, 2026
4752678
fix(deletion): allow IRSA S3 credentials (#6495)
bradseiler Aug 21, 2026
b0466ac
perf(desktop): keep the member roster off the channel-switch path (#6…
Maxwellimus Aug 21, 2026
b85d680
perf(desktop): stop the Projects fan refetching on re-entry and runni…
Maxwellimus Aug 21, 2026
0e48ff2
feat(workflows): clarify workflow setup and activation (#6470)
tellaho Aug 21, 2026
eb48438
chore(desktop): drop unused ORIGINAL_CONTENT from empty-edit-delete s…
Maxwellimus Aug 22, 2026
97b1fee
fix(desktop): restore true zoom by scaling the root rem (#6514)
morgmart Aug 22, 2026
694d804
chore(deps): update swatinem/rust-cache digest to 6323deb (#5441)
renovate[bot] Aug 22, 2026
9008a4d
chore(deps): update ubuntu:24.04 docker digest to 561618e (#5442)
renovate[bot] Aug 22, 2026
f84511c
chore(deps): update dependency @tauri-apps/api to v2.11.1 (#5444)
renovate[bot] Aug 22, 2026
2cef92d
chore(deps): update rust crate futures to v0.3.33 (#5445)
renovate[bot] Aug 22, 2026
d874d67
chore(deps): update rust crate futures-util to v0.3.33 (#5448)
renovate[bot] Aug 22, 2026
1a0a27d
chore(deps): update rust crate http to v1.4.2 (#5451)
renovate[bot] Aug 22, 2026
9390e11
chore(deps): update rust crate http-body-util to v0.1.4 (#5452)
renovate[bot] Aug 22, 2026
2d93ea0
chore(deps): update dependency sonner to v2.0.8 (#6093)
renovate[bot] Aug 22, 2026
f794216
chore(deps): update rust crate async-trait to v0.1.92 (#6094)
renovate[bot] Aug 22, 2026
0745612
fix(composer): preserve caret when inserting mentions mid-message (#6…
tellaho Aug 22, 2026
723affe
fix(desktop): remove Buzz entity link previews (#6512)
tellaho Aug 22, 2026
a2d8be5
feat(desktop-messages): keep agents addressed across messages (#6315)
tellaho Aug 22, 2026
8c0f42e
Add mobile Huddles voice MVP (#6056)
klopez4212 Aug 22, 2026
f995325
refactor(acp): clarify agent prompt sections (#6501)
salman1993 Aug 22, 2026
040b203
perf(desktop): make the Projects surface render-cheap (#6460)
Maxwellimus Aug 22, 2026
4baccd5
Downgrade mobile Huddles to audio protocol v2 (#6558)
klopez4212 Aug 22, 2026
e236329
Polish Huddle participant interactions (#6312)
klopez4212 Aug 22, 2026
0720f53
Downgrade desktop Huddles to audio protocol v2 (#6610)
klopez4212 Aug 23, 2026
2ed3cc7
Merge block/buzz main into 5dive-ai/buzz (DIVE-3708 weekly sync)
lodar Aug 24, 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
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .github/workflows/benchmark-harbor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ on:
branches: [main]
paths:
- "benchmarks/harbor-buzz-orchestra/**"
- "benchmarks/buzz-dataset/**"
- ".github/workflows/benchmark-harbor.yml"
pull_request:
paths:
- "benchmarks/harbor-buzz-orchestra/**"
- "benchmarks/buzz-dataset/**"
- ".github/workflows/benchmark-harbor.yml"

permissions:
Expand All @@ -31,6 +33,9 @@ jobs:
python -m pip install --disable-pip-version-check -e ".[dev]"
pytest -q
ruff check .
# The task verifiers live in the sibling benchmarks/buzz-dataset, so
# they need the harness config passed explicitly to stay linted.
ruff check --config pyproject.toml ../buzz-dataset
- name: Test provisioner
working-directory: benchmarks/harbor-buzz-orchestra/testbed
run: |
Expand Down
33 changes: 15 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ jobs:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 2
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: filter
with:
Expand All @@ -46,23 +47,21 @@ jobs:
- 'deny.toml'
- '.github/workflows/ci.yml'
- 'scripts/run-tests.sh'
- 'scripts/model-capabilities.json'
- 'scripts/normative-corpus.json'
- 'justfile'
desktop:
- 'scripts/check-file-sizes-core.mjs'
- 'scripts/check-file-sizes-core.test.mjs'
- 'scripts/model-capabilities.json'
- 'scripts/normative-corpus.json'
- 'desktop/**'
- '!desktop/src-tauri/**'
- 'pnpm-lock.yaml'
desktop-rust:
- 'desktop/src-tauri/**'
web:
- 'scripts/check-file-sizes-core.mjs'
- 'scripts/check-file-sizes-core.test.mjs'
- 'web/**'
- 'pnpm-lock.yaml'
mobile:
- 'scripts/check-file-sizes-core.mjs'
- 'scripts/check-file-sizes-core.test.mjs'
- 'mobile/**'
- 'scripts/mobile-release.sh'
- 'scripts/mobile-worktree-overrides.sh'
Expand All @@ -88,8 +87,8 @@ jobs:
scripts/test-mobile-release-candidate-publisher.sh
- name: Mobile worktree identity contract
run: scripts/test-mobile-worktree-overrides.sh
- name: File size ratchet unit tests
run: node --test scripts/check-file-sizes-core.test.mjs
- name: File size policy
run: just file-size-check

rust-lint:
name: Rust Lint
Expand All @@ -102,7 +101,7 @@ jobs:
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
save-if: ${{ github.event_name != 'pull_request' }}
- name: Format check
Expand All @@ -124,7 +123,7 @@ jobs:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
save-if: ${{ github.event_name != 'pull_request' }}
- name: Install cargo-nextest
Expand All @@ -148,7 +147,7 @@ jobs:
fetch-depth: 2
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
workspaces: desktop/src-tauri
save-if: ${{ github.event_name != 'pull_request' }}
Expand Down Expand Up @@ -341,7 +340,7 @@ jobs:
key: relay-artifacts-${{ runner.os }}-${{ hashFiles('crates/**', 'migrations/**', 'Dockerfile', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo/config.toml', '.github/workflows/ci.yml') }}
- uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1
if: steps.relay-artifacts-cache.outputs.cache-hit != 'true'
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
if: steps.relay-artifacts-cache.outputs.cache-hit != 'true'
with:
workspaces: |
Expand Down Expand Up @@ -764,7 +763,7 @@ jobs:
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
save-if: ${{ github.event_name != 'pull_request' }}
# Reuse the relay + git-credential-nostr built by Desktop E2E Relay
Expand Down Expand Up @@ -892,8 +891,6 @@ jobs:
with:
path: ~/.pub-cache
key: pub-${{ runner.os }}-${{ hashFiles('mobile/pubspec.lock') }}
- name: File size ratchet
run: node mobile/scripts/check-file-sizes.mjs
- name: Format check
run: cd mobile && dart format --output=none --set-exit-if-changed .
- name: Analyze
Expand Down Expand Up @@ -955,7 +952,7 @@ jobs:
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
key: cross-${{ matrix.target }}
save-if: ${{ github.event_name != 'pull_request' }}
Expand Down Expand Up @@ -996,7 +993,7 @@ jobs:
# toolchain (1.95.0 + clippy via profile = default) comes from the
# repo-root rust-toolchain.toml, which the runner's preinstalled rustup
# honors on demand; the host triple already is x86_64-pc-windows-msvc.
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
workspaces: |
.
Expand Down Expand Up @@ -1073,7 +1070,7 @@ jobs:
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
workspaces: desktop/src-tauri
save-if: ${{ github.event_name != 'pull_request' }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/desktop-release-cache-proof.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
name: Prove Linux cache visibility
if: github.repository == 'block/buzz'
runs-on: ubuntu-latest
container: ubuntu:24.04@sha256:4fbb8e6a8395de5a7550b33509421a2bafbc0aab6c06ba2cef9ebffbc7092d90
container: ubuntu:24.04@sha256:561618e2c15bf2397621dd04f96926663a3b5616c189cf7e38db7e82f5c538ea
timeout-minutes: 15
defaults:
run:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
name: Build Linux canary
if: github.repository == 'block/buzz'
runs-on: ubuntu-latest
container: ubuntu:24.04@sha256:4fbb8e6a8395de5a7550b33509421a2bafbc0aab6c06ba2cef9ebffbc7092d90
container: ubuntu:24.04@sha256:561618e2c15bf2397621dd04f96926663a3b5616c189cf7e38db7e82f5c538ea
timeout-minutes: 60
permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mesh-lifecycle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:

- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1

- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
save-if: ${{ github.event_name != 'pull_request' }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ jobs:
if: github.repository == 'block/buzz'
runs-on: ubuntu-latest
# Digest-pinned like the SHA-pinned actions below; Renovate keeps it fresh.
container: ubuntu:24.04@sha256:4fbb8e6a8395de5a7550b33509421a2bafbc0aab6c06ba2cef9ebffbc7092d90
container: ubuntu:24.04@sha256:561618e2c15bf2397621dd04f96926663a3b5616c189cf7e38db7e82f5c538ea
needs: setup
timeout-minutes: 60
permissions:
Expand Down Expand Up @@ -511,7 +511,7 @@ jobs:

- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1

- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
workspaces: desktop/src-tauri
lookup-only: true
Expand Down
14 changes: 7 additions & 7 deletions .release/desktop-candidate.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"schema": 2,
"version": "0.5.14",
"base_sha": "1b3dbcaaea882eeea90359c1db02e306d2f4f50a",
"previous_tag": "desktop-v0.5.13",
"previous_base_sha": "09768100ec3420f0aa7cd278bd00fe0baab5de8d",
"previous_merge_sha": "51beba603886d34e751349d12b33c0c5aeb92c28",
"tag": "desktop-v0.5.14",
"commit_count": 1
"version": "0.5.18",
"base_sha": "aea0ef8df9fc24d9aa8bf5c761ab2910026a601b",
"previous_tag": "desktop-v0.5.17",
"previous_base_sha": "3fdf289b78c40f80abce86575c25b5ed6361d82c",
"previous_merge_sha": "8232299cbe6d90692fac3de46cde0ec123edd6c1",
"tag": "desktop-v0.5.18",
"commit_count": 66
}
65 changes: 43 additions & 22 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,27 @@ Run `just test` for integration tests if you touched `buzz-relay`,
formatting via `stage_fixed`. Pre-commit runs fix variants in parallel (Rust
fmt, Tauri Rust fmt, desktop biome fix, web biome fix, mobile dart format).
Auto-fixable issues are fixed and re-staged; unfixable lint issues block the
commit. **Pre-push hooks** run clippy (workspace + Tauri), desktop TypeScript
typechecking (`tsc --noEmit`), and fast unit tests in parallel (Rust, desktop
JS, Tauri Rust, mobile Flutter) — no overlap with pre-commit. Builds are
CI-only. Run `just fix-all` to auto-fix all formatting in one shot. Run
`just ci` for the full local gate. Run `just hooks` to
re-install hooks after env changes. Before agents run Git or hooks, activate the
repo's Hermit environment (`. ./bin/activate-hermit`); do not rewrite hook
commands to compensate for an unconfigured shell `PATH`.
commit. **Pre-push hooks** run the repository-wide differential file-size gate,
clippy (workspace + Tauri), desktop TypeScript typechecking (`tsc --noEmit`),
and fast unit tests in parallel (Rust, desktop JS, Tauri Rust, mobile Flutter)
— no overlap with pre-commit. Builds are CI-only. Run `just fix-all` to auto-fix
all formatting in one shot. Run `just ci` for the full local gate. Run `just
hooks` to re-install hooks after env changes. Each globbed pre-push lane is
scoped to the branch's merge-base diff against `origin/main` (`git diff
origin/main...HEAD`), matching CI's paths-filter — so a lane only fires when this
branch actually changed a file it covers, never because `origin/main` moved.
These lanes validate the checked-out HEAD; pushing a non-HEAD ref (explicit
refspec, `--all`) gets a non-fatal `push-head-scope` warning and relies on CI for
its path-scoped checks.
Before agents run Git or hooks, activate the repo's Hermit environment
(`. ./bin/activate-hermit`) so `./bin` leads `PATH` and the pinned toolchain
(flutter, dart, lefthook) wins over any Homebrew version; do not
rewrite hook commands to compensate for an unconfigured shell `PATH`. The
pre-push hook self-pins regardless: `bin/.lefthookrc` (sourced by the generated
`.git/hooks/*`) prepends the Hermit `bin/` to `PATH` and pins `LEFTHOOK_BIN`, so
lane subprocesses resolve the pinned flutter/dart/lefthook even when an
unactivated shell has Homebrew first. Activating Hermit remains recommended for
non-hook commands.

**Commit with `git commit -s`.** The required **DCO Check** fails any PR with a commit missing a `Signed-off-by` trailer, and `just hooks` installs a `commit-msg` hook that adds it to commits you create locally (`git rebase` and `git cherry-pick` still need `--signoff`) — if you build commit commands programmatically, include `-s` every time. To repair a branch that already has unsigned commits: `git rebase --signoff main`, then force-push.

Expand Down Expand Up @@ -202,15 +215,16 @@ or invoke with the full path.
### Deep Links

`buzz://message?channel=<uuid>&id=<hex>` links reference a specific message
thread. To read the linked thread:
thread. Pass the link directly to the CLI:

```bash
buzz --format compact messages thread --channel <uuid> --event <hex>
buzz --format compact messages thread --link '<buzz://message?...>'
```

Extract `channel` and `id` from the URL query parameters. The optional
`thread` parameter (root event ID) can be ignored — `messages thread` resolves
the full thread from the event ID alone.
The selected message ID is authoritative: `messages thread` verifies its
channel and derives its containing root. An optional `thread` parameter is
accepted only when it matches that derived root. The explicit
`--channel <uuid> --event <hex>` form remains available.

All reads return sig-stripped JSON arrays; all writes return
`{event_id, accepted, message}`; creates add the entity ID. Exit codes:
Expand Down Expand Up @@ -476,11 +490,18 @@ are frozen.**
So for any readable text, reach for rem-based Tailwind tokens, never arbitrary
px:

- ✅ Stock rem tokens (`text-base`, `text-sm`, `text-xs`, …). **Chat body/author
text === `text-base` (16px) — chat is the app's base type size**, and the
surrounding timeline elements (timestamps, system rows, code, reactions) are
deliberate steps on that same stock ramp.
- ✅ The `text-2xs` (0.6875rem / 11px) and `text-3xs` (0.5rem / 8px) meta-text
- ✅ Stock rem tokens (`text-base`, `text-sm`, `text-xs`, …) for general
interface text. All of these derive from the virtual typography rem and
therefore follow the user's font-size preference and Cmd +/- zoom.
- ✅ Conversation text uses the named `text-message` token. Its
**Smaller / Default / Larger contract is 13 / 14 / 15px** before keyboard
zoom. Author names use the same conversation-size step; timestamps, system
rows, code, and reactions are deliberate neighboring steps on the shared
virtual-rem ramp. Keep those relationships tokenized rather than restoring a
fixed 16px chat baseline or hardcoding preference-specific values in
components.
- ✅ The `text-2xs` (0.6875rem / 11px at a 16px virtual rem) and `text-3xs`
(0.5rem / 8px at a 16px virtual rem) meta-text
tokens (in `desktop/tailwind.config.js` under `theme.extend.fontSize`) for the
sub-`text-xs` ramp — timestamps, count badges, tracking labels, tiny glyphs.
These replaced the dozens of arbitrary `text-[…rem]` literals that had drifted
Expand Down Expand Up @@ -566,10 +587,10 @@ The mobile app lives in `mobile/` — a Flutter app using Riverpod + Hooks.
- **Keep widgets small and composable.** One public widget per file; push
private sub-widgets (`_Foo`) into sibling `part` files under a
`<page>/` folder rather than growing the page file. Hard ceiling:
**1000 lines/file**, enforced by `mobile/scripts/check-file-sizes.mjs` via
`just mobile-check` (runs in `just check` + pre-push, mirroring desktop/web).
If the guard trips, **split the file — never bump the limit or add an
override to slip under it.**
**1000 lines/file**, enforced across Desktop, Web, and Mobile by the
repository-level `just file-size-check` gate (`just check`, CI, and every
pre-push). If the guard trips, **split the file — never bump the limit or add
an override to slip under it.**
- Feature modules must not import from other feature modules — only from
`shared/`.
- Use `Grid` tokens for spacing, `Radii` for border radius.
Expand Down
Loading
Loading