Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 9 additions & 9 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,25 @@ APPROVING_DEPLOYMENT_MODE=local-demo
# local-demo default; change before exposing beyond loopback.
SANDBOX_GATEWAY_API_KEY=approving-local-demo

# Published images (GHCR). Tag 0.1.1-beta matches the current public packages.
# Published images (GHCR). Tag 0.1.2-beta matches the current public packages.
# Prefer @sha256:... digests for immutable releases / ./release-smoke.sh.
APPROVING_IMAGE=ghcr.io/cocofhu/approving:0.1.1-beta
SANDBOX_GATEWAY_IMAGE=ghcr.io/cocofhu/sandbox-gateway:0.1.1-beta
APPROVING_IMAGE=ghcr.io/cocofhu/approving:0.1.2-beta
SANDBOX_GATEWAY_IMAGE=ghcr.io/cocofhu/sandbox-gateway:0.1.2-beta

# Optional GLOBAL FORCE for all acpBackends (smoke / digest pin). Leave unset so
# each backend uses APPROVING_SANDBOX_IMAGE_* below. If set, ./start.sh maps it to
# APPROVING_SANDBOX_IMAGE (or set APPROVING_SANDBOX_IMAGE directly).
# SANDBOX_IMAGE=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.1-beta
# SANDBOX_IMAGE=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.2-beta
# APPROVING_SANDBOX_IMAGE=

# Per-backend sandbox runtimes (default GHCR). ./start.sh pulls all four.
APPROVING_SANDBOX_IMAGE_CURSOR=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.1-beta
APPROVING_SANDBOX_IMAGE_CLAUDE_CODE=ghcr.io/cocofhu/universal-sandbox-claude_code:0.1.1-beta
APPROVING_SANDBOX_IMAGE_CODEBUDDY=ghcr.io/cocofhu/universal-sandbox-codebuddy:0.1.1-beta
APPROVING_SANDBOX_IMAGE_TRAE=ghcr.io/cocofhu/universal-sandbox-trae:0.1.1-beta
APPROVING_SANDBOX_IMAGE_CURSOR=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.2-beta
APPROVING_SANDBOX_IMAGE_CLAUDE_CODE=ghcr.io/cocofhu/universal-sandbox-claude_code:0.1.2-beta
APPROVING_SANDBOX_IMAGE_CODEBUDDY=ghcr.io/cocofhu/universal-sandbox-codebuddy:0.1.2-beta
APPROVING_SANDBOX_IMAGE_TRAE=ghcr.io/cocofhu/universal-sandbox-trae:0.1.2-beta

# Gateway: per-provider template; SANDBOX_IMAGE (or default cursor) is fallback only.
SBGW_IMAGE_TEMPLATE=ghcr.io/cocofhu/universal-sandbox-{provider}:0.1.1-beta
SBGW_IMAGE_TEMPLATE=ghcr.io/cocofhu/universal-sandbox-{provider}:0.1.2-beta

# Loopback doctor control-plane token. Empty → ./start.sh generates one.
APPROVING_DOCTOR_TOKEN=
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ All notable public-release changes are documented here.

## Unreleased

## 0.1.2-beta — 2026-07-31

