Skip to content

Commit 7c20745

Browse files
committed
Merge remote-tracking branch 'upstream/main' into fix/windows-mesh-llm-2836-upstream
Signed-off-by: stevepresley <github@stevepresley.net> # Conflicts: # desktop/src-tauri/src/commands/mesh_llm.rs # desktop/src/features/mesh-compute/ui/MeshComputeSettingsCard.tsx
2 parents 006c158 + 4632c55 commit 7c20745

692 files changed

Lines changed: 73210 additions & 12585 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ REDIS_URL=redis://localhost:6379
3434
# Max connections in the relay's shared Redis pool (default 16).
3535
# BUZZ_REDIS_POOL_SIZE=16
3636

37+
# Max connections in each of the relay's Postgres pools — writer and, when
38+
# READ_DATABASE_URL is set, reader (default 50).
39+
# BUZZ_DB_POOL_SIZE=50
40+
3741
# -----------------------------------------------------------------------------
3842
# Typesense (search)
3943
# -----------------------------------------------------------------------------
@@ -78,6 +82,19 @@ RELAY_URL=ws://localhost:3000
7882
# BUZZ_GIT_PACK_CACHE_MAX_BYTES=5368709120
7983
# BUZZ_GIT_PACK_CACHE_MAX_CONCURRENT_POPULATIONS=2
8084

85+
# -----------------------------------------------------------------------------
86+
# S3-Compatible Object Storage (media + Git/CAS)
87+
# -----------------------------------------------------------------------------
88+
# The local MinIO container is reachable from host processes at localhost:9000.
89+
# Path style keeps the bucket in the URL path and is required by this local DNS
90+
# setup. Use `virtual` only when the provider requires bucket-as-subdomain URLs.
91+
BUZZ_S3_ENDPOINT=http://localhost:9000
92+
BUZZ_S3_ACCESS_KEY=buzz_dev
93+
BUZZ_S3_SECRET_KEY=buzz_dev_secret
94+
BUZZ_S3_BUCKET=buzz-media
95+
BUZZ_S3_REGION=us-east-1
96+
BUZZ_S3_ADDRESSING_STYLE=path
97+
8198
# -----------------------------------------------------------------------------
8299
# Media Upload Admission
83100
# -----------------------------------------------------------------------------
@@ -105,7 +122,10 @@ RELAY_URL=ws://localhost:3000
105122
# -----------------------------------------------------------------------------
106123
# Logging / Tracing
107124
# -----------------------------------------------------------------------------
108-
RUST_LOG=buzz_relay=debug,buzz_db=debug,buzz_auth=debug,buzz_pubsub=debug,tower_http=debug
125+
RUST_LOG=buzz_relay=debug,buzz_datastore=info,buzz_db=debug,buzz_auth=debug,buzz_pubsub=debug,tower_http=debug
126+
# Optional OpenTelemetry-only target filter. This is deliberately independent
127+
# from RUST_LOG so log verbosity changes cannot break trace parentage.
128+
# BUZZ_OTEL_FILTER=buzz_relay=info,buzz_datastore=info
109129

110130
# OTLP tracing endpoint (optional — leave unset to disable)
111131
# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

.github/workflows/auto-tag-on-release-pr-merge.yml

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ name: Auto-tag on Release PR Merge
44
# prefix; the main chart lane also auto-detects a Chart.yaml version bump so
55
# a chart feature PR can publish its own new version when merged:
66
#
7-
# version-bump/<v> → tag v<v> → release.yml (desktop app)
7+
# version-bump/<v> → tag desktop-v<v> → release.yml (desktop app)
88
# relay-release/<v> → tag relay-v<v> → docker.yml (relay image)
99
# chart-release/<v> → tag chart-v<v> → helm-chart.yml (main helm chart)
1010
# push-chart-release/<v> → tag push-chart-v<v> → push-gateway-helm-chart.yml
@@ -35,6 +35,11 @@ permissions:
3535

