v1.0.0: decouple from opencode-devbox
Publish Docker Image / resolve-versions (push) Successful in 5s
Publish Docker Image / base-decide (push) Successful in 12s
Publish Docker Image / build-base (push) Successful in 45m47s
Publish Docker Image / smoke (push) Successful in 8m18s
Publish Docker Image / build-variant (push) Successful in 22m41s
Publish Docker Image / update-description (push) Failing after 9s
Publish Docker Image / promote-base-latest (push) Successful in 14s
Publish Docker Image / resolve-versions (push) Successful in 5s
Publish Docker Image / base-decide (push) Successful in 12s
Publish Docker Image / build-base (push) Successful in 45m47s
Publish Docker Image / smoke (push) Successful in 8m18s
Publish Docker Image / build-variant (push) Successful in 22m41s
Publish Docker Image / update-description (push) Failing after 9s
Publish Docker Image / promote-base-latest (push) Successful in 14s
Self-contained build chain — own Dockerfile.base + Dockerfile.variant
+ entrypoint scripts + rootfs + CI pipeline. Previously v0.79.0 and
earlier were thin re-brands of opencode-devbox's pi-only variant
(joakimp/pi-devbox:base-pi-only built by opencode-devbox CI).
Architectural changes:
- Replace 5-line Dockerfile shim with full base+variant pair.
- Adapt CI workflow from opencode-devbox/docker-publish-split.yml,
simplified to a single variant. Includes content-addressed base hash,
PI_VERSION concrete-resolution to defeat registry-buildcache footgun,
crane-based base-latest promotion, and the c6f9d11 smoke-test gate.
- pi-devbox releases no longer require rebuilding opencode-devbox first.
Base image additions:
- pandoc, graphviz, imagemagick, yq — broadly useful, ~260 MB total.
- tldr (tealdeer) — Rust port replaces Node tldr global, saves 135 MB.
- /etc/tmux.conf with base-index 0 + pane-base-index 0 — required for
the planned :latest-studio variant; pi-studio hard-codes :0.0 target.
Smoke test:
- New checks for pandoc, graphviz, imagemagick, yq, tldr, tmux config,
/tmp/sshcm directory.
- Image-size measurement now sums docker history layers (the prior
inspect --format='{{.Size}}' returned only the variant-unique layer
with the new base/variant split, understating by 2+ GB).
- Threshold 2850 → 3500 MB to absorb base additions + arch margin.
Image size:
- Local arm64 build: 3.20 GB. ~390 MB up from prior pi-only equivalent.
- Will tighten threshold once amd64 actuals settle in CI.
Pre-1.0 history preserved at tag pre-v1.0.0-decouple-backup.
Future work:
- v1.1.0: :latest-studio variant (adds pi-studio).
- v1.2.0: :latest-studio-tex variant (adds texlive-xetex for PDF).
- opencode-devbox v2.0.0 will retire INSTALL_PI / pi-only paths.
This commit is contained in:
+85
-2
@@ -2,13 +2,96 @@
|
||||
|
||||
All notable changes to the pi-devbox container image.
|
||||
|
||||
Tags follow the pi npm version: `v{pi_version}[letter]` — bare tag for the first build on a new pi release, letter suffix (`b`, `c`, …) for container-level rebuilds on the same version.
|
||||
From v1.0.0 onward, tags follow semver:
|
||||
- **major** — architectural changes (v1.0.0 = decoupled from opencode-devbox)
|
||||
- **minor** — new variants, significant base additions
|
||||
- **patch** — pi version bumps, smaller fixes
|
||||
|
||||
Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
|
||||
|
||||
---
|
||||
|
||||
## Unreleased
|
||||
|
||||
_(no changes since v0.79.0)_
|
||||
_(no changes since v1.0.0)_
|
||||
|
||||
## v1.0.0 — 2026-06-09
|
||||
|
||||
**Decoupled from opencode-devbox.** pi-devbox is now self-contained:
|
||||
own `Dockerfile.base` + `Dockerfile.variant`, own CI pipeline, own
|
||||
release cadence. Previously v0.79.0 and earlier were thin re-brands of
|
||||
the `pi-only` variant built by opencode-devbox CI.
|
||||
|
||||
### Architectural
|
||||
|
||||
- **Self-contained build chain.** `Dockerfile.base` produces
|
||||
`joakimp/pi-devbox:base-<hash>` (content-addressed); `Dockerfile.variant`
|
||||
FROMs the base and adds the pi install. Replaces the prior 5-line
|
||||
`Dockerfile` shim that FROMed `joakimp/pi-devbox:base-pi-only` (an
|
||||
opencode-devbox CI artifact).
|
||||
- **No more publish-ordering coupling.** pi-devbox releases no longer
|
||||
require rebuilding opencode-devbox first.
|
||||
- **Adapted from opencode-devbox** at the time of decoupling — the
|
||||
apt set, ssh ControlMaster setup, MemPalace integration, entrypoint
|
||||
UID/GID dance, and CI pipeline shape are all derived from there. See
|
||||
Acknowledgements in README.md.
|
||||
- **CI workflow** rewritten as two-phase split-base build pipeline
|
||||
(mirrors opencode-devbox's `docker-publish-split.yml` shape, simplified
|
||||
to a single variant). Includes `crane`-based `base-latest` promotion,
|
||||
registry-buildcache footgun guard via concrete `PI_VERSION` resolution,
|
||||
and the c6f9d11 smoke-test gate (waits for keybindings + mempalace.ts
|
||||
+ ≥4 *.ts before sampling).
|
||||
|
||||
### Added (base image)
|
||||
|
||||
- **pandoc** — universal Markdown↔HTML/Org/RST/etc. conversion. ~200 MB.
|
||||
- **graphviz** — `dot` rendering for diagram pipelines. ~10 MB.
|
||||
- **imagemagick** — image conversion (invoked as `magick`, not `convert`,
|
||||
in v7+). ~50 MB.
|
||||
- **yq** — YAML-aware companion to jq.
|
||||
- **tldr (tealdeer)** — Rust port of tldr-pages, ~5 MB static binary.
|
||||
Replaced the Node `tldr` global (which was ~140 MB).
|
||||
- **`/etc/tmux.conf`** with `set -g base-index 0` + `set -g
|
||||
pane-base-index 0`. Required for the planned `:latest-studio`
|
||||
variant; pi-studio hard-codes its tmux send target to `:0.0`. User-
|
||||
level `~/.tmux.conf` overrides still win.
|
||||
|
||||
### Added (smoke test)
|
||||
|
||||
- Asserts pandoc, graphviz, imagemagick, yq, and tldr are present.
|
||||
- Asserts `/etc/tmux.conf` has the 0-indexed config baked.
|
||||
- Asserts `/tmp/sshcm/` directory created mode 700 by entrypoint.
|
||||
- Image-size measurement now sums `docker history` layer sizes (the
|
||||
prior `image inspect --format='{{.Size}}'` approach returned only
|
||||
the variant-unique layer when the base was content-addressed and
|
||||
shared, understating the user-facing image size by 2+ GB).
|
||||
- Size threshold raised to 3500 MB (was 2850) to cover the new base
|
||||
additions plus +200 MB safety margin. Tighten in a follow-up release
|
||||
once amd64 actuals settle.
|
||||
|
||||
### Image size
|
||||
|
||||
Local arm64 build of `pi-devbox-test:latest` (this branch's content):
|
||||
3.20 GB. Up ~390 MB from the prior pi-only-equivalent (~2.81 GB) due
|
||||
to pandoc, graphviz, imagemagick, yq, and minor expansion in pi npm
|
||||
dependencies.
|
||||
|
||||
### Migration notes
|
||||
|
||||
- Existing volumes (`devbox-pi-config`, `devbox-bash-history`,
|
||||
`devbox-nvim-data`, `devbox-uv-tools`, `devbox-chroma-cache`) are
|
||||
unchanged in name and structure. `docker compose pull && docker
|
||||
compose up -d --force-recreate` is a clean upgrade path.
|
||||
- The `:latest` and `vX.Y.Z` Hub tags continue to point at a "base +
|
||||
pi" image. Same shape, just built differently.
|
||||
- `:base-pi-only` and `:base-pi-only-vX.Y.Z` tags from prior releases
|
||||
remain on Hub for now; will be deprecated when opencode-devbox
|
||||
retires the pi paths in its next major release.
|
||||
|
||||
### Future work
|
||||
|
||||
- v1.1.0: `:latest-studio` variant (adds [pi-studio](https://github.com/omaclaren/pi-studio)).
|
||||
- v1.2.0: `:latest-studio-tex` variant (adds texlive-xetex for PDF export).
|
||||
|
||||
## v0.79.0 — 2026-06-08
|
||||
|
||||
|
||||
Reference in New Issue
Block a user