feat(studio): add :latest-studio variant (PR-3)
Bundle pi-studio (omaclaren/pi-studio) as a new -studio image variant: browser prompt editor, KaTeX/Mermaid preview, tmux-backed literate REPLs, /studio command + studio_* agent tools. - Dockerfile.variant: INSTALL_STUDIO + PI_STUDIO_REPO/REF args; vendor pi-studio to /opt/pi-studio (no build step — prebuilt client in git; npm install --omit=dev for 3 prod deps). STUDIO_PORT=8765 advisory. - entrypoint-user.sh: register /opt/pi-studio via the existing pi install local-path loop (auto-skips in non-studio variant). - smoke-test.sh: auto-detected studio assertions (clone + prebuilt client + pi install registration). - CI: resolve PI_STUDIO_REF to a SHA; independent smoke-studio + build-variant-studio jobs that gate ONLY the -studio tags, so a studio failure never blocks the core :latest release. - README: 'Using pi-studio' section documenting the container access reality — pi-studio hard-binds 127.0.0.1 (index.ts .listen(port, '127.0.0.1'), no --host flag), so -p publish alone can't reach it. Documents host-networking and loopback-bridge paths, the remote ssh -L forward, and the mosh caveat (no port forwarding; run parallel ssh -L). - CHANGELOG/AGENTS/DOCKER_HUB updated. Will tag as v1.1.0 (minor). No tag created — stopping for review.
This commit is contained in:
+26
-1
@@ -13,7 +13,32 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
|
||||
|
||||
## Unreleased
|
||||
|
||||
_(no changes since v1.0.1)_
|
||||
### Added — `:latest-studio` variant (will tag as **v1.1.0**, minor)
|
||||
|
||||
- **New `-studio` image variant** bundling
|
||||
[pi-studio](https://github.com/omaclaren/pi-studio) — a two-pane
|
||||
browser workspace (prompt/response editor, live KaTeX/Mermaid preview,
|
||||
tmux-backed literate REPLs for Shell/Python/IPython/Julia/R/GHCi/Clojure)
|
||||
plus the `/studio` slash command and `studio_repl_send` /
|
||||
`studio_export_*` agent tools. Published as `:latest-studio` and
|
||||
`:vX.Y.Z-studio` (multi-arch).
|
||||
- pi-studio is **vendored to `/opt/pi-studio`** at build time (gated by
|
||||
`INSTALL_STUDIO=true`, ref pinned via CI-resolved `PI_STUDIO_REF`) and
|
||||
registered on container start by `entrypoint-user.sh` via
|
||||
`pi install /opt/pi-studio` — the same pattern as pi-fork /
|
||||
pi-observational-memory. No build step: pi-studio ships its browser
|
||||
bundle prebuilt in git. The non-studio `:latest` image is unchanged.
|
||||
- CI gains independent `smoke-studio` + `build-variant-studio` jobs that
|
||||
gate **only** the studio tags, so a studio build/smoke failure can
|
||||
never block the core `:latest` / `:vX.Y.Z` release.
|
||||
- `STUDIO_PORT=8765` baked as an advisory default.
|
||||
- **README "Using pi-studio" section.** Documents the container access
|
||||
reality: pi-studio hard-binds `127.0.0.1` inside the container
|
||||
(`.listen(port,"127.0.0.1")`, no `--host` flag), so a plain `-p`
|
||||
publish does not reach it. Documents the two working paths — host
|
||||
networking (recommended on OrbStack) and a loopback bridge for bridge
|
||||
networking — plus the remote `ssh -L` forward and the **mosh caveat**
|
||||
(mosh cannot forward ports; run a parallel `ssh -L` alongside it).
|
||||
|
||||
## v1.0.1 — 2026-06-10
|
||||
|
||||
|
||||
Reference in New Issue
Block a user