3636
jobs:
3737
auto-tag:
38+
permissions:
39+
contents: read
40+
pull-requests: read
41+
checks: read
42+
statuses: read
3843
if: >
3944
github.event.pull_request.merged == true &&
4045
github.event.pull_request.head.repo.full_name == github.repository
@@ -57,7 +62,7 @@ jobs:
5762
case "$BRANCH" in
5863
version-bump/*)
5964
VERSION="${BRANCH#version-bump/}"
60-
TAG_PREFIX="v" ;;
65+
TAG_PREFIX="desktop-v" ;;
6166
relay-release/*)
6267
VERSION="${BRANCH#relay-release/}"
6368
TAG_PREFIX="relay-v" ;;
@@ -85,9 +90,34 @@ jobs:
8590
{
8691
echo "enabled=true"
8792
echo "tag=${TAG_PREFIX}${VERSION}"
93+
if [[ "$TAG_PREFIX" == desktop-v ]]; then
94+
echo "target_sha=${{ github.event.pull_request.head.sha }}"
95+
echo "desktop=true"
96+
else
97+
echo "target_sha=$GITHUB_SHA"
98+
echo "desktop=false"
99+
fi
88100
} >> "$GITHUB_OUTPUT"
89101
echo "Tagging ${TAG_PREFIX}${VERSION}"
90102
103+
104+
- name: Verify immutable reviewed desktop candidate
105+
if: steps.release.outputs.desktop == 'true'
106+
env:
107+
GH_TOKEN: ${{ github.token }}
108+
VERSION: ${{ steps.release.outputs.tag }}
109+
PR_NUMBER: ${{ github.event.pull_request.number }}
110+
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
111+
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
112+
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
113+
PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
114+
PR_PUSHER: ${{ github.event.pull_request.head.user.login }}
115+
MERGE_SHA: ${{ github.event.pull_request.merge_commit_sha }}
116+
run: |
117+
VERSION="${VERSION#desktop-v}"
118+
export VERSION
119+
scripts/verify-desktop-release-merge.sh
120+
91121
- name: Create release tagger token
92122
if: steps.release.outputs.enabled == 'true'
93123
id: release-tagger
@@ -102,21 +132,22 @@ jobs:
102132
env:
103133
GH_TOKEN: ${{ steps.release-tagger.outputs.token }}
104134
TAG: ${{ steps.release.outputs.tag }}
135+
TARGET_SHA: ${{ steps.release.outputs.target_sha }}
105136
run: |
106137
set -euo pipefail
107138
# Check gh's exit status, not its output. A missing ref returns a 404
108139
# JSON body on stdout, which must not be mistaken for an existing tag.
109140
if gh api "repos/$GITHUB_REPOSITORY/git/ref/tags/$TAG" --silent 2>/dev/null; then
110141
EXISTING_SHA="$(gh api "repos/$GITHUB_REPOSITORY/commits/$TAG" --jq .sha)"
111-
if [ "$EXISTING_SHA" = "$GITHUB_SHA" ]; then
112-
echo "Tag $TAG already exists at $GITHUB_SHA — skipping tag creation"
142+
if [ "$EXISTING_SHA" = "$TARGET_SHA" ]; then
143+
echo "Tag $TAG already exists at $TARGET_SHA — skipping tag creation"
113144
exit 0
114145
else
115-
echo "::error::Tag $TAG already exists at $EXISTING_SHA (expected $GITHUB_SHA)"
146+
echo "::error::Tag $TAG already exists at $EXISTING_SHA (expected $TARGET_SHA)"
116147
exit 1
117148
fi
118149
fi
119150
gh api --method POST "repos/$GITHUB_REPOSITORY/git/refs" \
120151
-f ref="refs/tags/$TAG" \
121-
-f sha="$GITHUB_SHA" \
152+
-f sha="$TARGET_SHA" \
122153
--silent

.github/workflows/ci.yml

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,21 @@ jobs:
4848
- 'scripts/run-tests.sh'
4949
- 'justfile'
5050
desktop:
51+
- 'scripts/check-file-sizes-core.mjs'
52+
- 'scripts/check-file-sizes-core.test.mjs'
5153
- 'desktop/**'
5254
- '!desktop/src-tauri/**'
5355
- 'pnpm-lock.yaml'
5456
desktop-rust:
5557
- 'desktop/src-tauri/**'
5658
web:
59+
- 'scripts/check-file-sizes-core.mjs'
60+
- 'scripts/check-file-sizes-core.test.mjs'
5761
- 'web/**'
5862
- 'pnpm-lock.yaml'
5963
mobile:
64+
- 'scripts/check-file-sizes-core.mjs'
65+
- 'scripts/check-file-sizes-core.test.mjs'
6066
- 'mobile/**'
6167
- 'scripts/mobile-release.sh'
6268
- 'scripts/mobile-worktree-overrides.sh'
@@ -70,12 +76,16 @@ jobs:
7076
- '.github/workflows/ci.yml'
7177
- name: Release workflow source contract
7278
run: scripts/test-release-ref-contract.sh
79+
- name: Desktop release candidate contract
80+
run: scripts/test-desktop-release-candidate.sh
7381
- name: Mobile release contract
7482
run: |
7583
scripts/test-mobile-release-contract.sh
7684
scripts/test-mobile-release-candidate-publisher.sh
7785
- name: Mobile worktree identity contract
7886
run: scripts/test-mobile-worktree-overrides.sh
87+
- name: File size ratchet unit tests
88+
run: node --test scripts/check-file-sizes-core.test.mjs
7989

8090
rust-lint:
8191
name: Rust Lint
@@ -130,6 +140,8 @@ jobs:
130140
contents: read
131141
steps:
132142
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
143+
with:
144+
fetch-depth: 2
133145
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
134146
- uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1
135147
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
@@ -213,7 +225,7 @@ jobs:
213225
desktop-smoke-e2e:
214226
name: Desktop Smoke E2E (${{ matrix.shard }})
215227
runs-on: ubuntu-latest
216-
timeout-minutes: 20
228+
timeout-minutes: 30
217229
needs: [changes]
218230
if: github.event_name == 'push' || needs.changes.outputs.desktop == 'true' || needs.changes.outputs.desktop-rust == 'true' || needs.changes.outputs.rust == 'true'
219231
strategy:
@@ -340,6 +352,7 @@ jobs:
340352
cargo build --profile ci -p buzz-relay -p git-credential-nostr
341353
cargo nextest archive \
342354
--cargo-profile ci \
355+
-p buzz-db \
343356
-p buzz-relay \
344357
-p buzz-test-client \
345358
--lib \
@@ -671,11 +684,11 @@ jobs:
671684
done
672685
cat /tmp/buzz-relay.log
673686
exit 1
674-
- name: Invite claim security tests
687+
- name: Invite security tests
675688
run: |
676689
cargo nextest run \
677690
--archive-file target/ci/backend-integration-tests.tar.zst \
678-
-E 'package(buzz-relay) and test(claim_)' \
691+
-E '(package(buzz-db) and test(/relay_invite::tests/)) or (package(buzz-relay) and test(/api::invites::tests/))' \
679692
--run-ignored ignored-only
680693
env:
681694
DATABASE_URL: postgres://buzz:${{ env.BUZZ_TEST_POSTGRES_PASSWORD }}@localhost:5432/buzz
@@ -726,7 +739,7 @@ jobs:
726739
./scripts/start-relay-for-tests.sh --no-build
727740
- name: Relay E2E tests
728741
run: |
729-
cargo test -p buzz-test-client --test e2e_persona --test e2e_nostr_interop -- --ignored --nocapture
742+
cargo test -p buzz-test-client --test e2e_persona --test e2e_team_catalog --test e2e_nostr_interop -- --ignored --nocapture
730743
cargo test -p buzz-test-client --test e2e_relay invite -- --ignored --nocapture
731744
cargo test -p buzz-test-client --test e2e_relay nip43_membership_snapshots_are_rejected -- --ignored --nocapture
732745
env:
@@ -750,6 +763,8 @@ jobs:
750763
contents: read
751764
steps:
752765
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
766+
with:
767+
fetch-depth: 2
753768
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
754769
- name: Get pnpm store directory
755770
id: pnpm-cache
@@ -783,6 +798,8 @@ jobs:
783798
contents: read
784799
steps:
785800
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
801+
with:
802+
fetch-depth: 2
786803
- uses: cashapp/activate-hermit@cea9af7913204a965fd488637a8d1811bba2e616 # v1
787804
- name: Compute Hermit cache key
788805
id: hermit-bin-hash
@@ -821,6 +838,8 @@ jobs:
821838
with:
822839
path: ~/.pub-cache
823840
key: pub-${{ runner.os }}-${{ hashFiles('mobile/pubspec.lock') }}
841+
- name: File size ratchet
842+
run: node mobile/scripts/check-file-sizes.mjs
824843
- name: Format check
825844
run: cd mobile && dart format --output=none --set-exit-if-changed .
826845
- name: Analyze

0 commit comments

Comments
 (0)