release: 0.1.2 (#69)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
One brief line per release. Per-release detail lives in [`changelog/<version>/`](changelog/).
|
||||
|
||||
- **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))
|
||||
- **0.0.1** — 2026-07-19. First tagged release; changelog history starts after this tag.
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Version 0.1.2
|
||||
|
||||
Released on 2026-07-26.
|
||||
|
||||
- [2026-07-24] Models and core: three builtin file tools (`read_file` / `edit_file` / `write_file`) with bounded reads, atomic writes and the shell as the general fallback, model-written call descriptions configured per tool entry, exact CLI call/output formats and a fuller startup banner, mid-run steering delivered as standalone `[user_steering]` user messages plus a queue-if-busy follow-up path, all system markers unified onto paired square brackets (the angle form stays parsed), the thinking level turned into a per-request parameter with `session_meta` reduced to invariants, model switching done handoff-style through a new session that reads the source trace, the default prompt presenting the project dir as the App Data Dir with a restore-defaults action as existing agents' adoption path, and OpenRouter catalog rows for three free models plus the paid Claude Opus 5. ([details](2026-07-24-models-and-core.md))
|
||||
- [2026-07-24] Sites: a bilingual free-models blog post — the lineup, how to enable it, and honest caveats — featured as the newest announcement-bar slide. ([details](2026-07-24-sites-and-blog.md))
|
||||
- [2026-07-24] Tooling: the dev entry points default `PENGUIN_HOME` to a separate `~/.penguin/dev-data` root, so running from source no longer shares agents, sessions and `web.db` with the installed penguin (an exported `PENGUIN_HOME` still wins; product defaults unchanged). ([details](2026-07-24-tooling.md))
|
||||
- [2026-07-24] Backward compatibility: what this batch keeps tolerating from existing Traces and configs — the legacy angle-bracket markers, `session_meta.thinking_level` on resume, agents' verbatim stored config (and the Restore default configuration path to the new prompt and file tools), and a missing `tools.call_description` reading as enabled. ([details](2026-07-24-backward-compatibility.md))
|
||||
- [2026-07-24] LLM request errors surface their underlying `cause` (e.g. `terminated: other side closed (UND_ERR_SOCKET)`) instead of a bare `terminated`, visible in the Cost Center and Traces. ([details](2026-07-24-llm-request-errors.md))
|
||||
- [2026-07-22] Web App: unified the form controls onto a shared Field/portal layer (now with required-field `*` markers), moved notifications to one rule (success/info → top toast, field errors inline with a red border; error prompts localized by code), generalized write confirmations (every file-writing save / uninstall / upload-overwrite now confirms via one polished dialog with tone icons — skill updates show each agent's `v_old → v_new` — and an unchanged save toasts "no changes to save"), made the Cost Center show the full error message, deduplicated the i18n copy (dead keys removed, shared `common` labels, lowercase "agent"), and reworked the sidebar session list onto category-filtered paging (default load = active rows only; the Subagents/Scheduled/Archived folders load on first open and page independently); plus the separate-origin Workspace HTML previews (now also the in-app rendered view's path), mid-run steering or queued follow-ups from the chat input, `/model` continuing the conversation on a picked model in a new session, a per-turn thinking-level override in active sessions, a light-yellow Free badge on free models in the Models cards and the chat picker, and tool-call cards carrying model-written call descriptions with payload-showing approvals. ([details](2026-07-22-web-app.md))
|
||||
@@ -0,0 +1,40 @@
|
||||
PenguinHarness 0.1.2 — file tools, mid-run steering, model switching mid-conversation, and free models to try it all on.
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
curl -fsSL https://penguin.ooo/install.sh | sh
|
||||
penguin web
|
||||
```
|
||||
|
||||
Linux and macOS, x64 and arm64, with a bundled Node runtime. Or via npm (needs Node >= 24):
|
||||
|
||||
```sh
|
||||
npm install -g @prismshadow/penguin-cli
|
||||
```
|
||||
|
||||
## Highlights
|
||||
|
||||
**File tools.** `read_file`, `edit_file` and `write_file` join the builtin set: line-numbered reads with an offset window, exact string replacement, and whole-file writes that land atomically. Edits report back as a git-style diff, so what changed is visible without a second look, and an approval prompt shows the actual payload rather than just the path. The shell stays the general fallback for everything else.
|
||||
|
||||
**Talk to a running agent.** While a task runs you can keep typing: a message is delivered to the model between turns, alongside the tool results, so the agent takes it in without losing the thread. Prefer to wait? Switch the send mode to Queue and it goes out as an ordinary follow-up the moment the task ends. In the CLI, typing while a task runs steers the same way.
|
||||
|
||||
**Switch models mid-conversation.** `/model` opens a new session for the same agent on the model you pick, in the same Workspace, with the source conversation referenced in its first message — the new model reads the earlier trace when it needs the history. The thinking level became a per-request choice: pick one inside a session and it rides on every following task without touching the agent's settings.
|
||||
|
||||
**Free models.** Three zero-cost OpenRouter rows ship in the preset catalog — Ling 3.0 Flash, Laguna M.1 and the Free Models Router — marked with a Free badge in the Models page and the chat picker. Claude Opus 5 is there too, on OpenRouter, for when free isn't enough. There's [a post](https://penguin.ooo/blog/free-models-in-penguin-harness) on what they're good for and where the limits are.
|
||||
|
||||
**Workspace previews that actually render.** HTML opened from the Files panel now loads from the same isolated preview origin as the new-tab view, so relative images, stylesheets and scripts resolve — a multi-file page the agent wrote looks like the page it wrote.
|
||||
|
||||
## Notable in this release
|
||||
|
||||
- **Model-written call descriptions.** Command and subagent tools take a one-sentence description of each call, shown while it runs. It is required while the per-tool `call_description` switch is on, so the CLI and Web UI can settle a call's display form from the schema instead of guessing mid-stream.
|
||||
- **Paired square-bracket markers.** Every system-synthesized block (`[turn_aborted]`, `[context_summary]`, `[use_skills]`, …) moved off angle brackets onto one paired form, with all producers and parsers consolidated into a single core module. Existing Traces and configs are still read in the old form.
|
||||
- **Restore default configuration.** An existing agent keeps its stored `system_config.yaml` verbatim — including its old prompt and frozen tool list — so a new Overview-tab action resets it to the current defaults, preserving only the name and description.
|
||||
- **The default prompt stops naming the project dir.** It exposes the same path as the **App Data Dir**, described as PenguinHarness's data root rather than the task's working folder, which models were mistaking it for.
|
||||
- **A dev data root.** Running the server or CLI from source defaults to `~/.penguin/dev-data`, so hacking on the repo no longer shares agents and sessions with your installed penguin.
|
||||
|
||||
## Requirements
|
||||
|
||||
Linux or macOS (x64 / arm64). The installer bundles its own Node runtime; installing from npm needs Node >= 24. All data stays under `~/.penguin/data`.
|
||||
|
||||
Full detail: [changelog/0.1.2/](https://github.com/Prism-Shadow/penguin-harness/tree/main/changelog/0.1.2)
|
||||
@@ -1,10 +1,3 @@
|
||||
# Unreleased
|
||||
|
||||
Changes since v0.1.1. The version number is assigned at release, when this folder is renamed.
|
||||
|
||||
- [2026-07-24] Models and core: three builtin file tools (`read_file` / `edit_file` / `write_file`) with bounded reads, atomic writes and the shell as the general fallback, model-written call descriptions configured per tool entry, exact CLI call/output formats and a fuller startup banner, mid-run steering delivered as standalone `[user_steering]` user messages plus a queue-if-busy follow-up path, all system markers unified onto paired square brackets (the angle form stays parsed), the thinking level turned into a per-request parameter with `session_meta` reduced to invariants, model switching done handoff-style through a new session that reads the source trace, the default prompt presenting the project dir as the App Data Dir with a restore-defaults action as existing agents' adoption path, and OpenRouter catalog rows for three free models plus the paid Claude Opus 5. ([details](2026-07-24-models-and-core.md))
|
||||
- [2026-07-24] Sites: a bilingual free-models blog post — the lineup, how to enable it, and honest caveats — featured as the newest announcement-bar slide. ([details](2026-07-24-sites-and-blog.md))
|
||||
- [2026-07-24] Tooling: the dev entry points default `PENGUIN_HOME` to a separate `~/.penguin/dev-data` root, so running from source no longer shares agents, sessions and `web.db` with the installed penguin (an exported `PENGUIN_HOME` still wins; product defaults unchanged). ([details](2026-07-24-tooling.md))
|
||||
- [2026-07-24] Backward compatibility: what this batch keeps tolerating from existing Traces and configs — the legacy angle-bracket markers, `session_meta.thinking_level` on resume, agents' verbatim stored config (and the Restore default configuration path to the new prompt and file tools), and a missing `tools.call_description` reading as enabled. ([details](2026-07-24-backward-compatibility.md))
|
||||
- [2026-07-24] LLM request errors surface their underlying `cause` (e.g. `terminated: other side closed (UND_ERR_SOCKET)`) instead of a bare `terminated`, visible in the Cost Center and Traces. ([details](2026-07-24-llm-request-errors.md))
|
||||
- [2026-07-22] Web App: unified the form controls onto a shared Field/portal layer (now with required-field `*` markers), moved notifications to one rule (success/info → top toast, field errors inline with a red border; error prompts localized by code), generalized write confirmations (every file-writing save / uninstall / upload-overwrite now confirms via one polished dialog with tone icons — skill updates show each agent's `v_old → v_new` — and an unchanged save toasts "no changes to save"), made the Cost Center show the full error message, deduplicated the i18n copy (dead keys removed, shared `common` labels, lowercase "agent"), and reworked the sidebar session list onto category-filtered paging (default load = active rows only; the Subagents/Scheduled/Archived folders load on first open and page independently); plus the separate-origin Workspace HTML previews (now also the in-app rendered view's path), mid-run steering or queued follow-ups from the chat input, `/model` continuing the conversation on a picked model in a new session, a per-turn thinking-level override in active sessions, a light-yellow Free badge on free models in the Models cards and the chat picker, and tool-call cards carrying model-written call descriptions with payload-showing approvals. ([details](2026-07-22-web-app.md))
|
||||
Changes since v0.1.2. The version number is assigned at release, when this folder is renamed.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "penguin-harness",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "PenguinHarness — TypeScript AI Agent (SDK + CLI).",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-cli",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"type": "module",
|
||||
"description": "PenguinHarness CLI: interactive REPL and single-task runner over @prismshadow/penguin-core.",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-core",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"type": "module",
|
||||
"description": "PenguinHarness core SDK: context_engine, OmniMessage protocol, LLM/Environment interfaces.",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -51,4 +51,4 @@ export { Agent, createAgent } from "./agent.js";
|
||||
export type { CreateAgentOptions, CreateSessionOptions, ResumeSessionOptions } from "./agent.js";
|
||||
|
||||
/** SDK version number. */
|
||||
export const VERSION = "0.1.1";
|
||||
export const VERSION = "0.1.2";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-docs",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"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.",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-landing",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"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.",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-server",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"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",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-skills",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"type": "module",
|
||||
"description": "PenguinHarness skill library: built-in SKILL.md documents and skill groups, decoupled from core.",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@prismshadow/penguin-web",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"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.",
|
||||
|
||||
Reference in New Issue
Block a user