release(v1.12.1): ssh-lan.conf Include fix, pi-studio v0.10.2, gitea-mcp v1.10.0
Lint / skill-floor (push) Successful in 11s
Lint / hadolint (push) Successful in 27s
Lint / doc-drift (push) Successful in 28s
Lint / actionlint (push) Successful in 37s
Publish Docker Image / lint-gate (push) Successful in 22s
Publish Docker Image / resolve-versions (push) Successful in 12s
Publish Docker Image / base-decide (push) Successful in 9s
Publish Docker Image / build-base (push) Successful in 42m39s
Publish Docker Image / smoke (push) Successful in 5m24s
Publish Docker Image / smoke-studio (push) Successful in 8m23s
Publish Docker Image / build-variant (push) Successful in 16m59s
Publish Docker Image / update-description (push) Successful in 16s
Publish Docker Image / promote-base-latest (push) Successful in 18s
Publish Docker Image / build-variant-studio (push) Successful in 17m33s

Patch release. The fix itself is c693aa3: setup-lan-access.sh now writes the
ssh-lan.conf Include whether or not the file exists at container start.

Upstream survey on 2026-10-19 (check-doc-drift check 9, npm, PyPI, tags, and
the GitHub/Gitea release APIs for every base tool pinned to `latest`):
- moved: pi-studio v0.10.1 -> v0.10.2 (4b4abd1), pi-toolkit 3760d90 -> 7c05901,
  gitea-mcp v1.9.0 -> v1.10.0
- unchanged: pi 1.3.0, mempalace 3.11.0, pi-atelier v0.16.0, pi-obsmem 022da5e,
  pi-extensions, pi-fork, mempalace-toolkit, skillset snapshot, and every
  other base tool
Audits, all on tor-ms22:
- pi-studio 0.10.2: lockfile packages identical to 0.10.1's. Loaded into
  pi 1.3.0, it registers the same 4 studio_* tools, rc 0.
- pi-toolkit: the new model IDs are in pi 1.3.0's bedrock registry, and they
  reach fresh volumes only (the settings merge fills only missing keys).
- gitea-mcp 1.10.0: stdio tools/list gives 58 -> 61 tools, none removed, and
  stdout carries JSON only.

