Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
a0b9280
ci(fork): build unsigned Windows integration installer
Aug 16, 2026
377ebbd
fix(desktop): recover Windows notification permission
BradGroux Jul 23, 2026
e1f7108
fix(desktop): repair the Windows notification shim's false denial on …
Joxyko Aug 11, 2026
dd65dfc
style(desktop): reformat profile.spec.ts per biome after cherry-picks
Aug 20, 2026
4b6ff3f
fix(desktop): show agent activity bar in DMs and threads
Aug 20, 2026
08cc2a3
wip(desktop): deriveAgentSessions groups observer events by sessionId
Aug 20, 2026
f57e509
feat(desktop): agent sessions panel, DM context ring, metric data layer
Aug 20, 2026
67d3f24
fix(desktop): restore membership-first mention authorization (cherry-…
Aug 21, 2026
ffed2a2
feat(desktop): restore read-only 'On this relay' agents section (cher…
Aug 21, 2026
826ae05
feat(desktop): Reset-session button in the Agent Sessions panel
Aug 21, 2026
5948421
feat(cli): expose NIP-34 issue status events + repos delete tombstone
Aug 21, 2026
7a61f7a
fix(cli): tombstone timestamps must respect relay drift window
Aug 21, 2026
ad005bc
fix(desktop): make the media download cap symmetric with the upload cap
Aug 21, 2026
98cd886
feat(desktop): set issue status from the issue detail rail
Aug 21, 2026
09cabc4
fix(desktop): let issue assignees change issue status
Aug 22, 2026
ee3e8ba
feat(desktop): reset and kill buttons on every agent session row
Aug 22, 2026
2705cab
fix(desktop): accept JSON-degraded IPC bodies for raw media uploads
Aug 22, 2026
fbd3c65
feat(desktop): make issues the scoped work record
Aug 25, 2026
26f6b11
feat(buzz-acp): isolate sessions by conversation root
Aug 25, 2026
dd15d79
feat(desktop): improve project issue workflow
Aug 26, 2026
1a3084e
fix(desktop): keep channel issue header visible
Aug 26, 2026
3a8b083
fix(windows): restore cumulative client lineage
Aug 27, 2026
4d8002f
fix(desktop): close hidden-agent and thread-panel regressions
Aug 27, 2026
9aeec10
feat(buzz-acp): answer list_models control frames with the model catalog
Aug 27, 2026
a8dd7fb
fix(buzz-acp): scope model switching to one conversation
Aug 28, 2026
5af65e6
feat(desktop): scope agent activity and model control
Aug 28, 2026
c29cae3
feat(desktop): add issue human verdict flow
Aug 29, 2026
726d21b
feat(desktop): enforce issue-first review authority
Sep 1, 2026
e133f48
fix(desktop): scope relay activity to current bot membership
Sep 4, 2026
da5888d
feat(desktop): add MyBuzz workflow status activity
Sep 6, 2026
3a78dc0
fix(desktop): retain issue status control contract
Sep 6, 2026
37db791
fix(desktop): show relay owner activity in channel
Sep 6, 2026
b9d4054
fix(desktop): streamline MyBuzz workflow status
Sep 6, 2026
bc5c9ad
fix(desktop): preserve thread when opening channel issues
Sep 6, 2026
adea063
feat(mybuzz): add lifecycle signal fixture
Sep 7, 2026
05e25cf
fix(desktop): hide terminal MyBuzz issues
Sep 7, 2026
3eb9e1b
feat(desktop): open MyBuzz issue owner controls
Sep 8, 2026
9b213a1
feat(desktop): show relay role prompts
Sep 8, 2026
83afea0
feat(desktop): edit relay role prompts
Sep 8, 2026
3d3858d
docs(nips): define MyBuzz workflow wire contract and fixtures
Sep 9, 2026
2f099c2
docs(nips): resolve BW handoff review findings
Sep 9, 2026
a472387
docs(nips): preserve human acceptance across workflow history
Sep 9, 2026
529136c
docs(nips): keep competing close outcomes terminal
Sep 9, 2026
82bc96d
feat(bw): add offline workflow validation and CLI
Sep 9, 2026
5edd482
fix(bw): accept repository channel metadata for owner genesis
Sep 10, 2026
7c0a520
feat(bw): gate publication on activation and exact readback
Sep 10, 2026
babcf7d
feat(desktop): read the shared BW projection into project issues (P4C)
Sep 10, 2026
1084349
feat(desktop): sign BW issue creation, triage and text updates (P4D)
Sep 10, 2026
72fd3ec
feat(desktop): writer assignment, ready/dev/implemented handoff and r…
Sep 11, 2026
26943e1
fix(desktop): close implemented-readback ref-shadowing found in P4E r…
Sep 11, 2026
2b280d2
fix(desktop): wrap submit_project_bw_record/assignment args in `input`
Sep 11, 2026
52614ad
feat(desktop): activate delegated BW triage-accept from the policy (P4F)
Sep 11, 2026
1c46ba2
feat(desktop): pick BW writer assignment by name instead of raw hex
Sep 11, 2026
cc1e6e3
feat(desktop): make BW ready stream a real-branch value help, not fre…
Sep 12, 2026
c230e03
fix(desktop): block BW ready submit without a saved text update
Sep 12, 2026
883c5ee
fix(desktop): refresh BW consumer clock before validating a new candi…
Sep 12, 2026
9936df3
fix(desktop): persist BW ready stream and auto-chain triage accept to…
Sep 12, 2026
d63c59a
fix(desktop): heal issues stuck on triage when moving to ready
Sep 12, 2026
cfe741a
fix(bw): allow cross-platform issues in releases
Sep 12, 2026
e7c48a3
fix(desktop): show ready status and switch writers
Sep 12, 2026
98fe5af
Fix BW writer transitions and relation lookup
Sep 12, 2026
5efa69f
Fix BW relation issue number lookup
Sep 12, 2026
34d44f5
Route BW development starts through ACP writer
Sep 12, 2026
fae8d7f
Open BW execution thread after creation
Sep 12, 2026
929c52b
Fix Agent Sessions transcript scrolling
Sep 12, 2026
10d1de9
fix(desktop): keep channel thread and issues side by side
Sep 12, 2026
9754fe5
fix(workflow): let selected writers complete BW issues
Sep 12, 2026
f889d45
Verify BW implemented state on reload
Sep 13, 2026
8b0de04
fix(cli): accept canonical .git clone suffix
Sep 13, 2026
39133c2
ci(windows): bind unsigned NSIS build manifest
Sep 13, 2026
90732a9
feat(bw): share issue lifecycle operations
Sep 14, 2026
38fc38d
fix(bw): bind mutations to issue repository
Sep 14, 2026
7b508cc
feat(desktop): render read-only BW release views
Sep 14, 2026
2144377
ci(windows): allow explicit commit-bound manual test builds
Oct 10, 2026
a10d97f
test(windows): bind subprocess checks to runner Git Bash
Oct 10, 2026
41dad30
ci(windows): restore on-demand integration builds without BW prerequi…
Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 78 additions & 18 deletions .github/workflows/windows-canary.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Windows Canary
run-name: Manual Windows test @ ${{ inputs.source_sha || github.sha }}

# Produces an unsigned Windows NSIS installer from main without creating
# a tag, GitHub Release, or auto-updater artifact. The installer is available
Expand All @@ -9,34 +10,82 @@ name: Windows Canary
# - pnpm store restore/save pattern mirrors ci.yml:149-196.
on:
workflow_dispatch:
inputs:
source_sha:
description: Exact canonical Windows commit (required for Jari81/buzz)
required: false
type: string

# Shares the build slot with the BW lane, never cancels another build.
concurrency:
group: windows-client
cancel-in-progress: false

permissions:
contents: read
actions: read

jobs:
build:
name: Build Windows canary
if: github.repository == 'block/buzz'
if: github.repository == 'block/buzz' || github.repository == 'Jari81/buzz'
runs-on: windows-latest
timeout-minutes: 60
timeout-minutes: 90
permissions:
contents: read
actions: read
env:
TARGET: x86_64-pc-windows-msvc
steps:
- name: Require main
- name: Validate manual source
shell: bash
env:
SOURCE_REF: ${{ github.ref }}
SOURCE_SHA: ${{ inputs.source_sha }}
run: |
if [[ "$SOURCE_REF" != "refs/heads/main" ]]; then
echo "::error::Canary builds must run from main; got $SOURCE_REF"
exit 1
fi
set -euo pipefail
case "$GITHUB_REPOSITORY:$SOURCE_REF" in
block/buzz:refs/heads/main) ;;
Jari81/buzz:refs/heads/windows)
[[ "$SOURCE_SHA" =~ ^[0-9a-f]{40}$ && "$SOURCE_SHA" == "$GITHUB_SHA" ]] || {
echo "::error::Manual fork build requires the exact dispatched Windows SHA"
exit 1
}
;;
*) echo "::error::Unsupported repository or source ref"; exit 1 ;;
esac

- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
fetch-depth: 0

- name: Validate cumulative fork source
if: github.repository == 'Jari81/buzz'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
# Both explicit lanes must remain cumulative. No feature-branch baseline.
gh api "repos/$GITHUB_REPOSITORY/actions/workflows/windows-fork-integration.yml/runs?branch=windows&status=success&per_page=1" > bw-runs.json
gh api "repos/$GITHUB_REPOSITORY/actions/workflows/windows-canary.yml/runs?branch=windows&status=success&per_page=1" > manual-runs.json
python - <<'PY' > previous-windows-shas.txt
import json
shas = {"83afea0a1549410a8f7effa12ceed0f7b13234e6"}
for path in ("bw-runs.json", "manual-runs.json"):
for run in json.load(open(path, encoding="utf-8"))["workflow_runs"]:
shas.add(run["head_sha"])
print("\n".join(sorted(shas)))
PY
while IFS= read -r previous_sha; do
previous_sha="${previous_sha%$'\r'}"
scripts/verify-windows-client-lineage.sh "$previous_sha" "$GITHUB_SHA" "$GITHUB_REF_NAME"
done < previous-windows-shas.txt
scripts/check-windows-client-contract.sh "$GITHUB_SHA"
# Native Python must not resolve System32/bash.exe (WSL) via PATH.
export BUZZ_TEST_BASH="$(cygpath -w "$BASH")"
python -m unittest -q scripts.test_windows_manual_canary scripts.test_windows_build_manifest scripts.test_windows_workflow_contract

