Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
02f6446
feat(acp): durable ACP session store and pool
joelbrilliant Jul 24, 2026
df5a906
fix(acp): don't clear a session binding on an indeterminate load failure
joelbrilliant Jul 27, 2026
9ee7bc3
fix(acp): preserve durable session rotation semantics
joelbrilliant Jul 30, 2026
592a380
feat(desktop): preserve ACP previews for Codex handoff
chemyibinjiang Aug 10, 2026
a58a389
fix(desktop): make Tauri dev startup cross-platform
chemyibinjiang Aug 10, 2026
f08da28
feat(acp): fork bound Codex tasks by default
chemyibinjiang Aug 10, 2026
0237166
feat: add Codex task agents and multimodal bridge
chemyibinjiang Aug 11, 2026
f467938
feat: share Codex app-server with Buzz agents
chemyibinjiang Aug 11, 2026
ccaf75e
Reduce repeated ACP session context
wesbillman Aug 9, 2026
3258052
Fence session context delivery regressions
wesbillman Aug 9, 2026
4310bba
fix(acp): share prompt delivery state across task rooms
chemyibinjiang Aug 11, 2026
ff36e92
fix(desktop): surface managed agent startup failures
chemyibinjiang Aug 11, 2026
68f9111
fix(desktop): clarify exclusive Codex task locks
chemyibinjiang Aug 11, 2026
d29536b
fix(desktop): document Codex task handoff
chemyibinjiang Aug 11, 2026
ada08b5
feat(desktop): clarify Codex task ownership handoff
chemyibinjiang Aug 11, 2026
2cb8e57
fix(desktop): distinguish shared Codex connections
chemyibinjiang Aug 11, 2026
617b49f
feat: integrate Buzz agents with shared Codex runtime
chemyibinjiang Aug 11, 2026
3e6edb5
build(windows): add Codex Lab evaluation installer
chemyibinjiang Aug 11, 2026
1de2e0f
feat(auth): clarify account recovery and relay access
chemyibinjiang Aug 12, 2026
aa59122
Route invite links to Codex Lab builds
chemyibinjiang Aug 12, 2026
cefdea7
Require clean Codex Lab package sources
chemyibinjiang Aug 12, 2026
a97692f
docs: add HAIYUN Codex Lab test handoff
chemyibinjiang Aug 12, 2026
e5fed28
docs: hand off shared runtime takeover fix
chemyibinjiang Aug 12, 2026
58b2a9d
fix Codex runtime takeover and figure uploads
chemyibinjiang Aug 12, 2026
80ad9df
docs: hand off installed Codex Lab build
chemyibinjiang Aug 13, 2026
f4ed9f4
Bundle Codex ACP for offline setup
chemyibinjiang Aug 13, 2026
19bcf1f
Keep offline bundle output structured
chemyibinjiang Aug 13, 2026
7398c51
fix Windows Codex runtime and add tray
chemyibinjiang Aug 13, 2026
4ce6728
fix Windows tray actions
chemyibinjiang Aug 14, 2026
ad7cc67
fix desktop mentions for shared agents
chemyibinjiang Aug 14, 2026
99e9481
feat(desktop): add message send timing diagnostics
chemyibinjiang Aug 14, 2026
ddf1341
Merge upstream Buzz updates into Codex Lab
chemyibinjiang Aug 14, 2026
30c5123
feat(dev-mcp): add authenticated attachment downloads
LinHuangxmu Aug 17, 2026
130d0dd
fix(desktop): make message and file delivery reliable
LinHuangxmu Aug 17, 2026
55d780e
fix(desktop): download agent file links in app
LinHuangxmu Aug 17, 2026
c605867
fix: preserve attachment filenames across uploads
LinHuangxmu Aug 18, 2026
169ca18
fix: stop Buzz processes before installer updates
LinHuangxmu Aug 18, 2026
40ddd59
fix: send generic attachments with filename metadata
LinHuangxmu Aug 18, 2026
ef2903c
feat(desktop): preview attachments and fix Codex agents
LinHuangxmu Aug 18, 2026
7f839a8
fix(desktop): send thread messages and markdown files reliably
LinHuangxmu Aug 18, 2026
90fdd45
fix(desktop): restore agent editing and render math
LinHuangxmu Aug 19, 2026
6486034
fix(chat): deliver agent mentions and inline math
LinHuangxmu Aug 19, 2026
b2fdc28
feat(desktop): add agent output stop button
LinHuangxmu Aug 19, 2026
29a605d
feat(desktop): choose agent when stopping output
LinHuangxmu Aug 19, 2026
0d023f2
feat(acp): support agent file handoffs
LinHuangxmu Aug 19, 2026
a23d72e
feat(desktop): show bound Codex task history
LinHuangxmu Aug 19, 2026
00e59d8
Fix desktop test lint issues
LinHuangxmu Aug 20, 2026
bc62b32
feat(agents): configure non-owner direct-message access
LinHuangxmu Aug 20, 2026
7121731
fix(agents): propagate access policy to remote launches
LinHuangxmu Aug 20, 2026
a152a78
fix(agents): allow access-only edits without provider credentials
LinHuangxmu Aug 20, 2026
1f5c944
fix(agents): sync access settings to linked instances
LinHuangxmu Aug 20, 2026
07b3b8d
fix(messages): notify duplicate-named agents
LinHuangxmu Aug 20, 2026
70a7299
fix(agents): reconcile definition access settings
LinHuangxmu Aug 21, 2026
1abb4f1
fix(agents): hide unready shared identities
LinHuangxmu Aug 21, 2026
b662783
fix(agents): accept legacy cross-user mentions
LinHuangxmu Aug 21, 2026
22386f4
fix(build): package offline ACP resources from project tree
LinHuangxmu Aug 21, 2026
713b486
fix(messages): preserve selected agent mention rendering
LinHuangxmu Aug 21, 2026
ea0ca27
feat: share agent observer controls with turn participants
LinHuangxmu Aug 21, 2026
0844307
feat: add persistent channel agent activity menu
LinHuangxmu Aug 21, 2026
cc26ae1
fix: stabilize codex task runtime on mac
LinHuangxmu Aug 21, 2026
df39a8d
feat: add agent handoff GUI
LinHuangxmu Aug 22, 2026
1275b99
fix: expose agent handoff history in activity
LinHuangxmu Aug 22, 2026
8608d91
fix: speed up Codex task discovery
chemyibinjiang Aug 23, 2026
560805c
fix: add handoff history to channel agent menu
LinHuangxmu Aug 24, 2026
ced9241
fix: keep handoff trigger inside dialog state
LinHuangxmu Aug 24, 2026
25ee20a
fix: keep handoff dialog open after menu selection
LinHuangxmu Aug 24, 2026
cb0476e
fix: support cross-user agent handoffs
LinHuangxmu Aug 24, 2026
c2cc9fa
feat: label agent owners and deleted identities
LinHuangxmu Aug 24, 2026
3173b89
feat: let agents generate handoff summaries
LinHuangxmu Aug 24, 2026
1b00705
fix: filter handoff agents and speed up builds
LinHuangxmu Aug 24, 2026
5d78056
fix: pass channel context to agent handoff
LinHuangxmu Aug 24, 2026
1c4320c
fix: use channel agents for handoff recipients
LinHuangxmu Aug 24, 2026
13f9471
feat: show changelog on startup and notify handoffs
LinHuangxmu Aug 24, 2026
9e304d0
fix: support LAN aliases and Codex shared runtime launch
LinHuangxmu Aug 24, 2026
b6872b9
fix: make Codex runtime startup resilient on Windows
LinHuangxmu Aug 24, 2026
ece8fd4
fix: restore lab media and invite links
chemyibinjiang Aug 25, 2026
08e1e4a
Merge pull request #1 from chemyibinjiang/codex/codex-acp-onboarding
LinHuangxmu Aug 25, 2026
725d670
feat: add signed Codex Lab updates
chemyibinjiang Aug 25, 2026
8cdbcca
test: verify Codex Lab updater signatures
chemyibinjiang Aug 25, 2026
d560aa3
fix: use shared pubkey formatting in handoffs
chemyibinjiang Aug 25, 2026
da54327
Merge pull request #2 from chemyibinjiang/codex/codex-acp-onboarding
chemyibinjiang Aug 25, 2026
e3a1e35
feat(desktop): add LAN relay fast path
chemyibinjiang Aug 27, 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
173 changes: 173 additions & 0 deletions .github/workflows/codex-lab-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
name: Buzz Codex Lab release

