From 00e699f4af7c242430a575528567d1ed2e59bf4b Mon Sep 17 00:00:00 2001 From: Yaowei Zheng Date: Tue, 28 Jul 2026 01:34:41 +0800 Subject: [PATCH] release: 0.1.3 (#93) Co-authored-by: Claude Fable 5 --- CHANGELOG.md | 1 + .../{unreleased => 0.1.3}/2026-07-26-core.md | 6 ++- .../2026-07-26-goal-mode.md | 0 .../2026-07-26-web-app.md | 0 .../2026-07-26-windows-support.md | 0 .../2026-07-27-backward-compatibility.md | 0 .../2026-07-27-llm-request-errors.md | 0 .../0.1.3/2026-07-27-models-and-composer.md | 17 +++++++ .../2026-07-27-tooling.md | 2 +- changelog/0.1.3/README.md | 19 ++++++++ changelog/0.1.3/RELEASE.md | 46 +++++++++++++++++++ changelog/unreleased/README.md | 16 +------ package.json | 2 +- packages/cli/package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/index.ts | 2 +- packages/docs/package.json | 2 +- packages/landing/package.json | 2 +- packages/server/package.json | 2 +- packages/skills/package.json | 2 +- packages/web/package.json | 2 +- 21 files changed, 99 insertions(+), 26 deletions(-) rename changelog/{unreleased => 0.1.3}/2026-07-26-core.md (79%) rename changelog/{unreleased => 0.1.3}/2026-07-26-goal-mode.md (100%) rename changelog/{unreleased => 0.1.3}/2026-07-26-web-app.md (100%) rename changelog/{unreleased => 0.1.3}/2026-07-26-windows-support.md (100%) rename changelog/{unreleased => 0.1.3}/2026-07-27-backward-compatibility.md (100%) rename changelog/{unreleased => 0.1.3}/2026-07-27-llm-request-errors.md (100%) create mode 100644 changelog/0.1.3/2026-07-27-models-and-composer.md rename changelog/{unreleased => 0.1.3}/2026-07-27-tooling.md (68%) create mode 100644 changelog/0.1.3/README.md create mode 100644 changelog/0.1.3/RELEASE.md diff --git a/CHANGELOG.md b/CHANGELOG.md index dedebe3..4fd2dcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ One brief line per release. Per-release detail lives in [`changelog//`](changelog/). +- **0.1.3** — 2026-07-27. Windows support (shell selection, `install.ps1`, a win-x64 package), goal mode looping Tasks until an objective completes, a docked subagents panel with a live call graph, LLM-error reconnects with a visible countdown, and in-app version display with update checks and admin self-update. ([details](changelog/0.1.3/README.md)) - **0.1.2** — 2026-07-26. Builtin file tools with git-style edit diffs, mid-run steering and queued follow-ups, handoff-style model switching with a per-request thinking level, free OpenRouter models, and isolated-origin Workspace HTML previews. ([details](changelog/0.1.2/README.md)) - **0.1.1** — 2026-07-22. Gemini 3.6 Flash and 3.5 Flash-Lite in the model catalog, a Workspace-grouped chat sidebar, in-place upgrades via `penguin update`, and the vLLM / Ollama / LlamaFactory and bento-slides skills. ([details](changelog/0.1.1/README.md)) - **0.1.0** — 2026-07-21. First feature release: the Web App, landing site and docs, the model catalog, and the self-improvement skills. ([details](changelog/0.1.0/README.md)) diff --git a/changelog/unreleased/2026-07-26-core.md b/changelog/0.1.3/2026-07-26-core.md similarity index 79% rename from changelog/unreleased/2026-07-26-core.md rename to changelog/0.1.3/2026-07-26-core.md index 2632a03..dfafa00 100644 --- a/changelog/unreleased/2026-07-26-core.md +++ b/changelog/0.1.3/2026-07-26-core.md @@ -1,4 +1,4 @@ -# Core: resume ignores a legacy thinking level; empty compaction summaries no longer count as success +# Core: resume ignores a legacy thinking level; empty compaction summaries no longer count as success; read_file's secret guard hardened Since the thinking level became a per-turn run parameter (0.1.2), `session_meta` no longer records one — but resume still honored a `thinking_level` field found in an old Trace's meta, restoring it as the resumed Session's default. That compatibility read is removed: resume now always takes the level from the Agent's current config, and a legacy field is ignored outright. The one behavioral consequence is that a resumed legacy subagent session no longer keeps the level it inherited at spawn time — it follows the resuming Agent's configuration like everything else. Spawn-time inheritance in live runs, the per-turn picker, and what meta records are all unchanged. @@ -9,3 +9,7 @@ A compaction request that came back with only thinking or a tool call — no tex ## Mid-task compaction stops re-sending what AgentHub already has The empty-summary fix left one bounded hazard behind (issue #85): when auto-compaction fires mid-task, the pending turn input rides along in the compaction request — and once an attempt is **committed** into AgentHub's history, resending that input on a retry (or after giving up) hands strict providers duplicate `tool_result`s to reject. The rule is now a clean binary on one fact: if any compaction attempt committed, the carry is consumed — retries resend only the pairing repairs plus the prompt, and after abandonment the next request continues from committed state without re-sending the turn's outputs; if nothing committed, the previous carry-over is restored verbatim (object-identical). An abort inside the compaction window merges into the pending state instead of overwriting it, and replay reconstructs the same absorbed state after a restart, so live and resumed sessions agree. + +## read_file's secret guard closes case and symlink bypasses + +The builtin `read_file` refuses the secret stores (`.vault.toml`, `.project_config.toml`) by basename — its own guard, because `permission: "r"` makes the tool auto-approved under read-only approval while the shell tool stays rw-gated. That check compared the lexical basename case-sensitively, leaving two bypasses: a case-insensitive filesystem (macOS/Windows) opens `.VAULT.TOML` as the vault, and a symlink's own name says nothing about what it dereferences to. The guard now lowercases and checks both the lexical basename and the realpath target's basename. On a case-sensitive filesystem the lowercase compare can refuse a differently-cased sibling that is not the secret store — for a guard, that false positive is the right trade. diff --git a/changelog/unreleased/2026-07-26-goal-mode.md b/changelog/0.1.3/2026-07-26-goal-mode.md similarity index 100% rename from changelog/unreleased/2026-07-26-goal-mode.md rename to changelog/0.1.3/2026-07-26-goal-mode.md diff --git a/changelog/unreleased/2026-07-26-web-app.md b/changelog/0.1.3/2026-07-26-web-app.md similarity index 100% rename from changelog/unreleased/2026-07-26-web-app.md rename to changelog/0.1.3/2026-07-26-web-app.md diff --git a/changelog/unreleased/2026-07-26-windows-support.md b/changelog/0.1.3/2026-07-26-windows-support.md similarity index 100% rename from changelog/unreleased/2026-07-26-windows-support.md rename to changelog/0.1.3/2026-07-26-windows-support.md diff --git a/changelog/unreleased/2026-07-27-backward-compatibility.md b/changelog/0.1.3/2026-07-27-backward-compatibility.md similarity index 100% rename from changelog/unreleased/2026-07-27-backward-compatibility.md rename to changelog/0.1.3/2026-07-27-backward-compatibility.md diff --git a/changelog/unreleased/2026-07-27-llm-request-errors.md b/changelog/0.1.3/2026-07-27-llm-request-errors.md similarity index 100% rename from changelog/unreleased/2026-07-27-llm-request-errors.md rename to changelog/0.1.3/2026-07-27-llm-request-errors.md diff --git a/changelog/0.1.3/2026-07-27-models-and-composer.md b/changelog/0.1.3/2026-07-27-models-and-composer.md new file mode 100644 index 0000000..6bcfdee --- /dev/null +++ b/changelog/0.1.3/2026-07-27-models-and-composer.md @@ -0,0 +1,17 @@ +# Models and composer: Kimi K3 on Fireworks; image upload joins the "+" menu, height and version-line fixes + +## Kimi K3 on Fireworks + +The preset catalog gains **Kimi K3** on Fireworks (`accounts/fireworks/models/kimi-k3`): a 1M-token context window, vision support, the OpenAI-compatible client against the shared Fireworks base URL, priced $0.30 / $3 / $15 per Mtok (cache read / cache write / output), slotted ahead of Kimi K2.7 Code in the provider's rows. + +## Image upload moves into the composer's "+" menu + +The image picker leaves its standalone toolbar button and becomes the first entry of the "+" extension menu, which now leads the toolbar row — one 8×8 slot instead of two, the difference between the phone row scrolling and not. The actual file input stays mounted outside the menu (the menu unmounts its items on select) and the entry clicks it, still inside the click's user-activation window, so the dialog opens. On a model without vision the entry stays usable and its hint explains that images send as scratchpad file paths instead; goal mode disables it, since goal rounds are text-only. + +## Composer height follows the rendered value + +The composer's auto-grow used to be called next to each state update through `requestAnimationFrame`, which races React's commit of the controlled textarea: when the callback won, it measured the old multi-line content and re-pinned the tall height — with nothing left to trigger a re-measure, the composer stayed expanded after every send. Sizing now lives in a single layout effect keyed on the text value, which runs after the commit and before paint, so the box sizes correctly on mount (restored multi-line drafts), while typing, and on the clear after a send, without flashing. + +## A quieter version line + +The new-chat draft page's version line drops the product-name prefix — bare `vX.Y.Z · Last updated …` — since the brand wordmark sits directly above it and the sidebar's version footer is bare too. diff --git a/changelog/unreleased/2026-07-27-tooling.md b/changelog/0.1.3/2026-07-27-tooling.md similarity index 68% rename from changelog/unreleased/2026-07-27-tooling.md rename to changelog/0.1.3/2026-07-27-tooling.md index ca65e3b..c72db60 100644 --- a/changelog/unreleased/2026-07-27-tooling.md +++ b/changelog/0.1.3/2026-07-27-tooling.md @@ -1,3 +1,3 @@ # Tooling: keeping the Windows CI honest -Three follow-ups hardened the new `ci-windows` job against the runners' pathologies, each backed by evidence rather than a blind retry: the server test suite's cleanup now retries `ENOTEMPTY`/`EBUSY` removals and runs under platform-aware deadlines (one failed cleanup used to cascade into "database is not open" across later files); core's win32 test deadline moved to 120s after instrumented runs showed a single cold Git-Bash spawn taking 35.7s on a degraded runner — with an amplification experiment proving latency flows through the engine 1:1, no race — plus a platform-neutral regression test pinning that a slow tool delays a run only by its own latency; and two cross-PR combination breaks caught by main's CI (a test fake missing a newly required member, platform-naive path expectations) were fixed the hour they appeared. +Three follow-ups hardened the new `ci-windows` job against the runners' pathologies, each backed by evidence rather than a blind retry: the server test suite's cleanup now retries `ENOTEMPTY`/`EBUSY` removals and runs under platform-aware deadlines (one failed cleanup used to cascade into "database is not open" across later files); core's win32 test deadline moved to 120s after instrumented runs showed a single cold Git-Bash spawn taking 35.7s on a degraded runner — with an amplification experiment proving latency flows through the engine 1:1, no race — plus a platform-neutral regression test pinning that a slow tool delays a run only by its own latency; and two cross-PR combination breaks caught by main's CI (a test fake missing a newly required member, platform-naive path expectations) were fixed the hour they appeared. And the batch closes with a dependency security sweep: all 23 open Dependabot alerts resolved with real fixes — vitest 3, react-router 8 and hono-node-server 2 majors verified across the full suite, in-range transitive refreshes, and two temporary overrides (`@anthropic-ai/sdk`, esbuild) each carrying an explicit retirement condition — taking `pnpm audit` to zero in both dev and prod scopes. diff --git a/changelog/0.1.3/README.md b/changelog/0.1.3/README.md new file mode 100644 index 0000000..98bcc05 --- /dev/null +++ b/changelog/0.1.3/README.md @@ -0,0 +1,19 @@ +# Version 0.1.3 + +Released on 2026-07-27. + +- [2026-07-27] Models and composer: Kimi K3 (1M context, vision) joins the Fireworks preset rows; the composer's image picker moves into the "+" menu (one toolbar slot instead of two, so the phone row stops scrolling), the composer height re-measures off the rendered value so the box no longer stays expanded after a send, and the draft page's version line drops the product-name prefix. ([details](2026-07-27-models-and-composer.md)) + +- [2026-07-27] Core and Web App: transport drops (`UND_ERR_SOCKET`-class) and provider quota errors (`insufficient_user_quota`) now reconnect on an exponential ladder (up to 8 attempts ≈62s) with a live countdown plus Retry-now/Give-up controls, real failure details reach the Cost center, and authentication failures lock the composer recoverably — updating the key on the Models page invalidates cached runtimes and unlocks open Sessions instantly. ([details](2026-07-27-llm-request-errors.md)) + +- [2026-07-26] Web App: subagent conversations move into a docked agents panel with a live call graph of the latest Task (compact chips remain in the stream), an in-progress reply now survives refresh/reconnect via a server-kept live tail, the header statistics (Tokens/cost/elapsed) tick live while a Task runs, running-state rows stay one line on mobile with icon-only colored approval buttons, Trace files can be exported and imported from the Traces page, and the sidebar user menu shows the running version with an update reminder and an admin-run self-update. ([details](2026-07-26-web-app.md)) + +- [2026-07-26] Windows: the command session picks a real shell (Git-Bash → pwsh → powershell, `PENGUIN_SHELL` override, the choice announced to the model), a win32 symlink-upload sandbox gap is closed, and the release ships `install.ps1` (`irm https://penguin.ooo/install.ps1 | iex`) plus a `penguin-win32-x64.zip` package with a bundled Node runtime, verified by a new windows-latest CI job running the full test suite. ([details](2026-07-26-windows-support.md)) + +- [2026-07-26] Core: resuming a session now ignores a legacy Trace's recorded `thinking_level`; an empty compaction summary is no longer a success — compaction keeps its tools byte-identical (protecting the prompt-cache prefix), rejects empty or tool-calling responses with paired repair outputs and up to 5 retries, and resume replays the original context instead of a fabricated empty summary; a committed mid-task compaction attempt now absorbs the turn's pending input, so retries and follow-ups never re-send what AgentHub already holds; and `read_file`'s secret-store guard now checks basenames case-insensitively and through symlinks, closing two read bypasses. ([details](2026-07-26-core.md)) + +- [2026-07-27] Tooling: Windows CI hardening — retrying test cleanups, evidence-sized deadlines, and same-hour fixes for two cross-PR combination breaks, plus a dependency security sweep taking the open Dependabot alerts and pnpm audit to zero. ([details](2026-07-27-tooling.md)) + +- [2026-07-27] Backward compatibility: the batch's compat decisions in one place — legacy `thinking_level` ignored on resume (owner-directed, nothing retained), the win32 assembly-time `Shell:` line fallback for pre-`{{SHELL}}` Agent configs (with its removal condition), and the additive-only protocol fields. ([details](2026-07-27-backward-compatibility.md)) + +- [2026-07-26] Goal mode: state an objective with an optional token budget and the system loops Tasks on one Session via `session.run(input, { goal })` — a `[goal]` round protocol embedding GOAL.yaml, budget wrap-up round, runaway safeguards (a cut-off round is terminal; 100-round backstop) — surfaced as the CLI's `/goal` and `run --goal`, a `goal` field on the tasks API, and the Web composer's new "+" menu. ([details](2026-07-26-goal-mode.md)) diff --git a/changelog/0.1.3/RELEASE.md b/changelog/0.1.3/RELEASE.md new file mode 100644 index 0000000..0feee02 --- /dev/null +++ b/changelog/0.1.3/RELEASE.md @@ -0,0 +1,46 @@ +PenguinHarness 0.1.3 — Windows support, goal mode that loops until an objective is done, a subagents panel with a live call graph, and LLM errors that recover instead of aborting. + +## Install + +```sh +curl -fsSL https://penguin.ooo/install.sh | sh +penguin web +``` + +Windows (PowerShell): + +```powershell +irm https://penguin.ooo/install.ps1 | iex +penguin web +``` + +Linux, macOS and now Windows, with a bundled Node runtime. Or via npm (needs Node >= 24): + +```sh +npm install -g @prismshadow/penguin-cli +``` + +## Highlights + +**Windows support.** The first release that runs on Windows: command sessions pick a real shell (Git-Bash first, then pwsh, then powershell, with a `PENGUIN_SHELL` override) and announce the choice to the model, so it writes commands in the syntax it actually has. `install.ps1` mirrors the POSIX installer — version and directory knobs, SHA256 verification, a staged swap that never touches your data — and the release ships `penguin-win32-x64.zip` with a bundled Node runtime, all verified by a new windows-latest CI job running the full test suite. + +**Goal mode.** State an objective, optionally with a token budget, and the system keeps driving Tasks on the same Session until the goal is done — the objective is re-injected every round, the model reports completion through a `GOAL.yaml` protocol rather than by going quiet, and a budget that runs out triggers one wrap-up round before the goal ends. Runaway safeguards bound the loop. Available as the Web composer's "+" menu, `/goal` and `run --goal` in the CLI, and `session.run(input, { goal })` in the SDK. + +**A panel for subagents.** Child conversations move out of the message stream into a docked agents panel, topped by a live call graph of the current Task — one node per agent with its run state and elapsed time, edges for who spawned whom. Click a node to watch that agent's conversation stream live, approvals included; the stream keeps a compact one-line chip per child, with an amber dot whenever an approval is pending anywhere in the subtree. + +**LLM errors that recover.** A dropped connection or a provider quota rejection no longer aborts the turn: requests reconnect on an exponential ladder (up to 8 attempts, ~62s of patience) with a live countdown and Retry now / Give up controls, and the real cause — not a generic "timeout" — reaches the Cost center. Authentication failures lock the composer recoverably: fix the key on the Models page and open Sessions unlock instantly. + +## Notable in this release + +- **Replies survive refresh.** An in-progress reply now lives in a server-kept tail, so refreshing or reconnecting mid-Task shows the stream exactly where it was. +- **Live header statistics.** Tokens, cost and elapsed time tick live in the session header while a Task runs. +- **Trace import and export.** Trace files move in and out of the Traces page, so a session can be inspected — or reported — from another machine. +- **Version and updates, in the app.** The sidebar user menu shows the running version, checks for new releases (offline-tolerant, `PENGUIN_UPDATE_CHECK=off` to disable), links the release notes, and lets admins run the self-update. +- **One-line rows on mobile.** Running-state session rows stay one line on phones, with icon-only colored approval buttons. +- **Compaction hardening.** An empty compaction summary is a failure, not a result: the request keeps its tools byte-identical (protecting the prompt-cache prefix), rejects empty or tool-calling responses with paired repairs and retries, and resume replays the original context instead of a fabricated empty summary — and a committed mid-task attempt absorbs the turn's pending input, so nothing is ever re-sent. + +## Requirements + +Linux or macOS (x64 / arm64), or Windows 10+ (x64; the one-liner installs via PowerShell). The installer bundles its own Node runtime; installing from npm needs Node >= 24. All data stays under `~/.penguin/data`. + +Full detail: [changelog/0.1.3/](https://github.com/Prism-Shadow/penguin-harness/tree/main/changelog/0.1.3) diff --git a/changelog/unreleased/README.md b/changelog/unreleased/README.md index 62720ac..41987f6 100644 --- a/changelog/unreleased/README.md +++ b/changelog/unreleased/README.md @@ -1,17 +1,3 @@ # Unreleased -Changes since v0.1.2. The version number is assigned at release, when this folder is renamed. - -- [2026-07-27] Core and Web App: transport drops (`UND_ERR_SOCKET`-class) and provider quota errors (`insufficient_user_quota`) now reconnect on an exponential ladder (up to 8 attempts ≈62s) with a live countdown plus Retry-now/Give-up controls, real failure details reach the Cost center, and authentication failures lock the composer recoverably — updating the key on the Models page invalidates cached runtimes and unlocks open Sessions instantly. ([details](2026-07-27-llm-request-errors.md)) - -- [2026-07-26] Web App: subagent conversations move into a docked agents panel with a live call graph of the latest Task (compact chips remain in the stream), an in-progress reply now survives refresh/reconnect via a server-kept live tail, the header statistics (Tokens/cost/elapsed) tick live while a Task runs, running-state rows stay one line on mobile with icon-only colored approval buttons, Trace files can be exported and imported from the Traces page, and the sidebar user menu shows the running version with an update reminder and an admin-run self-update. ([details](2026-07-26-web-app.md)) - -- [2026-07-26] Windows: the command session picks a real shell (Git-Bash → pwsh → powershell, `PENGUIN_SHELL` override, the choice announced to the model), a win32 symlink-upload sandbox gap is closed, and the release ships `install.ps1` (`irm https://penguin.ooo/install.ps1 | iex`) plus a `penguin-win32-x64.zip` package with a bundled Node runtime, verified by a new windows-latest CI job running the full test suite. ([details](2026-07-26-windows-support.md)) - -- [2026-07-26] Core: resuming a session now ignores a legacy Trace's recorded `thinking_level`; an empty compaction summary is no longer a success — compaction keeps its tools byte-identical (protecting the prompt-cache prefix), rejects empty or tool-calling responses with paired repair outputs and up to 5 retries, and resume replays the original context instead of a fabricated empty summary; and a committed mid-task compaction attempt now absorbs the turn's pending input, so retries and follow-ups never re-send what AgentHub already holds. ([details](2026-07-26-core.md)) - -- [2026-07-27] Tooling: Windows CI hardening — retrying test cleanups, evidence-sized deadlines, and same-hour fixes for two cross-PR combination breaks. ([details](2026-07-27-tooling.md)) - -- [2026-07-27] Backward compatibility: the batch's compat decisions in one place — legacy `thinking_level` ignored on resume (owner-directed, nothing retained), the win32 assembly-time `Shell:` line fallback for pre-`{{SHELL}}` Agent configs (with its removal condition), and the additive-only protocol fields. ([details](2026-07-27-backward-compatibility.md)) - -- [2026-07-26] Goal mode: state an objective with an optional token budget and the system loops Tasks on one Session via `session.run(input, { goal })` — a `[goal]` round protocol embedding GOAL.yaml, budget wrap-up round, runaway safeguards (a cut-off round is terminal; 100-round backstop) — surfaced as the CLI's `/goal` and `run --goal`, a `goal` field on the tasks API, and the Web composer's new "+" menu. ([details](2026-07-26-goal-mode.md)) +Changes since v0.1.3. The version number is assigned at release, when this folder is renamed. diff --git a/package.json b/package.json index 34e77dd..a495c51 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "penguin-harness", - "version": "0.1.2", + "version": "0.1.3", "private": true, "type": "module", "description": "PenguinHarness — TypeScript AI Agent (SDK + CLI).", diff --git a/packages/cli/package.json b/packages/cli/package.json index 32c2e64..3a1517f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-cli", - "version": "0.1.2", + "version": "0.1.3", "type": "module", "description": "PenguinHarness CLI: interactive REPL and single-task runner over @prismshadow/penguin-core.", "license": "Apache-2.0", diff --git a/packages/core/package.json b/packages/core/package.json index 6a94aa4..3e4b53b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-core", - "version": "0.1.2", + "version": "0.1.3", "type": "module", "description": "PenguinHarness core SDK: context_engine, OmniMessage protocol, LLM/Environment interfaces.", "license": "Apache-2.0", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index d9ed4cf..6a2c915 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -52,7 +52,7 @@ export { Agent, createAgent } from "./agent.js"; export type { CreateAgentOptions, CreateSessionOptions, ResumeSessionOptions } from "./agent.js"; /** SDK version number. */ -export const VERSION = "0.1.2"; +export const VERSION = "0.1.3"; /** 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; // Version-string helpers (shared by the CLI's `penguin update` and the server's update check). diff --git a/packages/docs/package.json b/packages/docs/package.json index 1b22145..0ba7365 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-docs", - "version": "0.1.2", + "version": "0.1.3", "private": true, "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.", diff --git a/packages/landing/package.json b/packages/landing/package.json index be5d96e..0917da6 100644 --- a/packages/landing/package.json +++ b/packages/landing/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-landing", - "version": "0.1.2", + "version": "0.1.3", "private": true, "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.", diff --git a/packages/server/package.json b/packages/server/package.json index d60e2e9..9ee01b5 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-server", - "version": "0.1.2", + "version": "0.1.3", "type": "module", "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", diff --git a/packages/skills/package.json b/packages/skills/package.json index 1f1948f..9c052d1 100644 --- a/packages/skills/package.json +++ b/packages/skills/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-skills", - "version": "0.1.2", + "version": "0.1.3", "type": "module", "description": "PenguinHarness skill library: built-in SKILL.md documents and skill groups, decoupled from core.", "license": "Apache-2.0", diff --git a/packages/web/package.json b/packages/web/package.json index 82f075a..8d47645 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@prismshadow/penguin-web", - "version": "0.1.2", + "version": "0.1.3", "private": true, "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.",