release: align the repo version with the shipped 0.2.1 and guard future tags (#219)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cd260a784d
commit
a59dc504c5
12 files changed
+55
-10
No files matched your search
@@ -116,10 +116,31 @@ jobs:
|
|||||||
# message) and both standalone installers. The stamped installers then select the same immutable OSS/GitHub
|
# message) and both standalone installers. The stamped installers then select the same immutable OSS/GitHub
|
||||||
# release when run directly. BUILD_DATE is stamped alongside core with this run's UTC date.
|
# release when run directly. BUILD_DATE is stamped alongside core with this run's UTC date.
|
||||||
- name: Stamp release version
|
- name: Stamp release version
|
||||||
|
env:
|
||||||
|
# Referenced as a plain shell variable so the run block stays free of GitHub
|
||||||
|
# expressions: scripts/test-installer.sh replays this block verbatim as sh.
|
||||||
|
EVENT_NAME: ${{ github.event_name }}
|
||||||
run: |
|
run: |
|
||||||
TAG="${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}"
|
TAG="${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}"
|
||||||
V="${TAG#v}"
|
V="${TAG#v}"
|
||||||
printf '%s\n' "$TAG" | grep -Eq '^v[0-9A-Za-z][0-9A-Za-z._-]*$'
|
printf '%s\n' "$TAG" | grep -Eq '^v[0-9A-Za-z][0-9A-Za-z._-]*$'
|
||||||
|
# Guard: release prep must bump the repo to the tag's version (root + packages/*/package.json
|
||||||
|
# and core's VERSION constant move together in the release: X.Y.Z PR). v0.2.1 was tagged with
|
||||||
|
# a 0.2.0 repo, so every dev/source build nagged about updates until the repo caught up —
|
||||||
|
# fail the tag push instead. Manual dispatch (EVENT_NAME unset in replays) only warns,
|
||||||
|
# keeping legacy tags rebuildable; installer-test fixtures have no package.json, so the
|
||||||
|
# check self-skips there.
|
||||||
|
if [ -f package.json ]; then
|
||||||
|
PKG_V="$(node -p 'require("./package.json").version')"
|
||||||
|
if [ "$PKG_V" != "$V" ]; then
|
||||||
|
MSG="tag $TAG does not match the repo version $PKG_V; bump root + packages/*/package.json and core VERSION during release prep, then re-tag (see CONTRIBUTING.md)."
|
||||||
|
if [ "${EVENT_NAME:-}" = "push" ]; then
|
||||||
|
echo "error: $MSG" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "warning: $MSG (continuing: manual dispatch)" >&2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
grep -q 'export const VERSION = "' packages/core/src/index.ts
|
grep -q 'export const VERSION = "' packages/core/src/index.ts
|
||||||
sed -i "s/export const VERSION = \"[^\"]*\"/export const VERSION = \"$V\"/" packages/core/src/index.ts
|
sed -i "s/export const VERSION = \"[^\"]*\"/export const VERSION = \"$V\"/" packages/core/src/index.ts
|
||||||
SH_MARKER='EMBEDDED_RELEASE_VERSION="__PENGUIN_RELEASE_VERSION__"'
|
SH_MARKER='EMBEDDED_RELEASE_VERSION="__PENGUIN_RELEASE_VERSION__"'
|
||||||
@@ -506,9 +527,27 @@ jobs:
|
|||||||
# workspace:* dep to the dependency's current version, so the versions must match.
|
# workspace:* dep to the dependency's current version, so the versions must match.
|
||||||
# BUILD_DATE is stamped alongside VERSION with this run's UTC date (the repo keeps null for dev builds).
|
# BUILD_DATE is stamped alongside VERSION with this run's UTC date (the repo keeps null for dev builds).
|
||||||
- name: Stamp release version
|
- name: Stamp release version
|
||||||
|
env:
|
||||||
|
# Same shell-variable indirection as the release job's stamp step (no GitHub
|
||||||
|
# expressions in the body; see scripts/test-installer.sh).
|
||||||
|
EVENT_NAME: ${{ github.event_name }}
|
||||||
run: |
|
run: |
|
||||||
TAG="${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}"
|
TAG="${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}"
|
||||||
V="${TAG#v}"
|
V="${TAG#v}"
|
||||||
|
# Same repo-version guard as the release job: both jobs start from a tag push in
|
||||||
|
# parallel, so the check must fail here too or npm would publish from a tag whose
|
||||||
|
# repo version was never bumped. Manual dispatch only warns (legacy-tag retries).
|
||||||
|
if [ -f package.json ]; then
|
||||||
|
PKG_V="$(node -p 'require("./package.json").version')"
|
||||||
|
if [ "$PKG_V" != "$V" ]; then
|
||||||
|
MSG="tag $TAG does not match the repo version $PKG_V; bump root + packages/*/package.json and core VERSION during release prep, then re-tag (see CONTRIBUTING.md)."
|
||||||
|
if [ "${EVENT_NAME:-}" = "push" ]; then
|
||||||
|
echo "error: $MSG" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "warning: $MSG (continuing: manual dispatch)" >&2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
grep -q 'export const VERSION = "' packages/core/src/index.ts
|
grep -q 'export const VERSION = "' packages/core/src/index.ts
|
||||||
sed -i "s/export const VERSION = \"[^\"]*\"/export const VERSION = \"$V\"/" packages/core/src/index.ts
|
sed -i "s/export const VERSION = \"[^\"]*\"/export const VERSION = \"$V\"/" packages/core/src/index.ts
|
||||||
D="$(date -u +%Y-%m-%d)"
|
D="$(date -u +%Y-%m-%d)"
|
||||||
|
|||||||
@@ -109,6 +109,12 @@ pnpm test:e2e # core live-model e2e, need
|
|||||||
before creating the tag** — the release workflow reads it from the tag's checkout, so a
|
before creating the tag** — the release workflow reads it from the tag's checkout, so a
|
||||||
file added later never reaches the Release page. Without it the workflow falls back to
|
file added later never reaches the Release page. Without it the workflow falls back to
|
||||||
GitHub's auto-generated notes.
|
GitHub's auto-generated notes.
|
||||||
|
- **Release prep bumps the repo version**: the same `release: X.Y.Z` PR that renames
|
||||||
|
`changelog/unreleased/` also bumps the root and every `packages/*/package.json`
|
||||||
|
`version`, plus core's `VERSION` constant (`packages/core/src/index.ts`), to the release
|
||||||
|
version. The release workflow refuses a tag push whose version does not match the
|
||||||
|
repo's, so a forgotten bump fails before anything is published (v0.2.1 was tagged with a
|
||||||
|
0.2.0 repo, and every dev build nagged about an update until the repo caught up).
|
||||||
- README assets under `assets/readme/` are generated — the benchmark charts from the
|
- README assets under `assets/readme/` are generated — the benchmark charts from the
|
||||||
landing benchmark data, and the demo screenshots via
|
landing benchmark data, and the demo screenshots via
|
||||||
`node packages/landing/scripts/capture-readme-demo.mjs` (build first; needs Playwright
|
`node packages/landing/scripts/capture-readme-demo.mjs` (build first; needs Playwright
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "penguin-harness",
|
"name": "penguin-harness",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness \u2014 TypeScript AI Agent (SDK + CLI).",
|
"description": "PenguinHarness \u2014 TypeScript AI Agent (SDK + CLI).",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-cli",
|
"name": "@prismshadow/penguin-cli",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness CLI: interactive REPL and single-task runner over @prismshadow/penguin-core.",
|
"description": "PenguinHarness CLI: interactive REPL and single-task runner over @prismshadow/penguin-core.",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-core",
|
"name": "@prismshadow/penguin-core",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness core SDK: context_engine, OmniMessage protocol, LLM/Environment interfaces.",
|
"description": "PenguinHarness core SDK: context_engine, OmniMessage protocol, LLM/Environment interfaces.",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export { Agent, createAgent } from "./agent.js";
|
|||||||
export type { CreateAgentOptions, CreateSessionOptions, ResumeSessionOptions } from "./agent.js";
|
export type { CreateAgentOptions, CreateSessionOptions, ResumeSessionOptions } from "./agent.js";
|
||||||
|
|
||||||
/** SDK version number. */
|
/** SDK version number. */
|
||||||
export const VERSION = "0.2.0";
|
export const VERSION = "0.2.1";
|
||||||
/** Release build date (UTC yyyy-mm-dd), stamped by the release workflow next to VERSION; null in a dev/source build. */
|
/** Release build date (UTC yyyy-mm-dd), stamped by the release workflow next to VERSION; null in a dev/source build. */
|
||||||
export const BUILD_DATE: string | null = null;
|
export const BUILD_DATE: string | null = null;
|
||||||
// Version-string helpers (shared by the CLI's `penguin update` and the server's update check).
|
// Version-string helpers (shared by the CLI's `penguin update` and the server's update check).
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-desktop",
|
"name": "@prismshadow/penguin-desktop",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness desktop app: Electron shell running @prismshadow/penguin-server as a utilityProcess, window on http://localhost (same-origin HTTP/SSE, no private IPC).",
|
"description": "PenguinHarness desktop app: Electron shell running @prismshadow/penguin-server as a utilityProcess, window on http://localhost (same-origin HTTP/SSE, no private IPC).",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-docs",
|
"name": "@prismshadow/penguin-docs",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness documentation site (React + Vite + Tailwind CSS): bilingual zh/en Markdown pages with light/dark themes and per-page Copy Markdown, deployed to GitHub Pages under /docs/ next to the landing page.",
|
"description": "PenguinHarness documentation site (React + Vite + Tailwind CSS): bilingual zh/en Markdown pages with light/dark themes and per-page Copy Markdown, deployed to GitHub Pages under /docs/ next to the landing page.",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-landing",
|
"name": "@prismshadow/penguin-landing",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness landing page (React + Vite + Tailwind CSS): multilingual, light/dark themes, benchmark showcase, and a local Markdown blog, deployed to GitHub Pages via GitHub Actions.",
|
"description": "PenguinHarness landing page (React + Vite + Tailwind CSS): multilingual, light/dark themes, benchmark showcase, and a local Markdown blog, deployed to GitHub Pages via GitHub Actions.",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-server",
|
"name": "@prismshadow/penguin-server",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness web server: multi-user authentication and authorization, Session execution with SSE streaming, and usage accounting, built on @prismshadow/penguin-core.",
|
"description": "PenguinHarness web server: multi-user authentication and authorization, Session execution with SSE streaming, and usage accounting, built on @prismshadow/penguin-core.",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-skills",
|
"name": "@prismshadow/penguin-skills",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness skill library: built-in SKILL.md documents and skill groups, decoupled from core.",
|
"description": "PenguinHarness skill library: built-in SKILL.md documents and skill groups, decoupled from core.",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@prismshadow/penguin-web",
|
"name": "@prismshadow/penguin-web",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "PenguinHarness web frontend SPA: React + Vite + Tailwind CSS, rendering conversations streamed over the OmniMessage protocol, plus Agent configuration, model configuration, usage stats, and Traces.",
|
"description": "PenguinHarness web frontend SPA: React + Vite + Tailwind CSS, rendering conversations streamed over the OmniMessage protocol, plus Agent configuration, model configuration, usage stats, and Traces.",
|
||||||
|
|||||||
Reference in new issue
Block a user