Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 32df96f0ea | |||
| 2d397663d5 |
@@ -112,15 +112,22 @@ jobs:
|
|||||||
echo "pi_version=${PI_VERSION}" >> "$GITHUB_OUTPUT"
|
echo "pi_version=${PI_VERSION}" >> "$GITHUB_OUTPUT"
|
||||||
echo "Resolved PI_VERSION=${PI_VERSION} from tag ${TAG}"
|
echo "Resolved PI_VERSION=${PI_VERSION} from tag ${TAG}"
|
||||||
|
|
||||||
- name: Build and push (amd64 + arm64)
|
- name: Build and push (amd64 + arm64) — with retry
|
||||||
uses: docker/build-push-action@v7
|
shell: bash
|
||||||
with:
|
env:
|
||||||
context: .
|
PI_VERSION: ${{ steps.resolve.outputs.pi_version }}
|
||||||
platforms: linux/amd64,linux/arm64
|
TAGS: ${{ steps.tags.outputs.tags }}
|
||||||
push: true
|
run: |
|
||||||
tags: ${{ steps.tags.outputs.tags }}
|
set -euo pipefail
|
||||||
build-args: |
|
# Convert newline-delimited TAGS env var (build-push-action's native
|
||||||
PI_VERSION=${{ steps.resolve.outputs.pi_version }}
|
# format from the `Compute tags` step) into a bash array of -t flags.
|
||||||
|
TAG_FLAGS=()
|
||||||
|
while IFS= read -r t; do [[ -n "$t" ]] && TAG_FLAGS+=( -t "$t" ); done <<< "${TAGS}"
|
||||||
|
# 3-attempt retry around `docker buildx build --push` for transient
|
||||||
|
# registry-1.docker.io blips (rate limits, CDN flap, brief 5xx).
|
||||||
|
# Does NOT mask deterministic failures: a true regression (e.g. the
|
||||||
|
# cache-export 400 hit 2026-05-23..28) will fail all 3 attempts
|
||||||
|
# identically and the job still fails — by design.
|
||||||
# Registry cache disabled: buildkit's mode=max cache-export to
|
# Registry cache disabled: buildkit's mode=max cache-export to
|
||||||
# registry-1.docker.io reproducibly returns HTTP 400 on resumable-
|
# registry-1.docker.io reproducibly returns HTTP 400 on resumable-
|
||||||
# upload PUT (Hub-CDN protocol mismatch with buildx 0.34.x, surfaced
|
# upload PUT (Hub-CDN protocol mismatch with buildx 0.34.x, surfaced
|
||||||
@@ -130,6 +137,25 @@ jobs:
|
|||||||
# root-cause analysis. Re-enable when buildkit upstream resolves.
|
# root-cause analysis. Re-enable when buildkit upstream resolves.
|
||||||
# Single-stage Dockerfile + tiny diff (npm install pi only) means
|
# Single-stage Dockerfile + tiny diff (npm install pi only) means
|
||||||
# build is fast even without cache (~30-60s).
|
# build is fast even without cache (~30-60s).
|
||||||
|
for attempt in 1 2 3; do
|
||||||
|
echo "==> Build+push attempt ${attempt}/3"
|
||||||
|
if docker buildx build \
|
||||||
|
--platform linux/amd64,linux/arm64 \
|
||||||
|
--push \
|
||||||
|
--build-arg "PI_VERSION=${PI_VERSION}" \
|
||||||
|
"${TAG_FLAGS[@]}" \
|
||||||
|
.; then
|
||||||
|
echo "==> Attempt ${attempt} succeeded"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${attempt}" -lt 3 ]]; then
|
||||||
|
backoff=$(( attempt * 15 ))
|
||||||
|
echo "==> Attempt ${attempt} failed, sleeping ${backoff}s before retry"
|
||||||
|
sleep "${backoff}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "==> All 3 build+push attempts failed"
|
||||||
|
exit 1
|
||||||
|
|
||||||
update-description:
|
update-description:
|
||||||
needs: publish
|
needs: publish
|
||||||
|
|||||||
+25
-1
@@ -8,7 +8,31 @@ Tags follow the pi npm version: `v{pi_version}[letter]` — bare tag for the fir
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
_(no changes since v0.76.0)_
|
_(no changes since v0.77.0)_
|
||||||
|
|
||||||
|
## v0.77.0 — 2026-05-29
|
||||||
|
|
||||||
|
pi `0.76.0` → `0.77.0` bump (first container build on the pi 0.77 line, published upstream 2026-05-28). Built against `joakimp/opencode-devbox:base-latest` (unchanged from the v0.76.0 build — same SSH-CM, gitleaks, git-crypt baked in).
|
||||||
|
|
||||||
|
### Bumped: pi 0.76.0 → 0.77.0
|
||||||
|
|
||||||
|
Notable upstream changes (from pi's CHANGELOG):
|
||||||
|
|
||||||
|
- **Claude Opus 4.8 support** — Anthropic Opus 4.8 model metadata + adaptive-thinking coverage updated.
|
||||||
|
- **Selective tool disablement** — `--exclude-tools` / `-xt` disables specific built-in, extension, or custom tools while leaving the rest available.
|
||||||
|
- **Headless Codex subscription login** — `/login` can use device-code auth for ChatGPT Plus/Pro Codex subscriptions; browser login remains the default.
|
||||||
|
- **Streaming-aware extension input** — `InputEvent.streamingBehavior` lets extensions distinguish idle prompts from mid-stream steers and queued follow-ups.
|
||||||
|
- **Bugfixes** — startup timing output excludes `createAgentSessionRuntime` work; OpenRouter DeepSeek V4 `xhigh` reasoning preserves OpenRouter's native effort; SIGTERM/SIGHUP exits run extension `session_shutdown` cleanup; keyboard protocol negotiation ignores delayed terminal responses (no false Kitty detection); Windows MSYS2 ucrt64 startup crash fixed via napi-rs 3.x clipboard addon; API-key/header config resolution treats plain strings as literals with `$ENV_VAR` / `${ENV_VAR}` interpolation and `$!` escaping; session disposal aborts in-flight agent/compaction/branch-summary/retry/bash work; `pi.getAllTools()` exposes per-tool `promptGuidelines`; OpenAI Codex Responses replay after switching from Anthropic extended-thinking sessions; Anthropic-compatible replay supports `allowEmptySignature` for providers returning empty thinking signatures; OpenAI/OpenRouter GPT-5.5 Pro thinking levels limited to supported efforts; OpenCode Go Kimi K2.6 thinking-off requests; Xiaomi Token Plan model metadata cleaned of unsupported variants; follow-up messages queued by `agent_end` extension handlers drain before idle; system prompt tool-selection guidance avoids unavailable file-exploration tools; fenced `diff` highlighting restored.
|
||||||
|
|
||||||
|
Workflow continues to derive `PI_VERSION` from the git tag (`v0.77.0` → `0.77.0`) and pass it as a build-arg per the v0.75.5b cache-hit fix; smoke test asserts `pi --version` matches.
|
||||||
|
|
||||||
|
### Inheritance from base
|
||||||
|
|
||||||
|
No base change in `joakimp/opencode-devbox:base-latest` since v0.76.0 — the v1.15.12 opencode-devbox release also reused the unchanged base. SSH ControlMaster on a writable socket path, gitleaks, and git-crypt continue to ride along from the base.
|
||||||
|
|
||||||
|
### CI
|
||||||
|
|
||||||
|
This is the second pi-devbox release exercising the cache-export-disabled workflow (after v0.76.0's clean publish on run #340) and the first to also exercise the 3-attempt retry wrapper added in 2d39766 along the publish path.
|
||||||
|
|
||||||
## v0.76.0 — 2026-05-28
|
## v0.76.0 — 2026-05-28
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user