diff --git a/CHANGELOG.md b/CHANGELOG.md index dca7ece..2c7fc72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,46 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`). --- +## Unreleased + +Staged, not yet tagged — more changes are queued for the next release before CI +is kicked off. + +### Changed + +- **mempalace pin `3.5.0` → `3.6.0`** (`Dockerfile.base` `MEMPALACE_VERSION`), + in lockstep with opencode-devbox v2.9.0 as the pin's own comment requires. + 3.6.0 (2026-07-17) is PyPI latest and is additive/reliability only — secure + `mempalace serve` remote mode, optional Milvus backend, atomic KG + `supersede()`, conversation chronology, mining exclusions, plus recovery and + locking fixes. **Reviewed for MCP tool-schema changes before bumping** — that + being the exact regression class this pin exists to catch, after an unpinned + install once swept in the broken 3.3.x/3.4.0 `diary_write` schema: there are + **none**, and nothing touches `diary_write`, so the perl workaround removed in + v1.2.2 stays removed. Two fixes are directly relevant to how this image uses + mempalace: read-only mode now covers `checkpoint` + `delete_by_source` in + `_MUTATING_TOOLS` (#1930), and agent attribution is preserved in + `mempalace_checkpoint` (#2023/#2034) — the latter matters because the diary + protocol relies on per-agent attribution. Rebuilds the base image. + +### Documentation + +- Documents **per-variant image description labels** (committed and pushed after + the v1.6.4 tag without a changelog entry). Both published variants used to + inherit `Dockerfile.base`'s `description="pi-devbox — base image + (variant-independent)"`, so `v1.6.4` and `v1.6.4-studio` both advertised + themselves on Docker Hub as *the base image* — misleading, and useless for + telling the two apart. Since a `LABEL` cannot branch on `INSTALL_STUDIO`, the + text now arrives as a build arg: CI passes a variant-specific string + (interpolating `RELEASE_TAG`, `PI_VERSION`, and `STUDIO_TAG` for studio), while + the `Dockerfile.variant` default keeps a bare local `docker build` honest + rather than misleading. Sets `org.opencontainers.image.title`/`.description` + alongside the legacy bare `description` key so both Hub and OCI-aware tooling + see it. The ARGs stay in the last-declared block, so the label layer remains + the only thing invalidated. + +--- + ## v1.6.4 — 2026-07-30 Patch release. Headline: **the `fork` tool has never once loaded since v1.0.0** diff --git a/Dockerfile.base b/Dockerfile.base index 3cbb3ce..192de33 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -367,13 +367,24 @@ ARG INSTALL_MEMPALACE=true # diary_write schema. Pinning makes mempalace upgrades a reviewable diff # rather than a surprise. # -# 3.5.0 (2026-06) ships the upstream fix for the top-level-anyOf diary_write +# 3.5.0 (2026-06) shipped the upstream fix for the top-level-anyOf diary_write # schema (issue #1728 / PR #1717, merged 2026-06-14): the advertised schema # is now `"required": ["agent_name"]` with entry/content enforced at dispatch, # which Anthropic's tools API accepts — so the old mcp_server.py perl -# workaround that used to live below is gone. Keep in lockstep with -# opencode-devbox when bumping. -ARG MEMPALACE_VERSION=3.5.0 +# workaround that used to live below is gone. +# +# 3.6.0 (2026-07-17, PyPI latest) is additive/reliability only — secure +# `mempalace serve` remote mode, optional Milvus backend, atomic KG +# supersede(), conversation chronology, mining exclusions, plus recovery and +# locking fixes. Reviewed for MCP tool-schema changes before bumping (that +# being the exact regression class this pin exists to catch): there are NONE, +# and nothing touches diary_write. Two fixes matter for how this image uses +# mempalace: read-only mode now covers checkpoint + delete_by_source in +# _MUTATING_TOOLS (#1930), and agent attribution is preserved in +# mempalace_checkpoint (#2023/#2034). +# +# Keep in lockstep with opencode-devbox when bumping. +ARG MEMPALACE_VERSION=3.6.0 ENV UV_TOOL_DIR=/opt/uv-tools ENV UV_TOOL_BIN_DIR=/usr/local/bin RUN if [ "${INSTALL_MEMPALACE}" = "true" ]; then \