- Public beta follow-up on [`v0.1.2-beta`](https://github.com/cocofhu/approving/releases/tag/v0.1.2-beta)
(relative to `v0.1.1-beta`: PRs #143–#151). Full notes on the GitHub Release.
- Pin `./start.sh`, `.env.example`, and `compose.release.yaml` defaults to GHCR
`*:0.1.2-beta` (tag publish does not rewrite these files).
- Highlights: Gates Inbox 纳入 app_preview 待审批;Inbox 布局/预览预算修复;inspect 可取消;
revise 失败不再显示 Done;PreviewIssues 冷会话退回;sandbox `/tmp` PVC;Token 实心饼图;
ArtifactPreview 图片 padding;输出节点 goto 邻接选项。

## 0.1.1-beta — 2026-07-29

- Public beta follow-up on [`v0.1.1-beta`](https://github.com/cocofhu/approving/releases/tag/v0.1.1-beta)
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,16 +147,16 @@ A release is complete only when all three workflows succeed, and
`publish-sandbox` is green for every matrix provider
(`cursor`, `claude_code`, `codebuddy`, `trae`). If any job fails, re-run the
failed workflow via **Actions → workflow_dispatch** (e.g. re-run
`publish-sandbox` for an existing `v*` tag such as `v0.1.1-beta`).
`publish-sandbox` for an existing `v*` tag such as `v0.1.2-beta`).

Sandbox builds are large (often 30–90+ minutes). Packages may start private;
set them Public under GitHub → Packages if anonymous pulls are required.

Default tags used by `./start.sh` (overridable in `.env`):

- `ghcr.io/cocofhu/approving:0.1.1-beta`
- `ghcr.io/cocofhu/sandbox-gateway:0.1.1-beta`
- `ghcr.io/cocofhu/universal-sandbox-{cursor,claude_code,codebuddy,trae}:0.1.1-beta`
- `ghcr.io/cocofhu/approving:0.1.2-beta`
- `ghcr.io/cocofhu/sandbox-gateway:0.1.2-beta`
- `ghcr.io/cocofhu/universal-sandbox-{cursor,claude_code,codebuddy,trae}:0.1.2-beta`
(per `acpBackend`; optional `SANDBOX_IMAGE` / `APPROVING_SANDBOX_IMAGE` forces one image for all backends — used by release-smoke)

### release-smoke (manual; not a PR required check)
Expand Down
16 changes: 8 additions & 8 deletions compose.release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
# ./release-smoke.sh (smoke requires immutable @sha256 refs via env).
services:
gateway:
image: ${SANDBOX_GATEWAY_IMAGE:-ghcr.io/cocofhu/sandbox-gateway:0.1.1-beta}
image: ${SANDBOX_GATEWAY_IMAGE:-ghcr.io/cocofhu/sandbox-gateway:0.1.2-beta}
network_mode: host
environment:
SBGW_LISTEN: ":${APPROVING_GATEWAY_PORT:-8899}"
SBGW_DB_PATH: /data/gateway.db
SBGW_DRIVER: docker
# Per-provider template; SBGW_IMAGE is cursor-only fallback when template/map miss.
SBGW_IMAGE_TEMPLATE: ${SBGW_IMAGE_TEMPLATE:-ghcr.io/cocofhu/universal-sandbox-{provider}:0.1.1-beta}
SBGW_IMAGE: ${SANDBOX_IMAGE:-ghcr.io/cocofhu/universal-sandbox-cursor:0.1.1-beta}
SBGW_IMAGE_TEMPLATE: ${SBGW_IMAGE_TEMPLATE:-ghcr.io/cocofhu/universal-sandbox-{provider}:0.1.2-beta}
SBGW_IMAGE: ${SANDBOX_IMAGE:-ghcr.io/cocofhu/universal-sandbox-cursor:0.1.2-beta}
# Require Bearer auth on /api/v1/* (healthz stays open).
SBGW_API_KEYS: ${SANDBOX_GATEWAY_API_KEY:-approving-local-demo}
volumes:
Expand All @@ -30,7 +30,7 @@ services:
restart: unless-stopped

approving:
image: ${APPROVING_IMAGE:-ghcr.io/cocofhu/approving:0.1.1-beta}
image: ${APPROVING_IMAGE:-ghcr.io/cocofhu/approving:0.1.2-beta}
network_mode: host
environment:
APPROVING_PORT: ${APPROVING_PORT:-8080}
Expand All @@ -39,10 +39,10 @@ services:
APPROVING_SANDBOX_GATEWAY_API_KEY: ${SANDBOX_GATEWAY_API_KEY:-approving-local-demo}
# Global force only when explicitly set (smoke / optional). Empty = per-backend below.
APPROVING_SANDBOX_IMAGE: ${APPROVING_SANDBOX_IMAGE:-}
APPROVING_SANDBOX_IMAGE_CURSOR: ${APPROVING_SANDBOX_IMAGE_CURSOR:-ghcr.io/cocofhu/universal-sandbox-cursor:0.1.1-beta}
APPROVING_SANDBOX_IMAGE_CLAUDE_CODE: ${APPROVING_SANDBOX_IMAGE_CLAUDE_CODE:-ghcr.io/cocofhu/universal-sandbox-claude_code:0.1.1-beta}
APPROVING_SANDBOX_IMAGE_CODEBUDDY: ${APPROVING_SANDBOX_IMAGE_CODEBUDDY:-ghcr.io/cocofhu/universal-sandbox-codebuddy:0.1.1-beta}
APPROVING_SANDBOX_IMAGE_TRAE: ${APPROVING_SANDBOX_IMAGE_TRAE:-ghcr.io/cocofhu/universal-sandbox-trae:0.1.1-beta}
APPROVING_SANDBOX_IMAGE_CURSOR: ${APPROVING_SANDBOX_IMAGE_CURSOR:-ghcr.io/cocofhu/universal-sandbox-cursor:0.1.2-beta}
APPROVING_SANDBOX_IMAGE_CLAUDE_CODE: ${APPROVING_SANDBOX_IMAGE_CLAUDE_CODE:-ghcr.io/cocofhu/universal-sandbox-claude_code:0.1.2-beta}
APPROVING_SANDBOX_IMAGE_CODEBUDDY: ${APPROVING_SANDBOX_IMAGE_CODEBUDDY:-ghcr.io/cocofhu/universal-sandbox-codebuddy:0.1.2-beta}
APPROVING_SANDBOX_IMAGE_TRAE: ${APPROVING_SANDBOX_IMAGE_TRAE:-ghcr.io/cocofhu/universal-sandbox-trae:0.1.2-beta}
# Generated by start.sh / release-smoke.sh when unset.
APPROVING_DOCTOR_TOKEN: ${APPROVING_DOCTOR_TOKEN:-}
APPROVING_DEPLOYMENT_MODE: ${APPROVING_DEPLOYMENT_MODE:-local-demo}
Expand Down
16 changes: 8 additions & 8 deletions start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,19 @@ set +a
: "${APPROVING_GATEWAY_PORT:=8899}"
: "${APPROVING_SANDBOX_GATEWAY_URL:=http://127.0.0.1:${APPROVING_GATEWAY_PORT}}"
: "${APPROVING_DEPLOYMENT_MODE:=local-demo}"
: "${APPROVING_IMAGE:=ghcr.io/cocofhu/approving:0.1.1-beta}"
: "${SANDBOX_GATEWAY_IMAGE:=ghcr.io/cocofhu/sandbox-gateway:0.1.1-beta}"
: "${APPROVING_IMAGE:=ghcr.io/cocofhu/approving:0.1.2-beta}"
: "${SANDBOX_GATEWAY_IMAGE:=ghcr.io/cocofhu/sandbox-gateway:0.1.2-beta}"
: "${SANDBOX_GATEWAY_API_KEY:=approving-local-demo}"

# Optional global force: capture user-set SANDBOX_IMAGE BEFORE applying the
# cursor fallback default, so a bare default does not re-force all backends.
_user_sandbox_image="${SANDBOX_IMAGE-}"
: "${SANDBOX_IMAGE:=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.1-beta}"
: "${APPROVING_SANDBOX_IMAGE_CURSOR:=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.1-beta}"
: "${APPROVING_SANDBOX_IMAGE_CLAUDE_CODE:=ghcr.io/cocofhu/universal-sandbox-claude_code:0.1.1-beta}"
: "${APPROVING_SANDBOX_IMAGE_CODEBUDDY:=ghcr.io/cocofhu/universal-sandbox-codebuddy:0.1.1-beta}"
: "${APPROVING_SANDBOX_IMAGE_TRAE:=ghcr.io/cocofhu/universal-sandbox-trae:0.1.1-beta}"
: "${SBGW_IMAGE_TEMPLATE:=ghcr.io/cocofhu/universal-sandbox-{provider}:0.1.1-beta}"
: "${SANDBOX_IMAGE:=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.2-beta}"
: "${APPROVING_SANDBOX_IMAGE_CURSOR:=ghcr.io/cocofhu/universal-sandbox-cursor:0.1.2-beta}"
: "${APPROVING_SANDBOX_IMAGE_CLAUDE_CODE:=ghcr.io/cocofhu/universal-sandbox-claude_code:0.1.2-beta}"
: "${APPROVING_SANDBOX_IMAGE_CODEBUDDY:=ghcr.io/cocofhu/universal-sandbox-codebuddy:0.1.2-beta}"
: "${APPROVING_SANDBOX_IMAGE_TRAE:=ghcr.io/cocofhu/universal-sandbox-trae:0.1.2-beta}"
: "${SBGW_IMAGE_TEMPLATE:=ghcr.io/cocofhu/universal-sandbox-{provider}:0.1.2-beta}"
# Explicit SANDBOX_IMAGE (or APPROVING_SANDBOX_IMAGE) → global force; default path leaves it empty.
if [[ -z "${APPROVING_SANDBOX_IMAGE:-}" && -n "${_user_sandbox_image}" ]]; then
APPROVING_SANDBOX_IMAGE="${_user_sandbox_image}"
Expand Down
Loading