on:
workflow_dispatch:
inputs:
version:
description: Semantic version for the Codex Lab build
required: true
type: string

concurrency:
group: buzz-codex-lab-release
cancel-in-progress: false

permissions:
contents: write

jobs:
release-windows:
name: Build and publish Windows updater
if: github.repository == 'chemyibinjiang/buzz'
runs-on: windows-latest
timeout-minutes: 120
env:
TARGET: x86_64-pc-windows-msvc
BUZZ_UPDATER_ENDPOINT: https://github.com/chemyibinjiang/buzz/releases/download/buzz-codex-lab-latest/latest.json
steps:
- name: Require integration branch
shell: bash
run: |
if [[ "$GITHUB_REF" != "refs/heads/Lin/develop" ]]; then
echo "::error::Codex Lab releases must run from Lin/develop; got $GITHUB_REF"
exit 1
fi

- name: Validate version
shell: bash
env:
VERSION: ${{ inputs.version }}
run: |
if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
echo "::error::Version is not semantic: $VERSION"
exit 1
fi

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

- uses: dtolnay/rust-toolchain@e081816240890017053eacbb1bdf337761dc5582 # 1.95.0
with:
targets: ${{ env.TARGET }}

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 24.14.1
package-manager-cache: false

- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0
with:
version: 11.4.0

