Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1587a84579 | |||
| 32df96f0ea | |||
| 2d397663d5 |
@@ -112,15 +112,22 @@ jobs:
|
||||
echo "pi_version=${PI_VERSION}" >> "$GITHUB_OUTPUT"
|
||||
echo "Resolved PI_VERSION=${PI_VERSION} from tag ${TAG}"
|
||||
|
||||
- name: Build and push (amd64 + arm64)
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: ${{ steps.tags.outputs.tags }}
|
||||
build-args: |
|
||||
PI_VERSION=${{ steps.resolve.outputs.pi_version }}
|
||||
- name: Build and push (amd64 + arm64) — with retry
|
||||
shell: bash
|
||||
env:
|
||||
PI_VERSION: ${{ steps.resolve.outputs.pi_version }}
|
||||
TAGS: ${{ steps.tags.outputs.tags }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# Convert newline-delimited TAGS env var (build-push-action's native
|
||||
# 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-1.docker.io reproducibly returns HTTP 400 on resumable-
|
||||
# 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.
|
||||
# Single-stage Dockerfile + tiny diff (npm install pi only) means
|
||||
# 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:
|
||||
needs: publish
|
||||
|
||||
+48
-1
@@ -8,7 +8,54 @@ Tags follow the pi npm version: `v{pi_version}[letter]` — bare tag for the fir
|
||||
|
||||
## Unreleased
|
||||
|
||||
_(no changes since v0.76.0)_
|
||||
_(no changes since v0.78.0)_
|
||||
|
||||
## v0.78.0 — 2026-05-29
|
||||
|
||||
pi `0.77.0` → `0.78.0` bump (first container build on the pi 0.78 line, published upstream 2026-05-29). Built against `joakimp/opencode-devbox:base-latest` (unchanged from the v0.77.0 build).
|
||||
|
||||
### Bumped: pi 0.77.0 → 0.78.0
|
||||
|
||||
**New Features**
|
||||
- **Named startup sessions** — `--name` / `-n` sets the session display name before startup across interactive, print, JSON, and RPC modes.
|
||||
- **Clickable file tool paths** — built-in file tool titles render OSC 8 `file://` hyperlinks when the terminal supports them, including supported tmux clients.
|
||||
|
||||
**Added**
|
||||
- Exported `convertToPng` for extension authors.
|
||||
- Exported `parseArgs` and type `Args` for extension authors.
|
||||
- Added a resume command hint when exiting interactive sessions.
|
||||
- Added custom Amazon Bedrock request header support.
|
||||
|
||||
**Fixed**
|
||||
- Fixed early interactive input typed before the prompt loop starts so it is buffered instead of dropped.
|
||||
- Fixed OpenRouter Moonshot Kimi K2.6 requests to use `system` instead of unsupported `developer` messages.
|
||||
- Fixed OSC 8 hyperlinks to pass through tmux when the client supports them.
|
||||
- Fixed ANSI text wrapping to avoid stack overflows on very long wrapped lines.
|
||||
- Fixed OpenAI Codex Responses SSE streams to abort response body reads after terminal events.
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ FROM ${BASE_IMAGE}
|
||||
# publish.yml § "Resolve PI_VERSION from tag" and AGENTS.md gotcha for
|
||||
# the full story (silent same-bytes-across-releases regression discovered
|
||||
# 2026-05-23 affecting all builds v0.74.0..v0.75.5).
|
||||
ARG PI_VERSION=latest
|
||||
ARG PI_VERSION=0.78.0
|
||||
ARG PI_TOOLKIT_REF=main
|
||||
ARG PI_EXTENSIONS_REF=main
|
||||
|
||||
|
||||
Reference in New Issue
Block a user