# The Windows runner ships with rustup preinstalled; rust-toolchain.toml
# in the repo root pins the channel (1.95.0) automatically. We only need
Expand Down Expand Up @@ -150,24 +199,35 @@ jobs:
env:
CMAKE_POLICY_VERSION_MINIMUM: "3.5"

- name: Locate NSIS installer
id: artifact
- name: Stage exactly one installer and manual test receipt
shell: bash
run: |
set -euo pipefail
BUNDLE_DIR="desktop/src-tauri/target/${TARGET}/release/bundle"
EXE=$(find "$BUNDLE_DIR/nsis" -name '*.exe' -type f | head -1)
if [[ -z "$EXE" ]]; then
echo "::error::No NSIS installer found in $BUNDLE_DIR/nsis"
exit 1
fi
echo "exe=$EXE" >> "$GITHUB_OUTPUT"
python - <<'PY'
import hashlib, json, os, shutil
from pathlib import Path
source = Path('desktop/src-tauri/target') / os.environ['TARGET'] / 'release/bundle/nsis'
installers = list(source.glob('*.exe'))
if len(installers) != 1 or not installers[0].is_file():
raise SystemExit('Exactly one NSIS installer required')
target = Path('manual-windows-artifact')
target.mkdir(exist_ok=False)
installer = Path(shutil.copy2(installers[0], target))
receipt = {
'kind': 'manual-test-only', 'unsigned': True, 'product_accepted': False,
'commit': os.environ['GITHUB_SHA'], 'ref': os.environ['GITHUB_REF'],
'repository': os.environ['GITHUB_REPOSITORY'],
'run_id': os.environ['GITHUB_RUN_ID'], 'run_attempt': os.environ['GITHUB_RUN_ATTEMPT'],
'filename': installer.name, 'bytes': installer.stat().st_size,
'sha256': hashlib.sha256(installer.read_bytes()).hexdigest(),
}
(target / 'manual-test-build.json').write_text(json.dumps(receipt, indent=2) + '\n', encoding='utf-8')
PY

- name: Upload Windows canary installer
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: buzz-windows-canary-${{ github.sha }}
path: ${{ steps.artifact.outputs.exe }}
path: manual-windows-artifact
if-no-files-found: error
retention-days: 7

Expand Down
Loading
Loading