- name: Install dependencies
shell: bash
run: pnpm install --frozen-lockfile

- name: Build signed Codex Lab installer
shell: pwsh
env:
BUZZ_UPDATER_PUBLIC_KEY: ${{ secrets.CODEX_LAB_UPDATER_PUBLIC_KEY }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.CODEX_LAB_UPDATER_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.CODEX_LAB_UPDATER_PRIVATE_KEY_PASSWORD }}
run: |
.\scripts\build-codex-lab-windows.ps1 `
-EnableUpdater `
-VersionOverride '${{ inputs.version }}' `
-SkipDependencyInstall

- name: Resolve release artifacts
id: artifacts
shell: pwsh
env:
VERSION: ${{ inputs.version }}
run: |
$info = Get-Content -LiteralPath 'dist\codex-lab-windows\BUILD-INFO.json' -Raw -Encoding UTF8 |
ConvertFrom-Json
if ($info.version -ne $env:VERSION -or -not $info.updater.enabled) {
throw 'Build metadata does not describe the requested updater release.'
}
$installer = Join-Path 'dist\codex-lab-windows' $info.installer.name
$signature = "$installer.sig"
if (-not (Test-Path -LiteralPath $installer -PathType Leaf) -or
-not (Test-Path -LiteralPath $signature -PathType Leaf)) {
throw 'Signed updater artifacts are missing.'
}
"installer=$installer" >> $env:GITHUB_OUTPUT
"installer_name=$($info.installer.name)" >> $env:GITHUB_OUTPUT
"signature=$signature" >> $env:GITHUB_OUTPUT

- name: Verify updater signature
shell: pwsh
env:
BUZZ_UPDATER_PUBLIC_KEY: ${{ secrets.CODEX_LAB_UPDATER_PUBLIC_KEY }}
run: |
.\scripts\verify-codex-lab-updater.ps1 `
-InstallerPath '${{ steps.artifacts.outputs.installer }}' `
-SignaturePath '${{ steps.artifacts.outputs.signature }}' `
-PublicKey $env:BUZZ_UPDATER_PUBLIC_KEY

