fix: repair beta Docker image
This commit is contained in:
@@ -29,6 +29,8 @@
|
|||||||
- Closing Claude Code sessions no longer leaves child processes running ([#1540](https://github.com/getpaseo/paseo/pull/1540) by [@TommyLike](https://github.com/TommyLike))
|
- Closing Claude Code sessions no longer leaves child processes running ([#1540](https://github.com/getpaseo/paseo/pull/1540) by [@TommyLike](https://github.com/TommyLike))
|
||||||
- OpenCode no longer indexes your home directory by mistake ([#1704](https://github.com/getpaseo/paseo/pull/1704) by [@rex-chang](https://github.com/rex-chang))
|
- OpenCode no longer indexes your home directory by mistake ([#1704](https://github.com/getpaseo/paseo/pull/1704) by [@rex-chang](https://github.com/rex-chang))
|
||||||
- ACP sessions load with the correct project folder and MCP server settings ([#1624](https://github.com/getpaseo/paseo/pull/1624) by [@theslava](https://github.com/theslava))
|
- ACP sessions load with the correct project folder and MCP server settings ([#1624](https://github.com/getpaseo/paseo/pull/1624) by [@theslava](https://github.com/theslava))
|
||||||
|
- Docker images serve the bundled web UI from global installs
|
||||||
|
- Docker images can extract downloaded local speech models
|
||||||
|
|
||||||
## 0.1.101 - 2026-06-26
|
## 0.1.101 - 2026-06-26
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ RUN set -eux; \
|
|||||||
curl \
|
curl \
|
||||||
git \
|
git \
|
||||||
gosu \
|
gosu \
|
||||||
|
lbzip2 \
|
||||||
openssh-client \
|
openssh-client \
|
||||||
tini; \
|
tini; \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ RUN set -eux; \
|
|||||||
curl \
|
curl \
|
||||||
git \
|
git \
|
||||||
gosu \
|
gosu \
|
||||||
|
lbzip2 \
|
||||||
openssh-client \
|
openssh-client \
|
||||||
tini; \
|
tini; \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|||||||
+6
-5
@@ -10,7 +10,8 @@ The image source lives in [`docker/`](../docker/).
|
|||||||
|
|
||||||
The official image:
|
The official image:
|
||||||
|
|
||||||
- installs `@getpaseo/server` and `@getpaseo/cli` from npm
|
- installs `@getpaseo/server` and `@getpaseo/cli` from npm for stable images,
|
||||||
|
or from source-built workspace tarballs for beta images
|
||||||
- runs the daemon as the non-root `paseo` user
|
- runs the daemon as the non-root `paseo` user
|
||||||
- listens on `0.0.0.0:6767` inside the container
|
- listens on `0.0.0.0:6767` inside the container
|
||||||
- enables the bundled daemon web UI with `PASEO_WEB_UI_ENABLED=true`
|
- enables the bundled daemon web UI with `PASEO_WEB_UI_ENABLED=true`
|
||||||
@@ -202,10 +203,10 @@ docker build \
|
|||||||
```
|
```
|
||||||
|
|
||||||
The Docker workflow builds the image on pull requests and on `main` as a
|
The Docker workflow builds the image on pull requests and on `main` as a
|
||||||
non-publishing check. GHCR publishing follows the stable release cadence: only a
|
non-publishing check. Stable `vX.Y.Z` tag pushes publish
|
||||||
stable `vX.Y.Z` tag push publishes `ghcr.io/getpaseo/paseo:X.Y.Z` and
|
`ghcr.io/getpaseo/paseo:X.Y.Z` and `ghcr.io/getpaseo/paseo:latest`. Beta tags
|
||||||
`ghcr.io/getpaseo/paseo:latest`. Beta tags and manual workflow runs build for
|
publish only the exact prerelease tag, such as
|
||||||
validation only.
|
`ghcr.io/getpaseo/paseo:0.1.102-beta.1`, and do not update `latest`.
|
||||||
|
|
||||||
The published image is multi-arch for `linux/amd64` and `linux/arm64`.
|
The published image is multi-arch for `linux/amd64` and `linux/arm64`.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import path from "node:path";
|
||||||
|
import { pathToFileURL } from "node:url";
|
||||||
|
import { describe, expect, test } from "vitest";
|
||||||
|
|
||||||
|
import { resolveBundledWebUiDistDir } from "./config.js";
|
||||||
|
|
||||||
|
function fileUrlFor(...segments: string[]): URL {
|
||||||
|
return pathToFileURL(path.join(path.parse(process.cwd()).root, ...segments));
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("server config", () => {
|
||||||
|
test("resolves bundled web UI path from source-tree modules", () => {
|
||||||
|
expect(
|
||||||
|
resolveBundledWebUiDistDir(
|
||||||
|
fileUrlFor("repo", "packages", "server", "src", "server", "config.ts"),
|
||||||
|
),
|
||||||
|
).toBe(
|
||||||
|
path.join(
|
||||||
|
path.parse(process.cwd()).root,
|
||||||
|
"repo",
|
||||||
|
"packages",
|
||||||
|
"server",
|
||||||
|
"dist",
|
||||||
|
"server",
|
||||||
|
"web-ui",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("resolves bundled web UI path from globally installed compiled modules", () => {
|
||||||
|
expect(
|
||||||
|
resolveBundledWebUiDistDir(
|
||||||
|
fileUrlFor(
|
||||||
|
"usr",
|
||||||
|
"local",
|
||||||
|
"lib",
|
||||||
|
"node_modules",
|
||||||
|
"@getpaseo",
|
||||||
|
"server",
|
||||||
|
"dist",
|
||||||
|
"server",
|
||||||
|
"server",
|
||||||
|
"config.js",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
).toBe(
|
||||||
|
path.join(
|
||||||
|
path.parse(process.cwd()).root,
|
||||||
|
"usr",
|
||||||
|
"local",
|
||||||
|
"lib",
|
||||||
|
"node_modules",
|
||||||
|
"@getpaseo",
|
||||||
|
"server",
|
||||||
|
"dist",
|
||||||
|
"server",
|
||||||
|
"web-ui",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -34,6 +34,14 @@ export function resolveBundledWebUiDistDir(moduleUrl: string | URL = import.meta
|
|||||||
return path.resolve(moduleDir, "..", "..", "dist", "server", "web-ui");
|
return path.resolve(moduleDir, "..", "..", "dist", "server", "web-ui");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
path.basename(moduleDir) === "server" &&
|
||||||
|
path.basename(path.dirname(moduleDir)) === "server" &&
|
||||||
|
path.basename(path.dirname(path.dirname(moduleDir))) === "dist"
|
||||||
|
) {
|
||||||
|
return path.resolve(moduleDir, "..", "web-ui");
|
||||||
|
}
|
||||||
|
|
||||||
return path.resolve(moduleDir, "web-ui");
|
return path.resolve(moduleDir, "web-ui");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user