CHANGELOG: Unreleased -> v1.12.1 with the components table and the audits.
README: "Since v1.12.1". Dockerfile.base: BASE_REBUILD_DATE marker refreshed;
the base rebuilds anyway because rootfs changed.
check-doc-drift rc 0, lint-shell, the link-pi contract tests, skill-floor and
the Dockerfile directives check: all clean.
This commit is contained in:
2026-10-19 00:37:51 +02:00
parent c693aa341d
commit 3b1c67a9bf
3 changed files with 66 additions and 8 deletions
+58 -1
View File
@@ -11,7 +11,64 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
---
## Unreleased
## v1.12.1 — 2026-10-19
Patch release. Headline: **`ssh-lan.conf` is Included even if it is created
after the container started** (*Fixed*, below). Also **pi-studio `v0.10.2`**,
pi-toolkit `7c05901` (new Bedrock defaults for fresh volumes) and gitea-mcp
`v1.10.0`. Surveyed 2026-10-19; no other upstream moved. Unchanged since v1.12.0:
pi `1.3.0` (npm `latest`), mempalace `3.11.0` (PyPI `latest`), pi-atelier `v0.16.0`
(`3b42825`, newest tag), pi-observational-memory `022da5e` (= `master`),
pi-extensions `4c1d28d`, pi-fork `e69725c`, mempalace-toolkit `d5a03f4`. The
skillset snapshot needs no refresh (`vendor-mempalace-skill.sh --check`: OK,
still `96b840e`). The base image is rebuilt because `rootfs/` changed, so apt
and the base tools pinned to `latest` re-resolve. Of those, only gitea-mcp moved
upstream: `v1.9.0` → `v1.10.0`. uv `0.13.1`, Node `v24.22.0`, nvim `0.12.6`,
fzf `0.74.5`, gitleaks `8.30.1`, bat `0.26.1`, eza `0.23.5`, zoxide `0.10.0`,
git-lfs `3.8.0`, gosu `1.19`, micro `2.0.15`, tealdeer `1.9.0`, typst `0.15.1`,
yq `4.54.1`, agent-browser `0.39.1` and playwright `1.64.1` match their newest
releases. Each was compared against the v1.12.0 image on tor-ms22.
### Components that move with this release
| Component | Baked in v1.12.0 | v1.12.1 | Why |
|---|---|---|---|
| **pi-studio** (`-studio` tags) | `v0.10.1` (`76db01f`) | **`v0.10.2`** (`4b4abd1`) | newest tag, see *Changed* below |
| pi-toolkit | `3760d90` | **`7c05901`** (or later: CI resolves `main` at build time) | `settings.example.json` defaults move to Claude 5.5 on Bedrock, see *Changed* below |
| gitea-mcp (base) | `v1.9.0` | **`v1.10.0`** (or later: `latest` at build time) | additive, see *Changed* below |
### Changed
- **pi-studio `v0.10.1` → `v0.10.2`** (`-studio` tags only). Windows fixes. The
REPL waits for the runtime's prompt before saying it started. Stopping a
session ends its processes. Code goes only to the exactly named session. The
selected session follows what you choose. One behaviour change for agents: a
`studio_repl_send` that names no session now fails when Studio shows none
selected ("No REPL session is selected in Studio …"). Before, it picked a
session. Audited 2026-10-19 on tor-ms22. Dependencies are unchanged:
`package-lock.json` packages are identical to 0.10.1's, `ws` is the only
runtime dependency, and pi peers are `*`. Loaded into this image's pi `1.3.0`
with `pi --no-extensions -e <clone>/index.ts -p`, it registers the same four
tools as 0.10.1 (`studio_repl_status`, `studio_repl_send`, `studio_export_pdf`,
`studio_export_html`), with no extension error and rc 0. Control: the same
run against the baked 0.10.1.
- **pi-toolkit `3760d90` → `7c05901`:** `settings.example.json` now defaults to
`eu.anthropic.claude-opus-5-5`. `enabledModels` becomes opus/sonnet/haiku `-5-5`,
and the observational-memory and pi-fork `fast`/`balanced`/`deep` models move
to the same family. Also a `*.bak-*` gitignore. **Only a fresh
`devbox-pi-config` volume gets these defaults.** On an existing volume, the
entrypoint's settings merge fills in only *missing* keys and keeps arrays
verbatim, so a model you already set stays. All three IDs are in pi
`1.3.0`'s built-in `amazon-bedrock` registry, and `eu.anthropic.claude-opus-5-5`
is this session's default model on tor-ms22.
- **gitea-mcp `v1.9.0` → `v1.10.0`** (base, `latest` at build time). Additive: three
new tools (`compare_commits`, `get_commit_status`, `create_commit_status`) and
new methods on existing ones. The fix that matters for stdio clients: logs go
to stderr, and `-d` no longer writes to stdout, where it corrupted the protocol.
Measured 2026-10-19 with a stdio `initialize` + `tools/list` against
gitea.jordbo.se: 1.9.0 lists 58 tools, 1.10.0 lists 61. None were removed,
and stdout carried JSON only. The image only bakes the binary; nothing in it
configures it.
### Fixed
+1 -1
View File
@@ -14,7 +14,7 @@
# content-addressed over this file, so any byte change invalidates the
# cache. Recommended cadence: once per release for security updates.
#
# BASE_REBUILD_DATE: 2026-10-18 (v1.12.0 — mempalace 3.11.0, link-pi-extensions.sh, studio-expose and skill doc fixes; apt and base tools re-resolve (upstream on 2026-10-18: uv 0.13.1, gitea-mcp 1.9.0, Node v24.22.0; nvim 0.12.6, fzf 0.74.5 unchanged); previous marker 2026-10-14 / v1.11.1)
# BASE_REBUILD_DATE: 2026-10-19 (v1.12.1 — setup-lan-access.sh always Includes ssh-lan.conf; apt and base tools re-resolve (upstream on 2026-10-19: gitea-mcp 1.10.0; uv 0.13.1, Node v24.22.0, nvim 0.12.6, fzf 0.74.5 unchanged); previous marker 2026-10-18 / v1.12.0)
#
# ── Lineage note ─────────────────────────────────────────────────────
# Adapted from opencode-devbox/Dockerfile.base (commit before v1.16.2).
+7 -6
View File
@@ -1175,12 +1175,13 @@ set `DEVBOX_LAN_AUTOJUMP_PRIVATE=1` to ProxyJump *any* RFC1918 address through
the host without naming peers (see `.env.example`).
ssh reads the file on every connection, so creating it and editing it both take
effect immediately — no container or session restart. `setup-lan-access.sh`
writes the `Include ~/.config/devbox-shell/ssh-lan.conf` line whether or not the
file exists yet (ssh skips an `Include` whose file is missing). Images up to and
including v1.12.0 wrote that line only if the file was readable at container
start. There, a file created afterwards is ignored until a restart, or until you
run `bash /usr/local/lib/pi-devbox/setup-lan-access.sh` in the container.
effect immediately — no container or session restart. Since v1.12.1,
`setup-lan-access.sh` writes the `Include ~/.config/devbox-shell/ssh-lan.conf`
line whether or not the file exists yet (ssh skips an `Include` whose file is
missing). Images up to and including v1.12.0 wrote that line only if the file
was readable at container start. There, a file created afterwards is ignored
until a restart, or until you run `bash /usr/local/lib/pi-devbox/setup-lan-access.sh`
in the container.
That looks exactly like "my override is being ignored". One case still needs
action: a file that exists but the container cannot read is left out, because
ssh would otherwise refuse every connection. The script then prints a warning at