- name: Generate latest.json
shell: bash
env:
VERSION: ${{ inputs.version }}
INSTALLER_NAME: ${{ steps.artifacts.outputs.installer_name }}
SIGNATURE: ${{ steps.artifacts.outputs.signature }}
run: |
VERSION_TAG="buzz-codex-lab-v${VERSION}"
ASSET_URL="https://github.com/chemyibinjiang/buzz/releases/download/${VERSION_TAG}/${INSTALLER_NAME}"
node scripts/generate-codex-lab-latest.mjs \
--version "$VERSION" \
--signature-file "$SIGNATURE" \
--url "$ASSET_URL" \
--output dist/codex-lab-windows/latest.json

- name: Publish immutable version release
shell: bash
env:
GH_TOKEN: ${{ github.token }}
VERSION: ${{ inputs.version }}
INSTALLER: ${{ steps.artifacts.outputs.installer }}
SIGNATURE: ${{ steps.artifacts.outputs.signature }}
run: |
VERSION_TAG="buzz-codex-lab-v${VERSION}"
if gh release view "$VERSION_TAG" >/dev/null 2>&1; then
echo "::error::Release already exists: $VERSION_TAG"
exit 1
fi
gh release create "$VERSION_TAG" \
"$INSTALLER" \
"$SIGNATURE" \
--target "$GITHUB_SHA" \
--title "Buzz Codex Lab v${VERSION}" \
--notes "Signed Buzz Codex Lab Windows updater built from ${GITHUB_SHA}." \
--prerelease

- name: Publish stable updater manifest
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
if ! gh release view buzz-codex-lab-latest >/dev/null 2>&1; then
gh release create buzz-codex-lab-latest \
--target "$GITHUB_SHA" \
--title "Buzz Codex Lab updater channel" \
--notes "Mutable manifest consumed by Buzz Codex Lab clients." \
--prerelease
fi
gh release upload buzz-codex-lab-latest \
dist/codex-lab-windows/latest.json \
--clobber

- name: Upload workflow artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: buzz-codex-lab-${{ inputs.version }}
path: |
${{ steps.artifacts.outputs.installer }}
${{ steps.artifacts.outputs.signature }}
dist/codex-lab-windows/latest.json
dist/codex-lab-windows/BUILD-INFO.json
dist/codex-lab-windows/SHA256SUMS.txt
if-no-files-found: error
retention-days: 30
15 changes: 15 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 8 additions & 2 deletions crates/buzz-acp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ buzz-persona = { path = "../buzz-persona" }
nostr = { workspace = true }

# Async runtime
tokio = { workspace = true }
tokio = { workspace = true, features = ["io-std"] }

# WebSocket
tokio-tungstenite = { workspace = true }
Expand All @@ -36,7 +36,7 @@ rustls = { version = "0.23", default-features = false, features = ["ring", "std"
futures-util = { workspace = true }

# HTTP (channel discovery REST API)
reqwest = { workspace = true }
reqwest = { workspace = true, features = ["stream"] }

# Serialization
serde = { workspace = true }
Expand Down Expand Up @@ -68,6 +68,11 @@ clap = { version = "4", features = ["derive", "env"] }
# Config file
toml = "1.0"

# Durable ACP session binding store location
dirs = "6"
# Cross-process flock for shared session bindings
fs2 = "0.4"

# Filter expressions
evalexpr = { workspace = true }

Expand All @@ -78,4 +83,5 @@ nix = { version = "0.31", default-features = false, features = ["signal"] }

[dev-dependencies]
tokio = { workspace = true, features = ["test-util"] }
tempfile = "3"
httparse = "1"
Loading
Loading