Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
284 commits
Select commit Hold shift + click to select a range
cec5c8f
fix(desktop): let inbox title and message author names truncate under…
cynfria Sep 10, 2026
0020907
fix(relay): reject presence updates when Redis storage fails (#7532)
loganj Sep 10, 2026
092c6a7
fix(markdown): align mention chip wrapping (#7501)
tellaho Sep 10, 2026
813bbd1
fix(acp): integrate the Buzz Pi adapter fork (#7552)
salman1993 Sep 11, 2026
6146c4f
feat(git): add default-branch management to relay and CLI (#7562)
wesbillman Sep 11, 2026
9847b09
test(desktop): isolate login-shell probe measurements (#7570)
wesbillman Sep 11, 2026
f3408fc
fix(desktop): isolate quota backoff and reuse channel discovery roste…
wesbillman Sep 11, 2026
d074576
fix(mobile): bind same-name mentions to exact selected identities (#7…
loganj Sep 11, 2026
ec11f8e
fix(avatars): scale agent squircles from normalized paths (#7307)
tellaho Sep 11, 2026
44c1cc7
feat(buzz-cli): render an agent-friendly command tree in --help (#7584)
salman1993 Sep 11, 2026
e17cdd9
refactor(buzz-acp): point agents at buzz --help instead of a command …
salman1993 Sep 11, 2026
7861880
Configure ACP session scope per agent (#7578)
salman1993 Sep 11, 2026
f3940ff
fix(ci): pull pinned MinIO images from Quay (#7599)
salman1993 Sep 12, 2026
6c35e82
fix(acp): improve hints in pi agent setup guide (#7594)
salman1993 Sep 12, 2026
4cd82f5
feat(buzz-agent): add opt-in workspace-scoped Databricks reuse (#7606)
wesbillman Sep 13, 2026
7c789de
Fix Apple Silicon iOS simulator builds (#7646)
brow Sep 14, 2026
81fba7b
Refresh desktop onboarding flow (#7528)
klopez4212 Sep 15, 2026
deda09c
Document incoming Buzz turn structure (#7624)
salman1993 Sep 15, 2026
f78a32c
feat(mobile): hard-block under-18 users on the store age signal (#4665)
brow Sep 15, 2026
4d08194
Deduplicate thread context by ACP session delivery (#7620)
salman1993 Sep 15, 2026
a9dd4d3
Fix desktop onboarding regressions (#7659)
klopez4212 Sep 15, 2026
98a6db5
perf(mobile): avoid reparsing unchanged Markdown (#7649)
brow Sep 15, 2026
5b9dbcb
perf(mobile): avoid redundant message list sorting (#7647)
brow Sep 15, 2026
41c5ace
perf(mobile): move profile sig checks off main thread (#7648)
brow Sep 15, 2026
76f7e5e
feat(push): make gateway origin configurable (#7261)
brow Sep 15, 2026
b8aa023
perf(mobile): verify notification cache events in background (#7650)
brow Sep 15, 2026
c507a4d
fix(db): allow naturally expired push lease replacement (#7653)
jsibbison-square Sep 16, 2026
6d1f488
refactor(desktop): share relay request construction (#7667)
bradseiler Sep 16, 2026
2130920
Instrument database pool roles (#7356)
TheSentinel454 Sep 16, 2026
8912089
Add authenticated WebSocket recovery telemetry (#7546)
ravarora2 Sep 16, 2026
6dfd145
release(mobile-infra): buzz-push-gateway 0.3.0 (#7685)
brow Sep 16, 2026
b36600f
feat(mobile): show build number with version in settings (#7697)
brow Sep 17, 2026
4ab4f78
fix(web): route mobile invite downloads to app stores (#7702)
brow Sep 17, 2026
6b1e45d
Isolate S3 storage metrics from the relay (#7543)
ravarora2 Sep 17, 2026
4c2086c
feat(db): expose connection setup metrics (#7286)
ravarora2 Sep 17, 2026
d1cae93
fix(mobile): temporarily disable age gating (#7708)
brow Sep 17, 2026
01b6174
fix(ci): don't run desktop tests for purely mobile client changes (#7…
brow Sep 17, 2026
779af88
fix(mobile): fail open when age checks are unavailable (#7714)
brow Sep 17, 2026
8953cbf
fix(desktop): keep managed agent avatars usable across communities (#…
wesbillman Sep 18, 2026
4af2324
fix(mobile): keep relay sessions stable during push lease updates (#7…
brow Sep 18, 2026
4e1770a
Add mobile VISION (#7710)
brow Sep 18, 2026
f18ea45
Replace personal and internal data in desktop test fixtures (#7748)
jmecom Sep 18, 2026
fe808ea
fix(push): label plaintext push gateway service as HTTP (#7717)
brow Sep 18, 2026
4e65148
release: push gateway chart 0.3.1 (#7749)
brow Sep 19, 2026
5511b56
fix(relay): exclude ephemeral activity from message quota (#7736)
wesbillman Sep 19, 2026
4ee9f8b
fix(mobile): keep iOS message menu actions responsive after rebuilds …
brow Sep 19, 2026
ef2aa1a
fix(mobile): preserve thread replies through refresh failures (#7757)
brow Sep 19, 2026
5079c77
fix(workflows): make deletion persistent and retryable (#7735)
wesbillman Sep 21, 2026
a61239f
fix(mobile): avoid opening empty threads on message tap (#7756)
brow Sep 21, 2026
a3117a4
fix(desktop): register macOS badges for new and existing installs (#7…
wesbillman Sep 21, 2026
6a86531
feat(relay): add atomic complete read-state snapshots (#7572)
wesbillman Sep 21, 2026
ce41be9
fix(relay): fire kick live side effects at convergence; persist targe…
wpfleger96 Sep 21, 2026
77729ab
feat(relay): add admin HTTP routes for member restriction management …
wpfleger96 Sep 21, 2026
a929532
fix(admin): allow cold storage worker DB startup (#7770)
ravarora2 Sep 22, 2026
7881447
fix(audit): frame hash inputs with TLV (#7492)
jmecom Sep 22, 2026
c213d90
fix(desktop): bound startup request bursts and recover quota refusals…
wesbillman Sep 22, 2026
a024b83
fix(desktop): refresh channels after access-revoked closure (#7784)
wesbillman Sep 22, 2026
26ede6d
docs(nip-fi): clarify federated identity amendments (#7803)
wpfleger96 Sep 22, 2026
7e96f91
feat(mobile-infra): support development App Attest (#7744)
brow Sep 22, 2026
312cf67
fix(desktop): remember Inbox unread-only choice (#7672)
ngthuydiem Sep 22, 2026
fe56d31
test(desktop): stabilize unread and audio release smoke fixtures (#7821)
wesbillman Sep 23, 2026
ec7ea38
chore(release): release Buzz Desktop version 0.5.24 (#7817)
wesbillman Sep 23, 2026
b6a2655
feat(canvas): add version history with atomic restore (#6780)
wpfleger96 Sep 23, 2026
0cc63fe
fix(agent): preserve Databricks Opus UC reasoning and tool continuati…
wesbillman Sep 23, 2026
0ef7a22
fix(mobile-infra): render push grant lifetimes as decimal in chart 0.…
brow Sep 23, 2026
3b2e50b
fix(hooks): strip repo-local git env from pre-push test lanes (#7841)
wpfleger96 Sep 23, 2026
4142d2b
Use worker snapshots for relay storage metrics (#7845)
ravarora2 Sep 23, 2026
5621006
refactor: move agent Git bootstrap into ACP harness (#7819)
salman1993 Sep 23, 2026
5a349db
feat(relay): add opt-in newest-first thread windows (#7823)
kalvinnchau Sep 23, 2026
4888484
fix: route databricks claude fqns to anthropic messages (#7829)
kalvinnchau Sep 23, 2026
d01e5f8
feat(agents): humanize uncurated Databricks model ids with a label gr…
wpfleger96 Sep 23, 2026
4544ba1
chore(mesh): upgrade MeshLLM to 0.76.2 (#7559)
micspiral Sep 24, 2026
9462d88
Fix mobile heart and warning emoji with native font fallback (#7842)
brow Sep 24, 2026
ea1e97e
feat(acp): run one prepared task from a file or stdin (#7851)
loganj Sep 24, 2026
611faf7
fix(hooks): surface nextest failures and stale pnpm deps in pre-push …
wpfleger96 Sep 24, 2026
dd1c2af
Discover alternate Buzz ACP commands (#6948)
loganj Sep 24, 2026
99c2acf
fix(ci): bootstrap the reusable MinIO image in GHCR (#7869)
tlongwell-block Sep 24, 2026
309e34d
fix(mobile): converge sidebar managers on relay head with resume re-r…
wpfleger96 Sep 24, 2026
797012f
fix(ci): consume the published MinIO image (#7870)
tlongwell-block Sep 24, 2026
0275372
chore(release): release Buzz Desktop version 0.5.25 (#7867)
wesbillman Sep 24, 2026
8f6b66f
Select one feature flag provider at compile time (#7677)
TheSentinel454 Sep 24, 2026
28a8b90
fix(mobile): keep retired sections manager out of successor cache (#7…
wpfleger96 Sep 24, 2026
8f8c4df
feat(desktop): relay admin console for the /api/admin/v1 operator sur…
wpfleger96 Sep 24, 2026
676e8c4
fix(relay-admin): make thread deletions atomic and fence expired acti…
wpfleger96 Sep 24, 2026
2013148
🤖 fix(justfile): point just staging at the current staging relay (#7881)
wpfleger96 Sep 24, 2026
930b8bb
docs(vision): add /buzz/v1 read endpoints to the protocol contract (#…
baxen Sep 25, 2026
9263cda
docs: specify durable data backfills (#7326)
TheSentinel454 Sep 25, 2026
9c7687c
🤖 docs: add pre-PR checklist and review guidance to AGENTS.md (#7897)
wpfleger96 Sep 25, 2026
b65cff3
fix(ci): run the admin disabled-mode DB test in the PostgreSQL lane (…
wpfleger96 Sep 25, 2026
6410e68
feat(relay): enforce NIP-FI assertion+NIP-98 pairing on HTTP ingress …
wpfleger96 Sep 25, 2026
a1fb664
test(desktop): synchronize upload edit smoke test (#7903)
baxen Sep 25, 2026
02c6309
fix(ci): select runtime suites from PR changes only (#7843)
brow Sep 25, 2026
781d395
feat(push): support configurable HTTP(S) delivery URLs (#7877)
brow Sep 26, 2026
b0d6fb8
docs(protocol): propose simplified channel artifacts (#7791)
baxen Sep 26, 2026
c4c8600
feat(relay): deliver pubkey mentions to relay companions (#7793)
jsibbison-square Sep 28, 2026
1846094
fix(db): limit event transactions to listener mention kinds (#7932)
jsibbison-square Sep 28, 2026
ebe99a4
fix(relay): fail startup on invalid operator listener config (#7933)
jsibbison-square Sep 28, 2026
447951a
🤖 docs(nip-fi): remove implementation references from the spec (#7912)
wpfleger96 Sep 28, 2026
b37e477
Make relay readiness process-local (#7341)
TheSentinel454 Sep 28, 2026
f7ff429
feat(nip-fi): harden Blossom kind-24242 verifier to NIP-FI spec (#7288)
wpfleger96 Sep 28, 2026
52c4c08
fix(sidebar): converge stale-at-open state across devices (sections/s…
wpfleger96 Sep 28, 2026
15d44dc
Add owner deletion admission control plane (#7818)
TheSentinel454 Sep 28, 2026
548718e
test(desktop): scope video menu e2e probes to emitted messages (#7953)
baxen Sep 28, 2026
cc36d25
Add native HPKE encryption for nsec backups (#7849)
jmecom Sep 28, 2026
9b1c4f9
🤖 perf: bound long-thread aux reads and make query deadlines terminal…
wpfleger96 Sep 28, 2026
f1e50be
test(desktop): wait for channel head refresh before paging thread sum…
loganj Sep 28, 2026
662014d
fix(mobile): stale community selection during mobile invite setup (#7…
brow Sep 28, 2026
6918dd3
Schedule the deletion drain safely (#7827)
TheSentinel454 Sep 28, 2026
c96553e
fix(desktop): resolve unlisted project channel requests (#7619)
crgallego Sep 28, 2026
12670bd
feat(relay): implement NIP-AR channel artifacts (#7919)
baxen Sep 28, 2026
bba75a7
Automate owner deletion preparation (#7830)
TheSentinel454 Sep 29, 2026
efe0428
feat(mobile): add the contextual identity-name resolver (#7894)
loganj Sep 29, 2026
45c288c
docs: specify desktop-driven mobile push suppression (#7809)
brow Sep 29, 2026
12423f2
docs(nips): fix stray angle brackets in created_at clauses (#4486)
zmeyer44 Sep 29, 2026
b9d22a2
feat(web): add Browse releases link next to invite download (#2255)
ianalloway Sep 29, 2026
8519db1
feat(buzz-relay): NIP-FI stateless enforcement (S3) — upgrade gate, N…
wpfleger96 Sep 29, 2026
4ef2360
feat(mobile): show contextual names in channel conversations (#7895)
loganj Sep 29, 2026
14a752f
fix(db): audit partition catalog before creation (#6515)
Areson Sep 29, 2026
7ebf1be
fix(desktop): correct Grok Build setup guide URL (#4846)
armstrongj2001 Sep 29, 2026
fccc07e
chore(release): release Buzz Desktop version 0.5.26 (#7980)
wpfleger96 Sep 29, 2026
12dbb11
test(desktop): fix flaky forum empty-draft replacement e2e (#7981)
ngthuydiem Sep 29, 2026
2664d14
Add Kimi Code's default install path to managed-agent binary discover…
shawnhank Sep 30, 2026
7a1910e
feat(mobile): show contextual names in lists, Search and Pulse (#7896)
loganj Sep 30, 2026
d7a35af
feat(buzz-relay): idempotent owner community deletion with quota rese…
TheSentinel454 Sep 30, 2026
95b018c
feat(acp): wrap workers at the subprocess launch boundary (#7985)
shellz-n-stuff Sep 30, 2026
0ee6093
fix(ci): gate security review on repo write access (#7986)
wpfleger96 Sep 30, 2026
020193f
feat(relay): add direct staff ban/timeout/delete with staff guard (#7…
wpfleger96 Sep 30, 2026
965e199
fix(agents): stop built-in prompts from teaching sleep polling (#7992)
wpfleger96 Sep 30, 2026
53a1210
fix(deletion): require sole owner at admission (#7966)
TheSentinel454 Sep 30, 2026
f001ebb
feat(desktop): add Admin Console Actions tab for direct staff actions…
wpfleger96 Sep 30, 2026
965fe1d
fix(mobile): hydrate and refresh relay presence snapshots (#7382)
loganj Oct 1, 2026
cf5e838
fix(mobile): distinguish unknown presence on identity surfaces (#7383)
loganj Oct 1, 2026
5fdb2e5
fix(acp): preserve routing for edited messages (#4741)
loganj Oct 1, 2026
6b5bb6f
feat(mobile): refresh onboarding and smooth QR scanner motion (#8019)
klopez4212 Oct 1, 2026
bd0896f
fix(desktop): read channel metadata and member lists from writer afte…
wpfleger96 Oct 1, 2026
514a9a8
fix(acp): interrupted frame writes close the sole writer; fixed nativ…
loganj Oct 1, 2026
0ee2ad7
Fix rounded macOS icon on older Macs (#8018)
klopez4212 Oct 1, 2026
0362156
Allow following channel messages before their first reply (#7692)
bostonaholic Oct 1, 2026
d56ed75
fix(acp): add edit field to native-steer fallback test event (#8022)
loganj Oct 1, 2026
2cca0ec
test(mobile): cover presence ordering against delayed live events (#7…
loganj Oct 1, 2026
fad4ff6
fix(mobile): hide notification settings without relay push capability…
brow Oct 1, 2026
83aab8c
feat(desktop): remove communities locally and stop their agent pairs …
wpfleger96 Oct 1, 2026
04b040e
test(desktop): pin mention undo and status expiry smoke behavior (#7592)
loganj Oct 1, 2026
16839a0
feat(nip-fi): admin disconnect/deny API with in-memory deny-until-TTL…
wpfleger96 Oct 1, 2026
15772c5
fix(relay): deny channel writes when the channel lookup fails (#8007)
wpfleger96 Oct 1, 2026
d1b7da4
feat(acp): add BUZZ_GIT_IDENTITY switch for agent commit identity (#8…
wpfleger96 Oct 1, 2026
24c1e70
fix(relay): gate owner-only kinds in shared fan-out access filter (#8…
wpfleger96 Oct 1, 2026
2e8b8d9
Include thread roots in agent activity events (#8029)
salman1993 Oct 1, 2026
9b08395
refactor(buzz-relay): share NIP-FI assertion evaluation across adapte…
wpfleger96 Oct 1, 2026
a38707d
fix(relay): close community ban gaps across audio, agents and HTTP (#…
wpfleger96 Oct 1, 2026
2ebfde9
feat(nip-fi): bind assertions to the request Host's community (#8028)
wpfleger96 Oct 1, 2026
2782b9c
fix(mobile): preserve exact mention recipients in saved drafts (#7387)
loganj Oct 2, 2026
639593b
fix(relay): restore buzz-relay build after #8005 and #8028 (#8036)
wpfleger96 Oct 2, 2026
e4681e4
fix(acp): wake quiet hosts for respawns and queued retries (#7459)
loganj Oct 2, 2026
4765421
fix(acp): wake agents for mentions added by edits (#6131)
loganj Oct 2, 2026
448407a
test(relay): configure a community in the Git ban-lookup fixture (#8039)
wpfleger96 Oct 2, 2026
2c270cf
test(agent): synchronize handoff steering with tool approval (#8042)
shellz-n-stuff Oct 2, 2026
4f51b9e
fix(mcp): support Goose discovery handshake (#8037)
shellz-n-stuff Oct 2, 2026
133fb98
fix(acp): steer running turns with edited mentions (#6132)
loganj Oct 2, 2026
cc528db
feat(agents): request summarized Claude thinking and label empty rows…
wpfleger96 Oct 2, 2026
5a4b2d3
fix(desktop): show readable Claude Code model names and descriptions …
wpfleger96 Oct 2, 2026
ea143ea
feat(mobile): native iOS message menus and reaction sheets (#8055)
klopez4212 Oct 2, 2026
fe9e240
BUZZ-175: Add application-owned writer lock foundations (#7706)
TheSentinel454 Oct 2, 2026
df3f28a
feat(relay): add NIP-FI shadow mode for HTTP, WebSocket and admin (#8…
wpfleger96 Oct 2, 2026
8af2d91
refactor(relay): bind HTTP tenants through one shadow-aware helper (#…
wpfleger96 Oct 2, 2026
33f54de
feat(mobile): organize community and profile settings (#8056)
klopez4212 Oct 3, 2026
6cf4582
Use native iOS navigation bars with large titles and avatars (#8052)
klopez4212 Oct 3, 2026
e982f70
docs: restore enterprise identity adapter contract with relay asserti…
wpfleger96 Oct 3, 2026
a14107a
fix(mobile): refine iOS navigation and conversation details (#8075)
klopez4212 Oct 4, 2026
05d1714
fix(mobile): manage channel members from profile sheets (#8078)
klopez4212 Oct 4, 2026
d2da104
feat(mobile): add animated community switcher (#8076)
klopez4212 Oct 4, 2026
03f24a6
feat(mobile): add iOS Liquid Glass tabs and quick actions (#8080)
klopez4212 Oct 4, 2026
75a4efd
fix(mobile): unify sheet sections and bottom spacing (#8081)
klopez4212 Oct 4, 2026
5f2d801
fix(mobile): align Android conversation headers and reactions (#8082)
klopez4212 Oct 4, 2026
f0eb557
fix(mobile): polish photo carousels and video viewer controls (#8079)
klopez4212 Oct 4, 2026
46e6020
fix(mobile): fill and stabilize content-aware loading placeholders (#…
klopez4212 Oct 5, 2026
8746bfe
Polish iOS header glass and scroll-edge blur (#8097)
klopez4212 Oct 5, 2026
7f6ffd5
fix(db): enumerate only active communities for maintenance (#8061)
TheSentinel454 Oct 5, 2026
5173fad
feat(pairing): enter desktop codes on mobile (#8085)
klopez4212 Oct 5, 2026
fd885b5
feat(push): support migration pod annotations (#8105)
brow Oct 5, 2026
0a070df
fix(acp): steer mid-turn DM follow-ups natively again (#8058)
loganj Oct 5, 2026
964b556
fix(desktop): detect Kimi Code in its default install path (#3700)
benthecarman Oct 5, 2026
fcf5f04
fix(desktop): use object-scale-down for inline markdown images (#4686)
kushaim Oct 5, 2026
c9143ed
chore(push): release gateway chart 0.3.3 (#8107)
brow Oct 5, 2026
1e67395
docs(identity): tighten enterprise adapter contract (#8069)
wpfleger96 Oct 5, 2026
166d383
feat(mobile): read web app catch-up marks for unread state (#8103)
loganj Oct 5, 2026
9322289
feat(mobile): follow the portable mention rules, including DMs (#8102)
loganj Oct 5, 2026
d0fd96f
BUZZ-175: Route serving event writes through the tenant lock (#7828)
TheSentinel454 Oct 6, 2026
9c6fa14
feat(desktop): offer Claude effort levels in agent edit and create (#…
wpfleger96 Oct 6, 2026
af5bb0a
docs(changelog): remove hand-written Unreleased section (#8123)
wpfleger96 Oct 6, 2026
1e2281f
feat(buzz-agent): send User-Agent on LLM requests (#8116)
tbedor-square2 Oct 6, 2026
403c19f
fix(desktop): show OpenAI-compatible endpoint settings in the baked-e…
tbedor-square2 Oct 6, 2026
001290a
chore(release): release Buzz Desktop version 0.5.27 (#8125)
wpfleger96 Oct 6, 2026
73a2a05
feat(push): support platform-managed gateway runtime pods (#8113)
brow Oct 6, 2026
c6dd587
release: push gateway chart 0.3.4 (#8126)
brow Oct 6, 2026
46dcc01
fix(acp): keep agent-to-agent thread replies in the thread (#8124)
salman1993 Oct 6, 2026
1a2ddf9
feat(relay): private read-state accessory API (#7906)
tlongwell-block Oct 6, 2026
003770c
fix(buzz-acp): bound sibling-gate lookup failures instead of caching …
yjc801 Oct 6, 2026
5ff83d8
fix(desktop): address workflow deletions at the workflow's actual own…
chillerno1 Oct 6, 2026
b9e851d
fix(buzz-pair): install rustls ring CryptoProvider before WSS (#7998)
Bartok9 Oct 6, 2026
9f5a25a
feat(push): support Deployment metadata annotations (#8136)
brow Oct 7, 2026
bd1ff00
release: push gateway chart 0.3.5 (#8141)
brow Oct 7, 2026
e097c42
feat(relay): time post-metrics-bind startup steps (#8132)
TheSentinel454 Oct 7, 2026
da651ad
buzz-db: purge retention-free deletions in the app and index mentions…
TheSentinel454 Oct 7, 2026
c96d707
fix(ios): let channel titles use available navigation space (#8137)
brow Oct 7, 2026
6d07a29
perf(relay): bound fleet usage metrics collection (#7176)
TheSentinel454 Oct 7, 2026
f260ad7
fix(ios): use the shared glass capsule for thread titles (#8150)
brow Oct 7, 2026
032198c
feat(relay): add community reads to the admin API (#8011)
wpfleger96 Oct 7, 2026
d742fc5
Use Silo for bundled object storage (#8023)
TheSentinel454 Oct 7, 2026
1972b7d
feat(admin): add community archive commands (#7107)
TheSentinel454 Oct 7, 2026
70d2ca7
fix(mobile): tolerate unrelated NIP-11 relay metadata (#8160)
brow Oct 8, 2026
f8bf2c5
refactor(db): type-level admitted event-write transactions (AdmittedT…
TheSentinel454 Oct 8, 2026
7455019
refactor(schema): fan desired-state schema out to one file per table …
TheSentinel454 Oct 8, 2026
c6340a4
fix(deletion): give the scheduled drain the cold-start DB connector (…
TheSentinel454 Oct 8, 2026
bbcbd7c
Preview Tabler icons in the mobile app (#8109)
klopez4212 Oct 8, 2026
d34c9c2
ci: shorten the PR critical path (desktop lanes, smoke shards, parall…
TheSentinel454 Oct 8, 2026
7afdc2a
feat(relay): record when a read-state account starts (#8157)
baxen Oct 8, 2026
a918e60
docs(nips): add NIP-FA federated identity adapter spec (#8148)
wpfleger96 Oct 8, 2026
836e7d0
feat(desktop): browse and moderate every community in the Admin Conso…
wpfleger96 Oct 8, 2026
1ac0a12
fix(mobile): preserve Markdown attachment destinations (#8168)
klopez4212 Oct 8, 2026
7e8aac4
fix(mobile): polish channel management and iOS Settings (#8171)
klopez4212 Oct 8, 2026
5a93e86
fix(chart): own the Datadog version label on every workload Pod (#7876)
TheSentinel454 Oct 8, 2026
a8fe2b6
feat(db): advance an empty partition catch-all under bounded locks (#…
Areson Oct 8, 2026
8f66f70
feat: raise hosted community limit to fifty (#8186)
kalvinnchau Oct 8, 2026
acf1ede
docs(nip-ap): add teams and kind:44300 instructions versions (#8191)
wpfleger96 Oct 8, 2026
4db7bb0
fix(push): stop backfilling messages on lease activation (#8178)
brow Oct 9, 2026
e9269cb
fix(mobile): simplify notification settings (#8199)
brow Oct 9, 2026
b6d97a6
fix(mobile): keep thread content visible while positioning replies (#…
brow Oct 9, 2026
16eb0b6
feat(buzz-db): run push enqueue and channel TTL refresh in app code (…
TheSentinel454 Oct 9, 2026
394d4a4
fix(mobile): normalize relay URL before disabling push (#8201)
brow Oct 9, 2026
99924a5
fix(desktop): repair the Windows notification shim's false denial on …
Joxyko Oct 9, 2026
5142cf6
test(desktop): move CSP guards from Rust to the desktop JS suite (#8172)
TheSentinel454 Oct 9, 2026
1e80066
feat(relay): reshape read-state API to the sidebar wire format (#8220)
baxen Oct 9, 2026
c1370cc
chore(release): release Buzz Desktop version 0.5.28 (#8222)
wpfleger96 Oct 9, 2026
5b907b8
fix(push): isolate push enqueue and stop workers on rollback (#8216)
brow Oct 9, 2026
2b3f502
chore(ci): run Codex security review on gpt-6.1-sol (#8228)
wpfleger96 Oct 9, 2026
bcc46fe
perf(relay): cache ephemeral-path serving and restriction reads (#8208)
baxen Oct 9, 2026
868e2f8
refactor(push): one app profile per gateway (#8206)
brow Oct 9, 2026
6c388bd
feat(relay): accept typing indicators over HTTP POST /events (#8207)
baxen Oct 9, 2026
19aa619
release: publish push gateway chart 0.4.0 (#8231)
brow Oct 9, 2026
326e230
perf(relay): drop per-pulse ban reads and owner-link writes on HTTP (…
baxen Oct 9, 2026
845fc16
chore(hermit): share one CARGO_HOME across worktrees (#8250)
wpfleger96 Oct 10, 2026
30873ba
docs(nest): replace commit attribution policy with the runtime facts …
baxen Oct 11, 2026
ff92e3a
Merge upstream/main into Dreamforge fork (2026-10)
QuicksilverSlick Oct 12, 2026
07f9c22
fix(desktop): rename the last Buzz strings people see in the app
QuicksilverSlick Oct 12, 2026
7161f49
fix(desktop): point phone pairing at Block's Buzz app and terms at th…
QuicksilverSlick Oct 12, 2026
9ff3f3a
fix(desktop): say on the AI-provider step that guests can skip it
QuicksilverSlick Oct 12, 2026
7fdf210
fix(desktop): name the macOS app Dreamforge in its Info.plist
QuicksilverSlick Oct 12, 2026
f908555
fix: sync review
QuicksilverSlick Oct 12, 2026
fb2291d
ci(security): ignore RUSTSEC-2024-0449 (unsafe-libyaml unmaintained)
QuicksilverSlick Oct 12, 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
  •  
  •  
  •  
45 changes: 39 additions & 6 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,16 @@ PGUSER=buzz
PGPASSWORD=buzz_dev
PGDATABASE=buzz

# Fleet usage telemetry is replica-only and independent of serving-read
# routing. This freshness budget defaults to 30000ms; 0 disables the database
# telemetry families. When the reader is absent, stale, or unavailable, the
# relay skips the collection and reports its availability as 0 instead of
# falling back to the writer.
# BUZZ_USAGE_METRICS_REPLICA_MAX_AGE_MS=30000
# Per-community metric series are disabled by default to bound relay memory and
# monitoring cardinality. `all` is the temporary rollback mode.
# BUZZ_USAGE_METRICS_PER_COMMUNITY=off

# -----------------------------------------------------------------------------
# Redis 7
# -----------------------------------------------------------------------------
Expand All @@ -37,6 +47,15 @@ REDIS_URL=redis://localhost:6379
# Max connections in each of the relay's Postgres pools — writer and, when
# READ_DATABASE_URL is set, reader (default 50).
# BUZZ_DB_POOL_SIZE=50
# Read-only partition catalog audit interval, clamped to 60s..24h (default 900s).
# BUZZ_PARTITION_AUDIT_INTERVAL_SECS=900
# Emergency kill switch for all automatic partition DDL, including catch-all
# advancement; audits remain enabled.
# BUZZ_PARTITION_MANAGER_CREATE_ENABLED=true
# Opt in to replacing an empty partition catch-all with six months of dedicated
# monthlies, at startup and on every audit interval (default false). Has no
# effect while the kill switch above is off.
# BUZZ_PARTITION_MANAGER_ADVANCE_ENABLED=false

# Writer-session Postgres timeouts for buzz-db-backed pools and the relay audit
# pool, all in milliseconds; 0 disables. The separately deployed push gateway
Expand Down Expand Up @@ -75,10 +94,11 @@ RELAY_URL=ws://localhost:3000
# BUZZ_WEB_DIR=./web/dist

# NIP-PL mobile push is an explicit deployment opt-in. A gateway URL alone
# never enables it. When enabled and the URL is absent, the canonical
# https://push.buzz.xyz/v1/deliveries/apns endpoint is used.
# never enables it. When enabled, the exact HTTP(S) delivery URL is required.
# Rollback requires replacing every enabled writer/worker process. Inspect and
# explicitly decide retained queue disposition before re-enabling (see docs/push-gateway-deployment.md).
BUZZ_PUSH_ENABLED=false
# BUZZ_PUSH_GATEWAY_DELIVERY_URL=https://push.buzz.xyz/v1/deliveries/apns
BUZZ_PUSH_GATEWAY_DELIVERY_URL=https://push.buzz.xyz/v1/deliveries/apns

# -----------------------------------------------------------------------------
# Admin Dashboard (private moderation surface)
Expand Down Expand Up @@ -106,9 +126,16 @@ BUZZ_PUSH_ENABLED=false
# the console without manual URL entry.
# RELAY_OPERATOR_PUBKEYS=<64-char hex pubkey>[,<64-char hex pubkey>...]
#
# Option B — BUZZ_ADMIN_AUTH=disabled (network-layer auth only):
# Set only when the admin API is already protected at the network layer
# (VPN, private ingress). The relay logs a WARN on every startup.
# Option B — BUZZ_ADMIN_AUTH=disabled (read-only, no authentication):
# Anyone who can reach the relay can read, in every community: reports (with
# reporter notes and reported message content, deleted included), feedback and
# attachments, bans and timeouts with reasons, the community directory, member
# search and profiles (not staff status), and any stored message by ID.
# Writes and staffing are refused.
# Only people allowed to see all of that should be able to reach it. The admin
# API is on the relay's main listener and its hostname check uses the caller's
# Host header, so the whole relay port must be private, not just the admin
# hostname. The relay logs a WARN on every startup.
# `just admin` defaults to this mode for local review.
#
# Directory holding the built dashboard assets (`pnpm -C admin-web build`).
Expand All @@ -121,6 +148,12 @@ BUZZ_PUSH_ENABLED=false
# and provisioning requests fail closed until it is set.
# RELAY_OPERATOR_API_ORIGIN=http://127.0.0.1:3000

# Deployment-global operator-listener routes. Each configured Nostr identity
# may register target pubkeys and receives mention notifications at its URL.
# Format: pubkey:deliveryUrl;pubkey:deliveryUrl
# BUZZ_OPERATOR_LISTENER_TIMEOUT_MS=5000
# BUZZ_OPERATOR_LISTENERS=<64-char hex pubkey>:https://listener.example/mentions

# Optional relay-owned KLIPY key. When set, NIP-11 advertises GIF search and
# authenticated desktop clients use this relay as the metadata/search proxy.
# Keep the real value in your deployment's secret manager; never commit it.
Expand Down
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
* @block/buzz-oss-team
/VISION_MOBILE.md @brow
12 changes: 7 additions & 5 deletions .github/ci/minio/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Buzz CI MinIO

`ghcr.io/block/buzz-minio:latest` contains MinIO and `mc` for the disposable
Linux AMD64 CI runners. `docker-compose.ci.yml` selects it for both services;
development and deployment defaults stay in `docker-compose.yml`.
Linux AMD64 runners. Only the publisher smoke test selects it through
`docker-compose.ci.yml`. Ordinary CI inherits the Silo pins from
`docker-compose.yml`; the Helm install test inherits the chart defaults.

The **MinIO image** workflow builds only when its inputs change, or on a manual
dispatch. Pull requests build and smoke-test without publishing. On `main`, a
Expand All @@ -13,9 +14,10 @@ Once consumers adopt the override, ordinary CI only pulls it; there is no build
fallback or dependency on the publisher. `latest` deliberately floats, and
Compose always pulls it. Docker's pull output records the resolved digest.

The Dockerfile uses the same upstream releases as the development services,
with checksummed official GitHub release binaries and a digest-pinned Alpine
base. MinIO and `mc` are AGPL-3.0; their corresponding source is available at
The Dockerfile pins upstream MinIO releases independently of the Silo images
used by the development and deployment examples. It uses checksummed official
GitHub release binaries and a digest-pinned Alpine base. MinIO and `mc` are
AGPL-3.0; their corresponding source is available at
the [MinIO release](https://github.com/minio/minio/tree/RELEASE.2025-09-07T16-13-09Z)
and [mc release](https://github.com/minio/mc/tree/RELEASE.2025-08-13T08-35-41Z).

Expand Down
79 changes: 67 additions & 12 deletions .github/scripts/codex-security-review.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,30 @@ const completedMarker = (baseSha, headSha) =>

const reviewCommand = (headSha) => `${REVIEW_COMMAND} ${headSha}`;

const isOrganizationMember = (association) =>
association === "MEMBER" || association === "OWNER";
// Org membership is invisible to the workflow token when a member keeps it
// private, so trust is repo write access. `maintain` reports as `write`.
async function hasWriteAccess({ github, context, core, username }) {
if (!username) {
return false;
}
try {
const { data } = await withGithubRetry(
() =>
github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username,
}),
{ core },
);
return data.permission === "admin" || data.permission === "write";
} catch (error) {
if (error?.status === 404) {
return false;
}
throw error;
}
}

const hasCurrentReviewLabel = (pullRequest) =>
pullRequest.labels?.some(
Expand Down Expand Up @@ -330,6 +352,15 @@ async function prepare({ github, context, core }) {
requestedHeadSha = context.payload.pull_request?.head?.sha || "";
} else if (context.eventName === "issue_comment") {
prNumber = Number(context.payload.issue?.number);
const commenter = context.payload.comment?.user?.login;
if (
!(await hasWriteAccess({ github, context, core, username: commenter }))
) {
core.info(
`Review commands require write access to ${context.repo.owner}/${context.repo.repo}.`,
);
return;
}
const command = context.payload.comment?.body || "";
const match = /^@buzz-security-review ([0-9a-f]{40})$/.exec(command);
if (!match) {
Expand Down Expand Up @@ -364,10 +395,15 @@ async function prepare({ github, context, core }) {
}
if (
context.eventName === "pull_request_target" &&
!isOrganizationMember(pullRequest.author_association)
!(await hasWriteAccess({
github,
context,
core,
username: pullRequest.user?.login,
}))
) {
core.info(
`Pull request #${prNumber} requires authorization from a Block organization member.`,
`Pull request #${prNumber} requires authorization from a user with write access.`,
);
return;
}
Expand Down Expand Up @@ -479,17 +515,35 @@ async function invalidatePullRequestUpdate({ github, context, core }) {
github,
context,
core,
existingOnlyForOrganizationMembers: true,
existingOnlyForTrustedAuthors: true,
});
}

// A failed lookup must not skip stale-marking, so errors count as untrusted
// and the conservative stale notice is posted.
async function isTrustedForInvalidation({ github, context, core, pullRequest }) {
try {
return await hasWriteAccess({
github,
context,
core,
username: pullRequest.user?.login,
});
} catch (error) {
core.warning(
`Could not read PR author permission (status ${githubErrorStatus(error)}); treating the author as untrusted.`,
);
return false;
}
}

async function invalidate({
github,
context,
core,
prNumber: requestedPrNumber,
existingOnly = false,
existingOnlyForOrganizationMembers = false,
existingOnlyForTrustedAuthors = false,
}) {
const prNumber = Number(
requestedPrNumber ?? context.payload.pull_request?.number,
Expand All @@ -506,11 +560,12 @@ async function invalidate({
}

const existing = await findReviewComment({ github, context, prNumber });
const shouldOnlyUpdateExisting =
existingOnly ||
(existingOnlyForOrganizationMembers &&
isOrganizationMember(pullRequest.author_association));
if (!existing && shouldOnlyUpdateExisting) {
if (
!existing &&
(existingOnly ||
(existingOnlyForTrustedAuthors &&
(await isTrustedForInvalidation({ github, context, core, pullRequest }))))
) {
if (existingOnly || hasCurrentReviewLabel(pullRequest)) {
await clearCurrentReview({ github, context, prNumber });
}
Expand All @@ -535,7 +590,7 @@ ${STALE_MARKER}
>
> The current range is \`${liveMainSha}...${pullRequest.head.sha}\`.
> A new review must complete for this exact range. When manual authorization
> is required, a Block organization member must comment exactly
> is required, a user with write access must comment exactly
> \`${reviewCommand(pullRequest.head.sha)}\` to authorize a new review.
> Any previous review applies only to its recorded range.
`;
Expand Down
Loading