@piagent/platform 1.41.0 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1006 -2038
- package/CONTRIBUTING.md +2 -0
- package/README.md +128 -325
- package/README.vi.md +149 -143
- package/docs/command-reference-vietnamese.md +2 -2
- package/docs/distribution-standard.md +6 -6
- package/docs/languages.json +2 -2
- package/docs/operator-manual-vietnamese.md +7 -7
- package/docs/publishing-for-teams.md +1 -0
- package/docs/release-install-policy.md +3 -3
- package/docs/team-onboarding.md +2 -2
- package/docs-site/architecture.html +71 -63
- package/docs-site/assets/docs.css +2736 -1030
- package/docs-site/assets/docs.js +451 -43
- package/docs-site/assets/og.png +0 -0
- package/docs-site/assets/piagent-logo.svg +9 -31
- package/docs-site/assets/search-en.json +1 -0
- package/docs-site/assets/search-vi.json +1 -0
- package/docs-site/benchmark.html +71 -63
- package/docs-site/commands.html +72 -64
- package/docs-site/content/en/index.html +220 -131
- package/docs-site/content/en/quickstart.html +74 -90
- package/docs-site/content/en/update.html +80 -0
- package/docs-site/content/en/whats-new.html +1 -684
- package/docs-site/content/index.html +220 -131
- package/docs-site/content/quickstart.html +73 -108
- package/docs-site/content/update.html +80 -0
- package/docs-site/content/whats-new.html +1 -684
- package/docs-site/context-engine.html +73 -65
- package/docs-site/ecosystem.html +73 -65
- package/docs-site/en/architecture.html +67 -59
- package/docs-site/en/benchmark.html +67 -59
- package/docs-site/en/commands.html +68 -60
- package/docs-site/en/context-engine.html +68 -60
- package/docs-site/en/ecosystem.html +68 -60
- package/docs-site/en/index.html +281 -220
- package/docs-site/en/mcp-approval.html +67 -59
- package/docs-site/en/mcp-auth.html +67 -59
- package/docs-site/en/mcp-servers.html +68 -60
- package/docs-site/en/mcp.html +64 -56
- package/docs-site/en/permissions.html +68 -60
- package/docs-site/en/profiles.html +68 -60
- package/docs-site/en/quickstart.html +142 -150
- package/docs-site/en/runtime.html +67 -59
- package/docs-site/en/scope.html +68 -60
- package/docs-site/en/security.html +64 -56
- package/docs-site/en/team.html +67 -59
- package/docs-site/en/update.html +228 -0
- package/docs-site/en/whats-new.html +1601 -725
- package/docs-site/en/windows.html +71 -63
- package/docs-site/en/workflows.html +68 -60
- package/docs-site/favicon.svg +9 -14
- package/docs-site/index.html +281 -220
- package/docs-site/mcp-approval.html +70 -62
- package/docs-site/mcp-auth.html +70 -62
- package/docs-site/mcp-servers.html +71 -63
- package/docs-site/mcp.html +70 -62
- package/docs-site/permissions.html +72 -64
- package/docs-site/profiles.html +72 -64
- package/docs-site/quickstart.html +145 -172
- package/docs-site/releases.json +4449 -0
- package/docs-site/runtime.html +73 -65
- package/docs-site/scope.html +73 -65
- package/docs-site/security.html +73 -65
- package/docs-site/team.html +71 -63
- package/docs-site/update.html +228 -0
- package/docs-site/whats-new.html +1605 -729
- package/docs-site/windows.html +75 -67
- package/docs-site/workflows.html +73 -65
- package/evals/private-holdout-v1/public-exposure.v2.json +1 -1
- package/package.json +1 -1
- package/packages/piagent-core/package.json +1 -1
- package/packages/piagent-webui/dist/client/assets/App-DBx4BU3F.js +5 -0
- package/packages/piagent-webui/dist/client/assets/LineReview-DzonwD-g.js +3 -0
- package/packages/piagent-webui/dist/client/assets/{MarkdownMessage-DeLo-xiz.js → MarkdownMessage-DchODuO7.js} +2 -2
- package/packages/piagent-webui/dist/client/assets/SessionInspectorDrawer-BHHNlct3.js +1 -0
- package/packages/piagent-webui/dist/client/assets/SettingsPage-DX28MsZA.js +1 -0
- package/packages/piagent-webui/dist/client/assets/TerminalPanel-C--BiN0p.js +2 -0
- package/packages/piagent-webui/dist/client/assets/{TerminalView-r9rG24IO.js → TerminalView-BML7uS6R.js} +3 -3
- package/packages/piagent-webui/dist/client/assets/WorkspaceCodeEditor-B7ieqDnt.js +2 -0
- package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-BOafuPU-.js +5 -0
- package/packages/piagent-webui/dist/client/assets/WorkspaceQuickOpen-CGoGfUPk.js +1 -0
- package/packages/piagent-webui/dist/client/assets/api-BUjrtT1B.js +1 -0
- package/packages/piagent-webui/dist/client/assets/index-C7Azrwpq.js +132 -0
- package/packages/piagent-webui/dist/client/assets/index-Dqb2hNan.css +1 -0
- package/packages/piagent-webui/dist/client/assets/tab-close-Crj8vsUq.js +1 -0
- package/packages/piagent-webui/dist/client/assets/ui-preferences-B3UfDp-5.js +1 -0
- package/packages/piagent-webui/dist/client/assets/vendor-Ch5hIe0W.js +136 -0
- package/packages/piagent-webui/dist/client/index.html +5 -8
- package/scripts/build-docs-site.mjs +205 -348
- package/scripts/check-public-wording.mjs +2 -1
- package/scripts/docs-site-icons.mjs +84 -0
- package/scripts/docs-site-nav.mjs +302 -0
- package/scripts/docs-site-releases.mjs +227 -0
- package/packages/piagent-webui/dist/client/assets/Alert-DGWhP2MM.js +0 -1
- package/packages/piagent-webui/dist/client/assets/Button-QItfZUNj.js +0 -1
- package/packages/piagent-webui/dist/client/assets/DialogTitle-CyaFPaiW.js +0 -3
- package/packages/piagent-webui/dist/client/assets/TerminalPanel-BG-DP_qm.js +0 -2
- package/packages/piagent-webui/dist/client/assets/Typography-B9om7Evq.js +0 -1
- package/packages/piagent-webui/dist/client/assets/WorkspaceCodeEditor-BnqaR3pK.js +0 -2
- package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-BIxwiGtl.js +0 -5
- package/packages/piagent-webui/dist/client/assets/WorkspaceQuickOpen-CK3dILhQ.js +0 -1
- package/packages/piagent-webui/dist/client/assets/index-DBUTrEXi.css +0 -1
- package/packages/piagent-webui/dist/client/assets/index-rlyRccut.js +0 -102
- package/packages/piagent-webui/dist/client/assets/tab-close-BoJRyBO_.js +0 -1
- package/packages/piagent-webui/dist/client/assets/ui-preferences-BO3AV7QE.js +0 -10
- package/packages/piagent-webui/dist/client/assets/useId-DEefKUAT.js +0 -124
package/CHANGELOG.md
CHANGED
|
@@ -1,2900 +1,1868 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Every release of Pi Agent Platform (`@piagent/platform`), newest first. Versions follow semantic versioning; prereleases and builds that were tagged but never published are marked.
|
|
4
|
+
|
|
5
|
+
This file is generated from `docs-site/releases.json` by `node scripts/build-docs-site.mjs`, which also renders the [Changelog page](https://piagent.io.vn/en/whats-new). Edit the JSON, not this file. When publishing a tag, copy the version's block into the GitHub Release.
|
|
6
|
+
|
|
7
|
+
## v1.42.0 - 2026-10-25
|
|
8
|
+
|
|
9
|
+
**A redesigned dashboard and older messages that load without jumping.** The dashboard gets one design scale and every theme everywhere; older messages load as you scroll up and the message you are reading stays put.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Older messages load on their own as you near the top, and the message being read no longer moves when a page is added above it.
|
|
14
|
+
|
|
15
|
+
### Improved
|
|
16
|
+
|
|
17
|
+
- All 13 colour themes now reach the diff, approval, question and document views; header, sidebar, composer and new chat page are redesigned.
|
|
18
|
+
- A running turn shows one moving indicator at a time: the step's spinner, the streaming caret, or a thinking spinner.
|
|
19
|
+
- New website and README with an Update & uninstall guide; release notes now come from one file that also writes `CHANGELOG.md`.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- History showed raw markdown for a moment and then reflowed; it now appears formatted from the first frame.
|
|
24
|
+
- Loading many older pages silently dropped the newest messages; the window now holds 1,000 items and offers a way back to the newest.
|
|
4
25
|
|
|
5
26
|
## v1.41.0 - 2026-10-24
|
|
6
27
|
|
|
7
|
-
Front-end change reports
|
|
28
|
+
**Front-end change reports with before/after screenshots.** A new skill turns a front-end task into a report with framed before/after screenshots, business and logic changes and check results, shown in the dashboard.
|
|
8
29
|
|
|
9
30
|
### Added
|
|
10
31
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
32
|
+
- The `fe-change-report` skill captures old and new pages headless on the same data and frames each change with a numbered red box on both.
|
|
33
|
+
- The agent runs the project's checks and full E2E headless, naming baseline failures, and writes what changed in business, logic and on screen.
|
|
34
|
+
- Documents draws `reports/fe-change/<slug>/report.json` as the report, with zoom per frame, other screen sizes and a full-screen view.
|
|
35
|
+
- The scripts use the project's own Playwright and add no dependency; they write one self-contained `report.html` with no scripts, to send to anyone.
|
|
36
|
+
|
|
37
|
+
### Security
|
|
38
|
+
|
|
39
|
+
- The report is drawn from data, never from the HTML file, and only its PNG screenshots are served, so the dashboard still renders no model markup.
|
|
13
40
|
|
|
14
41
|
## v1.40.0 - 2026-10-24
|
|
15
42
|
|
|
16
|
-
Local projects without a remote
|
|
43
|
+
**Local projects are reported to Studio too.** Company conversations in folders without a remote report a local project to Studio, every run reports, and members see every kind of project warning.
|
|
17
44
|
|
|
18
45
|
### Added
|
|
19
46
|
|
|
20
|
-
-
|
|
47
|
+
- A folder without a readable remote is reported as a local project, by its Git root commit or by a hash; its path never leaves the computer.
|
|
48
|
+
- A Git project's local key is the same on every computer with that history, including clones and checkouts without an `origin` remote.
|
|
21
49
|
|
|
22
|
-
###
|
|
50
|
+
### Improved
|
|
23
51
|
|
|
24
|
-
-
|
|
25
|
-
-
|
|
52
|
+
- Every run reports its projects, not only a conversation's first, so Studio counts each use and knows which computers never report.
|
|
53
|
+
- Members see a line for every warning: another team's project, one outside the team's list, an unregistered project or an unreadable folder.
|
|
54
|
+
- A folder holding several checkouts reports each one, up to six, and a local project is named by its folder.
|
|
26
55
|
|
|
27
56
|
### Security
|
|
28
57
|
|
|
29
|
-
-
|
|
58
|
+
- Three dependency advisories in the Pi host are accepted until 2026-11-07: denial of service and a check bypass Pi does not use, no data exposure.
|
|
59
|
+
|
|
60
|
+
Requires: Agent Studio 0.40.0.
|
|
30
61
|
|
|
31
62
|
## v1.39.0 - 2026-10-23
|
|
32
63
|
|
|
33
|
-
|
|
64
|
+
**Warnings when a team key is used outside its team.** Studio learns which repositories a company conversation works in and warns when a team key is used outside its team; the dashboard keeps its language and theme.
|
|
34
65
|
|
|
35
66
|
### Added
|
|
36
67
|
|
|
37
|
-
-
|
|
68
|
+
- Company conversations tell Studio their repositories, using the same `host/path` keys team memory already sends.
|
|
69
|
+
- Administrators see the warnings in Logs → "Sai project"; the member reads one line above the composer and in `piagent studio`.
|
|
38
70
|
|
|
39
|
-
###
|
|
71
|
+
### Improved
|
|
40
72
|
|
|
41
|
-
-
|
|
73
|
+
- Nothing is blocked, and team memory works as before.
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
|
|
77
|
+
- The dashboard went back to the default language and colour theme on every restart; it now keeps both.
|
|
78
|
+
|
|
79
|
+
Requires: Agent Studio 0.39.0.
|
|
42
80
|
|
|
43
81
|
## v1.38.2 - 2026-10-23
|
|
44
82
|
|
|
45
|
-
|
|
83
|
+
**Folder tree, colour themes and an editor that stays in view.** The files panel becomes a folder tree, 13 colour themes arrive, and the editor and terminal stay pinned while the conversation scrolls.
|
|
46
84
|
|
|
47
85
|
### Added
|
|
48
86
|
|
|
49
|
-
-
|
|
87
|
+
- Colour themes in Settings → Appearance or the command palette (⌘K) colour the interface, the editor's syntax and the terminal.
|
|
50
88
|
|
|
51
|
-
###
|
|
89
|
+
### Improved
|
|
52
90
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
91
|
+
- On wide screens the editor and terminal stay pinned under the header while the conversation scrolls; a splitter sets the editor's width.
|
|
92
|
+
- The files panel is a folder tree: folders open in place, the open file is highlighted, and New file starts in the last folder chosen.
|
|
93
|
+
- The Files/Terminal switches stay pinned on every width; on phones the folder tree is narrower and the editor's actions fit on one line.
|
|
55
94
|
|
|
56
95
|
## v1.38.1 - 2026-10-23
|
|
57
96
|
|
|
58
|
-
v1.38.0
|
|
97
|
+
**Published release of v1.38.0.** v1.38.0 failed its release checks on two tests and was never published; v1.38.1 is the same release with those tests fixed.
|
|
59
98
|
|
|
60
|
-
###
|
|
99
|
+
### Improved
|
|
61
100
|
|
|
62
|
-
-
|
|
63
|
-
- `tests/managed-network-approval-web.test.mjs`: the approval card gets 30 s to appear on slow runners.
|
|
101
|
+
- Two release tests now pass on Linux and on slow runners, so the editor, terminals, review, checkpoints and Bypass of v1.38.0 ship here.
|
|
64
102
|
|
|
65
103
|
## v1.38.0 - 2026-10-23 (not published)
|
|
66
104
|
|
|
67
|
-
Piagent becomes an editor
|
|
105
|
+
**Piagent becomes an editor, and Bypass asks nothing.** Files, terminals, inline review and checkpoints in the dashboard, and a Bypass mode that asks nothing, in company conversations where the Harness allows it.
|
|
68
106
|
|
|
69
|
-
###
|
|
107
|
+
### Breaking changes
|
|
70
108
|
|
|
71
|
-
-
|
|
72
|
-
- **Bypass in company conversations, where the Harness allows it.** A company conversation now has three levels: Ask first, **Full access** (what the dashboard called Bypass before: asks only what must be confirmed) and **Bypass**, which asks nothing (internet, Docker, the member's machine, pushes, deploys, migrations) while plain commands stay in the sandbox. Bypass needs the Harness's `bypass_mode` (Agent Studio, on by default; an administrator can turn it off) carried by an Agent Watch that knows the field; without an explicit yes it is not offered, and a conversation left in Bypass after it is turned off applies as Full access. `/bypass on|full|off` in the dashboard and in `piagent studio`.
|
|
73
|
-
- **Editor-like workspace.** Square 2px edges across the dashboard; file and terminal tabs close with their own ×; the files and terminal panels hide with a × of their own; the editor sits above the terminal and both share the window height.
|
|
74
|
-
|
|
75
|
-
### Fixes
|
|
76
|
-
|
|
77
|
-
- **A checkpoint that cannot be taken no longer stops the agent's edit.** Personal snapshots failed on a submodule, a file over 16 MB, a tree over 64 MB or a file changing mid-snapshot, and every write was then refused. Snapshots now hash the whole tree in one Git call (about 0.5 s instead of 35 s on a 4,000-file repository), include tracked files of any size, skip untracked files over 100 MB and leave submodules out. A turn whose snapshot fails has no checkpoint and ends the history before it; only another live owner of the session's history makes an edit wait. Company checkpoints get the same snapshot.
|
|
78
|
-
- **Restoring a turn no longer overwrites a file the member saved from the editor during it.** Such files are reported as conflicts by `/undo` and Timeline restore.
|
|
79
|
-
- **Checkpoint snapshots stay out of the project's refs.** They live in a private repository inside the Git directory that borrows the project's objects, so `git push --mirror` cannot publish untracked files; conversations untouched for 30 days lose their checkpoints.
|
|
80
|
-
- **The company explorer, editor and review panels no longer wait behind the agent's running command.** Reads run beside it (three at a time) and the editor's permission poll no longer stacks requests.
|
|
81
|
-
- **A flood of terminal output no longer drops the dashboard connection.** Output is paced at about 4 MB/s, the writer is paused while the browser catches up, output it cannot keep up with is marked as skipped, and a terminal tab never stops rendering for good. Company terminal workers pause instead of exiting when their pipe backs up. A flood of short lines no longer stalls the Gateway: tiny PTY reads are joined before pacing and the replay buffer trims its window once it doubles instead of on every line.
|
|
82
|
-
- Restored files the turn had deleted get a new file's usual mode instead of owner-only.
|
|
83
|
-
- **Company terminals work on macOS.** The company Gateway creates the PTY and starts only the shell under the agent's offline Seatbelt profile, which gains terminal ioctls and `/dev/tty`; opening any other terminal stays denied, and nothing runs on the host. Company terminals also write the project's Git directories and package caches like the agent's offline commands, so `go build` and `git` in a worktree work.
|
|
84
|
-
- **Terminals:** background jobs stop with their terminal (the shell's tree is watched while it runs); actions refused before anything ran are reported as refused, not "may have run"; a stale revision is resent instead of dropping queued keystrokes; `@terminal` naming no open terminal attaches nothing instead of blocking the message; the personal shell no longer inherits the Gateway's `PI_*`/`PIAGENT_*` variables.
|
|
85
|
-
- **Editor:** **Rename** and **Delete** for the open file, applied only to the version shown; new files get the usual mode and their missing folders; creating a file never replaces one that appeared meanwhile; refusals that changed nothing (oversized file, linked folder) are reported as such. Kept hunks survive a page reload in the same browser.
|
|
86
|
-
- **Checkpoints:** a restore that stopped midway finishes what is left instead of refusing its own work; a refusal before any file changed is reported as refused; a file ignored since the turn is refused rather than overwritten; folders the turn created and its undo emptied are removed; any shell command not provably read-only takes the turn's checkpoint; a lock or capture left by a process from before a reboot, or whose number was reused, no longer blocks.
|
|
87
|
-
|
|
88
|
-
- Company inline review preserves exact agent observations across trusted internal snapshot reads; ordinary shell commands still invalidate attribution.
|
|
109
|
+
- Company conversations have Ask first, Full access (formerly called Bypass) and Bypass, offered only when the Harness allows it.
|
|
89
110
|
|
|
90
111
|
### Added
|
|
91
112
|
|
|
92
|
-
-
|
|
113
|
+
- The `bypass` mode (`/permission bypass`, `piagent-auto --bypass`) turns every gate off; output is still redacted and `/undo` still works.
|
|
114
|
+
- The dashboard opens, edits, saves, renames and deletes project files, with Cmd/Ctrl+P, search and conflicts when a file changed on disk.
|
|
115
|
+
- Project terminals in the dashboard; company terminals run in the sandbox, on macOS too, and never on the host.
|
|
116
|
+
- Inline review of the agent's hunks with Keep and Revert, and Timeline restore with a preview, sharing checkpoints with `/undo`.
|
|
93
117
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- Personal Session Hub terminals open up to four project shells with lazy xterm tabs, resizing, Ctrl+C and reconnect replay. Session teardown cleans terminal processes. Explicit `@terminal`/`@terminal:2` sends attach bounded redacted output. Optional native PTY failures leave the dashboard usable and appear in Doctor; company terminals never fall back to host execution.
|
|
118
|
+
### Fixed
|
|
97
119
|
|
|
98
|
-
-
|
|
120
|
+
- A checkpoint that could not be taken blocked every edit; it no longer does, and snapshots take about 0.5 s instead of 35 s on 4,000 files.
|
|
99
121
|
|
|
100
|
-
|
|
101
|
-
- Session Hub opens project files in read-only editor tabs, with Files/Search navigation, Cmd/Ctrl+P, line links from tool calls, source changes and @mentions, and a drawer on smaller screens. Protected files stay locked. Company file reads and searches run inside the session's existing sandbox through its Gateway.
|
|
122
|
+
Requires: Agent Studio 0.38.0 and Agent Watch 0.15.14 (Windows 0.1.17) for the company Bypass level.
|
|
102
123
|
|
|
103
124
|
## v1.37.1 - 2026-10-22
|
|
104
125
|
|
|
105
|
-
|
|
126
|
+
**Run closes and helper reports Studio can trust.** A retried close counts only when it reaches Studio, helpers keep their answers, and outbound requests refuse every IPv6 form of a private address.
|
|
106
127
|
|
|
107
|
-
###
|
|
108
|
-
|
|
109
|
-
- **`web_fetch` and the package proxy refuse every IPv6 form of a private address.** Both checked IPv4 carried in IPv6 only when it was written dotted, so `https://[::ffff:7f00:1]/` (127.0.0.1) or a NAT64 `64:ff9b::c0a8:101` (192.168.1.1) passed and was dialled; the URL parser even rewrites `[::ffff:127.0.0.1]` to the hex form. One classifier (`managed/ip-policy.mjs`) now judges mapped, compatible, translated, NAT64 and 6to4 addresses by their IPv4, treats Teredo and IPv6 outside `2000::/3` as private, and fails closed on anything it cannot parse. HTTPS certificate checks are unchanged.
|
|
110
|
-
- **With a company upstream proxy (`HTTPS_PROXY`), the package proxy still refuses private destinations.** It handed the host name to the upstream, which resolved it itself, so no address was checked. The name is now looked up and checked here in every mode, and the upstream is asked for the checked address (`CONNECT <ip>:<port>`, or the IP with the original `Host` for plain HTTP); TLS still names the registry end to end. A name this machine cannot resolve is refused like any other refused host; `run_with_network` still reaches it after the member approves.
|
|
128
|
+
### Fixed
|
|
111
129
|
|
|
112
|
-
|
|
130
|
+
- A close retried after a brief failure could be recorded without reaching Studio; it now counts only when Studio receives it.
|
|
131
|
+
- A helper whose close failed for a moment was turned into a failure; it now keeps its answer, and its report is resent after passing errors.
|
|
132
|
+
- Team memory merged failures of two commands of one executable into one lesson; the whole command is now the key.
|
|
133
|
+
- Skill feedback mixed skills with alike names such as `a/b` and `a_b`; each skill name now keeps its own file.
|
|
113
134
|
|
|
114
|
-
|
|
115
|
-
- **A helper whose close fails for a moment keeps its answer.** A helper role's close goes through the same wait for Studio as the run's; a close that still fails no longer turns a finished helper into a failure, and the role's next helper closes it first. A helper's report to Studio is sent again after a passing failure (no answer, 5xx, 429), never after a refusal.
|
|
116
|
-
- **A repeated tool-error lesson names the right command.** Lessons were keyed on the executable, so `curl service-a` and `curl service-b` failing the same way became one lesson saying the first "failed twice". The whole command (without temporary paths, ids and numbers) is the key now.
|
|
117
|
-
- Skill feedback keeps one file per skill name (`a/b`, `a_b` and `A_B` shared one); notes served under an old key or epoch are forgotten when the scope changes.
|
|
135
|
+
### Security
|
|
118
136
|
|
|
119
|
-
|
|
137
|
+
- The `web_fetch` tool and the package proxy let some IPv6 forms of a private address through; every such form is now refused.
|
|
138
|
+
- With a company upstream proxy (`HTTPS_PROXY`), the package proxy now checks each destination itself instead of leaving it to the upstream.
|
|
120
139
|
|
|
121
|
-
|
|
122
|
-
- `tests/managed-helper-settlement.test.mjs`: a settlement sent again after a 5xx only; a helper role close asked again and never failing the helper.
|
|
123
|
-
- `tests/managed-memory-lessons.test.mjs`, `tests/managed-skill-feedback.test.mjs`, `tests/managed-memory-outbox.test.mjs`: two commands of one executable, alike skill names, a scope change.
|
|
124
|
-
- `tests/managed-ip-policy.test.mjs`, `tests/managed-coding-tools.test.mjs`, `tests/managed-package-proxy.test.mjs`: hex/dotted mapped, NAT64, 6to4 and Teredo addresses refused; the upstream proxy is asked for the checked address only.
|
|
140
|
+
Requires: Agent Watch 0.15.11 (Windows 0.1.16).
|
|
125
141
|
|
|
126
142
|
## v1.37.0 - 2026-10-22
|
|
127
143
|
|
|
128
|
-
A cut answer no longer stops a long task
|
|
129
|
-
|
|
130
|
-
### Fixes
|
|
131
|
-
|
|
132
|
-
- **An answer Studio's upstream cut mid-stream is asked again.** Found on 2026-10-21 in the long-task soak: Studio's error event for a cut answer ("Request interrupted", code `upstream_interrupted`) reached Piagent without its code, which the provider libraries drop, so it showed "the request could not be sent" and stopped a long task. Studio's own words now name it `upstream_interrupted`: it is asked again and the task goes on by itself. "The answer ran past its output limit" names `output_limit_exceeded`. "Request ended by Studio" is still not asked again.
|
|
133
|
-
- The company Terminal no longer exits with an error when a conversation closes right after a turn while git still answers for the branch status.
|
|
144
|
+
**A cut answer no longer stops a long task.** An answer cut mid-stream behind Studio is asked again and the task goes on, and `piagent studio --rpc` lets a script drive a company conversation.
|
|
134
145
|
|
|
135
146
|
### Added
|
|
136
147
|
|
|
137
|
-
-
|
|
138
|
-
-
|
|
148
|
+
- New `piagent studio --rpc` runs one company conversation over Pi's RPC protocol on stdin/stdout, with several messages and `ask_user`.
|
|
149
|
+
- A long-task soak lane in the repository drives the real company agent through 45–150-minute tasks with a simulated member.
|
|
139
150
|
|
|
140
|
-
###
|
|
151
|
+
### Fixed
|
|
141
152
|
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
- `tests/long-task-soak.test.mjs`: the simulated member's reading of a turn end, its answers, nudges, phases and stalls.
|
|
153
|
+
- An answer cut mid-stream showed "the request could not be sent" and stopped a long task; it is now asked again and the task goes on.
|
|
154
|
+
- The company Terminal no longer exits with an error when a conversation closes right after a turn while Git still reports branch status.
|
|
145
155
|
|
|
146
156
|
## v1.36.1 - 2026-10-22
|
|
147
157
|
|
|
148
|
-
Agent Watch
|
|
158
|
+
**A brief Agent Watch failure no longer stops a task.** When Agent Watch briefly cannot reach a running Studio, Piagent asks again for up to 3 minutes instead of stopping the task.
|
|
149
159
|
|
|
150
|
-
###
|
|
160
|
+
### Improved
|
|
151
161
|
|
|
152
|
-
-
|
|
153
|
-
- **Closing the round's run goes through the same wait**, so a passing gateway error does not fail a turn whose work is done.
|
|
154
|
-
- Each wait is in `studio-link.jsonl` and reported to Studio (Logs → "Mất kết nối", cause `broker_offline`). Codes that are not Agent Watch's (a refused key or report, `connector_unavailable` on a running Studio) still fail at once.
|
|
162
|
+
- Each wait is logged locally and reported to Studio in Logs → "Mất kết nối"; a refused key or report still fails at once.
|
|
155
163
|
|
|
156
|
-
###
|
|
164
|
+
### Fixed
|
|
157
165
|
|
|
158
|
-
-
|
|
159
|
-
-
|
|
166
|
+
- One failed grant renewal through Agent Watch stopped a 25-minute task; it is now asked again, waiting longer each time, for up to 3 minutes.
|
|
167
|
+
- Closing the round's run goes through the same wait, so a passing gateway error no longer fails a turn whose work is done.
|
|
160
168
|
|
|
161
169
|
## v1.36.0 - 2026-10-21
|
|
162
170
|
|
|
163
|
-
Team memory learns from what went wrong
|
|
171
|
+
**Team memory learns from what went wrong.** Memory learns from member feedback and repeated errors, keeps only completed tasks that add something, and proposes failing skills for review.
|
|
164
172
|
|
|
165
|
-
###
|
|
173
|
+
### Added
|
|
174
|
+
|
|
175
|
+
- What memory hands a round goes back to Studio with it, so Studio rates notes by the member's next words and stops briefing wrong ones.
|
|
176
|
+
- A command that fails the same way twice in a round becomes a lesson that keeps the first error line, with no guessed cause.
|
|
177
|
+
- When 3 of a skill's last rounds failed, Piagent writes a proposal to `.pi/piagent-state/skill-proposals/`, at most weekly; it never edits skills.
|
|
166
178
|
|
|
167
|
-
|
|
168
|
-
- **A command that fails the same way twice in a round is a lesson.** This goes beside check recoveries (`managed/memory-lessons.mjs`). The lesson keeps the first error line, sanitized (temporary paths, ids and numbers taken out of the fingerprint), with no guessed cause.
|
|
169
|
-
- **Repository memory keeps only completed tasks that add something.** Changes only to build output, caches, logs or Piagent's own state are `not_durable`. The same files at the same digests a second time are `already_known` (`completedTaskSkipReason`).
|
|
170
|
-
- **Skills that keep failing are proposed for review.** When at least 3 of a skill's last rounds ended with a failed check or a repeated tool error, Piagent writes `.pi/piagent-state/skill-proposals/<skill>.md` with the evidence, at most once a week. Piagent never edits a skill itself.
|
|
179
|
+
### Improved
|
|
171
180
|
|
|
172
|
-
|
|
181
|
+
- Repository memory skips completed tasks that change only build output, caches, logs or Piagent's state, or repeat files already known.
|
|
173
182
|
|
|
174
|
-
|
|
175
|
-
- `tests/managed-memory-lessons.test.mjs`: repeated tool errors give one lesson; different errors, successes and timeouts give none.
|
|
176
|
-
- `tests/repository-memory-distill.test.mjs`, `tests/managed-skill-feedback.test.mjs`.
|
|
183
|
+
Requires: Agent Studio 0.37.0.
|
|
177
184
|
|
|
178
185
|
## v1.35.1 - 2026-10-21
|
|
179
186
|
|
|
180
|
-
A passing
|
|
187
|
+
**A passing model provider failure no longer stops a long task.** A provider error in the middle of an answer is asked again, and a round cut by such a failure goes on by itself after a pause.
|
|
181
188
|
|
|
182
|
-
###
|
|
189
|
+
### Improved
|
|
183
190
|
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
191
|
+
- Where that retry cannot run, the next round starts after a pause and tells the agent why, up to 8 times per member message (about 23 min).
|
|
192
|
+
- A round that ends well resets the count, Stop ends the pause, and after the last attempt the turn fails with its reason.
|
|
193
|
+
- Every retry is recorded in the member's local log, so why a task stopped or went on can be read back.
|
|
187
194
|
|
|
188
|
-
###
|
|
195
|
+
### Fixed
|
|
189
196
|
|
|
190
|
-
-
|
|
191
|
-
- `tests/managed-provider-error-resume.test.mjs`: WebUI end to end, the provider's `api_error` event after a tool step; the task finishes without a click and the retry is in the local log.
|
|
197
|
+
- A provider error after a tool step stopped a long task until the member wrote again; it is now asked again 2 and 4 s later.
|
|
192
198
|
|
|
193
199
|
## v1.35.0 - 2026-10-21
|
|
194
200
|
|
|
195
|
-
Long company tasks go on across Studio updates.
|
|
201
|
+
**Long company tasks go on across Studio updates.** When Studio stops, restarts or updates mid-task, Piagent waits for it and goes on instead of failing, and a dashboard turn can run for 24 hours.
|
|
196
202
|
|
|
197
|
-
###
|
|
198
|
-
|
|
199
|
-
- **Waits for Studio instead of failing.** When a company request cannot reach Studio for a reason that is Studio's or the way to it (Studio stopped, restarting or being updated; a Cloudflare or LAN-edge page instead of Studio's answer, now its own code `studio-gateway-unavailable`; Agent Watch losing Studio during an update), Piagent reads Studio's heartbeat (`GET /v1/heartbeat`, Studio 0.36.0) and asks again once Studio is back, with no limit on how long; Stop ends the wait. A request cut before the model answered is asked again as it was; an answer cut mid-stream is asked again by the turn's retry without its two-try limit; where the WebUI ends that retry (a tool already ran), the next round starts by itself and tells the agent why ("Studio was updated (0.35.3 → 0.36.0) … continue from where you were"). A key, quota or policy failure fails at once as before; Agent Watch or Studio's connector failing while Studio answers here (and was not away in the last 10 minutes) fails at once too, after the usual two asks.
|
|
200
|
-
- **Every wait is logged and reported.** One JSON line per event in `<agentDir>/logs/studio-link.jsonl` (`kind` `studio_wait` / `studio_disconnect`, `cause`, `outcome`, versions, attempts), filterable with `jq`; reported to Studio (`POST /studio/v1/managed/disconnects`), which decides the cause from its own starts and lists it in Logs → "Mất kết nối". A Studio without the route (older than 0.36.0) is not asked again; a Studio without the heartbeat counts as up.
|
|
201
|
-
- **24-hour turns in the WebUI.** The watchdog's ceiling for one member message is 24 hours (it was 6), so a checklist left running overnight is not cut; the 15-minute silence limit stays and each heartbeat read while waiting counts as activity.
|
|
203
|
+
### Added
|
|
202
204
|
|
|
203
|
-
|
|
205
|
+
- When Studio is away, Piagent reads its heartbeat and asks again once it is back, with no time limit; Stop ends the wait.
|
|
206
|
+
- Every wait is logged locally and reported to Studio, which lists it with its cause in Logs → "Mất kết nối".
|
|
204
207
|
|
|
205
|
-
|
|
206
|
-
- `tests/managed-studio-update-resume.test.mjs`: WebUI end to end, a request cut by a Studio update, Studio away for 5 s and back as a new version; the task finishes without a click, the report says `studio_update`, the local log has the wait.
|
|
207
|
-
- Live check on the Mac mini: an 8-step task through Cloudflare while Studio was upgraded from 0.35.3 to 0.36.0; Agent Watch could not renew the grant for 14.7 s, Piagent waited and went on, all 8 steps finished, and Studio recorded the stretch as `studio_update`.
|
|
208
|
+
### Improved
|
|
208
209
|
|
|
209
|
-
|
|
210
|
+
- A round the dashboard cannot replay starts again by itself and tells the agent Studio was updated, so it continues where it was.
|
|
211
|
+
- One member message can run for 24 hours in the dashboard (it was 6); the 15-minute silence limit stays.
|
|
212
|
+
- A key, quota or policy failure still fails at once, as before.
|
|
210
213
|
|
|
211
|
-
Agent
|
|
214
|
+
Requires: Agent Studio 0.36.0.
|
|
212
215
|
|
|
213
|
-
|
|
216
|
+
## v1.34.3 - 2026-10-20
|
|
214
217
|
|
|
215
|
-
|
|
218
|
+
**Agent Watch notifies for company conversations.** Company conversation states were written where Agent Watch does not read, so it never notified; they are now written where it reads.
|
|
216
219
|
|
|
217
|
-
###
|
|
220
|
+
### Fixed
|
|
218
221
|
|
|
219
|
-
-
|
|
222
|
+
- Agent Watch never notified for company conversations; their states now go to `~/.pi/agent/status/company`, without prompts or answers.
|
|
220
223
|
|
|
221
224
|
## v1.34.2 - 2026-10-20
|
|
222
225
|
|
|
223
|
-
Helper outcomes reach Studio.
|
|
224
|
-
|
|
225
|
-
### Fixes
|
|
226
|
+
**Helper outcomes reach Studio.** In 1.34.1 Studio refused helper reports sent with an outdated token, so no outcome was recorded; reports now go with the current token.
|
|
226
227
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
### Tests
|
|
228
|
+
### Fixed
|
|
230
229
|
|
|
231
|
-
-
|
|
230
|
+
- Helper reports were refused after a token renewal and no outcome was recorded; they now use the helper role's current token.
|
|
232
231
|
|
|
233
232
|
## v1.34.1 - 2026-10-20
|
|
234
233
|
|
|
235
|
-
|
|
234
|
+
**Helper outcomes, line review and Agent Watch notifications.** Helpers report how their work ended, line comments on a diff go to the agent, and Agent Watch notifies when a conversation needs you.
|
|
235
|
+
|
|
236
|
+
### Added
|
|
236
237
|
|
|
237
|
-
|
|
238
|
+
- Each helper reports how it ended: succeeded, failed, cancelled or unverifiable; Studio shows it in Logs → Lượt agent.
|
|
239
|
+
- In Source Changes, click a line number to comment; comments on several files go to the composer as one message with `file:line`.
|
|
240
|
+
- The review helper's findings show under the line they name, and findings without a line under their file.
|
|
241
|
+
- Conversation states are written for Agent Watch notifications, holding only the title and project name, never prompts or answers.
|
|
242
|
+
- The `delegate` tool takes optional target, change, constraints, ownership and acceptance fields, which head the helper's brief.
|
|
238
243
|
|
|
239
|
-
|
|
240
|
-
- **Studio capabilities.** Piagent asks `GET /v1/capabilities` (Agent Studio 0.34+) once an hour per Studio and key, and keeps the answer in `~/.pi/agent/studio-capabilities.json`. A newer operation is used only when Studio lists it; an older Studio (404) keeps today's behaviour. `memory_ask` is offered unless the list leaves `memory.ask.v1` out.
|
|
241
|
-
- **Structured delegation.** `delegate` takes five optional fields beside the brief: target, change, constraints, ownership and acceptance. They head the helper's brief.
|
|
242
|
-
- **Helper settlements.** Each helper attempt reports once, with its own run token, how it ended: succeeded (answered in the form its role needs), failed, cancelled, or unverifiable (no verdicts or findings, or a stale review). The main agent reads `Outcome: …` first; the receipt line says done, failed, stopped or unverifiable. Studio shows each attempt's ending in Logs → Lượt agent and reads an attempt without a report as unverifiable.
|
|
243
|
-
- **Review on the diff.** In Agent Inspector → Source Changes, click a line number to comment that line. Comments on any number of files go into the conversation's composer as one message with a `file:line` anchor and the code of each line; a comment whose line has changed since is marked. The review helper's findings (blocking, major, minor) show under the line they name, and findings without a line under the file.
|
|
244
|
-
- **Conversation states for Agent Watch.** The dashboard and the company runtime write each conversation's state (working, waiting for an approval or an answer, done, stopped, failed) under `~/.pi/agent/status/`. A file holds the conversation's title and project name, never its preview, prompt or answer. Agent Watch 0.15.9 (macOS) and 0.1.15 (Windows) turn it into notifications.
|
|
244
|
+
### Improved
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
- Piagent asks Studio hourly which operations it serves and uses newer ones only when listed; an older Studio keeps today's behaviour.
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
Requires: Agent Studio 0.34, Agent Watch 0.15.9 (Windows 0.1.15).
|
|
249
249
|
|
|
250
250
|
## v1.33.0 - 2026-10-20
|
|
251
251
|
|
|
252
|
-
Company and personal sessions run on Pi 1.3.0
|
|
252
|
+
**Company and personal sessions run on Pi 1.3.0.** `piagent-setup` and `piagent-update` move Piagent from Pi 0.87.1 to Pi 1.3.0, which refuses malformed tool calls and retries gateway errors.
|
|
253
253
|
|
|
254
|
-
###
|
|
254
|
+
### Breaking changes
|
|
255
255
|
|
|
256
|
-
-
|
|
257
|
-
- Your personal `pi` command is also 1.3.0 after the update. Pi 1.2.0 changed theme `$schema` references and `models.json` overrides of the `kimi-coding` base URL must end in `/v1`.
|
|
258
|
-
- After the update, Agent Watch writes a new binding by itself while it runs; `piagent studio` waits for it.
|
|
259
|
-
- GPT-6.1 Sol keeps its reviewed 272k window in company sessions (Pi 1.3.0's catalog says 500k, which Codex prices at twice the rate above 272k).
|
|
260
|
-
- The three `brace-expansion` advisories accepted until 2026-10-31 are gone: Pi 1.3.0 installs `brace-expansion` 5.0.12.
|
|
256
|
+
- Your personal `pi` also becomes 1.3.0: theme `$schema` references changed, and `kimi-coding` base URL overrides must end in `/v1`.
|
|
261
257
|
|
|
262
|
-
###
|
|
258
|
+
### Improved
|
|
263
259
|
|
|
264
|
-
-
|
|
260
|
+
- A tool call with malformed JSON arguments is refused and shown to the model instead of running with the fields parsed before the error.
|
|
261
|
+
- Gateway errors are retried, a resumed session keeps its active tools, and switching model drops the previous model's thinking.
|
|
262
|
+
- GPT-6.1 Sol keeps its reviewed 272k window in company sessions, where use above 272k is priced at twice the rate.
|
|
265
263
|
|
|
266
|
-
###
|
|
264
|
+
### Fixed
|
|
267
265
|
|
|
268
|
-
-
|
|
269
|
-
- `tests/managed-failures.test.mjs`: Sol keeps 272k on a host whose catalog says 500k.
|
|
270
|
-
- `tests/runtime-advisories.test.mjs` checks the exception rules on a fixture list.
|
|
266
|
+
- A run started by a custom message now gets the usual system prompt and starts no extra turn, task or context pack.
|
|
271
267
|
|
|
272
|
-
|
|
268
|
+
### Security
|
|
273
269
|
|
|
274
|
-
|
|
270
|
+
- Three accepted dependency advisories are resolved: Pi 1.3.0 installs the fixed version.
|
|
275
271
|
|
|
276
|
-
|
|
272
|
+
Requires: Pi 1.3.0.
|
|
277
273
|
|
|
278
|
-
|
|
279
|
-
- Opening another conversation that was also in Bypass showed "Hỏi trước": the access button was reset for the switch and only followed a change of the choice. The button and Settings → Access now follow the open conversation.
|
|
280
|
-
- A browser session ended 8 hours after its launch even while its tab was in use, so a long or hung turn ended on the expired screen. A request past half the session's time now renews it and sends the cookie again, up to 7 days; only a tab unused for 8 hours signs out.
|
|
274
|
+
## v1.32.1 - 2026-10-19
|
|
281
275
|
|
|
282
|
-
|
|
276
|
+
**Bypass survives a reload, and a tab in use stays signed in.** Bypass and Fast turned on right after a reply are kept, the access button follows the open conversation, and a tab in use is no longer signed out.
|
|
283
277
|
|
|
284
|
-
|
|
285
|
-
|
|
278
|
+
### Fixed
|
|
279
|
+
|
|
280
|
+
- Turning on Bypass or Fast right after a reply was refused, so a reload showed "Hỏi trước"; it is now resent against the latest state.
|
|
281
|
+
- Opening another conversation in Bypass showed "Hỏi trước"; the access button and Settings → Access now follow the open conversation.
|
|
282
|
+
- A browser session ended 8 hours after launch even while in use; it now renews for up to 7 days, and only a tab unused for 8 hours signs out.
|
|
286
283
|
|
|
287
284
|
## v1.32.0 - 2026-10-19
|
|
288
285
|
|
|
289
|
-
|
|
286
|
+
**Failed or stopped company streams end at Studio too.** When a company stream fails or you press Stop, Piagent asks Studio to end the request, so the conversation's account is free for the next one.
|
|
287
|
+
|
|
288
|
+
### Improved
|
|
290
289
|
|
|
291
|
-
|
|
290
|
+
- New failure messages for an over-long answer, a cancelled request and a superseded one; an over-long answer is asked again.
|
|
292
291
|
|
|
293
|
-
|
|
294
|
-
- New failure words for Studio's `output_limit_exceeded`, `client_cancelled` and `superseded` (roles only, never model names); `output_limit_exceeded` is asked again by the company turn retry.
|
|
292
|
+
### Fixed
|
|
295
293
|
|
|
296
|
-
|
|
294
|
+
- A dropped stream could keep running at Studio for 10 minutes, so every retry was refused as "account busy"; Studio is now told to end it.
|
|
297
295
|
|
|
298
|
-
|
|
296
|
+
Requires: Agent Studio 0.32.0.
|
|
299
297
|
|
|
300
298
|
## v1.31.1 - 2026-10-19
|
|
301
299
|
|
|
302
|
-
|
|
300
|
+
**`memory_ask` is there from the first conversation after an update.** The first company conversation after Agent Studio 0.30.0 arrived had no `memory_ask`; it is now offered whenever the conversation has team memory.
|
|
303
301
|
|
|
304
|
-
###
|
|
302
|
+
### Improved
|
|
305
303
|
|
|
306
|
-
-
|
|
304
|
+
- On a Studio without it, `memory_ask` says to use `memory_search`, and memory stays on.
|
|
307
305
|
|
|
308
|
-
###
|
|
306
|
+
### Fixed
|
|
309
307
|
|
|
310
|
-
- `
|
|
308
|
+
- The `memory_ask` tool was missing from the first company conversation after a Studio update; it is now offered whenever team memory is on.
|
|
311
309
|
|
|
312
310
|
## v1.31.0 - 2026-10-19
|
|
313
311
|
|
|
314
|
-
Team memory follows the work
|
|
312
|
+
**Team memory follows the work.** Team rules lead the brief, memories from the current branch and folders are preferred, and the new `memory_ask` answers with sources.
|
|
315
313
|
|
|
316
|
-
###
|
|
314
|
+
### Added
|
|
315
|
+
|
|
316
|
+
- The brief starts with the team's rules, which override recalled memories.
|
|
317
|
+
- The new read-only `memory_ask` tool answers a question from team memory with its sources, for the main agent and helpers.
|
|
317
318
|
|
|
318
|
-
|
|
319
|
-
- The brief starts with the team's rules ("Luật của team"), which override recalled memories.
|
|
320
|
-
- New tool `memory_ask` (main agent and helpers, read-only): asks Studio to answer a question from team memory with its sources; off (204/404) when Studio has no memory.
|
|
321
|
-
- A folder with several repositories uses each repository's memory; a repository whose only remote is not named `origin` works; git's "dubious ownership" (often on WSL) is retried; a folder with no repository is reported to Studio instead of turning memory off silently.
|
|
322
|
-
- Check results from piped commands (`cmd | tail`) now count as lessons.
|
|
323
|
-
- Older Studio (0.27–0.29) keeps working: protocol 3 fields are sent only when Studio says it reads them.
|
|
319
|
+
### Improved
|
|
324
320
|
|
|
325
|
-
|
|
321
|
+
- Each round carries its branch, folders, changed files and checks, so Studio prefers memories from the current branch and folders.
|
|
322
|
+
- An agent's "fixed" or "done" is a claim until a check passes, and turns stale when Git removes the files it named.
|
|
323
|
+
- Check results from piped commands such as `cmd | tail` now count as lessons, and Agent Studio 0.27–0.29 keeps working.
|
|
326
324
|
|
|
327
|
-
|
|
325
|
+
### Fixed
|
|
326
|
+
|
|
327
|
+
- Folders with several repositories, a remote not named `origin` and Git "dubious ownership" on WSL no longer turn memory off silently.
|
|
328
|
+
|
|
329
|
+
Requires: Agent Studio 0.30.0.
|
|
328
330
|
|
|
329
331
|
## v1.30.1 - 2026-10-18
|
|
330
332
|
|
|
331
|
-
The company Terminal
|
|
333
|
+
**Company Terminal hides model names; clear message in the home folder.** The company Terminal shows roles instead of model ids, and `piagent studio` in the home folder now says why it cannot open there and what to do.
|
|
332
334
|
|
|
333
|
-
###
|
|
335
|
+
### Improved
|
|
334
336
|
|
|
335
|
-
-
|
|
336
|
-
- `piagent studio` in the home folder (or any folder that holds `~/.pi/agent/agent-watch-managed.json`) failed with `managed-launch-binding-changed`, which reads "Agent Watch or Piagent changed; import the configuration again", although nothing had changed. The refusal stays (a project's tools must not reach the company configuration); it now reports `managed-project-contains-config` with what to do: open a project folder, or `piagent studio --project <folder>`. The dashboard shows the same words.
|
|
337
|
+
- Pi's start-up warnings no longer point at /bug, which is off in company conversations, or name a model.
|
|
337
338
|
|
|
338
|
-
###
|
|
339
|
+
### Fixed
|
|
339
340
|
|
|
340
|
-
-
|
|
341
|
+
- The company Terminal showed the Harness's model ids in its header, footer and /model answers; it now shows roles, such as `Main agent • Rất cao`.
|
|
342
|
+
- Running `piagent studio` in the home folder wrongly said Agent Watch or Piagent had changed; it now says to open a project folder or use `--project`.
|
|
341
343
|
|
|
342
344
|
## v1.30.0 - 2026-10-18
|
|
343
345
|
|
|
344
|
-
Large
|
|
346
|
+
**Large contexts over slow connections; a clearer company Terminal.** Model calls to Studio are gzip-compressed, about 3x smaller, and the company Terminal shows turn stats, running helpers and the Git branch.
|
|
345
347
|
|
|
346
|
-
###
|
|
348
|
+
### Improved
|
|
347
349
|
|
|
348
|
-
- Model calls go to Studio gzip-compressed once Studio
|
|
349
|
-
-
|
|
350
|
+
- Model calls of 64 KiB or more go to Studio gzip-compressed once Studio accepts it, about 3x smaller.
|
|
351
|
+
- Each turn's end notice in the company Terminal adds requests, tokens, time and output speed.
|
|
352
|
+
- The footer shows `Subagent n/m` and the Git branch; `memory_search` and `memory_page` results stay short, with Ctrl+O to show all.
|
|
350
353
|
|
|
351
|
-
###
|
|
354
|
+
### Fixed
|
|
355
|
+
|
|
356
|
+
- A slow upload that keeps sending is no longer cut at 15 s.
|
|
357
|
+
- Commands `/bypass status` and `/fast on` run on the first Enter, and `piagent studio` says it is joining Agent Watch before the Terminal draws.
|
|
352
358
|
|
|
353
|
-
|
|
359
|
+
Requires: Agent Studio 0.28.2.
|
|
354
360
|
|
|
355
361
|
## v1.29.0 - 2026-10-18
|
|
356
362
|
|
|
357
|
-
The company Terminal
|
|
363
|
+
**Company Terminal shows the Harness and keeps work inside the company.** The company Terminal gets its own header, footer and plan checklist, blocks commands that send work outside, and Stop no longer breaks the next message.
|
|
358
364
|
|
|
359
|
-
###
|
|
365
|
+
### Added
|
|
360
366
|
|
|
361
|
-
-
|
|
362
|
-
- `/login`, `/logout`, `/model`, `/scoped-models`, `/thinking` and `/settings`, and the keys that do the same (Ctrl+L, Ctrl+P, Shift+Tab), say that the team's Harness decides instead of opening Pi's pickers. They stay in the `/` list with Vietnamese descriptions (hiding one let Enter pick a skill and send it to the agent). `/changelog` shows Piagent's latest release notes instead of Pi's.
|
|
363
|
-
- A company header replaces Pi's startup header and the "Model scope: agent-watch-auto (Ctrl+P to cycle)" line: team, Harness main model and effort, review model, Ask first or Bypass, Fast, memory, release.
|
|
364
|
-
- The footer shows the Harness's main model and effort before the first run (it said "medium" while the Harness ran xhigh) and no USD cost.
|
|
365
|
-
- While `ask_user` waits for the member, the loader reads "Đang chờ bạn trả lời" instead of "Working".
|
|
366
|
-
- The plan is drawn as a checklist with each step (☑ done, ☐ open, ⊘ deferred) instead of "Plan updated: 1/3 steps completed". Personal `pi` is unchanged.
|
|
367
|
+
- A company header shows team, Harness model and effort, review model, Ask first or Bypass, Fast, memory and release.
|
|
367
368
|
|
|
368
|
-
###
|
|
369
|
+
### Improved
|
|
369
370
|
|
|
370
|
-
-
|
|
371
|
+
- `/login`, `/model`, `/thinking`, `/settings` and their keys say the team's Harness decides instead of opening Pi's pickers.
|
|
372
|
+
- The footer shows the Harness's real model and effort with no USD cost, and the plan is drawn as a checklist.
|
|
373
|
+
- `/changelog` shows Piagent's release notes, and the loader reads “Đang chờ bạn trả lời” while a question waits.
|
|
371
374
|
|
|
372
|
-
###
|
|
375
|
+
### Fixed
|
|
376
|
+
|
|
377
|
+
- Stopping a turn while a command ran could break the next message; with the required Studio and Watch, the next message now starts a new run.
|
|
378
|
+
|
|
379
|
+
### Security
|
|
380
|
+
|
|
381
|
+
- `/share` and `/bug` are refused in the company Terminal, since both sent company conversations and code outside the company.
|
|
373
382
|
|
|
374
|
-
|
|
375
|
-
- `tests/managed-failures.test.mjs`: Stop during a real sandboxed command sends no renew; a close Studio cannot confirm is not sent again, and the next turn works.
|
|
383
|
+
Requires: Agent Studio 0.28.1, Agent Watch 0.15.7 (Windows 0.1.14) for the Stop fix.
|
|
376
384
|
|
|
377
385
|
## v1.28.3 - 2026-10-18
|
|
378
386
|
|
|
379
|
-
Agent Watch
|
|
387
|
+
**Agent Watch self-updates no longer break the company Terminal.** Right after Agent Watch updates itself on macOS, `piagent studio` and the dashboard wait for the new setup instead of failing for about a minute.
|
|
380
388
|
|
|
381
|
-
###
|
|
389
|
+
### Fixed
|
|
382
390
|
|
|
383
|
-
-
|
|
391
|
+
- `piagent studio` failed for up to a minute after Agent Watch updated itself; it now waits for the new setup and runs.
|
|
384
392
|
|
|
385
|
-
###
|
|
393
|
+
### Security
|
|
386
394
|
|
|
387
|
-
-
|
|
395
|
+
- The wait applies only when the changed file is still Agent Watch's own app, and every pinned path and hash is checked again first.
|
|
388
396
|
|
|
389
397
|
## v1.28.2 - 2026-10-18
|
|
390
398
|
|
|
391
|
-
No
|
|
399
|
+
**No setup error right after a Piagent update.** After a Piagent update, `piagent studio` waits up to 90 seconds for Agent Watch to rewrite the company setup instead of failing at once.
|
|
392
400
|
|
|
393
|
-
###
|
|
401
|
+
### Improved
|
|
394
402
|
|
|
395
|
-
-
|
|
396
|
-
-
|
|
403
|
+
- While waiting it says “Agent Watch đang cập nhật cấu hình…”, or that Agent Watch is not running; the dashboard waits as long.
|
|
404
|
+
- Update notes in the Terminal and the dashboard no longer tell members to import the configuration again by hand.
|
|
397
405
|
|
|
398
|
-
###
|
|
406
|
+
### Fixed
|
|
399
407
|
|
|
400
|
-
- `
|
|
408
|
+
- `piagent studio` failed right after an update while Agent Watch had not rewritten the setup; it now waits, rechecks every hash and runs.
|
|
401
409
|
|
|
402
410
|
## v1.28.1 - 2026-10-18
|
|
403
411
|
|
|
404
|
-
|
|
412
|
+
**Company Terminal and personal Pi stop stepping on each other.** Personal Pi starts again when Piagent was loaded twice, old company entries are cleaned up, and company conversations stay in the company Terminal.
|
|
405
413
|
|
|
406
|
-
###
|
|
414
|
+
### Improved
|
|
407
415
|
|
|
408
|
-
-
|
|
409
|
-
- Old Agent Watch company entries in personal Pi are cleaned up once the machine has a managed company binding: the `agent_watch_*` providers (a direct key read from Agent Watch), a default model or model list that names them, and the old session-header extension. They sent personal Pi to Studio outside the team's Harness, or failed. The member's own settings, models and packages stay; every changed file is backed up first.
|
|
410
|
-
- `piagent-update --check` reports the installed Pi package version and any personal Pi conflict, instead of "Everything is on the target release" while the package was older.
|
|
411
|
-
- Personal Pi refuses to continue a company conversation (one in Agent Watch's store or carrying its run entries): it would have gone on with personal models, keys and settings. It says to open it with `piagent studio --project <folder>` and `/resume`.
|
|
412
|
-
- The company Terminal says how to reopen a conversation with `piagent studio --project <folder>` and `/resume` when it closes, instead of Pi's `pi --session-dir …`.
|
|
413
|
-
- `/help` in the company Terminal lists its commands and shortcuts without a model request (it used to go to the agent, which even started a review).
|
|
414
|
-
- Stopping `piagent` from outside (a script, an editor, a timeout) stops the company run under it too; it used to keep running in the background.
|
|
416
|
+
- `piagent-update --check` reports the installed Pi package version and any personal Pi conflict.
|
|
415
417
|
|
|
416
|
-
###
|
|
418
|
+
### Fixed
|
|
417
419
|
|
|
418
|
-
- `
|
|
420
|
+
- Personal `pi` exited without an answer when Piagent was loaded twice; `piagent-update` and the installer now remove the duplicate, with a backup.
|
|
421
|
+
- Old Agent Watch company providers and models in personal Pi are removed once a company binding exists; your own settings stay.
|
|
422
|
+
- Personal Pi refuses to continue a company conversation and says to open it with `piagent studio --project <folder>` and `/resume`.
|
|
423
|
+
- `/help` in the company Terminal lists commands locally instead of going to the agent, which even started a review.
|
|
424
|
+
- Stopping `piagent` from a script, editor or timeout now stops the company run under it instead of leaving it running.
|
|
419
425
|
|
|
420
426
|
## v1.28.0 - 2026-10-17
|
|
421
427
|
|
|
422
|
-
Team memory
|
|
428
|
+
**Team memory v2: each round once, brief restored after compaction.** Each company round reaches team memory exactly once, the brief returns after compaction, and observed check recoveries are kept.
|
|
423
429
|
|
|
424
|
-
###
|
|
430
|
+
### Added
|
|
425
431
|
|
|
426
|
-
-
|
|
427
|
-
-
|
|
428
|
-
- A round also carries up to three observed check recoveries (a check that failed, a change, the same check passing; redacted, with both tool calls), never a guessed cause, a rerun alone, a narrowed or skipped test run.
|
|
429
|
-
- Counters per round (brief, searches, pages, helper searches, lessons, outbox retries) go to Studio for its System page; never a prompt or tool output.
|
|
432
|
+
- After a compaction the agent gets a fresh brief for the latest request, and the conversation keeps exactly one brief.
|
|
433
|
+
- A round carries up to three observed check recoveries (fail, change, pass), redacted, never a guessed cause.
|
|
430
434
|
|
|
431
|
-
###
|
|
435
|
+
### Improved
|
|
432
436
|
|
|
433
|
-
-
|
|
434
|
-
-
|
|
435
|
-
- On an Agent Studio 0.27.x, rounds still go to memory in the old body, so either release order keeps memory growing.
|
|
437
|
+
- Rounds are queued on disk before sending, so a lost reply, a crash or two sessions never record a round twice or under another key.
|
|
438
|
+
- On Agent Studio 0.27.x rounds still reach memory, so either release order keeps memory growing.
|
|
436
439
|
|
|
437
|
-
###
|
|
440
|
+
### Fixed
|
|
438
441
|
|
|
439
|
-
-
|
|
442
|
+
- An empty or failed brief is no longer requested again every round, and closing a round waits at most 4.5 seconds.
|
|
440
443
|
|
|
441
|
-
|
|
444
|
+
Requires: Agent Studio 0.28.0.
|
|
442
445
|
|
|
443
|
-
|
|
446
|
+
## v1.27.1 - 2026-10-17
|
|
444
447
|
|
|
445
|
-
|
|
448
|
+
**Team memory keeps working while the agent calls the model.** Commits and memory searches made beside a model request no longer fail, so a repository's commits reach team memory again.
|
|
446
449
|
|
|
447
|
-
|
|
450
|
+
### Fixed
|
|
448
451
|
|
|
449
|
-
|
|
452
|
+
- Memory calls made beside a model request were refused on an expired token; they now renew the token and retry once.
|
|
450
453
|
|
|
451
|
-
|
|
454
|
+
Requires: Agent Studio 0.27.1.
|
|
452
455
|
|
|
453
456
|
## v1.27.0 - 2026-10-17
|
|
454
457
|
|
|
455
|
-
Team memory: company agents remember what the team settled
|
|
458
|
+
**Team memory: company agents remember what the team settled.** With team memory on, a new company conversation opens with a short brief of the repository's decisions, rules and work in progress.
|
|
459
|
+
|
|
460
|
+
### Added
|
|
456
461
|
|
|
457
|
-
|
|
462
|
+
- New company conversations open with a brief from the team's memory of the repository, kept in the conversation for the prompt cache.
|
|
463
|
+
- Each round (your words, the final answer, changed files; never tool output) goes back to memory redacted, and new commits once.
|
|
464
|
+
- The main agent gets `memory_search` and `memory_page`; helpers get a read-only `memory_search`.
|
|
458
465
|
|
|
459
|
-
|
|
460
|
-
- `memory_search` and `memory_page` for the main agent, and a read-only `memory_search` for helpers (scout, research, verify, review) on their own run token, once Studio has answered memory on this Mac.
|
|
461
|
-
- Memory never fails or slows a turn: every call is bounded, a round Studio did not take waits in a small outbox and goes with the next round, and a Studio or team without memory (204/404) means no memory traffic for 30 minutes and no memory tools.
|
|
466
|
+
### Improved
|
|
462
467
|
|
|
463
|
-
|
|
468
|
+
- Memory never fails or slows a turn: calls are bounded, and a team without memory gets no memory traffic or tools.
|
|
464
469
|
|
|
465
|
-
|
|
470
|
+
Requires: Agent Studio 0.27.0 with team memory turned on.
|
|
466
471
|
|
|
467
472
|
## v1.26.1 - 2026-10-16
|
|
468
473
|
|
|
469
|
-
|
|
474
|
+
**Rename a conversation while its turn runs.** Renaming a conversation mid-turn now takes effect, and a rename, fork or archive that fails says why in words.
|
|
470
475
|
|
|
471
|
-
###
|
|
476
|
+
### Improved
|
|
472
477
|
|
|
473
|
-
-
|
|
478
|
+
- A rename, fork or archive that still fails explains why in words, with the code at the end.
|
|
474
479
|
|
|
475
|
-
###
|
|
480
|
+
### Fixed
|
|
476
481
|
|
|
477
|
-
-
|
|
482
|
+
- Renaming a conversation from its menu during a turn showed an error and kept the old name; the rename now lands mid-turn.
|
|
478
483
|
|
|
479
484
|
## v1.26.0 - 2026-10-15
|
|
480
485
|
|
|
481
|
-
|
|
486
|
+
**Dashboard `/` commands, `/undo` and dev servers across turns.** Company conversations gain Terminal-style `/` commands in the dashboard, `/undo` for the last turn, long-running dev servers and instant type errors.
|
|
482
487
|
|
|
483
|
-
###
|
|
488
|
+
### Added
|
|
484
489
|
|
|
485
|
-
- Dashboard `/` commands
|
|
486
|
-
- `/undo`
|
|
487
|
-
-
|
|
488
|
-
- After
|
|
489
|
-
- `piagent studio --prompt <text> --json` writes the event stream
|
|
490
|
-
- A message sent from another tab while a turn runs waits for that turn instead of being refused.
|
|
491
|
-
- The prompt and `run_with_network` no longer send end-to-end tests to approval on macOS: Playwright's Chromium runs in the plain sandbox against a server on the Mac.
|
|
492
|
-
- Ready for Pi 1.2.0 (the pin stays 0.87.1): `@earendil-works/pi-ai` is found where Pi 1.x hoists it, the sandbox reads it there, and Pi 1.x's error results read as the failures they are.
|
|
490
|
+
- Dashboard `/` commands such as `/new`, `/fork`, `/undo`, `/fast` and `/bypass` run locally, plus ⌘⇧O, ⌘/ and Esc shortcuts.
|
|
491
|
+
- `/undo` restores the files the agent's last turn changed, one turn at a time, without touching your index, HEAD or commits.
|
|
492
|
+
- On macOS a dev server or watcher started by the agent keeps running across turns in the sandbox, for up to 4 hours.
|
|
493
|
+
- After editing a TypeScript or JavaScript file, the agent gets that file's errors from the project's own TypeScript.
|
|
494
|
+
- `piagent studio --prompt <text> --json` writes the same event stream as `pi --mode json`.
|
|
493
495
|
|
|
494
|
-
###
|
|
496
|
+
### Fixed
|
|
495
497
|
|
|
496
|
-
-
|
|
497
|
-
- `gh` and SSH without a sign-in in the sandbox no longer point the agent at `gh auth login`; they name `run_on_host`.
|
|
498
|
-
- `fetch_origin` stopped a repository with many branches after 60 seconds (a team repository of 92 branches takes about two minutes) and failed with `managed-repository-fetch-failed`; the download now has ten minutes.
|
|
499
|
-
- A turn cut off after a check had passed (the next model request interrupted) reported "no check passed on the final code"; the passed check now counts. A failed `fetch_origin` names `run_on_host` as the way on. `E401` and `ENEEDAUTH` are matched as whole words.
|
|
498
|
+
- Fetching a repository with many branches stopped after 60 seconds; the download now has ten minutes.
|
|
500
499
|
|
|
501
|
-
|
|
500
|
+
## v1.25.0 - 2026-10-13
|
|
502
501
|
|
|
503
|
-
|
|
504
|
-
- `docs/company-dev-commands.md`: what runs in a company session without asking, what names its approval, the dashboard commands and the headless mode.
|
|
502
|
+
**When the machine lacks something, the agent asks and then runs.** A company conversation no longer gives up on a missing runtime, sign-in or stopped Docker: the agent asks for approval and carries on.
|
|
505
503
|
|
|
506
|
-
|
|
504
|
+
### Added
|
|
507
505
|
|
|
508
|
-
|
|
506
|
+
- `run_on_host` runs one approved command on your machine outside the sandbox, such as installing a runtime or `git push`; it always asks.
|
|
507
|
+
- `start_docker` asks to start an installed but stopped Docker and waits for it, so `run_with_docker` works in the same conversation.
|
|
509
508
|
|
|
510
|
-
###
|
|
509
|
+
### Improved
|
|
511
510
|
|
|
512
|
-
-
|
|
513
|
-
-
|
|
514
|
-
- `run_with_docker` is offered whenever the Docker CLI is installed; a stopped engine (Docker Desktop leaves its socket file behind) is found before anything is asked.
|
|
515
|
-
- Every sandbox failure now names the way on instead of "report it and stop": a missing runtime or wrong version (`Unable to locate a Java Runtime`, `command not found`, `invalid target release`, Node `engines`) → `run_on_host` to install it; the member's sign-in (`could not read Username`, `Permission denied (publickey)`, `E401`, a private image) → `fetch_origin` or `run_on_host`; a blocked write outside the project or Keychain → `run_on_host`; Docker stopped → `start_docker`; a host the approved network still cannot reach (VPN, offline) → a question to the member. The Harness check request and the process prompt ask for that approval instead of telling the agent not to install or start anything.
|
|
516
|
-
- `fetch_origin` takes `path`, the repository folder inside the conversation folder, for a workspace folder that holds several repositories; a folder that is not a repository says so and names `path`.
|
|
511
|
+
- Every sandbox failure names the way forward instead of “report it and stop”.
|
|
512
|
+
- Steps only you can do, such as a `sudo` password or an interactive sign-in, are asked with the exact steps and “done, continue” or “skip”.
|
|
517
513
|
|
|
518
|
-
###
|
|
514
|
+
### Fixed
|
|
519
515
|
|
|
520
|
-
- A turn that only read repositories
|
|
521
|
-
- `wget: Failed to fetch` (how `./mvnw` downloads its Maven) is read as a blocked download and points to `run_with_network`, instead of a bare exit code.
|
|
516
|
+
- A turn that only read repositories with `git -C` was counted as a code change and asked for checks three times.
|
|
522
517
|
|
|
523
518
|
## v1.24.0 - 2026-10-13
|
|
524
519
|
|
|
525
|
-
Fast
|
|
520
|
+
**Choose Fast when a company conversation starts.** The new chat page offers a Fast switch when the team's Harness allows it, and the switch turns amber while on.
|
|
521
|
+
|
|
522
|
+
### Added
|
|
526
523
|
|
|
527
|
-
|
|
524
|
+
- “Fast: tắt / Fast: bật” next to the company model makes a new conversation run Fast from its first message.
|
|
528
525
|
|
|
529
|
-
|
|
530
|
-
|
|
526
|
+
### Improved
|
|
527
|
+
|
|
528
|
+
- The Fast switch in the header turns amber while on, since its calls count 2.5 times toward the quota.
|
|
531
529
|
|
|
532
530
|
## v1.23.1 - 2026-10-13
|
|
533
531
|
|
|
534
|
-
|
|
532
|
+
**Agent questions wait at the end of the conversation.** Questions and approvals now sit right above the composer, so a long turn no longer pushes them out of view.
|
|
533
|
+
|
|
534
|
+
### Improved
|
|
535
|
+
|
|
536
|
+
- The question card has larger text and roomier options, and “Let the agent decide” no longer outweighs “Send answer”.
|
|
535
537
|
|
|
536
|
-
###
|
|
538
|
+
### Fixed
|
|
537
539
|
|
|
538
|
-
- A
|
|
539
|
-
- The question card reads more easily: larger question and option text, roomier options, the chosen option's number filled in. In the light theme "Let the agent decide" is an outline button instead of a black one that outweighed "Send answer".
|
|
540
|
+
- A long turn pushed a waiting question out of view; questions now come last and the page scrolls to them.
|
|
540
541
|
|
|
541
542
|
## v1.23.0 - 2026-10-13
|
|
542
543
|
|
|
543
|
-
Fast mode for company conversations
|
|
544
|
+
**Fast mode for company conversations, tool failures sent to Studio.** Where the Harness allows it, a Fast switch gets faster GPT answers at 2.5× quota, and failed tool calls are reported to Agent Studio.
|
|
545
|
+
|
|
546
|
+
### Added
|
|
547
|
+
|
|
548
|
+
- Fast mode via the dashboard switch or `/fast on|off|status`: same GPT model and thinking, faster, tokens counted 2.5 times.
|
|
549
|
+
- Failed tool calls in company runs are reported to Agent Studio with secrets redacted and no prompts.
|
|
550
|
+
|
|
551
|
+
### Improved
|
|
544
552
|
|
|
545
|
-
|
|
553
|
+
- On Claude or API-key models Fast adds nothing, and a refused fast request falls back to standard speed with a note.
|
|
546
554
|
|
|
547
|
-
|
|
548
|
-
- A tool call that fails in a company run is reported to Agent Studio (Logs → "Tool lỗi"), so an administrator can read why Docker, a network command or a test failed on a member's machine: the tool, a code, the command or path, the start and end of the error output, the OS and whether the machine has a Docker engine. Secrets are redacted and the home folder is written `~` before anything is sent; no prompt, search query or subagent brief is sent, and a tool the member stopped or declined is not reported. Needs a Studio with migration 047; an older Studio is asked once and not again.
|
|
555
|
+
### Fixed
|
|
549
556
|
|
|
550
|
-
|
|
557
|
+
- After an admin changed the Harness, a new company conversation never sent its first message; it now starts at an allowed level.
|
|
551
558
|
|
|
552
|
-
|
|
559
|
+
Requires: An Agent Studio and Agent Watch that support the Harness Fast setting.
|
|
553
560
|
|
|
554
561
|
## v1.22.1 - 2026-10-12
|
|
555
562
|
|
|
556
|
-
|
|
563
|
+
**Dashboard no longer hangs on a slow file system.** A project on a Windows drive seen from WSL no longer leaves the dashboard stuck on “Opening Piagent…”.
|
|
557
564
|
|
|
558
|
-
###
|
|
565
|
+
### Improved
|
|
559
566
|
|
|
560
|
-
- On Windows
|
|
561
|
-
- A conversation's page gives Git 8 seconds per repository to list the changed files. A repository that takes longer is shown without its changed files and tried again 5 minutes later, instead of stopping the Gateway for every conversation. Completion checks still wait for Git as before.
|
|
567
|
+
- On Windows, keep projects in the Ubuntu file system (`~/projects`); under `/mnt/c` or `/mnt/d` they work but stay slow.
|
|
562
568
|
|
|
563
|
-
|
|
569
|
+
### Fixed
|
|
570
|
+
|
|
571
|
+
- On Windows the dashboard could stay on “Opening Piagent…”; it now waits 15 seconds for the company runtime and opens anyway.
|
|
572
|
+
- Git gets 8 seconds per repository to list changed files; a slower one is shown without them and retried after 5 minutes.
|
|
564
573
|
|
|
565
574
|
## v1.22.0 - 2026-10-09
|
|
566
575
|
|
|
567
|
-
Attach any source or text file,
|
|
576
|
+
**Attach any source or text file.** Any text file can be attached under its own name, binaries are refused up front with an alternative, and messages with files show once.
|
|
568
577
|
|
|
569
|
-
###
|
|
578
|
+
### Added
|
|
570
579
|
|
|
571
|
-
- Attach
|
|
580
|
+
- Attach `.html`, `.css`, `.ts`, `.py`, `.go`, `.sql` and any other text file, including `Dockerfile` or `Makefile`, under its own name.
|
|
572
581
|
|
|
573
|
-
###
|
|
582
|
+
### Improved
|
|
574
583
|
|
|
575
|
-
-
|
|
576
|
-
|
|
584
|
+
- Binary formats are refused before upload with what to send instead, such as .csv for spreadsheets or .pdf for slide decks.
|
|
585
|
+
|
|
586
|
+
### Fixed
|
|
587
|
+
|
|
588
|
+
- A message with a file showed twice after its turn, once with the raw file contents; now only your text and the file card show.
|
|
577
589
|
|
|
578
590
|
## v1.21.1 - 2026-10-09
|
|
579
591
|
|
|
580
|
-
|
|
592
|
+
**Turn on Bypass while a turn runs, and it stays on.** A company conversation can switch between Ask first and Bypass at any time, and the next commands follow the new choice.
|
|
581
593
|
|
|
582
|
-
###
|
|
594
|
+
### Improved
|
|
583
595
|
|
|
584
|
-
-
|
|
596
|
+
- A command already waiting keeps its Allow or Deny card, and the result of a switch shows in a notice at the top.
|
|
597
|
+
|
|
598
|
+
### Fixed
|
|
599
|
+
|
|
600
|
+
- Turning on Bypass while a command waited for approval looked done but did not take; it now applies mid-turn and is kept.
|
|
585
601
|
|
|
586
602
|
## v1.21.0 - 2026-10-09
|
|
587
603
|
|
|
588
|
-
|
|
604
|
+
**Decisions one card at a time, alerts from other conversations.** Questions and approvals show one card at a time, other conversations announce when they finish or wait for you, and Studio logs compactions.
|
|
589
605
|
|
|
590
|
-
###
|
|
606
|
+
### Added
|
|
591
607
|
|
|
592
|
-
-
|
|
593
|
-
-
|
|
594
|
-
- Studio logs each context compaction of a company conversation
|
|
608
|
+
- A toast says when another conversation finishes, fails, stops or waits for you, and “Mở” opens it.
|
|
609
|
+
- The sidebar marks conversations waiting for you or finished unseen, and the tab title counts what waits.
|
|
610
|
+
- Studio logs each context compaction of a company conversation with its reason and size before and after; no summary text is sent.
|
|
611
|
+
|
|
612
|
+
### Improved
|
|
613
|
+
|
|
614
|
+
- Questions and approvals show one card at a time with steps such as “Việc cần bạn quyết · 1/3”, main agent first.
|
|
595
615
|
|
|
596
616
|
## v1.20.0 - 2026-10-09
|
|
597
617
|
|
|
598
|
-
Package installs in the company sandbox no longer ask
|
|
618
|
+
**Package installs in the company sandbox no longer ask.** Plain commands reach the usual package registries through a restricted proxy, long subagents keep running, and review reads earlier commits.
|
|
619
|
+
|
|
620
|
+
### Added
|
|
621
|
+
|
|
622
|
+
- Installs from npm and other common registries run without approval through a proxy that allows only those hosts.
|
|
599
623
|
|
|
600
|
-
###
|
|
624
|
+
### Improved
|
|
601
625
|
|
|
602
|
-
-
|
|
603
|
-
- Bypass runs `run_with_docker` without asking
|
|
604
|
-
- Maven and Gradle use the proxy too: the JVM gets the proxy settings, and Maven, which reads its proxy only from `settings.xml`, gets a settings file in the sandbox's own home. A live check ran `./mvnw test` and `./gradlew test`, each downloading its distribution, plugins and JUnit through the proxy, and the next conversation ran `./mvnw -o test` offline from the project's cache.
|
|
626
|
+
- Add your own registry hosts in `~/.piagent/sandbox-domains`, one per line; registry credentials stay out of the sandbox.
|
|
627
|
+
- Bypass runs `run_with_docker` without asking; pushes, deploys, registry logins and unclear deletes still ask.
|
|
605
628
|
|
|
606
|
-
###
|
|
629
|
+
### Fixed
|
|
607
630
|
|
|
608
|
-
- A subagent
|
|
609
|
-
- The review subagent said
|
|
631
|
+
- A subagent working longer than 15 minutes was stopped and the turn aborted; it now keeps running.
|
|
632
|
+
- The review subagent said “no patch” for work committed earlier; it now reads commits since a given commit, branch or `HEAD~N`.
|
|
610
633
|
|
|
611
634
|
## v1.19.0 - 2026-10-08
|
|
612
635
|
|
|
613
|
-
|
|
636
|
+
**Checklist tasks carried to the end, Docker in the company sandbox.** The Harness carries a checklist task to its end, every turn says how it ended, Docker is available for approved commands, and multi-repo folders work.
|
|
614
637
|
|
|
615
|
-
###
|
|
638
|
+
### Added
|
|
639
|
+
|
|
640
|
+
- When the Harness requires a plan, it sends the agent on to the next open checklist step until done, stopped or stalled.
|
|
641
|
+
- Every company turn ends with a status line such as “Hoàn thành · n/n bước”, with Continue when the task is not finished.
|
|
642
|
+
- `run_with_docker` runs one approved command with internet and Docker, for test databases, builds or container tests.
|
|
643
|
+
- A folder holding several repositories shows “N repo”, with each repository's branch and changed files.
|
|
616
644
|
|
|
617
|
-
|
|
618
|
-
- A checklist step can be marked `deferred` (left for later at the member's word, or no longer needed). The agent is told never to mark completed a step it did not do: in a live run where the member said to stop after STEP02, the model had marked the other four completed to end its turn; it now defers them, and the turn says "Dừng theo yêu cầu · 2/6 bước xong, 4 bước để sau". Deferred steps are not sent on and are left out of the steps Studio counts.
|
|
619
|
-
- "tiếp tục" (or the Continue button) after a turn that stopped midway takes up the open checklist: the turn's end and the harness rounds follow it even when the agent does not update it again.
|
|
620
|
-
- Every company turn ends with a line under the last answer, in the dashboard and the company Terminal: "Hoàn thành · n/n bước", "Dừng giữa chừng · còn x/y bước" (and why: two rounds without progress, the round limit, or a Harness that does not require a plan), "Lượt dừng vì lỗi" (which role) or "Bạn đã dừng lượt này", with Continue when the task is not finished. The sidebar shows the same for each conversation. The line never reaches the model.
|
|
621
|
-
- A folder that holds several repositories (a workspace with the front end, the back end and other projects side by side) shows "N repo" where a repository shows its branch: in the chat header, the status bar and the sidebar. Its menu lists the repositories found one level down with their branches and changed files, as an editor's source control view does; picking one opens its branches to switch or create one there.
|
|
645
|
+
### Improved
|
|
622
646
|
|
|
623
|
-
-
|
|
624
|
-
- Company sandbox: `./gradlew` reuses the Gradle distributions already unpacked in `~/.gradle/wrapper/dists`, as `./mvnw` does with Maven, so it runs without asking for network.
|
|
647
|
+
- Steps you postpone are marked deferred, never completed, and `./mvnw` and `./gradlew` reuse distributions already on the machine.
|
|
625
648
|
|
|
626
|
-
###
|
|
649
|
+
### Fixed
|
|
627
650
|
|
|
628
|
-
- A
|
|
629
|
-
- A turn that committed its change (`git commit`) counted as "no code changed": the code was compared with HEAD, which the commit had moved. The code is now compared with the commit the turn started from, so required checks, the review (which reads the committed change) and the process report still apply.
|
|
630
|
-
- Adding a folder failed with "Không thể thêm thư mục" once 200 folders had been added: the list only grew. A full list now forgets folders gone from the disk, then the ones added longest ago, and a folder added again moves to the newest place. The add dialog also says why a folder could not be added (the folder picker did not open, a drive root or a link, too many attempts).
|
|
631
|
-
- Company sandbox: `./mvnw` failed without network ("curl: Failed to fetch apache-maven-…-bin.zip") even when the Maven it wants was already unpacked on the Mac, and a Maven downloaded through an approved command was gone in the next conversation. The Maven Wrapper now reuses the distributions in `~/.m2/wrapper/dists` (read-only) and keeps one it downloads in the project's cache, so `./mvnw -o` runs at once.
|
|
651
|
+
- A turn that committed its change counted as “no code changed”; checks and review now apply to committed work.
|
|
632
652
|
|
|
633
653
|
## v1.18.0 - 2026-10-08
|
|
634
654
|
|
|
635
|
-
Switch
|
|
655
|
+
**Switch Git branch from the dashboard, retries, Claude Haiku 5.5.** The branch in the dashboard becomes a switcher, passing model failures are retried before showing, and Claude Haiku 5.5 is available.
|
|
656
|
+
|
|
657
|
+
### Added
|
|
658
|
+
|
|
659
|
+
- The Git branch in the header and status bar lists branches to switch to, or creates a new one from the current commit.
|
|
660
|
+
- Claude Haiku 5.5 can be used in company conversations when Studio offers it, and joins the personal Claude model scope.
|
|
636
661
|
|
|
637
|
-
###
|
|
662
|
+
### Improved
|
|
638
663
|
|
|
639
|
-
-
|
|
640
|
-
- A company answer
|
|
641
|
-
- Dashboard turns retry a passing failure twice instead of once, and a failure later in a turn is retried too: replay safety is judged on the model call that failed (no text shown, no tool of its own), not on everything the turn did before. Personal sessions get this as well.
|
|
642
|
-
- The Git branch in the chat header and the status bar is a button: it lists the project's branches (local ones, then remote ones with no local branch yet) and switches the folder to one of them, or to a new branch typed in the menu, made from the current commit. A switch waits while any conversation in that folder runs, company ones included, so an agent never finds its files changed under it. Git does the switch itself, so it refuses what it refuses in a Terminal; the menu shows its reason in its own words (for example, uncommitted changes the switch would overwrite) and leaves the files as they were.
|
|
664
|
+
- A branch switch waits while any conversation in that folder runs, and shows Git's own reason when Git refuses.
|
|
665
|
+
- A company answer cut off for a passing reason is retried up to twice before the failure shows; quota or key errors fail at once.
|
|
643
666
|
|
|
644
667
|
## v1.17.0 - 2026-10-08
|
|
645
668
|
|
|
646
|
-
The dashboard shows which Git branch each project is on.
|
|
669
|
+
**The dashboard shows each project's Git branch.** The dashboard shows which Git branch each conversation's project is on, and warns when HEAD is detached.
|
|
647
670
|
|
|
648
|
-
###
|
|
671
|
+
### Added
|
|
649
672
|
|
|
650
|
-
- The
|
|
673
|
+
- The branch shows under the chat title, in the status bar and beside each project group in the sidebar, worktrees included.
|
|
674
|
+
- A detached HEAD shows its short commit in the warning colour, since work there belongs to no branch.
|
|
651
675
|
|
|
652
676
|
## v1.16.3 - 2026-10-08
|
|
653
677
|
|
|
654
|
-
|
|
678
|
+
**Dashboard keeps checking for updates after updating itself.** After an update from the dashboard's button, the dashboard checks for the next release again.
|
|
655
679
|
|
|
656
|
-
###
|
|
680
|
+
### Fixed
|
|
657
681
|
|
|
658
|
-
-
|
|
682
|
+
- Updating from the button restarted the dashboard with update checks off until the machine restarted; this is fixed from any release.
|
|
659
683
|
|
|
660
684
|
## v1.16.2 - 2026-10-08
|
|
661
685
|
|
|
662
|
-
The Terminal says what the dashboard says.
|
|
686
|
+
**The Terminal says what the dashboard says.** The Terminal now offers updates, a `/bypass` switch, and the dashboard's explanations for network commands and failures.
|
|
687
|
+
|
|
688
|
+
### Breaking changes
|
|
689
|
+
|
|
690
|
+
- The company launcher changed: if `piagent studio` reports the setup changed, import it again in Agent Watch → Studio.
|
|
691
|
+
|
|
692
|
+
### Added
|
|
693
|
+
|
|
694
|
+
- `pi` and `piagent studio` offer a new Piagent between turns with “Cập nhật ngay” or “Để sau”; `/piagent-update` checks at once.
|
|
695
|
+
- `/bypass` in `piagent studio` switches between asking first and Bypass, and the footer shows “Bypass” while on.
|
|
663
696
|
|
|
664
|
-
###
|
|
697
|
+
### Improved
|
|
665
698
|
|
|
666
|
-
-
|
|
667
|
-
- `/bypass` in `piagent studio` switches the conversation between asking first and Bypass (`on`, `off`, or a choice), kept with the conversation like the dashboard's switch; the footer shows "Bypass" while it is on.
|
|
668
|
-
- A network command in the company Terminal is confirmed with its reason, why Bypass still asks, and what allowing or declining does, as on the dashboard.
|
|
669
|
-
- The company Terminal explains a failed request (quota, account, Harness, refused…) and a runtime that cannot start in the dashboard's Vietnamese words, with the code for support; the Harness's notes (checks, review findings, a subagent's objection, "bạn quyết định") read in Vietnamese.
|
|
699
|
+
- Network command prompts, failed requests and Harness notes read in the dashboard's Vietnamese wording.
|
|
670
700
|
|
|
671
|
-
###
|
|
701
|
+
### Fixed
|
|
672
702
|
|
|
673
703
|
- A slash command of a company Terminal extension was sent to the model as a message.
|
|
674
|
-
- With Agent Watch 0.15.2, a Watch update that needs Keychain access again asks for it in a dialog and refreshes Piagent's company setup at once; before, `piagent studio` stopped with `managed-launch-binding-changed` until the member found the button.
|
|
675
704
|
|
|
676
|
-
|
|
705
|
+
Requires: Agent Watch 0.15.2 for the Keychain prompt after a Watch update.
|
|
677
706
|
|
|
678
707
|
## v1.16.1 - 2026-10-07
|
|
679
708
|
|
|
680
|
-
New releases
|
|
709
|
+
**New releases announced in a dialog and checked every hour.** A dialog announces each new release, checks run hourly, and a dashboard tab no longer loses its sign-in to another local Piagent server.
|
|
681
710
|
|
|
682
|
-
###
|
|
711
|
+
### Added
|
|
683
712
|
|
|
684
|
-
-
|
|
685
|
-
- The dashboard checks for a new release every hour (was 6 hours), and the Terminal notice every hour (was a day).
|
|
713
|
+
- A dialog shows what a new release changes with “Update now”; “Later” asks again after an hour.
|
|
686
714
|
|
|
687
|
-
###
|
|
715
|
+
### Improved
|
|
688
716
|
|
|
689
|
-
-
|
|
690
|
-
|
|
717
|
+
- The dashboard and the Terminal check for a new release every hour.
|
|
718
|
+
|
|
719
|
+
### Fixed
|
|
720
|
+
|
|
721
|
+
- A dashboard tab lost its sign-in when another local Piagent server signed in; each port now has its own cookie.
|
|
722
|
+
- A signed-out tab stops polling and says how to reopen Piagent with `piagent dashboard` or Agent Watch.
|
|
691
723
|
|
|
692
724
|
## v1.16.0 - 2026-10-07
|
|
693
725
|
|
|
694
|
-
Bypass for company conversations
|
|
726
|
+
**Bypass for company conversations.** Company conversations can run in Bypass, where network commands run without asking but anything that pushes or deletes still asks.
|
|
695
727
|
|
|
696
|
-
###
|
|
728
|
+
### Added
|
|
697
729
|
|
|
698
|
-
-
|
|
699
|
-
- Personal sessions with full access no longer ask before a broad `git add`; deletes, migrations and external actions are still asked.
|
|
730
|
+
- In Bypass, installs, downloads, `git pull` and tests with a server or browser run without asking; Ask first stays the default.
|
|
700
731
|
|
|
701
|
-
###
|
|
732
|
+
### Improved
|
|
733
|
+
|
|
734
|
+
- Personal sessions with full access no longer ask before a broad `git add`.
|
|
735
|
+
|
|
736
|
+
### Fixed
|
|
737
|
+
|
|
738
|
+
- A helper added to the Harness during a conversation can be used from the next message.
|
|
739
|
+
|
|
740
|
+
### Security
|
|
702
741
|
|
|
703
|
-
-
|
|
742
|
+
- Bypass still asks before `git push`, deploys, uploads, migrations, unclear deletes and `sudo`, and says why.
|
|
704
743
|
|
|
705
744
|
## v1.15.2 - 2026-10-07
|
|
706
745
|
|
|
707
|
-
Long company conversations
|
|
746
|
+
**Long company conversations compact again, and earlier.** Summaries of long company conversations work again and start at 90% of the model's window, never later than 300k tokens.
|
|
708
747
|
|
|
709
|
-
###
|
|
748
|
+
### Improved
|
|
710
749
|
|
|
711
|
-
-
|
|
712
|
-
- A summary that fails is asked again after 1, 2, 4 … minutes (at most 30) instead of before every step.
|
|
750
|
+
- Compaction starts at 90% of the window and never later than 300k tokens, keeping about the last 20k tokens verbatim.
|
|
713
751
|
|
|
714
|
-
###
|
|
752
|
+
### Fixed
|
|
715
753
|
|
|
716
|
-
-
|
|
754
|
+
- Long company conversations could not be summarised and kept growing past the model's window; summaries now use the run's grant.
|
|
755
|
+
- A failed summary is retried after 1, 2, 4 … minutes (at most 30) instead of before every step.
|
|
717
756
|
|
|
718
757
|
## v1.15.1 - 2026-10-07
|
|
719
758
|
|
|
720
|
-
Studio sees what each company model call is for
|
|
759
|
+
**Studio sees what each company model call is for.** Each company model call tells Studio its purpose, and several conversations in one folder keep their changes apart.
|
|
721
760
|
|
|
722
|
-
###
|
|
761
|
+
### Added
|
|
723
762
|
|
|
724
|
-
-
|
|
763
|
+
- Each company model call tells Studio what it is for, such as an answer, a summary or a subagent brief; no other prompt text is sent.
|
|
725
764
|
|
|
726
|
-
###
|
|
765
|
+
### Improved
|
|
727
766
|
|
|
728
|
-
-
|
|
729
|
-
- A new company conversation whose runtime fails to open says why (`company-<kind>`) instead of "resyncing", and Archive and Restart work on it without restarting the dashboard.
|
|
730
|
-
- A build wrapper (`mvnw`, `gradlew`) whose download is blocked in company mode points to `run_with_network`.
|
|
731
|
-
- `piagent doctor` and other `piagent <command>` forms run `piagent-<command>`; an unknown subcommand is named.
|
|
767
|
+
- `piagent doctor` and other `piagent <command>` forms run `piagent-<command>`.
|
|
732
768
|
|
|
733
|
-
|
|
769
|
+
### Fixed
|
|
734
770
|
|
|
735
|
-
|
|
771
|
+
- Several company conversations in one folder took each other's edits; checks and review now follow each conversation's own files.
|
|
772
|
+
- A new company conversation whose runtime fails to open says why, and Archive and Restart work without restarting the dashboard.
|
|
736
773
|
|
|
737
|
-
|
|
774
|
+
Requires: Agent Studio 0.20.0 to see call purposes.
|
|
738
775
|
|
|
739
|
-
|
|
740
|
-
- A company command that printed for more than about 25 seconds (a test suite, a build) stopped as `managed-tool-output-too-large`, although its result was about 50 KB: the 12 MB limit counted every progress update. The limit now applies to each message.
|
|
741
|
-
- A company command that writes to `/tmp` (read-only on macOS in company mode) is told to use `$TMPDIR` or the project, instead of the general notice about credentials and the network.
|
|
742
|
-
- `piagent-update` started from `npm exec` installs a lasting helper even when the version already matches, and `--no-host` with an incompatible Pi stops before changing either global package. On Windows, Pi is found in custom npm prefixes.
|
|
776
|
+
## v1.15.0 - 2026-10-07
|
|
743
777
|
|
|
744
|
-
|
|
778
|
+
**A refused subagent says why, long noisy commands finish.** A company subagent Studio refuses now gives Studio's reason, and long commands that print a lot are no longer stopped.
|
|
745
779
|
|
|
746
|
-
|
|
780
|
+
### Improved
|
|
747
781
|
|
|
748
|
-
|
|
782
|
+
- A company command writing to `/tmp` is told to use `$TMPDIR` or the project.
|
|
749
783
|
|
|
750
|
-
|
|
784
|
+
### Fixed
|
|
751
785
|
|
|
752
|
-
|
|
786
|
+
- Every refused subagent said the key, Harness or run had changed; it now gives Studio's actual reason.
|
|
787
|
+
- Commands that printed for more than about 25 seconds, such as test suites or builds, were stopped as too large; they now finish.
|
|
788
|
+
- `piagent-update` from `npm exec` installs a lasting helper, and on Windows Pi is found in custom npm prefixes.
|
|
753
789
|
|
|
754
|
-
|
|
790
|
+
Requires: Agent Watch 0.15.0; Agent Studio 0.19.0 for model fallback.
|
|
755
791
|
|
|
756
|
-
|
|
792
|
+
## v1.14.0 - 2026-10-06
|
|
757
793
|
|
|
758
|
-
|
|
794
|
+
**Updates keep each member's Pi model choices.** Updates set Pi's default model and model list only on first install, then keep yours and add only newly offered models.
|
|
759
795
|
|
|
760
|
-
|
|
796
|
+
### Added
|
|
761
797
|
|
|
762
|
-
|
|
798
|
+
- `piagent-update -- --reset-model-scope` applies Piagent's preset over your choices.
|
|
799
|
+
- Windows installs with one PowerShell command, and the docs site has a Windows install page with fixes for failed installs.
|
|
763
800
|
|
|
764
|
-
|
|
765
|
-
- Text the agent writes between tool calls, and earlier answers of a turn, are formatted like the final answer instead of showing their markdown (`**`, backticks, `#`, `-`) as plain text. The first answer after opening the dashboard no longer shows as plain text for a moment.
|
|
801
|
+
### Improved
|
|
766
802
|
|
|
767
|
-
|
|
803
|
+
- `piagent-update`, the dashboard update and `piagent-setup` keep your default model and list; a model you removed is not added back.
|
|
768
804
|
|
|
769
|
-
|
|
805
|
+
### Fixed
|
|
770
806
|
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
After updating, each member imports the Piagent configuration again in Agent Watch (macOS: Studio → Apply for Piagent; Windows: Connect Piagent in WSL). The company launcher changed, so the earlier import no longer verifies, and the dashboard says so.
|
|
774
|
-
|
|
775
|
-
### Features
|
|
776
|
-
|
|
777
|
-
- Company conversations run on Linux, and so in WSL2 on Windows, with a bubblewrap sandbox that keeps the macOS promises:
|
|
778
|
-
- The project, its package cache and a private temporary folder are writable.
|
|
779
|
-
- The member's other folders are readable for reference, read-only; the home folder's hidden entries are not there at all.
|
|
780
|
-
- Credential files read as empty.
|
|
781
|
-
- A command without approval gets its own network namespace: it reaches only the servers it starts itself.
|
|
782
|
-
- A command's processes end with it.
|
|
783
|
-
- Windows programs cannot be started from inside.
|
|
784
|
-
- `piagent studio --doctor` checks each of these.
|
|
785
|
-
- Agent Watch for Windows binds Piagent in WSL. Piagent keeps WSL's interop variables when it starts the Windows broker, and keeps the company store in `$XDG_DATA_HOME/agentwatch` (`~/.local/share/agentwatch`) on Linux.
|
|
786
|
-
- On Windows itself (preview of personal mode; `piagent-update` does not run there yet):
|
|
787
|
-
- The dashboard's project picker is Windows' folder dialog; from WSL it is that dialog too, with the answer converted to a WSL path.
|
|
788
|
-
- Links open in the Windows browser from WSL.
|
|
789
|
-
- @ suggestions find `fd`/`fdfind` and git on PATH.
|
|
790
|
-
- When the company runtime cannot start from WSL, the dashboard and `piagent studio` say what to do in Agent Watch for Windows instead of pointing at macOS Keychain.
|
|
791
|
-
- [Windows](docs/en/windows.md) is the setup guide. A Windows workflow runs the guard, dashboard and path tests on Windows, and the Ubuntu job runs the Linux sandbox.
|
|
792
|
-
|
|
793
|
-
### Fixes
|
|
794
|
-
|
|
795
|
-
- On Windows the guard treated a path on another drive (`D:\x`) as a project path, and `~\` was not the home folder; `AppData` is closed to reference reads like `~/Library`.
|
|
796
|
-
- On Windows a command ending in `2>/dev/null` counted as a write (Git Bash's `/dev/null` is the null device), so read-only commands needed approval.
|
|
797
|
-
- On Windows the dashboard, `piagent` and the update job could not start their TypeScript loader (a `C:\…` path given to `--import` reads as a URL scheme).
|
|
798
|
-
- On Windows saving a task's journal or state failed: a file was flushed through a read-only handle, and a folder was flushed, which Windows refuses.
|
|
799
|
-
- On Windows a second dashboard start could not take over from an earlier release's Gateway (its control pipe was linked like a Unix socket), and `piagent` could not register a `C:\…` project with the dashboard.
|
|
800
|
-
- On Windows the dashboard did not find a globally installed Pi: npm keeps it in `%APPDATA%\npm\node_modules` or beside `node.exe`.
|
|
801
|
-
- On Windows an image path such as `C:\Users\me\shot.png` or `.\shots\a.png` in a message was not attached.
|
|
802
|
-
## v1.12.1 - 2026-10-06
|
|
807
|
+
- `piagent-update` in WSL2 no longer warns that WSL2 is experimental.
|
|
803
808
|
|
|
804
|
-
|
|
809
|
+
## v1.13.1 - 2026-10-06
|
|
805
810
|
|
|
806
|
-
|
|
811
|
+
**Conversations keep their place, agent text is formatted.** Reopening a conversation no longer jumps to its first message, and text between tool calls is formatted like the final answer.
|
|
807
812
|
|
|
808
|
-
|
|
813
|
+
### Improved
|
|
809
814
|
|
|
810
|
-
|
|
815
|
+
- Updating from 1.13.0 needs no new Agent Watch import; from 1.12 or earlier, import again as for 1.13.0.
|
|
811
816
|
|
|
812
|
-
###
|
|
817
|
+
### Fixed
|
|
813
818
|
|
|
814
|
-
-
|
|
815
|
-
-
|
|
816
|
-
- Personal conversations read those folders too, with read, ls, grep and find; protected paths are still refused.
|
|
817
|
-
- A message typed and not sent stays where it was written — in each conversation and in the new chat — when another conversation is opened, and in this browser across a reload. Staged files and a send still being confirmed come back with it. Creating the chat or sending the message clears it.
|
|
818
|
-
- Skills and commands kept for coding agents are Piagent's too: the project's `.claude/skills`, `.claude/commands`, `.codex/skills`, `.agents/skills` and `.pi` folders (from the project up to its repository root) and the member's `~/.claude`, `~/.codex`, `~/.agents` and `~/.pi/agent` ones. The model sees each skill by name and description; `/command`, `/skill:name` and `/skill-name` expand in company and personal conversations; a / at the start of a message lists them in the dashboard; the chat shows a skill call as typed. In company conversations the sandbox reads a skill's folder where it is installed, and nothing else of those folders.
|
|
819
|
-
- Tests of the common languages run in company conversations:
|
|
820
|
-
- Package caches (npm, pnpm, yarn, bun, deno, pip, uv, poetry, Go, Cargo, Gradle, Maven, NuGet, Composer, pub, gems) are kept per project under `~/Library/Caches/Piagent/sandbox`, so after one approved install, tests run offline. The member's own Go, Gradle, Maven and NuGet caches are read-only sources.
|
|
821
|
-
- A test's own server and a local database on this Mac are reachable without approval — unless a local proxy (the system's, `*_PROXY`, or a proxy or VPN client's usual port) listens, since it would carry a command to the internet; the error then says to ask for approval.
|
|
822
|
-
- JDKs under `~/Library/Java`, the Android SDK, the system Ruby gems, MacPorts and Playwright's browsers are available without approval; `JAVA_HOME` and `ANDROID_HOME` are set.
|
|
823
|
-
- The sandbox uses the developer tools selected with `xcode-select`, so Swift package tests find XCTest; SwiftPM and xcodebuild run without their own nested sandbox, and xcodebuild builds into the project cache.
|
|
824
|
-
- An approved command can restore .NET packages (TLS through the macOS Security framework); offline, .NET reads the packages the member already restored.
|
|
825
|
-
- `piagent studio --doctor` lists the languages installed on the Mac and checks localhost and the package cache.
|
|
826
|
-
- Docker and the iOS Simulator remain unavailable in the sandbox.
|
|
819
|
+
- Opening a conversation jumped to its first message; it now keeps its place, or opens at the newest message.
|
|
820
|
+
- Text between tool calls showed raw markdown; it is now formatted like the final answer.
|
|
827
821
|
|
|
828
|
-
|
|
822
|
+
## v1.13.0 - 2026-10-06
|
|
829
823
|
|
|
830
|
-
|
|
831
|
-
- In company conversations a path starting with `~/` named the sandbox's own empty home folder; it now names the member's.
|
|
824
|
+
**Piagent on Windows through WSL2.** Company conversations run on Linux and WSL2 in a sandbox with the macOS guarantees; personal mode on Windows itself is a preview.
|
|
832
825
|
|
|
833
|
-
|
|
826
|
+
### Breaking changes
|
|
834
827
|
|
|
835
|
-
|
|
828
|
+
- After updating, each member imports the Piagent configuration again in Agent Watch, since the company launcher changed.
|
|
836
829
|
|
|
837
|
-
###
|
|
830
|
+
### Added
|
|
838
831
|
|
|
839
|
-
-
|
|
840
|
-
-
|
|
832
|
+
- The Linux sandbox keeps the project writable, other folders read-only, credentials empty and unapproved commands offline.
|
|
833
|
+
- Agent Watch for Windows binds Piagent in WSL, and `piagent studio --doctor` checks each sandbox guarantee.
|
|
834
|
+
- From WSL, the folder picker is the Windows dialog and links open in the Windows browser.
|
|
841
835
|
|
|
842
|
-
|
|
836
|
+
### Fixed
|
|
843
837
|
|
|
844
|
-
|
|
845
|
-
a status bar, a command palette and Settings that can be searched.
|
|
838
|
+
- Several Windows path, loader and file-saving bugs that stopped the guard, dashboard and `piagent` are fixed.
|
|
846
839
|
|
|
847
|
-
|
|
840
|
+
## v1.12.1 - 2026-10-06
|
|
848
841
|
|
|
849
|
-
|
|
850
|
-
- One click updates Pi and Piagent together with `piagent-update`, after a confirmation that lists the change. Pi only ever moves to the version the new Piagent pins; a newer Pi is shown as not yet compatible. The button is locked while a conversation runs, and the update runs apart from the dashboard: when done, the dashboard restarts on the new release and opens in a new tab. Its output goes to `~/.pi/piagent-update-job.log`; a failure or an interrupted run is reported for a day. A release that changed the company launcher asks to connect the company key again in Agent Watch.
|
|
851
|
-
- Status bar (wide screens): Gateway state, running conversations, the release and its update, and the command palette.
|
|
852
|
-
- Command palette (⌘K / Ctrl+K): new chat, updates, the Workspace panel, Source Changes, theme, language, refresh, every Settings section and every conversation by name; matching ignores case and Vietnamese accents. ⌘, / Ctrl+, opens Settings.
|
|
853
|
-
- Settings: a search box that finds a setting by what it does, sections grouped (Chung, Agent, Công cụ, Thông tin), a Shortcuts section, a description under each appearance setting, and the release at the foot of the list.
|
|
842
|
+
**Forked company conversations take messages again.** A forked company conversation now accepts messages; forks made with 1.12.0 or earlier must be forked again.
|
|
854
843
|
|
|
855
|
-
|
|
844
|
+
### Breaking changes
|
|
856
845
|
|
|
857
|
-
|
|
858
|
-
decides and has to answer; the same disagreement a second time goes to the
|
|
859
|
-
member.
|
|
846
|
+
- Forks made with 1.12.0 or earlier stay unreachable: fork the source conversation again after updating.
|
|
860
847
|
|
|
861
|
-
###
|
|
848
|
+
### Fixed
|
|
862
849
|
|
|
863
|
-
- Every
|
|
864
|
-
- A helper ends its answer with `brief_issues` (wrong premise, conflicts with the request, ambiguous, out of scope), each with evidence. It objects only when acting on the brief as written would give a wrong or wasted answer; a guess the brief marks as a guess ("if any", "for example") is not an objection. The harness shows the objection in the conversation and adds a note to the main agent: answer it with a corrected brief, another approach, or a reason. An objection that no corrected brief followed is asked about once before the turn ends.
|
|
865
|
-
- Objections to a brief the harness wrote itself (its review, its re-check) are not relayed: they only restate the member's request.
|
|
866
|
-
- A second objection from the same helper for one message ends the exchange: the member decides, and the helper is refused (`managed-helper-disputed`) until the member's next message.
|
|
867
|
-
- With a required review, an agent that answers a blocking finding instead of changing the code has its answer judged by the reviewer, who keeps or withdraws the finding. A kept finding goes to the member. A re-review after a fix also reads the answer that came with it.
|
|
868
|
-
- With a required verify, a claim the verify helper marked failed goes back to the agent once, then the verify helper checks it again with the agent's answer. A claim outside the member's request that the result does not depend on is set aside as unverifiable; a claim that still fails goes to the member.
|
|
869
|
-
- A turn whose disagreement went to the member ends as `disputed`, with or without a code change. Process report version 3 adds `objections`, `objections_answered` and `disputes`; a Studio or Agent Watch that does not list it receives version 2 with the outcome it had before.
|
|
850
|
+
- Every message to a forked company conversation returned “The message was not sent”; forks now work.
|
|
870
851
|
|
|
871
|
-
|
|
872
|
-
- A question the member stopped before answering (or whose screen went away) tells the agent the decisions are still the member's: on "tiếp tục" it asks again instead of choosing for them. The tool also says not to add an "Other" option of its own.
|
|
873
|
-
- A helper's receipt (its tokens, the patch it read) stays in the conversation for the member but is no longer part of the main agent's context, where it read as a message from the member ("you sent a line 'Review: … tokens'").
|
|
874
|
-
- A check command that fails by returning an error result, rather than throwing, counts as a failed check (main agent, network commands and helper checks), so a required check never passes on a failing run.
|
|
875
|
-
- A helper refused for its account's usage, resting, or whose account went away starts once more, and Studio gives it the next model of its role (a Harness "Model dự phòng").
|
|
876
|
-
- A patch larger than one reviewer reads (120 KB) is reviewed in parts of whole files, one after another under the review grant, and the findings merge. A file too large to read, or a repository cloned inside the project, is named as not read instead of stopping the review.
|
|
877
|
-
- Requests of one role running side by side share one grant renewal, so none voids another's token. The main agent's prompt cache key follows the conversation, not the turn.
|
|
852
|
+
## v1.12.0 - 2026-10-06
|
|
878
853
|
|
|
879
|
-
|
|
854
|
+
**@ any file or folder, skills with /, tests in the company sandbox.** @ picks any file or folder, agents read outside folders read-only, existing skills work with /, and common test suites run in the sandbox.
|
|
880
855
|
|
|
881
|
-
|
|
882
|
-
- A tab whose browser session was replaced by a newer launch in the same browser (Agent Watch's WebUI button clicked again) no longer has every change refused: a refused change reads the browser's current session once and is sent again.
|
|
883
|
-
- Objections, the reviewer judging an answer, failed claims and disagreements appear in the turn; the conversation row says "Cần bạn quyết". A step that asks nothing of the agent no longer hides its last answer behind "this turn has no answer".
|
|
884
|
-
- Harness roles are named Subagent scout, research, verify and review, and process notes keep the usual English terms (check, fix, blocking, claim, plan).
|
|
856
|
+
### Added
|
|
885
857
|
|
|
886
|
-
|
|
858
|
+
- Typing @ offers the project's files and folders, and after `~/`, `/` or `../` any folder on this Mac.
|
|
859
|
+
- Agents read folders you point to outside the project, read-only; hidden home files, `~/Library` and credential files stay closed.
|
|
860
|
+
- Skills and commands in the project's and your agent folders, such as `.pi` and `.agents/skills`, work with `/command` or `/skill:name`.
|
|
861
|
+
- Tests of common languages run in company conversations, with per-project package caches and local servers reachable.
|
|
887
862
|
|
|
888
|
-
|
|
889
|
-
each web page.
|
|
863
|
+
### Improved
|
|
890
864
|
|
|
891
|
-
|
|
865
|
+
- An unsent message stays in each conversation and the new chat across switching and reloads.
|
|
892
866
|
|
|
893
|
-
|
|
894
|
-
- Pressing Enter twice, or Enter and the send button, before the page re-renders creates one conversation and sends one message. Before, a second press could start a second identical conversation, and a member saw two created two seconds apart.
|
|
867
|
+
### Security
|
|
895
868
|
|
|
896
|
-
|
|
869
|
+
- Personal conversations could edit `~/` paths outside the project; the guard now checks the path the tool actually opens.
|
|
897
870
|
|
|
898
|
-
|
|
871
|
+
## v1.11.1 - 2026-10-05
|
|
899
872
|
|
|
900
|
-
|
|
873
|
+
**Updates end on the new release's dashboard.** Whether started from the dashboard or `piagent-update`, an update now ends with the dashboard running the installed release.
|
|
901
874
|
|
|
902
|
-
|
|
903
|
-
their engine, and sending a message no longer jumps the dashboard to the top.
|
|
875
|
+
### Fixed
|
|
904
876
|
|
|
905
|
-
|
|
877
|
+
- An update from the dashboard installed the release but could not restart the dashboard on npm installs; it now restarts.
|
|
878
|
+
- After `piagent-update`, `piagent dashboard` reused the old release's dashboard; it now restarts on the installed one.
|
|
906
879
|
|
|
907
|
-
|
|
908
|
-
- Without a research helper, the main agent keeps its own web tools.
|
|
909
|
-
- A search result now names the engine that answered: Tavily, Exa or Parallel through the company search pool, or the model provider's own search. Before, the agent told the member it did not know which engine it used.
|
|
910
|
-
- The agent introduces itself as Piagent, the company coding assistant, even when the model account's system line gives another product name.
|
|
880
|
+
## v1.11.0 - 2026-10-05
|
|
911
881
|
|
|
912
|
-
|
|
882
|
+
**One-click updates and an editor-style dashboard.** The dashboard checks for and installs Piagent and Pi updates itself, and gains a status bar, a command palette and searchable Settings.
|
|
913
883
|
|
|
914
|
-
|
|
915
|
-
- The helper count in the conversation header and the Workspace panel shows the number of helpers the Harness enables (up to four) instead of a fixed 2. A Harness without helpers shows no count.
|
|
884
|
+
### Added
|
|
916
885
|
|
|
917
|
-
|
|
886
|
+
- The dashboard checks for a new release on open and every 6 hours, and shows it in the status bar and Settings.
|
|
887
|
+
- One click updates Pi and Piagent together, with Pi kept on the version Piagent pins; it is locked while a turn runs.
|
|
888
|
+
- A command palette (⌘K / Ctrl+K) reaches actions, settings and conversations by name, ignoring Vietnamese accents.
|
|
889
|
+
- Settings can be searched by what a setting does, with grouped sections and a Shortcuts section.
|
|
918
890
|
|
|
919
|
-
|
|
920
|
-
role through the team's search pool. The company sandbox now runs type
|
|
921
|
-
checks, Vitest and end-to-end suites that it used to stop. The installer no
|
|
922
|
-
longer advertises commands 1.9.0 retired.
|
|
891
|
+
## v1.10.0 - 2026-10-05
|
|
923
892
|
|
|
924
|
-
|
|
893
|
+
**Agent asks when unclear, subagents can object to a brief.** The main agent asks you numbered questions when a decision is open, and subagents can object to a brief with evidence.
|
|
925
894
|
|
|
926
|
-
|
|
927
|
-
- `/subagents-doctor` is listed in those next steps only when the install includes pi-subagents, which provides it: `piagent-install` adds it only with `--with-subagents` or when it is already installed.
|
|
928
|
-
- `piagent-setup` lists `/mcp` and `/subagents-doctor` in its next steps only when that run installed them (not with `--no-mcp`, `--no-subagents` or `--project-only`), and no longer lists the retired `/onboard` and `/onboard run`; its daily flow says to ask in plain language instead of `/workflow task`. `piagent-init` no longer lists `/onboard` either. A test checks that no install script prints a command 1.9.0 retired.
|
|
895
|
+
### Added
|
|
929
896
|
|
|
930
|
-
|
|
897
|
+
- The main agent asks 1–4 questions with numbered options and “Other” when the request leaves a decision open, then waits.
|
|
898
|
+
- Subagents read your request verbatim and can object to a brief with evidence; a second objection goes to you.
|
|
931
899
|
|
|
932
|
-
|
|
933
|
-
- A check that verify ran and passed counts toward the turn's process, the same as one the main agent ran.
|
|
934
|
-
- The main agent is offered only the helpers its Harness enables, and the prompt says when to use each one. With scout enabled, research is meant for questions that need the web. A call to a helper that the Harness lacks fails at once (`managed-helper-not-configured`).
|
|
935
|
-
- The dashboard counts running helpers against the number enabled, not against two.
|
|
936
|
-
- Every company request names the client to Studio as `piagent/<version>` (model requests and web search), so Studio's reports show Piagent and its version instead of an unknown tool.
|
|
937
|
-
- Company `web_search` asks Studio's search pool first, for every role: the team's search keys, then keyless providers. A Claude or Codex role falls back to its provider's own search tool when the pool is missing (an older Studio) or finds nothing. A role on an API-key vendor model (DeepSeek, MiMo and others), which has no search tool of its own, can now search. The pool request carries the run token and the role id, never a model or effort.
|
|
900
|
+
### Improved
|
|
938
901
|
|
|
939
|
-
|
|
902
|
+
- A subagent out of quota or whose account is resting runs again on the Harness's fallback model.
|
|
903
|
+
- A patch larger than 120 KB is reviewed in parts and the findings merge, instead of stopping the review.
|
|
940
904
|
|
|
941
|
-
|
|
942
|
-
- Credential files (`.env*`, `credentials*`, `.npmrc`, `.netrc` and those `auth.json`) are hidden as well as unreadable. A tool that loads them when present (Vite, Vitest, Next) runs without them instead of failing with `EPERM`.
|
|
943
|
-
- Committed templates (`.env.example`, `.env.sample`, `.env.template`, `.env.dist`, `.env.defaults`) are ordinary files.
|
|
944
|
-
- In a folder that is not a git repository, a command that only reads (`ls`, `cat`, `grep`, `git status`…, with nothing written to a file) no longer counts as a code change, so a turn that only read files and ran checks no longer reports "code changed". A command that writes still counts.
|
|
945
|
-
- End-to-end tests run through `run_with_network`. An approved command may start a local server and drive Playwright's Chromium against it, using:
|
|
946
|
-
- listening on loopback;
|
|
947
|
-
- the member's Playwright browsers;
|
|
948
|
-
- Chromium's own rendezvous services.
|
|
905
|
+
### Fixed
|
|
949
906
|
|
|
950
|
-
|
|
951
|
-
- A command's own timeout, up to 30 minutes, now extends the 10-minute limit, so a build followed by an end-to-end suite fits.
|
|
907
|
+
- A check that returns an error result now counts as failed, so a required check never passes on a failing run.
|
|
952
908
|
|
|
953
|
-
## v1.9.
|
|
909
|
+
## v1.9.3 - 2026-10-03
|
|
954
910
|
|
|
955
|
-
|
|
956
|
-
contract and the workflow commands; work is requested in plain language and the
|
|
957
|
-
guard checks every tool call.
|
|
911
|
+
**Vietnamese typing no longer sends twice, helpers read less.** Enter used by an input method no longer sends, a double Enter sends once, and helpers read less of each web page.
|
|
958
912
|
|
|
959
|
-
###
|
|
913
|
+
### Improved
|
|
960
914
|
|
|
961
|
-
-
|
|
962
|
-
- Retired `/workflow`, `/fresh` (and `/fresh-*`), `/onboard`, `/onboard-project`, `/commands`, `/piagent-commands`, `/model-options`, `/profiles`, `/profile-tech` and the prompt-template aliases (`/task`, `/scout`, `/be-to-fe`, `/plan`, `/discuss`, `/review`, `/commit`, `/pr`, `/platform-improve`). Pi no longer loads `packages/piagent-core/prompts`. Project onboarding is a plain request recorded with `piagent_project_onboarding_record`.
|
|
963
|
-
- Retired the task-bound tools `piagent_task_start`, `piagent_task_progress`, `piagent_task_gate_check`, `piagent_context_record`, `piagent_verify_record`, `piagent_trace_record` and `piagent_memory_citation_record`; a tool group never re-activates them. `piagent_document_read` and `piagent_source_checkout` remain.
|
|
964
|
-
- The input hook passes text through unchanged: pasted checklists are no longer collapsed and long prompts are not stored in a task inbox.
|
|
965
|
-
- Delegation allows up to two fresh read-only helpers; token-saving estimates are telemetry, not an admission gate (bounded-delegation-v2).
|
|
966
|
-
- Kept for freeform turns: protected and read-only paths, permission profiles, the context budget for large files, confirmation for destructive and external-provider actions, and the stale read-to-edit check, which was keyed to the task run and now uses the session.
|
|
915
|
+
- A helper reads at most 20,000 characters of a web page (12,000 by default), cutting token use on research.
|
|
967
916
|
|
|
968
|
-
###
|
|
917
|
+
### Fixed
|
|
969
918
|
|
|
970
|
-
-
|
|
971
|
-
-
|
|
972
|
-
- Process report v2 (`plan_skipped`, `unknown_tools`) is negotiated: Studio lists `process_versions`, Agent Watch advertises `process-v2`.
|
|
973
|
-
- Detached processes are stopped at turn end; stopping during a helper reports `aborted`/`managed-helper-cancelled` instead of a send failure.
|
|
919
|
+
- An Enter that commits text from a Vietnamese input method sent the message; it now only finishes the word.
|
|
920
|
+
- Pressing Enter twice could create two identical conversations; it now creates one and sends one message.
|
|
974
921
|
|
|
975
|
-
|
|
922
|
+
## v1.9.2 - 2026-10-03
|
|
976
923
|
|
|
977
|
-
|
|
978
|
-
- Redacted Agent Studio credentials (`as_live_`, `as_device_`, `as_run_`). Write/edit previews and runtime command output are redacted before they are split or truncated, the gateway stream no longer flushes half a credential on a long line, and the client live file label recognises Studio tokens.
|
|
979
|
-
- A shell command can no longer create a new file in a shared source-checkout cache by spelling the path through an alias such as `/var` for `/private/var`.
|
|
980
|
-
- WebUI approvals: an allowed decision is now consumed by the guard, so the decision request receives its receipt and the approval leaves the queue. Before, every decision without a task stayed pending and could fill the broker.
|
|
981
|
-
- Removed the WebUI runtime actions that still sent `/commands` and `/onboard ...`; with those commands gone they would have reached the model as a message and started a paid turn. A test now ties every WebUI runtime action to a registered command.
|
|
982
|
-
- `piagent-explain` no longer lists task-contract, task-scope or lifecycle gates.
|
|
983
|
-
- The sandbox allows signals within the same sandbox, which fixes `grep` EPERM, timeouts and orphaned cancelled commands.
|
|
984
|
-
- The dashboard relay no longer freezes when `project.paths` exceeds the default control response limit.
|
|
924
|
+
**Web work goes to the research helper, chat stays in place.** With a research helper, web work runs on its model and only a summary reaches the main agent; sending no longer jumps the page.
|
|
985
925
|
|
|
986
|
-
###
|
|
926
|
+
### Improved
|
|
987
927
|
|
|
988
|
-
-
|
|
989
|
-
-
|
|
990
|
-
- The header and the Workspace panel show a review subagent while it runs ("Subagent 1/2"); its start and end now refresh the conversation.
|
|
991
|
-
- A company conversation opened while company mode is not running (after a restart, a crash or an update) says so and offers Reconnect in place. Reading still never starts company mode, since starting may ask for Keychain access.
|
|
992
|
-
- A conversation whose history cannot be read no longer shows the previous conversation's messages under its title.
|
|
993
|
-
- Approval cards: the network approval shows the exact command; task, tool-call and provider references are gone; paths inside the project are shown relative to it (the project folder reads "The whole project folder"); known reasons and consequences are shown in Vietnamese. The exec-policy reason now reads "Confirmation required: the command runs git push" instead of naming a "legacy policy pattern".
|
|
994
|
-
- An `apply_patch` step is shown as an edit of its files with the patch's diff, like `edit`, in the history and while it runs.
|
|
928
|
+
- With a research helper in the Harness, searches and page reads run on its model and only its summary with sources returns.
|
|
929
|
+
- Each search result names the engine that answered it.
|
|
995
930
|
|
|
996
|
-
###
|
|
931
|
+
### Fixed
|
|
997
932
|
|
|
998
|
-
-
|
|
999
|
-
-
|
|
1000
|
-
- A company request refused before the model did any work because the account's sign-in was being renewed (`upstream_auth_required`, `execution_precondition_failed`) is asked again up to three times, 3, 6 and 9 s apart; an account that really has to sign in again still says so.
|
|
1001
|
-
- Opening a company conversation, starting a run and granting a subagent ask Studio again when it is too busy to answer in time (`serverUnavailable`), as does a request Studio could not check in time (`operation_unavailable`). Under load, most company conversations opened from the dashboard used to fail to open, and most required reviews ended as "review could not run". A review that still cannot run keeps its reason as a code in the conversation file.
|
|
1002
|
-
- The dashboard stays fast with many conversations: listing them read every session file in full on every catalog (863 conversations: about 4 s each time, far more under load, so pages waited 30–40 s and timed out). Unchanged files now keep what was read before and only changed ones are read again, by Pi itself (44 ms instead of about 4 s).
|
|
1003
|
-
- A member's session can read the skills Pi lists for it where they are installed (the package's and the user's); the guard used to refuse that read as "outside the project". Writes there stay refused.
|
|
1004
|
-
- A new conversation whose creation takes longer than the dashboard's 30-second answer (the first one after the Gateway starts, a company runtime opening) is no longer reported as "could not be created" while it is created and runs: the page sends the same command again, which waits behind the create and returns its receipt, for up to two minutes; if it still has no answer it says the conversation may exist. Before, a member who believed the message was lost sent it again and two runs edited the same project.
|
|
1005
|
-
- A dashboard message that stays unconfirmed is released after two minutes: its command now expires then, so it can no longer run, and the draft is kept to send again. Before, the composer stayed locked until the page was reloaded.
|
|
1006
|
-
- Company sessions recover after the Mac sleeps: a run grant that lapsed under a request (Studio's clock catches up at once after a sleep, and grants last two minutes) is renewed and the request asked again, and an Agent Watch helper killed by a request that outlived the sleep is replaced when the next turn starts. Before, every company conversation failed with `invalid_run_grant` or "the Agent Watch helper stopped" until it was reopened.
|
|
1007
|
-
- A request the model's provider declines under its usage policy (seen when a member asked to print an `.env` file encoded in base64) is reported as such, with its own dashboard copy ("ask in a different way"), instead of "the request could not be sent".
|
|
1008
|
-
- An answer stream that ended with nothing in it ("stream ended without a stop reason") is reported as "the model returned no response" (`upstream_incomplete`) instead of "the request could not be sent"; it is not sent again, and "tiếp tục" continues. A company failure no code names keeps its own words, redacted, in the conversation file (not shown) so it can be told apart later.
|
|
1009
|
-
- Two project folders with the same name (two clones of one repository) show where each one is in the new-conversation menu.
|
|
1010
|
-
- A message sent right after Stop reaches the conversation on a busy machine. Every catalog the dashboard built opened and parsed every conversation file to learn its model and thinking level (929 files, 140 MB: about a second of blocked Gateway each time, 1–6 s under load); a Stop then took up to 50 s and the next messages stayed unconfirmed with the composer locked for minutes. A file's facts are now kept until its size, modification time or inode changes: catalogs take 0.1–0.5 s under the same load, and a stop-then-send probe that failed 3 of 4 times passes.
|
|
1011
|
-
- A Gateway that is busy is no longer replaced by a second one. `piagent dashboard open` and the company launch took a Gateway that did not answer within 1.5 s for gone and started another; the new one took over the control socket while the first kept running unreachable, serving its pages and holding its conversations (three were found running at once). A Gateway that answers late is waited for (up to 30 s), only a socket nobody listens on is replaced, and an old Gateway that exits no longer removes the running one's socket.
|
|
1012
|
-
- `piagent-doctor` lists `enabledModels` patterns that match no model Pi knows (Pi warns about each on every start), and `piagent-model-scope --prune` removes only those; patterns of a provider that is only signed out are kept.
|
|
1013
|
-
- Public text names no other agent product or project; the wording check enforces it across docs, the docs site and the core package.
|
|
933
|
+
- Sending a message in a long company conversation jumped the page to the top; the history now stays in place.
|
|
934
|
+
- The helper count shows the number the Harness enables instead of a fixed 2.
|
|
1014
935
|
|
|
1015
|
-
|
|
936
|
+
## v1.9.1 - 2026-10-03
|
|
1016
937
|
|
|
1017
|
-
|
|
1018
|
-
- New packaged skill `test-audit` (`/skill:test-audit`, also chosen by the model when it writes or changes tests): decide whether a new test earns its place, and find tests that cost more than they protect, with a read-only review table before any edit.
|
|
938
|
+
**Scout and verify helpers, web search for every company role.** Two more company helpers, web search for every role through the team's search pool, and type checks and end-to-end tests in the sandbox.
|
|
1019
939
|
|
|
1020
|
-
###
|
|
940
|
+
### Added
|
|
1021
941
|
|
|
1022
|
-
-
|
|
1023
|
-
-
|
|
942
|
+
- Scout reads the project only and answers with `file:line` facts; verify runs checks offline and rates each claim with evidence.
|
|
943
|
+
- Company `web_search` uses the team's search pool for every role, so roles on API-key models can search too.
|
|
1024
944
|
|
|
1025
|
-
###
|
|
945
|
+
### Improved
|
|
1026
946
|
|
|
1027
|
-
-
|
|
1028
|
-
- Included Sonnet 5.5 and Opus 5.5 in model selection presets. Agent Watch can supply the same model through a Studio key without changing personal authentication.
|
|
947
|
+
- A command's own timeout, up to 30 minutes, now extends the 10-minute limit.
|
|
1029
948
|
|
|
1030
|
-
###
|
|
949
|
+
### Fixed
|
|
1031
950
|
|
|
1032
|
-
-
|
|
1033
|
-
-
|
|
1034
|
-
- Benchmark and journey results published for earlier releases were measured with task contracts and are historical.
|
|
1035
|
-
- Live verification on the installed release: 9 personal dashboard scenarios and 4 company scenarios (plan, checks and review; Stop during the review; a network install after approval; a message sent during a turn) pass; 27/27 browser tests.
|
|
1036
|
-
- A busy test fixture that ignores SIGTERM now exits when its test runner is killed, instead of spinning a CPU core.
|
|
1037
|
-
- Docs site: an Ecosystem page (Piagent, Agent Watch, Agent Studio), a 1.9.0 What's new with dashboard screenshots, and pages that still described the task contract updated. The screenshots are served by the site and not shipped in the npm package.
|
|
951
|
+
- Type checks, test runners and end-to-end suites that the sandbox used to stop now run, with credential files hidden.
|
|
952
|
+
- `piagent-install` and `piagent-setup` no longer suggest commands that 1.9.0 retired, which would have started a paid turn.
|
|
1038
953
|
|
|
1039
|
-
|
|
954
|
+
## v1.9.0 - 2026-10-02
|
|
1040
955
|
|
|
1041
|
-
|
|
1042
|
-
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
1043
|
-
npm install -g --ignore-scripts @piagent/platform@1.9.0
|
|
1044
|
-
piagent-install --stable
|
|
1045
|
-
piagent-doctor --offline
|
|
1046
|
-
```
|
|
956
|
+
**Freeform sessions and the team Harness.** The task contract and workflow commands are gone: you ask in plain language, the guard checks every tool call, and company mode runs the team's Harness.
|
|
1047
957
|
|
|
958
|
+
### Breaking changes
|
|
1048
959
|
|
|
1049
|
-
|
|
960
|
+
- Retired the task contract and `/workflow`, `/fresh`, `/onboard` and related commands; ask in plain language instead.
|
|
1050
961
|
|
|
1051
|
-
|
|
1052
|
-
- Added a new parent-routing map: Luna Medium for bounded work, Sol Medium/High for everyday and higher-risk work, and Astra Extra High for broad ambiguous work. Parent routing stays off by default; explicit model pins remain unchanged. If a GPT-6 target is unavailable, the router records a legacy 5.6 fallback instead of silently substituting it. The historical v1 mapping and benchmark corpus remain frozen.
|
|
1053
|
-
- New setup and WebUI sessions prefer GPT-6 Sol High when authenticated. Existing sessions and explicit user settings are not rewritten by the package. Astra's unsupported `off` level is omitted from WebUI choices.
|
|
1054
|
-
- Verified the release without paid provider turns; the prior 108-session comparison is historical evidence for v1.7.1, not a GPT-6 performance or token-saving claim.
|
|
962
|
+
### Added
|
|
1055
963
|
|
|
1056
|
-
|
|
964
|
+
- Company sessions run the team's Harness from Studio: plan, checks and review each turn, suggested or required, with bounded fix loops.
|
|
1057
965
|
|
|
1058
|
-
|
|
1059
|
-
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
1060
|
-
npm install -g --ignore-scripts @piagent/platform@1.8.0
|
|
1061
|
-
piagent-install --stable
|
|
1062
|
-
piagent-doctor --offline
|
|
1063
|
-
```
|
|
966
|
+
### Improved
|
|
1064
967
|
|
|
1065
|
-
|
|
968
|
+
- When every company model account is busy, a request waits in line for up to 20 minutes instead of failing.
|
|
1066
969
|
|
|
1067
|
-
|
|
1068
|
-
40-minute macOS job limit during offline verification, even though the same
|
|
1069
|
-
commit passed the pull-request matrix. v1.7.1 keeps the runtime and benchmark
|
|
1070
|
-
boundary below and raises that CI limit to 75 minutes. No additional provider
|
|
1071
|
-
sessions were run.
|
|
1072
|
-
|
|
1073
|
-
### Session recovery, context, and accounting
|
|
1074
|
-
|
|
1075
|
-
- Updated the supported Pi host to 0.86.1. Preserved the selected model and
|
|
1076
|
-
thinking level while correcting SDK lifecycle, usage, and WebUI settlement.
|
|
1077
|
-
- Added `piagent_wait` for requested pauses inside an open session. The local
|
|
1078
|
-
timer does not call the model while waiting; cancellation, session changes,
|
|
1079
|
-
and replay retain explicit interrupted or pending state.
|
|
1080
|
-
- Bound task usage, edit/verifier timing, and context delivery to the active
|
|
1081
|
-
task. Filtered unsupported context files before selection and kept scoped
|
|
1082
|
-
native-read recovery when no context pack can be delivered.
|
|
1083
|
-
- Extended source-bound acceptance and bounded executor checks, preserving
|
|
1084
|
-
rejection of verified failures and finite handoff for unsupported work.
|
|
1085
|
-
- Set acceptance proof to diagnostic by default. Unproved criteria remain
|
|
1086
|
-
pending with an explicit no-quality-claim completion note; task contract,
|
|
1087
|
-
scope, passing verification, and trace remain hard gates. Reviewed package
|
|
1088
|
-
policies can select strict `enforce` mode when required.
|
|
1089
|
-
|
|
1090
|
-
### Diagnostic benchmark closure
|
|
1091
|
-
|
|
1092
|
-
- Separated recovered command errors from terminal failures in the controlled
|
|
1093
|
-
comparison collector and added exact failed-attempt selection for diagnostics.
|
|
1094
|
-
- Clarified three public task contracts and verification examples, and corrected
|
|
1095
|
-
reconnect grading to compare public state while allowing internal cleanup.
|
|
1096
|
-
- The historical 108-session run remains 49/54 Piagent PASS and 45/54 comparison
|
|
1097
|
-
PASS. A separate selected rerun passed all 14 formerly failed attempts;
|
|
1098
|
-
the other 94 attempts were not rerun. Inputs changed for three scenarios, so
|
|
1099
|
-
these results are not combined into a new 108-session score.
|
|
1100
|
-
- The selected rerun used 640,121 fresh tokens and 3,010,425 including cache.
|
|
1101
|
-
Fresh usage increased 23.0% across that subset. This release makes no new
|
|
1102
|
-
aggregate token-saving or production-performance claim. The operator closed
|
|
1103
|
-
the paid benchmark cycle; release validation does not open provider sessions.
|
|
1104
|
-
|
|
1105
|
-
### Install and update
|
|
1106
|
-
|
|
1107
|
-
```sh
|
|
1108
|
-
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.86.1
|
|
1109
|
-
npm install -g --ignore-scripts @piagent/platform@1.7.1
|
|
1110
|
-
piagent-install --stable
|
|
1111
|
-
piagent-doctor
|
|
1112
|
-
```
|
|
970
|
+
### Fixed
|
|
1113
971
|
|
|
1114
|
-
|
|
972
|
+
- Approved network commands always failed with `ENOTFOUND`; `run_with_network` now resolves host names.
|
|
973
|
+
- The dashboard was slow with many conversations and left messages sent after Stop unconfirmed; both are fixed.
|
|
1115
974
|
|
|
1116
|
-
|
|
1117
|
-
The publish job was skipped, and no `@piagent/platform@1.7.0` npm package or
|
|
1118
|
-
GitHub Release was created. Use v1.7.1 for installation.
|
|
975
|
+
### Security
|
|
1119
976
|
|
|
1120
|
-
|
|
977
|
+
- Agent Studio credentials are now redacted in edit previews, command output and the gateway stream.
|
|
1121
978
|
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
- Kept queued same-session work under one operation identity and prevented a
|
|
1125
|
-
pending durable task from emitting a completed message or a success bubble.
|
|
1126
|
-
Final-looking drafts remain hidden until the task reaches a terminal state,
|
|
1127
|
-
preserving user-message then assistant-response ordering without a stale
|
|
1128
|
-
processing indicator.
|
|
1129
|
-
- Reconciled Activity from canonical tool evidence. Handled multi-target search
|
|
1130
|
-
warnings finish normally, nested result envelopes are classified correctly,
|
|
1131
|
-
and rejected or evidence-free helper calls remain visible as failures instead
|
|
1132
|
-
of later replaying as passed.
|
|
1133
|
-
- Captured the latest real operator request for model-owned task startup while
|
|
1134
|
-
bounding and redacting the durable copy, so attachments and workflow wrappers
|
|
1135
|
-
no longer replace the user's actual intent.
|
|
1136
|
-
|
|
1137
|
-
### Safe external source review
|
|
1138
|
-
|
|
1139
|
-
- Detects GitHub, GitLab and Bitbucket references and activates only the minimal
|
|
1140
|
-
source-checkout surface needed for a review. A successful checkout grants
|
|
1141
|
-
session-scoped read access to that exact canonical tree, with an eight-source
|
|
1142
|
-
bound and automatic cleanup at session end.
|
|
1143
|
-
- Preserved protections around shared caches, sibling paths, symlink escape,
|
|
1144
|
-
credentials, `.env`, `.git` and all mutation paths. Read-only inspection may
|
|
1145
|
-
use bounded `read`, `grep`, `find` and `ls` flows without widening the project
|
|
1146
|
-
mutation contract.
|
|
1147
|
-
|
|
1148
|
-
### Solo-first cost and context controls
|
|
1149
|
-
|
|
1150
|
-
- Added direct subagent preflight with a one-helper ceiling, bounded calls,
|
|
1151
|
-
turns and runtime, read-only role enforcement, no automatic retry/fork/worker
|
|
1152
|
-
expansion, and truthful durable helper usage. Repeated helper results are
|
|
1153
|
-
compacted without changing the model or thinking level.
|
|
1154
|
-
- Hardened adaptive context accounting, exact verifier reuse, task-evidence
|
|
1155
|
-
refresh and bounded runtime emission so token-saving decisions fail closed
|
|
1156
|
-
when evidence is incomplete and cannot be relabeled as a Codex-relative cost
|
|
1157
|
-
claim.
|
|
1158
|
-
|
|
1159
|
-
### Benchmark assurance
|
|
1160
|
-
|
|
1161
|
-
- Added provider-free runtime-conformance and Codex-relative efficiency gates,
|
|
1162
|
-
bound token/cost evidence to exact workload and provider attempts, and kept
|
|
1163
|
-
the historical v1.6.0 production result explicitly separate from any new
|
|
1164
|
-
subscription-spend or 30–40% cost claim.
|
|
1165
|
-
- Preserved the 108-session production gate as an operator-authorized quota
|
|
1166
|
-
step; this release ships runtime and benchmark safeguards without claiming a
|
|
1167
|
-
new provider-backed result.
|
|
979
|
+
Requires: Pi 0.87.1.
|
|
1168
980
|
|
|
1169
|
-
## v1.
|
|
981
|
+
## v1.8.0 - 2026-09-23
|
|
1170
982
|
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
- Replaced overlapping automatic discovery and criterion snapshots with one
|
|
1174
|
-
criterion-aware initial pack. It prioritizes explicit targets and their
|
|
1175
|
-
linked tests, excludes unrelated graph-only files, uses bounded snippets for
|
|
1176
|
-
large files and records content/payload receipts for every injected item.
|
|
1177
|
-
- Corrected context-efficiency accounting so exact repeated reads are measured
|
|
1178
|
-
only within a session/task/model/thinking partition, missing evidence remains
|
|
1179
|
-
visible as unavailable, fallback rereads do not reward retrieval ranking, and
|
|
1180
|
-
tool-schema share is reported against the complete system-plus-tool prefix.
|
|
1181
|
-
Duplicate-output and retrieval-confidence rates now exclude unclassified
|
|
1182
|
-
historical rows and expose their partial coverage instead of treating them
|
|
1183
|
-
as zero waste. The aggregate context-waste score is now `null` unless every
|
|
1184
|
-
weighted telemetry lane is complete; partial data is labeled only as a
|
|
1185
|
-
diagnostic estimate.
|
|
1186
|
-
- Sanitized automatic source snapshots before provider injection while
|
|
1187
|
-
preserving pure dynamic credential references. Sensitive literals, including
|
|
1188
|
-
short values and numeric fallbacks, are redacted in common source syntax and
|
|
1189
|
-
structured YAML, XML, HTML, CSS and Objective-C inputs with line-count-
|
|
1190
|
-
preserving receipts. A redacted item retains only a digest of the sanitized
|
|
1191
|
-
text; neither the raw-content digest nor another guessable verifier for the
|
|
1192
|
-
original bytes is persisted. Sanitization of deeply nested calls is bounded.
|
|
1193
|
-
- Preserved one planned criterion source and its focused test when retrieval is
|
|
1194
|
-
unavailable or stale, and retained complete per-item receipts for automatic,
|
|
1195
|
-
command and tool-delivered context packs.
|
|
1196
|
-
- Cleared task identity, repeated-result state and pending context delivery at
|
|
1197
|
-
terminal boundaries while preserving terminal-turn usage attribution. A new
|
|
1198
|
-
request or workflow in the same session now starts clean, including after a
|
|
1199
|
-
missing binding or terminal session restart.
|
|
1200
|
-
|
|
1201
|
-
### Forty-percent benchmark contract and spend control
|
|
1202
|
-
|
|
1203
|
-
- Raised the canonical production-v1 contract to require a fixed-workload,
|
|
1204
|
-
family-clustered fresh-token upper-95 ratio at or below `0.60`. The estimator
|
|
1205
|
-
includes all three predeclared attempts per surface in every family, including
|
|
1206
|
-
exact provider-started failed-attempt usage, and does not condition token
|
|
1207
|
-
measurement on task outcome. Every declared scenario/repeat must still have
|
|
1208
|
-
an exact finite grade pair with no Piagent quality regression, and all Piagent
|
|
1209
|
-
sessions must satisfy the independent continuity gates.
|
|
1210
|
-
- Added a separate GPT-5.6 Luna API-equivalent text-token cost diagnostic. It
|
|
1211
|
-
prices exact text-token buckets, remains distinct from OAuth/provider billing,
|
|
1212
|
-
and does not block the token-focused production claim.
|
|
1213
|
-
- Added duration comparison globally, by workload band and by family as
|
|
1214
|
-
observational evidence. The canonical contract allows Piagent to be slower
|
|
1215
|
-
when fresh-token, paired-intelligence and task-continuity gates still pass.
|
|
1216
|
-
- Froze production-v1 to Luna Medium and a ledger-bound S0/12/36/72/108 spend
|
|
1217
|
-
sequence. Only S108 is claim-eligible; every earlier pause recomputes a
|
|
1218
|
-
provider-free diagnostic and prints the exact bounded resume command.
|
|
1219
|
-
- Bound seed, surfaces, model, thinking, repeats, zero retries, paired terminal
|
|
1220
|
-
stop and clean source identity before paid work. Reserved built-in suite IDs
|
|
1221
|
-
cannot be impersonated by external suites, including through direct report
|
|
1222
|
-
summarization.
|
|
1223
|
-
- Added a privacy-safe causal context receipt for every Piagent measurement.
|
|
1224
|
-
The receipt binds telemetry provenance, current prompt/terminal order and the
|
|
1225
|
-
exact offer/delivery/injection lifecycle before dropping paths, hashes and
|
|
1226
|
-
identifiers. Missing, malformed, orphaned or mismatched evidence preserves
|
|
1227
|
-
the paid ledger row but blocks S12 advancement and the final token claim.
|
|
1228
|
-
S12 now reports aggregate pack tokens, zero-selection reasons, managed-prefix
|
|
1229
|
-
compaction, successful direct fallback reads and shell-call exposure.
|
|
1230
|
-
- Reconstructs a missing terminal stop from the accepted ledger before any paid
|
|
1231
|
-
resume, so a crash between the durable append and stop marker cannot spend the
|
|
1232
|
-
rest of an authorized window.
|
|
1233
|
-
- Finalizes a complete ledger or valid final post-guard WAL without live auth,
|
|
1234
|
-
provider preflight or installed Pi/Codex executables. Finalization rehashes the
|
|
1235
|
-
current candidate, suite, runtime-dependency tree and ledger while reusing the
|
|
1236
|
-
frozen command/auth/preflight identities bound to the accepted measurements.
|
|
1237
|
-
- Preserved the completed 108-session r3 ledger as observational evidence under
|
|
1238
|
-
its original successful-pair contract. It is not retroactively promoted: only
|
|
1239
|
-
a new provider run on the exact final candidate, after this estimand and suite
|
|
1240
|
-
digest are frozen, can approve a 40% claim.
|
|
1241
|
-
|
|
1242
|
-
### Runtime intelligence and context integrity
|
|
1243
|
-
|
|
1244
|
-
- Bound context evidence to the exact turn, session and task run that observed
|
|
1245
|
-
it. Planning selections no longer masquerade as delivered context, and stale
|
|
1246
|
-
evidence cannot cross a task boundary or complete a later task.
|
|
1247
|
-
- Added bounded context-efficiency telemetry, delivery qualification, prefix
|
|
1248
|
-
accounting and provider-wire fingerprints without exposing prompts,
|
|
1249
|
-
credentials or raw provider payloads.
|
|
1250
|
-
- Preserved authenticated Codex model identifiers and supported reasoning
|
|
1251
|
-
levels end to end. New installations default visibly to GPT-5.6 Sol with
|
|
1252
|
-
High thinking while still allowing the user to choose another available
|
|
1253
|
-
model for any message or session.
|
|
1254
|
-
- Added one fail-closed CAP-12 correction after a current exact verifier when
|
|
1255
|
-
the model discovers an omission in a file it already authored in the same
|
|
1256
|
-
task/run/session. The runtime opens repair only after an exact structured
|
|
1257
|
-
mutation succeeds, permits no second source edit, and requires the exact
|
|
1258
|
-
verifier again before completion.
|
|
1259
|
-
|
|
1260
|
-
### WebUI continuity and operator clarity
|
|
1261
|
-
|
|
1262
|
-
- Added a canonical live-state bootstrap and replay-gap recovery path so reloads
|
|
1263
|
-
and multiple browser tabs agree on the running operation before reporting the
|
|
1264
|
-
Gateway as live.
|
|
1265
|
-
- Added inactivity, absolute-runtime, termination and projection watchdogs.
|
|
1266
|
-
Concurrent Stop requests share one termination, and uncertain ownership is
|
|
1267
|
-
quarantined instead of being projected as an idle session.
|
|
1268
|
-
- Kept the conversation surface success-only: drafts, tool failures, retries,
|
|
1269
|
-
completion-gate work in progress and abort details stay in Activity. Empty or
|
|
1270
|
-
non-rendering provider output can no longer create a blank success bubble.
|
|
1271
|
-
- Made operation settlement first-terminal-wins and retained recent failures
|
|
1272
|
-
independently from high-volume event traffic, preventing a retry or catalog
|
|
1273
|
-
refresh from presenting contradictory outcomes.
|
|
1274
|
-
|
|
1275
|
-
### Deeper benchmark and assurance contracts
|
|
1276
|
-
|
|
1277
|
-
- Expanded the deep-logic benchmark with a multi-package temporal billing close
|
|
1278
|
-
problem, stricter held-out variants, provider-wire checks, usage provenance,
|
|
1279
|
-
statistical comparison gates and explicit Codex CLI controls.
|
|
1280
|
-
- Hardened benchmark accounting so unknown usage, infrastructure retries or an
|
|
1281
|
-
unmatched provider attempt cannot support a token or production claim.
|
|
1282
|
-
- A provider-backed token-reduction claim is published only when a complete
|
|
1283
|
-
zero-retry 108-session run passes on the exact clean tagged candidate. An
|
|
1284
|
-
interrupted, historical or different-SHA run remains diagnostic evidence.
|
|
983
|
+
**GPT-6 Astra, Sol and Luna models.** Pins Pi to 0.87.1 so authenticated sessions and the WebUI can list GPT-6 Astra, Sol and Luna, and adds a GPT-6 routing map.
|
|
1285
984
|
|
|
1286
|
-
|
|
985
|
+
### Added
|
|
1287
986
|
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
- Fixed provider tool-call identifiers containing characters outside the
|
|
1291
|
-
public WebUI reference alphabet. Gateway approvals now bind those opaque
|
|
1292
|
-
identifiers to private deterministic references instead of falling back to
|
|
1293
|
-
a terminal confirmation that does not exist in WebUI.
|
|
1294
|
-
- Prevented search commands such as `rg` and `grep` from being mistaken for
|
|
1295
|
-
migration execution merely because their search arguments contain
|
|
1296
|
-
`migrate`. Real migration commands still require explicit confirmation.
|
|
1297
|
-
- Made Stop cancel the exact pending approval before aborting the model
|
|
1298
|
-
operation, so a session cannot remain stuck waiting for an approval after
|
|
1299
|
-
the user stops it. Gateway approval failures now deny immediately rather
|
|
1300
|
-
than waiting indefinitely.
|
|
1301
|
-
- Corrected activity reporting so a tool call remains requested until native
|
|
1302
|
-
execution actually starts, and strengthened Dashboard restart to wait for
|
|
1303
|
-
the previous process to exit instead of silently reusing a hung instance.
|
|
987
|
+
- GPT-6 Astra, Sol and Luna appear in authenticated sessions and the WebUI; Pi's catalog decides availability.
|
|
988
|
+
- New parent-routing map: Luna Medium for bounded work, Sol Medium/High for everyday work, Astra Extra High for broad work.
|
|
1304
989
|
|
|
1305
|
-
|
|
990
|
+
### Improved
|
|
1306
991
|
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
-
|
|
1310
|
-
`session-command-effect-unknown` even though Pi had accepted the selected
|
|
1311
|
-
workflow and started the model turn. The Gateway now retains operation
|
|
1312
|
-
ownership across Pi's deferred workflow dispatch and settles it only after
|
|
1313
|
-
the nested agent turn reaches its canonical lifecycle boundary.
|
|
1314
|
-
- Added a fail-safe reconciliation path when the Gateway can identify the
|
|
1315
|
-
created session but cannot yet prove the command effect. The UI opens the
|
|
1316
|
-
known session, explains that synchronization is in progress, and explicitly
|
|
1317
|
-
prevents a blind resend that could run the same request twice.
|
|
1318
|
-
- Localized internal uncertainty status and reconciled workflow-prefixed
|
|
1319
|
-
persisted messages with their optimistic UI form so completed turns no
|
|
1320
|
-
longer appear twice in the transcript.
|
|
1321
|
-
- Prevented a slow background model-catalog refresh from replacing a model or
|
|
1322
|
-
thinking choice the user had just made. Session-option controls now reject
|
|
1323
|
-
stale responses, and the browser regression test deliberately reproduces the
|
|
1324
|
-
delayed-response ordering that previously left the change button disabled.
|
|
992
|
+
- Parent routing stays off by default and explicit model pins are unchanged.
|
|
993
|
+
- New setup and WebUI sessions prefer GPT-6 Sol High; existing sessions and explicit settings are not rewritten.
|
|
994
|
+
- If a GPT-6 target is unavailable, the router records a 5.6 fallback instead of substituting it silently.
|
|
1325
995
|
|
|
1326
|
-
|
|
996
|
+
Requires: Pi 0.87.1.
|
|
1327
997
|
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
- Brought the Terminal workflow surface into Session Hub with ten explicit
|
|
1331
|
-
per-message workflows. A workflow no longer binds the whole session: after a
|
|
1332
|
-
message is sent, the composer returns to Freeform so the same conversation
|
|
1333
|
-
can move to a different task under the user's control.
|
|
1334
|
-
- Simplified the new-session composer around the essential project, model and
|
|
1335
|
-
send controls. Advanced workflow, thinking, permission and attachment choices
|
|
1336
|
-
now sit behind a progressive `+` control, while the default is named
|
|
1337
|
-
explicitly as GPT-5.6 Sol with High thinking.
|
|
1338
|
-
- Added typed Project Controls for runtime and usage inspection, onboarding and
|
|
1339
|
-
profile state, Context Engine, memory and MCP governance. Read-only actions
|
|
1340
|
-
do not open a model turn; mutating and semantic-compaction actions require an
|
|
1341
|
-
explicit confirmation and retain the existing session and revision guards.
|
|
1342
|
-
|
|
1343
|
-
### Deeper logic evaluation
|
|
1344
|
-
|
|
1345
|
-
- Added the `deep-logic-v1` diagnostic suite: six generated-variant, large
|
|
1346
|
-
problems covering event reconciliation, dependency scheduling, layered
|
|
1347
|
-
policy, context graphs, resumable streams and transactional configuration.
|
|
1348
|
-
Its default paired run uses Piagent and `codex-cli` on GPT-5.6 Luna Medium for
|
|
1349
|
-
24 model sessions.
|
|
1350
|
-
- Expanded `capability-v1` from four to six multi-component families, including
|
|
1351
|
-
durable session control and causal timeline recovery, with 28 contract
|
|
1352
|
-
clauses and 69 atomic checks plus stronger mutation and equivalent-solution
|
|
1353
|
-
validation.
|
|
1354
|
-
- Added a provider-free WebUI parity benchmark for workflows, runtime controls,
|
|
1355
|
-
contracts, security, Chromium flows and bounded performance stress before
|
|
1356
|
-
any model quota is spent.
|
|
998
|
+
## v1.7.1 - 2026-09-23
|
|
1357
999
|
|
|
1358
|
-
|
|
1000
|
+
**Pi 0.86.1, requested pauses and diagnostic acceptance.** Replaces the unpublished v1.7.0, updates Pi to 0.86.1, adds a wait tool for requested pauses and makes acceptance proof diagnostic by default.
|
|
1359
1001
|
|
|
1360
|
-
###
|
|
1002
|
+
### Added
|
|
1361
1003
|
|
|
1362
|
-
-
|
|
1363
|
-
chosen through the paperclip. The file picker already carried attachments into
|
|
1364
|
-
a new session; drag and drop was the one entry point that silently did
|
|
1365
|
-
nothing, so a document dropped on that screen was lost with no message.
|
|
1366
|
-
- A dropped file that misses the composer no longer navigates the Gateway away
|
|
1367
|
-
from the page, matching the guard the session composer already had.
|
|
1004
|
+
- Added a wait tool for pauses you request inside a session; it does not call the model while waiting.
|
|
1368
1005
|
|
|
1369
|
-
|
|
1006
|
+
### Improved
|
|
1370
1007
|
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
-
|
|
1374
|
-
|
|
1375
|
-
v1.4.1. The content of this release is v1.5.0's, plus the fix below.
|
|
1376
|
-
- Fixed a race in the WebUI composer end-to-end test. Changing the model right
|
|
1377
|
-
after changing thinking acknowledged the effect scope without waiting for the
|
|
1378
|
-
panel to clear it, so on a slower runner the reset landed afterwards and left
|
|
1379
|
-
the confirm button permanently disabled.
|
|
1380
|
-
|
|
1381
|
-
## v1.5.0 - 2026-08-17
|
|
1382
|
-
|
|
1383
|
-
### Document workspace and attachments
|
|
1384
|
-
|
|
1385
|
-
- Added a bounded document workspace to the Session Hub for project Markdown,
|
|
1386
|
-
text, PDF and DOCX material, including safe extraction, redaction,
|
|
1387
|
-
truncation, protected-path enforcement and readable in-browser previews.
|
|
1388
|
-
- Added document and image attachment staging to New chat and active-session
|
|
1389
|
-
composers. Sent files remain visible as compact durable cards instead of
|
|
1390
|
-
dumping extracted document bodies into the conversation.
|
|
1391
|
-
- Moved attachment storage and validation into the shared core runtime so the
|
|
1392
|
-
terminal package and WebUI use one authority boundary, one reservation
|
|
1393
|
-
protocol and the same session identity rules.
|
|
1394
|
-
|
|
1395
|
-
### Conversation and session experience
|
|
1396
|
-
|
|
1397
|
-
- Replaced large tool-result blocks in chat with a compact live activity
|
|
1398
|
-
timeline for file reads, image inspection, commands, edits, search, context
|
|
1399
|
-
optimization and verification. Raw tool labels remain available on demand in
|
|
1400
|
-
the Activity inspector.
|
|
1401
|
-
- Added deterministic, zero-model-turn session titles and previews. Internal
|
|
1402
|
-
fresh-session routing commands are hidden from the transcript and catalog,
|
|
1403
|
-
while user-visible titles stay bounded and preserve redaction markers.
|
|
1404
|
-
- Hid delegated runtime helper sessions from the user conversation catalog and
|
|
1405
|
-
kept attachment metadata, live events and resumed session projections bound
|
|
1406
|
-
to the exact public session.
|
|
1407
|
-
|
|
1408
|
-
### Project import and capability visibility
|
|
1409
|
-
|
|
1410
|
-
- Hardened native project-folder selection across macOS and Linux, including
|
|
1411
|
-
multi-folder import and fail-closed cancellation or unsupported-host results.
|
|
1412
|
-
- Added exact Web search and image-input capability facts to Providers & models
|
|
1413
|
-
without copying provider credentials or adding a model turn to dashboard
|
|
1414
|
-
inspection.
|
|
1415
|
-
|
|
1416
|
-
### Contracts, security and release coverage
|
|
1417
|
-
|
|
1418
|
-
- Added the versioned document-workspace contract and extended attachment,
|
|
1419
|
-
transcript, session-command and capability contracts with bounded additive
|
|
1420
|
-
fields and generated TypeScript projections.
|
|
1421
|
-
- Added regression coverage for large/invalid documents, attachment claim and
|
|
1422
|
-
retry, stale session revisions, Linux project import, hidden helper sessions,
|
|
1423
|
-
durable file cards and live tool activity.
|
|
1424
|
-
- Kept every browser-facing file, title, provider fact and tool label behind the
|
|
1425
|
-
existing redaction, protected-path, schema and capability-integrity gates.
|
|
1008
|
+
- Updated Pi to 0.86.1, keeping the selected model and thinking level while correcting usage and WebUI settlement.
|
|
1009
|
+
- Acceptance proof is diagnostic by default: unproved criteria stay pending; strict mode remains available by policy.
|
|
1010
|
+
- Task usage, timing and context delivery are bound to the active task, and unsupported context files are filtered out.
|
|
1011
|
+
- The release CI limit is raised to 75 minutes after the v1.7.0 macOS gate timed out.
|
|
1426
1012
|
|
|
1427
|
-
|
|
1013
|
+
Requires: Pi 0.86.1.
|
|
1428
1014
|
|
|
1429
|
-
|
|
1015
|
+
## v1.7.0 - not published
|
|
1430
1016
|
|
|
1431
|
-
|
|
1017
|
+
**Not published; use v1.7.1.** The tag exists, but its macOS gate timed out twice at 40 minutes, so no npm package or GitHub Release was created.
|
|
1432
1018
|
|
|
1433
|
-
|
|
1019
|
+
### Improved
|
|
1434
1020
|
|
|
1435
|
-
-
|
|
1021
|
+
- No `@piagent/platform@1.7.0` package exists; install v1.7.1 instead.
|
|
1436
1022
|
|
|
1437
|
-
|
|
1023
|
+
## v1.6.1 - 2026-08-26
|
|
1438
1024
|
|
|
1439
|
-
|
|
1025
|
+
**Truthful WebUI state and read-only source review.** The WebUI no longer shows success before a task ends, Git host links can be reviewed read-only, and subagent use is capped at one helper.
|
|
1440
1026
|
|
|
1441
|
-
|
|
1027
|
+
### Added
|
|
1442
1028
|
|
|
1443
|
-
- A
|
|
1029
|
+
- A GitHub or other Git host link can be checked out for read-only review, up to eight sources, cleaned up at session end.
|
|
1444
1030
|
|
|
1445
|
-
|
|
1031
|
+
### Improved
|
|
1446
1032
|
|
|
1447
|
-
-
|
|
1033
|
+
- Subagents are limited to one read-only helper with bounded calls, turns and runtime, and no automatic retry.
|
|
1448
1034
|
|
|
1449
|
-
|
|
1035
|
+
### Fixed
|
|
1450
1036
|
|
|
1451
|
-
|
|
1037
|
+
- A pending task could show a completed message or success bubble; drafts now stay hidden until the task ends.
|
|
1038
|
+
- Rejected or evidence-free helper calls could later show as passed in Activity; they now stay visible as failures.
|
|
1039
|
+
- Attachments and workflow wrappers no longer replace your actual request when a task starts.
|
|
1452
1040
|
|
|
1453
|
-
|
|
1041
|
+
## v1.6.0 - 2026-08-24
|
|
1454
1042
|
|
|
1455
|
-
|
|
1043
|
+
**Leaner context, redacted snapshots, steadier WebUI.** One criterion-aware context pack replaces overlapping discovery, source snapshots are redacted before reaching the model, and the WebUI recovers after reloads.
|
|
1456
1044
|
|
|
1457
|
-
|
|
1045
|
+
### Improved
|
|
1458
1046
|
|
|
1459
|
-
|
|
1047
|
+
- One criterion-aware initial context pack replaces overlapping discovery and puts explicit targets and their tests first.
|
|
1048
|
+
- New installations default to GPT-5.6 Sol with High thinking; you can still pick another model per message or session.
|
|
1049
|
+
- Reloads and multiple browser tabs agree on the running operation, and concurrent Stop requests share one termination.
|
|
1050
|
+
- A token-reduction claim is published only after a complete zero-retry 108-session run on the exact tagged release.
|
|
1460
1051
|
|
|
1461
|
-
|
|
1052
|
+
### Fixed
|
|
1462
1053
|
|
|
1463
|
-
-
|
|
1054
|
+
- Empty provider output could create a blank success bubble in the conversation; it no longer does.
|
|
1464
1055
|
|
|
1465
|
-
|
|
1056
|
+
### Security
|
|
1466
1057
|
|
|
1467
|
-
|
|
1058
|
+
- Automatic source snapshots are redacted before reaching the provider, including short and numeric secret values.
|
|
1468
1059
|
|
|
1469
|
-
|
|
1060
|
+
## v1.5.5 - 2026-08-21
|
|
1470
1061
|
|
|
1471
|
-
|
|
1062
|
+
**WebUI command execution hotfix.** Fixes approvals that fell back to a missing terminal prompt, search commands mistaken for migrations, and sessions stuck after Stop.
|
|
1472
1063
|
|
|
1473
|
-
###
|
|
1064
|
+
### Fixed
|
|
1474
1065
|
|
|
1475
|
-
-
|
|
1066
|
+
- Some tool calls fell back to a terminal confirmation that does not exist in the WebUI; they are now approved in the WebUI.
|
|
1067
|
+
- `rg` and `grep` with `migrate` in their arguments were treated as migrations; real migrations still need confirmation.
|
|
1068
|
+
- Stop could leave a session waiting on an approval; it now cancels the pending approval first.
|
|
1069
|
+
- Dashboard restart could silently reuse a hung instance; it now waits for the old process to exit.
|
|
1476
1070
|
|
|
1477
|
-
|
|
1071
|
+
## v1.5.4 - 2026-08-20
|
|
1478
1072
|
|
|
1479
|
-
|
|
1073
|
+
**WebUI workflow hotfix.** New WebUI sessions no longer report an unknown command effect after the turn started, and completed turns no longer appear twice.
|
|
1480
1074
|
|
|
1481
|
-
|
|
1075
|
+
### Improved
|
|
1482
1076
|
|
|
1483
|
-
|
|
1077
|
+
- While sync is still in progress, the UI opens the known session and blocks a resend that could run the request twice.
|
|
1484
1078
|
|
|
1485
|
-
|
|
1079
|
+
### Fixed
|
|
1486
1080
|
|
|
1487
|
-
|
|
1081
|
+
- New WebUI sessions reported an unknown command effect although Pi had started the turn; this is fixed.
|
|
1082
|
+
- Completed turns appeared twice in the transcript; they now appear once.
|
|
1083
|
+
- A slow model-catalog refresh could undo a model or thinking change you just made and leave the button disabled.
|
|
1488
1084
|
|
|
1489
|
-
|
|
1490
|
-
- Google Workspace MCP is Developer Preview and has no credentialed Pi OAuth E2E proof in this release. The four entries are marked experimental, print that status through catalog/preset output, and stay out of the generic `documents` preset as well as every default preset. Official endpoints and readonly scopes remain available through explicitly named Google presets for controlled testing.
|
|
1085
|
+
## v1.5.3 - 2026-08-20
|
|
1491
1086
|
|
|
1492
|
-
|
|
1087
|
+
**WebUI and Terminal parity.** The Session Hub gains ten per-message workflows, a simpler new-session composer and Project Controls, plus a new deep-logic benchmark.
|
|
1493
1088
|
|
|
1494
|
-
|
|
1089
|
+
### Added
|
|
1495
1090
|
|
|
1496
|
-
-
|
|
1091
|
+
- The Session Hub offers ten per-message workflows; after sending, the composer returns to Freeform.
|
|
1092
|
+
- Project Controls cover runtime, usage, onboarding, Context Engine, memory and MCP; changes ask for confirmation.
|
|
1093
|
+
- Added the `deep-logic-v1` benchmark: six large problems, run with Piagent and `codex-cli` on GPT-5.6 Luna Medium.
|
|
1497
1094
|
|
|
1498
|
-
###
|
|
1095
|
+
### Improved
|
|
1499
1096
|
|
|
1500
|
-
-
|
|
1097
|
+
- The new-session composer shows project, model and send; advanced choices sit behind a `+` control.
|
|
1098
|
+
- `capability-v1` grows from four to six families with 69 atomic checks.
|
|
1501
1099
|
|
|
1502
|
-
|
|
1100
|
+
## v1.5.2 - 2026-08-18
|
|
1503
1101
|
|
|
1504
|
-
|
|
1102
|
+
**Drag and drop in the new-chat composer.** A document dragged or pasted onto the new-chat composer is now attached instead of being silently lost.
|
|
1505
1103
|
|
|
1506
|
-
|
|
1104
|
+
### Fixed
|
|
1507
1105
|
|
|
1508
|
-
-
|
|
1106
|
+
- A document dropped or pasted on the new-chat screen was silently lost; it is now attached.
|
|
1107
|
+
- A file dropped outside the composer no longer navigates the page away.
|
|
1509
1108
|
|
|
1510
|
-
|
|
1109
|
+
## v1.5.1 - 2026-08-17
|
|
1511
1110
|
|
|
1512
|
-
|
|
1111
|
+
**Release repair for v1.5.0.** Publishes the content of v1.5.0, which was tagged but never published, plus a fix for a composer test race.
|
|
1513
1112
|
|
|
1514
|
-
|
|
1113
|
+
### Improved
|
|
1515
1114
|
|
|
1516
|
-
-
|
|
1115
|
+
- Ships everything from v1.5.0, whose macOS release matrix failed before publishing.
|
|
1517
1116
|
|
|
1518
|
-
|
|
1117
|
+
### Fixed
|
|
1519
1118
|
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
- Added a local, one-per-profile Gateway and `piagent dashboard` experience for
|
|
1523
|
-
creating, reopening, resuming, renaming, pinning, archiving, unarchiving, and
|
|
1524
|
-
forking durable Pi sessions without starting an extra model turn for views.
|
|
1525
|
-
- Rebuilt the browser client as a conversation-first MUI application with a
|
|
1526
|
-
compact composer, project and model controls, light/dark themes, Vietnamese
|
|
1527
|
-
and English UI, responsive layouts, and an Agent Inspector for tasks, source
|
|
1528
|
-
changes, activity, verification, usage, and handoff evidence.
|
|
1529
|
-
- Added exact Gateway-owned chat streaming, held-message queues, bounded
|
|
1530
|
-
attachments, model/thinking controls, lifecycle controls, and Pi-owned
|
|
1531
|
-
approval cards while preserving one authoritative writer per session.
|
|
1532
|
-
|
|
1533
|
-
### Source review, recovery, and security
|
|
1534
|
-
|
|
1535
|
-
- Added Task Changes, Working Tree, and Staged projections with bounded diffs,
|
|
1536
|
-
provenance, criterion/verifier links, protected-path enforcement, and guarded
|
|
1537
|
-
stage, unstage, revert, and editor handoff actions.
|
|
1538
|
-
- Added durable session leases, terminal compatibility ownership, restart and
|
|
1539
|
-
stale-owner recovery, idempotent command receipts, replay/resync, doctor with
|
|
1540
|
-
explicit repair, and corrupt-state fail-closed behavior.
|
|
1541
|
-
- Hardened the TypeScript loader, local control socket creation, runtime
|
|
1542
|
-
integrity inventory, browser authentication, redaction, event bounds, and
|
|
1543
|
-
provider/MCP credential handling.
|
|
1544
|
-
|
|
1545
|
-
### Documentation and release gates
|
|
1546
|
-
|
|
1547
|
-
- Classified every root operating document by language, retained canonical
|
|
1548
|
-
English/Vietnamese entry points, and added a gate that rejects unclassified
|
|
1549
|
-
or unindexed Vietnamese documentation.
|
|
1550
|
-
- Added a provider-neutral product-language gate while retaining third-party
|
|
1551
|
-
names only where they describe real integrations, dependencies, or operator
|
|
1552
|
-
commands.
|
|
1553
|
-
- Added the executable WUI5-18 release matrix covering durable sessions,
|
|
1554
|
-
ownership, recovery, approvals, protected data, transport validation,
|
|
1555
|
-
accessibility, themes, and zero-model-turn navigation.
|
|
1119
|
+
- Fixed a WebUI composer test race that left the confirm button disabled on slower runners.
|
|
1556
1120
|
|
|
1557
|
-
## v1.
|
|
1121
|
+
## v1.5.0 - 2026-08-17 (not published)
|
|
1558
1122
|
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
- Extended the capability integrity inventory to include the TypeScript loader,
|
|
1562
|
-
CLI dispatcher, and the remaining task-state, verification, and backend
|
|
1563
|
-
decision modules that can affect runtime enforcement.
|
|
1564
|
-
- Replaced repeated full-file capability hashing on every tool call with a
|
|
1565
|
-
fail-closed metadata cache. Session start may re-pin an unchanged grant to a
|
|
1566
|
-
new installed build; build drift discovered during a running session blocks
|
|
1567
|
-
that session until restart instead of silently rewriting its lock.
|
|
1568
|
-
- Removed shell interpolation from the `pdftotext` availability probe while
|
|
1569
|
-
preserving the existing PDF extraction behavior.
|
|
1570
|
-
- Made local JSONL state locks publish their complete owner atomically and
|
|
1571
|
-
recover a hard-killed normal writer without exposing an empty lock. Recovery
|
|
1572
|
-
ownership is deliberately fail-closed: if that recovery process itself is
|
|
1573
|
-
killed, an operator must remove its `.recovery` lock before writes resume.
|
|
1123
|
+
**Document workspace and attachments.** Adds a document workspace, attachments and a compact activity timeline to the Session Hub; tagged but not published, shipped as v1.5.1.
|
|
1574
1124
|
|
|
1575
|
-
|
|
1125
|
+
### Added
|
|
1576
1126
|
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
-
|
|
1580
|
-
runtime behavior. The Criterion Graph, bounded current-source context,
|
|
1581
|
-
stable tool surface, one-continuation ceiling, current-tree verification,
|
|
1582
|
-
durable resume/handoff and conservative broad defaults remain unchanged.
|
|
1583
|
-
- Published the first stable package with Pi host `0.84.1` and installed-package
|
|
1584
|
-
parity for every terminal command. Stable installs use npm `latest` and the
|
|
1585
|
-
pinned Git tag `v1.3.0`; prerelease `next` remains historical.
|
|
1586
|
-
- Preserved the completed 108-session Luna Medium IE7 run as exact
|
|
1587
|
-
public-regression evidence for the unchanged product runtime. It is not
|
|
1588
|
-
relabelled as an exact v1.3.0 measurement and does not prove private-holdout
|
|
1589
|
-
generalization, field stability or real-model long-horizon performance.
|
|
1590
|
-
- Kept solver and phase tools in shadow, acceptance and performance assurance
|
|
1591
|
-
advisory, semantic repair off, helpers recommend-only, parent routing off,
|
|
1592
|
-
recovery on and a maximum of one system continuation for broad defaults.
|
|
1127
|
+
- A document workspace in the Session Hub for Markdown, text, PDF and DOCX, with redaction and in-browser previews.
|
|
1128
|
+
- Attach documents and images in New chat and in active sessions; sent files show as compact cards.
|
|
1129
|
+
- Session titles and previews are generated without a model turn.
|
|
1593
1130
|
|
|
1594
|
-
|
|
1131
|
+
### Improved
|
|
1595
1132
|
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
-
|
|
1599
|
-
installation can load the same audited TypeScript runtime that Pi loads,
|
|
1600
|
-
even when the package lives under `node_modules`.
|
|
1601
|
-
- Made the global benchmark helper use the matching exact Pi package Git source
|
|
1602
|
-
installed by `piagent-install --stable`. It refuses to invent Git identity or
|
|
1603
|
-
run against a mismatched helper/package version.
|
|
1604
|
-
- Replaced the symlink-only binary smoke with a real packed-and-installed test:
|
|
1605
|
-
all global commands print help from `node_modules`, and the installed benchmark
|
|
1606
|
-
completes a provider-free dry run from an exact temporary Git source.
|
|
1607
|
-
- Preserved IE8 as the first successfully published package. Its helper,
|
|
1608
|
-
installer, doctor and capability commands work, but the route and benchmark
|
|
1609
|
-
binaries cannot load TypeScript from `node_modules`; IE9 supersedes it on the
|
|
1610
|
-
npm `next` channel. Product/model behavior remains unchanged from IE7/IE8.
|
|
1133
|
+
- Large tool-result blocks in chat are replaced by a compact live activity timeline.
|
|
1134
|
+
- Project folder import is more reliable on macOS and Linux, including several folders at once.
|
|
1135
|
+
- Providers & models shows whether each model supports web search and image input.
|
|
1611
1136
|
|
|
1612
|
-
## v1.
|
|
1137
|
+
## v1.4.1 - 2026-08-17
|
|
1613
1138
|
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
- Made the tag-driven publish job fetch the complete Git/tag history required
|
|
1617
|
-
by rollback tests and install the same `ripgrep` prerequisite used by the
|
|
1618
|
-
native Ubuntu verification lane.
|
|
1619
|
-
- Preserved `v1.3.0-ie.7` as immutable failed-before-publish evidence. Its
|
|
1620
|
-
workflow stopped during deterministic tests, before `npm publish`, so the
|
|
1621
|
-
registry was not modified.
|
|
1622
|
-
- Kept the product runtime identical to IE7. The completed 108-session Luna
|
|
1623
|
-
Medium benchmark remains exact IE7 runtime evidence and is not relabelled as
|
|
1624
|
-
an exact IE8 benchmark; IE8 is a distribution-only correction.
|
|
1625
|
-
|
|
1626
|
-
## v1.3.0-ie.7 - 2026-08-12
|
|
1627
|
-
|
|
1628
|
-
### Source-derived public return-contract guidance
|
|
1629
|
-
|
|
1630
|
-
- Extended the bounded return-representation classifier to recognize helper
|
|
1631
|
-
parameters seeded from object properties, including stable graph traversals
|
|
1632
|
-
that call `visit(item.name)` and later push that name into the public result.
|
|
1633
|
-
- Surfaces the existing names-versus-objects representation in the first model
|
|
1634
|
-
turn before mutation. This preserves the public API without enabling a hard
|
|
1635
|
-
semantic gate, adding a continuation, or changing the benchmark prompt,
|
|
1636
|
-
variant, grader, outcome floor, or measured IE6 evidence.
|
|
1637
|
-
- Preserved the terminal IE6 production run as immutable NO-GO evidence. IE7
|
|
1638
|
-
uses a new candidate digest and production seed and must pass a single paired
|
|
1639
|
-
workspace-order canary before another full release benchmark is authorized.
|
|
1139
|
+
**Integrity, redaction and install fixes.** Closes gaps in the runtime integrity lock, redacts npm tokens, fixes install and uninstall bugs, and lets the dashboard start without the MCP adapter.
|
|
1640
1140
|
|
|
1641
|
-
|
|
1141
|
+
### Added
|
|
1642
1142
|
|
|
1643
|
-
|
|
1143
|
+
- Added Google Drive, Gmail, Docs and Sheets MCP servers as experimental, kept out of every default preset.
|
|
1644
1144
|
|
|
1645
|
-
|
|
1646
|
-
outcome below the frozen floor stops after its pair, while a Codex-only miss
|
|
1647
|
-
remains candidate-only dominance and does not prevent later coverage.
|
|
1648
|
-
- Kept helper wall-clock timing observational under parallel host load; exact
|
|
1649
|
-
retrieval, token reduction, lifecycle, writer and privacy invariants remain
|
|
1650
|
-
the release-gating properties.
|
|
1651
|
-
- Preserved the terminal `v1.3.0-ie.5` canary as immutable evidence; it is not
|
|
1652
|
-
resumed or relabelled after this correction.
|
|
1145
|
+
### Fixed
|
|
1653
1146
|
|
|
1654
|
-
|
|
1147
|
+
- The two-command install could downgrade the global Pi package to a project's pin; the two scopes now resolve separately.
|
|
1148
|
+
- Uninstall did nothing under a non-default npm prefix yet reported success; it now uses the helper's actual prefix.
|
|
1149
|
+
- `piagent dashboard` failed to start when the MCP adapter was not installed; it now starts.
|
|
1655
1150
|
|
|
1656
|
-
###
|
|
1151
|
+
### Security
|
|
1657
1152
|
|
|
1658
|
-
-
|
|
1659
|
-
|
|
1660
|
-
session after an outcome falls below the frozen suite floor.
|
|
1661
|
-
- Bound prerelease packages to the npm `next` dist-tag in both package identity
|
|
1662
|
-
and the tag-driven publish workflow, preserving `latest` for stable releases.
|
|
1663
|
-
- Preserved the failed `v1.3.0-ie.4` measurement as immutable evidence; no suite,
|
|
1664
|
-
grader, prompt, or measured result was rewritten for this candidate.
|
|
1153
|
+
- The integrity lock now covers shell entrypoints and the served WebUI bundle, which could previously run unpinned code.
|
|
1154
|
+
- npm tokens in `.npmrc` lines and in publish output are now redacted.
|
|
1665
1155
|
|
|
1666
|
-
## v1.
|
|
1156
|
+
## v1.4.0 - 2026-08-15
|
|
1667
1157
|
|
|
1668
|
-
|
|
1158
|
+
**Local Session Hub and WebUI.** Adds `piagent dashboard`: a local Gateway and browser client to create, resume and review Pi sessions without extra model turns.
|
|
1669
1159
|
|
|
1670
|
-
|
|
1671
|
-
This keeps the helper evaluation identical across native platforms; no
|
|
1672
|
-
product gate, benchmark evaluator, or provider behavior was relaxed.
|
|
1673
|
-
- Kept the integration waits finite while giving the full parallel suite room
|
|
1674
|
-
for native filesystem contention. The helper and immutable-snapshot product
|
|
1675
|
-
assertions remain unchanged; only their test-harness deadlines moved.
|
|
1160
|
+
### Added
|
|
1676
1161
|
|
|
1677
|
-
|
|
1162
|
+
- `piagent dashboard` opens a local Gateway to create, reopen, resume, rename, pin, archive and fork sessions.
|
|
1163
|
+
- A conversation-first browser client with light and dark themes, Vietnamese and English UI, and an Agent Inspector.
|
|
1164
|
+
- Streaming chat, held-message queues, attachments, model and thinking controls, and approval cards in the browser.
|
|
1165
|
+
- Task Changes, Working Tree and Staged views with bounded diffs and guarded stage, unstage and revert actions.
|
|
1678
1166
|
|
|
1679
|
-
###
|
|
1167
|
+
### Improved
|
|
1680
1168
|
|
|
1681
|
-
-
|
|
1682
|
-
gate depend on exact retrieval correctness, model-visible token reduction,
|
|
1683
|
-
lifecycle, budget, writer and privacy invariants. This removes filesystem and
|
|
1684
|
-
process-startup timing noise from native Linux CI without weakening the
|
|
1685
|
-
product property the helper is intended to provide.
|
|
1169
|
+
- Sessions recover after restarts and stale owners, and corrupt state fails closed.
|
|
1686
1170
|
|
|
1687
|
-
|
|
1171
|
+
### Security
|
|
1688
1172
|
|
|
1689
|
-
|
|
1173
|
+
- Hardened the TypeScript loader, local control socket, browser authentication, redaction and credential handling.
|
|
1690
1174
|
|
|
1691
|
-
|
|
1692
|
-
to `1.3.7`. The new host tree audits clean at moderate and above, replacing
|
|
1693
|
-
the expired `0.82.0` advisory exception; provider-free host compatibility,
|
|
1694
|
-
package lifecycle and release identity are re-gated on the new pin.
|
|
1695
|
-
- Scoped CodeQL away from the byte-pinned Hono benchmark fixture while keeping
|
|
1696
|
-
all Piagent product and benchmark harness code analyzed, and made Ubuntu CI
|
|
1697
|
-
install the ripgrep dependency exercised by helper evaluation.
|
|
1175
|
+
## v1.3.1 - 2026-08-13
|
|
1698
1176
|
|
|
1699
|
-
|
|
1177
|
+
**Security and reliability hardening.** Widens the integrity inventory, speeds up per-call integrity checks with a cache, and lets local state locks recover safely.
|
|
1700
1178
|
|
|
1701
|
-
###
|
|
1702
|
-
|
|
1703
|
-
- Added a deterministic Criterion Graph projection and bounded current-source
|
|
1704
|
-
context delivery so Luna Medium can plan against operator criteria without a
|
|
1705
|
-
repository-index dependency or an extra model turn. Mechanical task truth,
|
|
1706
|
-
exact verification, current-tree evidence and permissions remain unchanged.
|
|
1707
|
-
- Kept every advanced capability in the package while broad defaults leave
|
|
1708
|
-
solver and phase tools in shadow, acceptance and performance assurance
|
|
1709
|
-
advisory, semantic repair off, helpers recommend-only and parent routing off.
|
|
1710
|
-
- Added a fail-closed IE6 release protocol for Piagent versus controlled Codex
|
|
1711
|
-
CLI on Luna Medium: 18 production families, three repeats, two surfaces, 108
|
|
1712
|
-
sessions, six-session inspected chunks, retry zero and explicit platform,
|
|
1713
|
-
cohort, private-holdout, long-horizon and operator gates.
|
|
1714
|
-
- Preserved RC.1 and RC.2 as immutable historical NO-GO evidence. The IE train
|
|
1715
|
-
uses its own prerelease identity and does not relabel or resume either RC.
|
|
1179
|
+
### Improved
|
|
1716
1180
|
|
|
1717
|
-
|
|
1181
|
+
- Integrity checks use a metadata cache instead of rehashing files on every tool call; build drift mid-session blocks until restart.
|
|
1718
1182
|
|
|
1719
|
-
###
|
|
1183
|
+
### Fixed
|
|
1720
1184
|
|
|
1721
|
-
-
|
|
1722
|
-
gate: map every operator criterion to implementation and focused-test
|
|
1723
|
-
coverage, batch independent operations, and perform one criterion review
|
|
1724
|
-
before the first exact verifier. No completion gate, continuation budget,
|
|
1725
|
-
capability mode, benchmark evaluator, or scenario behavior was relaxed.
|
|
1726
|
-
- Bound the pinned Hono 4.13.1 zero-install E2 fixture into the clean source and
|
|
1727
|
-
package, excluded the test-only `core-services.js` barrel from distribution,
|
|
1728
|
-
and made the control-byte gate accept valid empty upstream JavaScript files
|
|
1729
|
-
without weakening checks for non-empty binary source.
|
|
1185
|
+
- A hard-killed writer no longer leaves a state lock stuck; if recovery itself is killed, remove its `.recovery` lock.
|
|
1730
1186
|
|
|
1731
|
-
|
|
1187
|
+
### Security
|
|
1732
1188
|
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
- Added deterministic parent model routing with versioned
|
|
1736
|
-
`low|medium|high|ultra` capability bands, explicit pin/default provenance,
|
|
1737
|
-
intelligence/balance/cost objectives, exact authenticated-catalog matching,
|
|
1738
|
-
and fail-closed shadow/recommend/auto modes. `piagent-route` provides the only
|
|
1739
|
-
explicit prelaunch enforcement path; extension auto does not mutate the Pi
|
|
1740
|
-
user default or switch models mid-conversation.
|
|
1741
|
-
- Added a bounded retrieval route (read-only grep/find/read, up
|
|
1742
|
-
to eight parallel searches and four rounds, recommendation-only), a 240-case
|
|
1743
|
-
offline routing gate, and a resume-locked 144-session static-versus-adaptive
|
|
1744
|
-
protocol dry-run. No authenticated benchmark is implied by these local gates.
|
|
1745
|
-
|
|
1746
|
-
- Extended task preflight with stable human/JSON projections for intent, risk,
|
|
1747
|
-
scope, runtime provenance, solver route, phases, tools, helper budget,
|
|
1748
|
-
execution boundary, readiness, approvals, and blockers. Read-only and
|
|
1749
|
-
authorization-sensitive requests never display implementation permission.
|
|
1750
|
-
- Extended `/piagent-status` with persisted task, trajectory, checkpoint,
|
|
1751
|
-
verifier, recovery, helper, resume, terminal receipt, and bounded efficiency
|
|
1752
|
-
evidence. Completion remains hard-gate dependent and same-runtime evidence is
|
|
1753
|
-
described as operational assurance, not independent audit.
|
|
1754
|
-
- Added one `/piagent-inspector` namespace with an automatic compact status line
|
|
1755
|
-
below Pi's native TUI footer and
|
|
1756
|
-
menu views for task-versus-working-tree diff, test files and line counts,
|
|
1757
|
-
tool/command outcomes, safety warnings, verifier evidence, and context budget.
|
|
1758
|
-
It reuses existing lifecycle hooks, does not call a model, marks mixed dirty
|
|
1759
|
-
baselines explicitly, and never invents per-tool token attribution.
|
|
1760
|
-
- Hardened terminal receipts to fail closed unless the current-tree completion
|
|
1761
|
-
gate passes, and hardened RC local readiness so every published routing,
|
|
1762
|
-
safety, helper/writer, recovery, phase-tool, and host-boundary gate is
|
|
1763
|
-
decisive. The RC matrix pins each P0-P6 evidence input by SHA-256 and the
|
|
1764
|
-
generated report records the verified bytes and composite input digest.
|
|
1765
|
-
- Extended offline doctor readiness and `/usage efficiency` with install/update
|
|
1766
|
-
recovery guidance and exact-or-unavailable task metrics joined through hashed
|
|
1767
|
-
session/task/run identity. Raw task text and child output are not retained;
|
|
1768
|
-
unmeasurable time, tokens, cost, and invocation counts remain null.
|
|
1769
|
-
|
|
1770
|
-
### Durable runtime evidence
|
|
1771
|
-
|
|
1772
|
-
- Fixed automatic long-prompt intake, repository-aware scope resolution,
|
|
1773
|
-
idempotent bounded task IDs, runtime verifier defaults, and full-prompt
|
|
1774
|
-
acceptance extraction. Phase enforcement now uses dependency-ready work-plan
|
|
1775
|
-
evidence, keeps provider tool schemas cache-stable, treats `shell`/`exec` as
|
|
1776
|
-
`bash`, and applies one phase decision to direct, shell, patch, and MCP
|
|
1777
|
-
mutation carriers. Manual/high-risk planning and every read-only task remain
|
|
1778
|
-
mutation-free; exact verifiers and bounded repair retain their intended path.
|
|
1779
|
-
- Recalibrated the public capability suite around explicit contracts and 47
|
|
1780
|
-
weighted critical atomic checks across 16 prompt clauses. Each clause has a
|
|
1781
|
-
named killed mutation and sensitivity rationale; independently shaped search
|
|
1782
|
-
and migration implementations pass without object-identity, module-provenance,
|
|
1783
|
-
fixture-name, or representation coupling. Historical benchmark evidence is
|
|
1784
|
-
retained unchanged and is not regraded as a new performance claim.
|
|
1785
|
-
- Hardened Piagent-versus-Codex benchmarking with named, candidate-only runtime
|
|
1786
|
-
treatments preserved across dry-run, resume, replay, and reports. Token-saving
|
|
1787
|
-
claims now fail closed unless controlled Codex isolation, model/thinking pins,
|
|
1788
|
-
randomized paired order, and exact treatment provenance pass; reports expose
|
|
1789
|
-
paired resolved/quality/safety outcomes and token ratios by benchmark band.
|
|
1790
|
-
- Stabilized Task Contract v2 with identity-bound journal checkpoints, strict
|
|
1791
|
-
acceptance receipts, current-tree verification evidence, bounded retries, and
|
|
1792
|
-
immutable terminal outcomes. Journal hashes and receipts are operational
|
|
1793
|
-
evidence produced by the same runtime, not independent attestation.
|
|
1794
|
-
- Added adaptive context planning, cited repository-memory hints, model
|
|
1795
|
-
capability facts, verification intelligence, and a fail-closed execution
|
|
1796
|
-
backend descriptor. The parent model remains operator-pinned, no solver or
|
|
1797
|
-
automatic parent routing is shipped, and unavailable isolation adapters do
|
|
1798
|
-
not silently fall back to host mutation.
|
|
1799
|
-
- Added benchmark measurement schema v1 with exact-or-unavailable context usage
|
|
1800
|
-
and bounded task/acceptance evidence. Route, phase, and helper measurements
|
|
1801
|
-
remain absent until their later schemas and runtime behavior are implemented.
|
|
1802
|
-
- Extracted bounded registration adapters and operator catalogs from the Pi
|
|
1803
|
-
composition root, locked the root against growth, and extended runtime
|
|
1804
|
-
integrity/package coverage for the new modules.
|
|
1805
|
-
|
|
1806
|
-
### Controlled RC readiness
|
|
1807
|
-
|
|
1808
|
-
- Added a pinned RC evaluation matrix and local-only readiness evaluator across
|
|
1809
|
-
quality/routing, security/privacy, reliability/performance, and disposable
|
|
1810
|
-
install/migration/rollback gates. It records candidate content and catalog
|
|
1811
|
-
digests without storing credentials or gaining release-write capabilities.
|
|
1812
|
-
- Added cross-process helper lock waiting/stale-lock recovery and synthetic
|
|
1813
|
-
disk-full/permission-denied state tests after the concurrency gate exposed an
|
|
1814
|
-
immediate-lock-failure race.
|
|
1815
|
-
- Retained conservative defaults: solver and phase tools stay shadow, recovery
|
|
1816
|
-
stays on, helpers stay recommend, and parent routing/automatic workers stay
|
|
1817
|
-
off. GA remains blocked on controlled cohorts, human usability, Linux,
|
|
1818
|
-
candidate benchmark, RC package/identity, and explicit operator approval.
|
|
1819
|
-
|
|
1820
|
-
### Bounded recovery and handoff
|
|
1821
|
-
|
|
1822
|
-
- Added deterministic failure classification and a cross-attempt recovery
|
|
1823
|
-
matrix with one source repair or exact transient retry ceiling. Environment,
|
|
1824
|
-
provider, permission, policy, scope, and unknown failures never gain source
|
|
1825
|
-
mutation authority; `PIAGENT_AUTO_RECOVERY=off` preserves the prior handoff
|
|
1826
|
-
path.
|
|
1827
|
-
- Added owner-only Handoff v1 projections and safe resume reconstruction bound
|
|
1828
|
-
to task/session identity, journal integrity, trajectory phase, the actual
|
|
1829
|
-
current tree, and exact verifier evidence. Stale passes are invalidated;
|
|
1830
|
-
corrupt or symlink-unsafe state blocks mutation.
|
|
1831
|
-
- Extended acceptance receipts with optional runtime-observed recovery
|
|
1832
|
-
provenance. Criteria/status truth is unchanged and the receipt stores only
|
|
1833
|
-
bounded digests, counts, dispositions, and state references rather than raw
|
|
1834
|
-
logs or source.
|
|
1835
|
-
|
|
1836
|
-
### Role-bound helpers
|
|
1837
|
-
|
|
1838
|
-
- Added strict RolePolicy v1 and HelperRequest v1 contracts for retriever,
|
|
1839
|
-
scout, planner, worker, reviewer, Oracle, and researcher roles. Requests bind
|
|
1840
|
-
hashed parent identity, bounded scope/tools/model/effort/budgets/output/stops,
|
|
1841
|
-
cannot broaden parent authority, and never delegate approvals.
|
|
1842
|
-
- Added deterministic authenticated-catalog role binding that preserves the
|
|
1843
|
-
user-pinned parent and reports unavailable instead of silently substituting a
|
|
1844
|
-
model or effort. Worker remains disabled by default.
|
|
1845
|
-
- Added owner-only Piagent-owned helper budgets with two-concurrent/three-total,
|
|
1846
|
-
per-role and one-writer ceilings, deduplication, orphan recovery, terminal
|
|
1847
|
-
cancellation, and digest-only usage receipts. `PIAGENT_HELPERS_MODE` defaults
|
|
1848
|
-
to `recommend`; automatic worker delegation is not enabled.
|
|
1189
|
+
- The integrity inventory now covers the TypeScript loader, the CLI dispatcher and the remaining enforcement modules.
|
|
1190
|
+
- Removed shell interpolation from the PDF tool availability check.
|
|
1849
1191
|
|
|
1850
|
-
## v1.
|
|
1192
|
+
## v1.3.0 - 2026-08-12
|
|
1851
1193
|
|
|
1852
|
-
|
|
1194
|
+
**First stable intelligence engine release.** Promotes the ie.9 tree to stable with Pi 0.84.1 and unchanged runtime behaviour; stable installs come from npm `latest`.
|
|
1853
1195
|
|
|
1854
|
-
|
|
1855
|
-
`/en`, while preserving existing Vietnamese URLs at the site root.
|
|
1856
|
-
- Added same-topic VI/EN switching, localized navigation and copy feedback,
|
|
1857
|
-
canonical URLs, and `hreflang` metadata without adding a client-side i18n
|
|
1858
|
-
framework or language bundle.
|
|
1859
|
-
- Extended build, release-identity, scaffold, link-integrity, and locale-parity
|
|
1860
|
-
gates to cover all 34 generated pages.
|
|
1861
|
-
- Fixed the multi-page grid breakpoint that kept desktop sidebar and TOC
|
|
1862
|
-
columns active on mobile, restoring a single-column content layout.
|
|
1196
|
+
### Added
|
|
1863
1197
|
|
|
1864
|
-
|
|
1198
|
+
- First stable package with Pi 0.84.1, where every terminal command works from the installed package.
|
|
1865
1199
|
|
|
1866
|
-
###
|
|
1200
|
+
### Improved
|
|
1867
1201
|
|
|
1868
|
-
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
- Changed the no-thinking-suffix fallback to `high` and added an executable
|
|
1872
|
-
regression test covering default settings, scoped models and explicit
|
|
1873
|
-
`xhigh` overrides.
|
|
1202
|
+
- Stable installs use npm `latest` and the Git tag `v1.3.0`; the prerelease `next` channel is now historical.
|
|
1203
|
+
- Runtime behaviour is unchanged from ie.9, with conservative defaults: parent routing off, recovery on, one continuation.
|
|
1204
|
+
- The 108-session Luna Medium run from ie.7 is kept as evidence and not relabelled as a v1.3.0 measurement.
|
|
1874
1205
|
|
|
1875
|
-
|
|
1206
|
+
Requires: Pi 0.84.1.
|
|
1876
1207
|
|
|
1877
|
-
|
|
1208
|
+
## v1.3.0-ie.9 - 2026-08-12
|
|
1878
1209
|
|
|
1879
|
-
-
|
|
1880
|
-
local path. Pi displays user-local sources relative to its agent directory,
|
|
1881
|
-
while `pi remove` resolves input from the caller's working directory; the
|
|
1882
|
-
installer now removes the discovered registration by its absolute path.
|
|
1883
|
-
- Added a regression assertion that fails if the installer passes Pi's displayed
|
|
1884
|
-
relative path back to `pi remove`, covering updates launched outside the Pi
|
|
1885
|
-
agent directory.
|
|
1210
|
+
**Installed-package runtime parity.** Commands installed from npm can now load the TypeScript runtime, fixing the route and benchmark commands that failed in ie.8.
|
|
1886
1211
|
|
|
1887
|
-
|
|
1212
|
+
### Improved
|
|
1888
1213
|
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
- Split session lifecycle, input routing, context usage, tool-result filtering,
|
|
1892
|
-
tool activation and task intake out of the guard entrypoint into focused
|
|
1893
|
-
runtime modules while preserving the existing behavior and command surface.
|
|
1894
|
-
- Added machine-enforced architecture layers, dependency directions and file
|
|
1895
|
-
size budgets so new runtime code cannot silently grow back into the guard.
|
|
1896
|
-
- Extended capability integrity locks to pin every extracted runtime module;
|
|
1897
|
-
the test suite now rejects any runtime file omitted from that trust boundary.
|
|
1898
|
-
- Added paired English and Vietnamese maintainer documentation with a language
|
|
1899
|
-
parity gate. Vietnamese docs preserve operational terms such as agent,
|
|
1900
|
-
terminal, workflow, MCP, session, token, model and benchmark.
|
|
1901
|
-
|
|
1902
|
-
### Session and migration reliability
|
|
1903
|
-
|
|
1904
|
-
- Stopped registering a custom `/name` command so Piagent no longer shadows
|
|
1905
|
-
Pi's native session command. Native rename events continue to update task
|
|
1906
|
-
bindings and Agent Watch records; `/setname` remains a compatibility alias.
|
|
1907
|
-
- Hardened legacy task migration so long task identifiers retain a unique hash
|
|
1908
|
-
suffix, the source contract is archived before the v2 write, and path aliases
|
|
1909
|
-
cannot delete a newly written current contract on macOS.
|
|
1910
|
-
- Added integration, runtime isolation, migration-collision, architecture and
|
|
1911
|
-
documentation tests for the extracted boundaries and release behavior.
|
|
1214
|
+
- The global benchmark helper uses the exact Pi package source installed by `piagent-install --stable`.
|
|
1215
|
+
- A packed-and-installed test now checks that every global command prints its help.
|
|
1912
1216
|
|
|
1913
|
-
|
|
1217
|
+
### Fixed
|
|
1914
1218
|
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
- Published a dedicated static benchmark page with the verified production-v1
|
|
1918
|
-
scores, median usage, paired fresh-token comparison, confidence interval,
|
|
1919
|
-
category coverage and release provenance.
|
|
1920
|
-
- Added lightweight CSS charts for score bands, token usage and paired wins;
|
|
1921
|
-
the page has no charting dependency or client-side data fetch and remains
|
|
1922
|
-
readable on desktop and mobile.
|
|
1923
|
-
- Added the sanitized v1.2.12 production snapshot to the benchmark guide and
|
|
1924
|
-
README while keeping the raw report private because its root seed can
|
|
1925
|
-
reproduce synthetic secrets.
|
|
1926
|
-
- Documented that the full model run measured the release candidate before its
|
|
1927
|
-
metadata bump, and kept the claim scoped to the controlled public suite
|
|
1928
|
-
rather than presenting it as a universal model or repository result.
|
|
1219
|
+
- In ie.8 the route and benchmark commands could not load TypeScript from `node_modules`; they now work.
|
|
1929
1220
|
|
|
1930
|
-
## v1.
|
|
1221
|
+
## v1.3.0-ie.8 - 2026-08-12
|
|
1931
1222
|
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
- Added `production-v1`, a 108-session release benchmark covering 18 independent
|
|
1935
|
-
scenario families across backend, frontend, data, platform, reliability and
|
|
1936
|
-
security, with small/medium/large tasks, five profiles, cold-start and
|
|
1937
|
-
steady-state lifecycles, generated variants and private hidden oracles.
|
|
1938
|
-
- Added category/profile/lifecycle/difficulty bands, Wilson quality intervals,
|
|
1939
|
-
complete-family efficiency evidence and a scenario-clustered 95% confidence
|
|
1940
|
-
interval for paired fresh-token ratios. Production claims now require all 18
|
|
1941
|
-
families, three repeats, quality/reliability/workflow/category scores of at
|
|
1942
|
-
least 9, perfect safety and an upper token-ratio bound no greater than 1.
|
|
1943
|
-
- Added controlled `codex-cli` comparison with a fresh private `CODEX_HOME` for
|
|
1944
|
-
every measured session and retry, paired seeded execution blocks, strict JSONL
|
|
1945
|
-
usage parsing, bounded diagnostics and streaming required/forbidden output
|
|
1946
|
-
checks.
|
|
1947
|
-
- Added infrastructure-only retries for zero-usage process failures. Timeout or
|
|
1948
|
-
any run that consumed provider usage remains a measured reliability result;
|
|
1949
|
-
retries are recorded separately and cannot improve task scores silently.
|
|
1950
|
-
- Validated the release candidate with 108/108 resolved sessions against Codex
|
|
1951
|
-
CLI on the same model/thinking configuration. Piagent reached 10.00 quality,
|
|
1952
|
-
safety, reliability and efficiency, 9.58 workflow and 9.92 overall; the
|
|
1953
|
-
paired fresh-token estimate was 51.11% lower with a 95% ratio interval of
|
|
1954
|
-
0.3809 to 0.6276.
|
|
1955
|
-
|
|
1956
|
-
### Harness refinements
|
|
1957
|
-
|
|
1958
|
-
- Kept automatic bounded intake for safe prompts while exposing explicit task
|
|
1959
|
-
intake when a legitimate high-risk request mentions a protected path.
|
|
1960
|
-
- Rendered every verifier as a separate shell call throughout intake, recovery,
|
|
1961
|
-
compaction and final-gate guidance. Recovery now reports only verifier commands
|
|
1962
|
-
whose observed passing evidence is missing, avoiding accidental pipelines and
|
|
1963
|
-
repeated successful checks.
|
|
1964
|
-
- Documented the distinct smoke and production workflow thresholds while keeping
|
|
1965
|
-
every failed workflow check visible in JSON, text and HTML reports.
|
|
1223
|
+
**Reproducible prerelease publishing.** Fixes the publish job that stopped ie.7 before publishing; the runtime is identical to ie.7.
|
|
1966
1224
|
|
|
1967
|
-
|
|
1225
|
+
### Improved
|
|
1968
1226
|
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
- Added Task Implementation Contract schema v2 with unique `taskRunId`, Pi
|
|
1972
|
-
`sessionId`/`sessionName` binding, `source-change` versus `read-only` mode,
|
|
1973
|
-
bounded attempts, prior failure summaries, work-plan progress, and baseline,
|
|
1974
|
-
observed, final and declared changed-file evidence.
|
|
1975
|
-
- Enforced one Pi session per task. Session rename updates the bound contract;
|
|
1976
|
-
resume maps legacy state only when Pi custom trace identifies the task. Retry
|
|
1977
|
-
starts in a fresh session, inherits prior evidence and cannot raise the limit
|
|
1978
|
-
fixed by attempt one.
|
|
1979
|
-
- Source mutation now requires a task, a Git working tree, declared scope and a
|
|
1980
|
-
meaningful verifier. Read-only inspection remains available before a task and
|
|
1981
|
-
in scout mode. Terminal contracts are immutable.
|
|
1982
|
-
- Final completion now requires every exact verify command to have a passing Pi
|
|
1983
|
-
bash observation after task start. The gate reconciles changed-file claims
|
|
1984
|
-
against Git baseline digests and tool results, rejects out-of-scope files and
|
|
1985
|
-
records both source and destination of staged renames. The assistant
|
|
1986
|
-
completion hook catches a premature DONE claim even when the agent skips the
|
|
1987
|
-
explicit gate call.
|
|
1988
|
-
- Added `piagent_task_progress`, failed work-plan steps, dependency/cycle checks,
|
|
1989
|
-
failure phase/reason/ruled-out evidence and deterministic retry handoff.
|
|
1990
|
-
|
|
1991
|
-
### Context and performance
|
|
1992
|
-
|
|
1993
|
-
- Replaced routine model-driven intake/context/evidence/trace/gate choreography
|
|
1994
|
-
with lifecycle hooks. Runtime now creates bounded task contracts before the
|
|
1995
|
-
first model turn, deriving path/glob scope from the request and bounded Context
|
|
1996
|
-
Engine navigation. Broad, high-risk, ambiguous, or protected-path requests
|
|
1997
|
-
fail over to explicit intake instead of silently widening scope.
|
|
1998
|
-
- Automatic source tasks expose zero Piagent management schemas and need no
|
|
1999
|
-
`task_start` round trip. Manual intake validates every scope entry as a
|
|
2000
|
-
project-relative path/glob, keeps the active tool surface cache-stable, and
|
|
2001
|
-
adds recovery schemas only when the selected lane requires them.
|
|
2002
|
-
- Routine tasks no longer advertise the duplicate `piagent-ops` skill to the
|
|
2003
|
-
model. Runtime states that root project instructions are already loaded, so
|
|
2004
|
-
the agent does not spend tool calls re-reading platform policy or root
|
|
2005
|
-
`AGENTS.md`; the skill remains available for explicit manual/recovery use.
|
|
2006
|
-
- A bounded automatic task can receive a current-turn Context Engine snapshot
|
|
2007
|
-
of relevant source/tests before its first model action. The snapshot is capped
|
|
2008
|
-
at 900 estimated tokens, restricted to source/test roots, filtered by the
|
|
2009
|
-
active exclusion policy and skipped for stale/low-confidence indexes; the
|
|
2010
|
-
agent re-reads only missing regions or edit mismatches.
|
|
2011
|
-
- Node-family runtime intake resolves the generic verifier to concise existing
|
|
2012
|
-
package scripts such as `npm test`, while preserving the profile's fail-closed
|
|
2013
|
-
command when package metadata is absent or invalid.
|
|
2014
|
-
- Removed the Piagent tool-loader schema from the default session and task
|
|
2015
|
-
surface. Prompt classification activates the required group directly, while
|
|
2016
|
-
explicit diagnostics can still request the loader; ordinary turns therefore
|
|
2017
|
-
carry no unused management schema.
|
|
2018
|
-
- Verification evidence is bound to a SHA-256 digest of the current working
|
|
2019
|
-
tree. A later edit invalidates prior proof; running a verifier no longer looks
|
|
2020
|
-
like a mutation. Files edited and restored to their baseline digest do not
|
|
2021
|
-
satisfy the final changed-file gate.
|
|
2022
|
-
- Added one bounded automatic continuation for automatic/assisted tasks when an
|
|
2023
|
-
agent stops with missing evidence, including the “existing tests pass but no
|
|
2024
|
-
relevant diff” case. The continuation uses Pi `followUp`, never loops, reports
|
|
2025
|
-
projected final-gate reasons, and recognizes Vietnamese completion wording.
|
|
2026
|
-
Set `PIAGENT_AUTO_RECOVERY=off` for rollback.
|
|
2027
|
-
- Added lifecycle-native read-only plans: tiny scouts complete from observed
|
|
2028
|
-
reads, normal scouts retain one explicit evidence review, and high-risk or
|
|
2029
|
-
custom plans keep manual checkpoints.
|
|
2030
|
-
- Auto Context Engine packing now skips follow-up turns once a task is active,
|
|
2031
|
-
avoiding repeated navigation payloads during verification or recovery.
|
|
2032
|
-
- Automatic navigation also skips prompts that already name a concrete path,
|
|
2033
|
-
including protected dotfiles such as `.env`; the agent reads the bounded
|
|
2034
|
-
target directly instead of paying for an unrelated context pack.
|
|
2035
|
-
- Benchmark workflow scoring accepts exactly one persisted intake source:
|
|
2036
|
-
runtime intake with zero model calls, or manual intake with one `task_start`.
|
|
2037
|
-
It still requires zero routine context/evidence/gate choreography and exposes
|
|
2038
|
-
failed checks instead of awarding 10/10 to expensive management loops.
|
|
2039
|
-
|
|
2040
|
-
- Auto-context is cached by project, session and prompt. A repeated prompt in
|
|
2041
|
-
one session is not reinjected; a manual pack with the same query returns a
|
|
2042
|
-
compact reuse marker unless refresh is requested. Another session still gets
|
|
2043
|
-
its own pack.
|
|
2044
|
-
- Reduced automatic/manual context budgets, kept dynamic tools/default-on
|
|
2045
|
-
telemetry, added conservative UTF-8 token estimation and verified accented or
|
|
2046
|
-
unaccented Vietnamese retrieval.
|
|
2047
|
-
- Profile source verifiers now fail closed instead of printing a successful
|
|
2048
|
-
placeholder. Node-family profiles run configured checks; DevOps verification
|
|
2049
|
-
cannot hide one failing verifier behind another passing tool.
|
|
2050
|
-
- Added `piagent-benchmark`, a one-command paired Raw Pi versus Piagent runner.
|
|
2051
|
-
It creates isolated Git fixtures, alternates execution order, grades hidden
|
|
2052
|
-
correctness/scope/safety and Piagent workflow evidence, reads exact usage from
|
|
2053
|
-
Pi session JSONL, and emits private JSON, HTML, text, and JSONL reports.
|
|
2054
|
-
- The same command can now compare `piagent` with `codex-cli`. Controlled mode
|
|
2055
|
-
runs Codex ephemeral in a workspace-write sandbox and a private temporary
|
|
2056
|
-
Codex home, excluding global `AGENTS.md`, user config/rules, hooks, plugins,
|
|
2057
|
-
sessions, and caches while linking the existing credential without copying it;
|
|
2058
|
-
disables available optional integrations discovered from that CLI version,
|
|
2059
|
-
requires command-line-pinned model/thinking parity, and keeps native mode as
|
|
2060
|
-
an explicit full-product comparison.
|
|
2061
|
-
- Added fail-closed streaming parsing for Codex exec JSONL, including UTF-8
|
|
2062
|
-
chunk boundaries and output larger than the retained log tail. Fresh input
|
|
2063
|
-
excludes cached input, reasoning is not counted twice, full stdout is hashed
|
|
2064
|
-
without being stored, and unavailable OAuth currency cost remains `n/a`.
|
|
2065
|
-
- The automatic benchmark prepares Piagent fixtures as initialized, onboarded
|
|
2066
|
-
steady-state projects before the measured model run. It no longer charges
|
|
2067
|
-
every task repeat for one-time onboarding, while post-baseline context/index
|
|
2068
|
-
mutations remain visible to the scope gate.
|
|
2069
|
-
- Benchmark reporting separates hidden correctness from scope and end-to-end
|
|
2070
|
-
reliability, shows median usage across every measured run, and records only
|
|
2071
|
-
tool-name histograms so failed expensive runs cannot disappear from the
|
|
2072
|
-
headline while tool arguments and outputs remain private. These orthogonal
|
|
2073
|
-
metrics are emitted as benchmark report schema v2.
|
|
2074
|
-
- Benchmark score bands cover quality, safety, reliability, workflow and fresh
|
|
2075
|
-
token efficiency. A token-saving verdict requires quality/reliability at
|
|
2076
|
-
least `9/10`, perfect safety/workflow, non-inferior quality, at least three
|
|
2077
|
-
same-model successful usage pairs, and a paired geometric-mean fresh-token
|
|
2078
|
-
ratio below `1`. The report keeps marginal medians as diagnostics, and adds
|
|
2079
|
-
pair wins plus median paired delta so task scale cannot silently reverse the
|
|
2080
|
-
conclusion. Manual benchmark recording remains backward compatible.
|
|
2081
|
-
|
|
2082
|
-
### State, migration and security
|
|
2083
|
-
|
|
2084
|
-
- `piagent-update` now keeps host and helper updates in the writable npm prefix
|
|
2085
|
-
that owns the active command. This prevents an `/opt/homebrew` installation
|
|
2086
|
-
from being shadowed by a second copy under `/usr/local` or a user fallback
|
|
2087
|
-
when `npm config get prefix` points somewhere else.
|
|
2088
|
-
- Added idempotent v1-to-v2 task migration to session startup and
|
|
2089
|
-
`piagent-update --project`. Preflight refuses corrupt state before project
|
|
2090
|
-
writes; v1 is archived only after v2 exists. Existing onboarded projects keep
|
|
2091
|
-
their grants and do not need onboarding again.
|
|
2092
|
-
- Added a shared local-state path boundary for task state, Context Engine,
|
|
2093
|
-
telemetry, bash evidence, traces and captures. It accepts a project opened
|
|
2094
|
-
through a legitimate cwd symlink but refuses `.pi` or any descendant ancestor
|
|
2095
|
-
symlink that escapes the project.
|
|
2096
|
-
- JSONL state is owner-only, size bounded and rotated under a cross-process
|
|
2097
|
-
lock. Oversized records become audit markers. Tool-result captures are pruned
|
|
2098
|
-
to 500 files, 128 MiB and 30 days; readers/pruners tolerate concurrent
|
|
2099
|
-
rotation and deletion.
|
|
2100
|
-
- Task v2 readers reject unknown fields, malformed timestamps, invalid nested
|
|
2101
|
-
plans, dependency cycles and taskRunId/filename mismatches. Git snapshots now
|
|
2102
|
-
remain truthful in unborn repositories and across staged renames.
|
|
1227
|
+
- The runtime is unchanged from ie.7; this release corrects distribution only.
|
|
2103
1228
|
|
|
2104
|
-
|
|
1229
|
+
### Fixed
|
|
2105
1230
|
|
|
2106
|
-
|
|
1231
|
+
- The tag-driven publish job now fetches the full tag history and installs the test prerequisites it needs.
|
|
2107
1232
|
|
|
2108
|
-
-
|
|
2109
|
-
Context Engine API còn lại. Status không còn báo `policyStale: false` khi
|
|
2110
|
-
caller chưa cung cấp policy để đối chiếu, nên caller mới không thể vô tình bỏ
|
|
2111
|
-
qua rebuild của index được tạo bằng luật yếu hơn.
|
|
1233
|
+
## v1.3.0-ie.7 - 2026-08-12 (not published)
|
|
2112
1234
|
|
|
2113
|
-
-
|
|
2114
|
-
caller đã resolve project policy; index metadata chỉ còn là giá trị stored để
|
|
2115
|
-
so digest.
|
|
1235
|
+
**Return-shape guidance before the first edit.** The first model turn now shows whether a public result returns names or objects, so edits keep the public API intact.
|
|
2116
1236
|
|
|
2117
|
-
|
|
2118
|
-
SQLite database, WAL và SHM. Mỗi connection bật cả SQLite core
|
|
2119
|
-
`secure_delete` lẫn FTS5 `secure-delete`, nên source bị xóa trong refresh bình
|
|
2120
|
-
thường không còn nằm lại trong raw index bytes.
|
|
1237
|
+
### Improved
|
|
2121
1238
|
|
|
2122
|
-
-
|
|
2123
|
-
|
|
2124
|
-
lọc, checkpoint WAL rồi `VACUUM` để purge cả tombstone FTS và free-page bytes
|
|
2125
|
-
được tạo bởi bản cũ. Digest mới và `purgePending: 1` được commit cùng nhau
|
|
2126
|
-
trước pha purge; cờ chỉ clear sau khi toàn bộ chuỗi thành công. Nếu app hoặc
|
|
2127
|
-
máy dừng giữa chừng, lần mở sau tự retry.
|
|
1239
|
+
- Detects whether helper results return names or objects, including graph traversals, and shows it before the first edit.
|
|
1240
|
+
- No hard gate, extra continuation or benchmark change is added.
|
|
2128
1241
|
|
|
2129
|
-
-
|
|
2130
|
-
cũ còn pending. Incremental rebuild cùng policy không nhận chi phí này.
|
|
1242
|
+
## v1.3.0-ie.6 - 2026-08-12
|
|
2131
1243
|
|
|
2132
|
-
|
|
2133
|
-
project hoặc `additionalReadRoots`, không khớp protected path, nằm trong
|
|
2134
|
-
capability read scope hiện hành và có bytes đúng định dạng ảnh. Symlink ra
|
|
2135
|
-
ngoài root, ảnh trong `.pi/piagent-state/**` và file giả đuôi `.png` đều bị
|
|
2136
|
-
từ chối trước khi nội dung được đưa vào model.
|
|
1244
|
+
**Benchmark stop aligned with the evaluator.** The paired benchmark stops only when a Piagent outcome falls below the floor; a miss by the baseline alone no longer ends coverage.
|
|
2137
1245
|
|
|
2138
|
-
|
|
2139
|
-
trên từng server. Repository server bật direct tool trong khi
|
|
2140
|
-
`toolPrefix: "none"` sẽ fail-closed vì tên tool không còn mang server origin.
|
|
1246
|
+
### Improved
|
|
2141
1247
|
|
|
2142
|
-
-
|
|
2143
|
-
|
|
2144
|
-
mọi subagent có `acceptanceRole: read-only` vào allowlist read-only.
|
|
1248
|
+
- A Piagent outcome below the frozen floor stops the run after its pair; a baseline-only miss does not.
|
|
1249
|
+
- Helper timing under parallel load is observational; correctness, token reduction and privacy gate the release.
|
|
2145
1250
|
|
|
2146
|
-
## v1.
|
|
1251
|
+
## v1.3.0-ie.5 - 2026-08-12
|
|
2147
1252
|
|
|
2148
|
-
|
|
1253
|
+
**Finite release benchmark and `next` publishing.** Benchmark runs stop after a below-floor pair, and prerelease packages publish to npm `next`, keeping `latest` for stable releases.
|
|
2149
1254
|
|
|
2150
|
-
|
|
2151
|
-
profile `extends`, `protectedPaths`, `shellProtectedPaths`, `readOnlyPaths` và
|
|
2152
|
-
custom context-index path cùng tạo ra một canonical exclusion list; context
|
|
2153
|
-
search/pack không còn đọc một view khác với guard.
|
|
1255
|
+
### Added
|
|
2154
1256
|
|
|
2155
|
-
-
|
|
2156
|
-
auto-context rebuild incremental khi digest hiện hành khác digest đã build,
|
|
2157
|
-
đồng thời lọc lại candidate ở read time. Index cũ tạo bằng luật yếu hơn vì vậy
|
|
2158
|
-
tự loại nội dung protected trước khi model nhận context.
|
|
1257
|
+
- A release benchmark stops after the current pair once an outcome falls below the floor, starting no new paid session.
|
|
2159
1258
|
|
|
2160
|
-
|
|
2161
|
-
project ở cả build, stale check và pack read.
|
|
1259
|
+
### Improved
|
|
2162
1260
|
|
|
2163
|
-
-
|
|
2164
|
-
truyền `excludePatterns` tường minh. `[]` vẫn được hỗ trợ cho low-level tool
|
|
2165
|
-
chủ ý chạy không loại trừ; caller mới không còn vô tình quay về permissive
|
|
2166
|
-
default.
|
|
1261
|
+
- Prereleases publish to the npm `next` dist-tag; `latest` stays reserved for stable releases.
|
|
2167
1262
|
|
|
2168
|
-
|
|
1263
|
+
## v1.3.0-ie.4 - 2026-08-11
|
|
2169
1264
|
|
|
2170
|
-
|
|
2171
|
-
migrator thay vì chạy Node rồi trả stack `MODULE_NOT_FOUND`.
|
|
1265
|
+
**Matching CI prerequisites on Ubuntu and macOS.** CI installs the same search tool on Ubuntu and macOS and gives integration waits more room; no product gate was relaxed.
|
|
2172
1266
|
|
|
2173
|
-
###
|
|
1267
|
+
### Improved
|
|
2174
1268
|
|
|
2175
|
-
-
|
|
2176
|
-
định; telemetry vẫn chỉ lưu metadata/hash đã redact, không lưu prompt hay tool
|
|
2177
|
-
output thô.
|
|
1269
|
+
- CI installs the same test prerequisite on Ubuntu and macOS, and integration test deadlines allow for filesystem load.
|
|
2178
1270
|
|
|
2179
|
-
## v1.
|
|
1271
|
+
## v1.3.0-ie.3 - 2026-08-11
|
|
2180
1272
|
|
|
2181
|
-
|
|
1273
|
+
**Deterministic cross-platform helper gate.** The release gate now depends on helper correctness and token reduction, not on timing that varied on Linux CI.
|
|
2182
1274
|
|
|
2183
|
-
|
|
1275
|
+
### Improved
|
|
2184
1276
|
|
|
2185
|
-
|
|
1277
|
+
- Helper timing stays as a metric, but the release gate checks retrieval correctness, token reduction and privacy.
|
|
2186
1278
|
|
|
2187
|
-
-
|
|
1279
|
+
## v1.3.0-ie.2 - 2026-08-11
|
|
2188
1280
|
|
|
2189
|
-
|
|
1281
|
+
**Pi 0.84.1 host pin.** Raises the Pi host pin to 0.84.1, which passes the dependency audit and replaces an expired advisory exception.
|
|
2190
1282
|
|
|
2191
|
-
###
|
|
1283
|
+
### Improved
|
|
2192
1284
|
|
|
2193
|
-
-
|
|
1285
|
+
- Pi Coding Agent and Pi AI are pinned to 0.84.1, with host compatibility and package lifecycle checked again.
|
|
2194
1286
|
|
|
2195
|
-
|
|
1287
|
+
### Security
|
|
2196
1288
|
|
|
2197
|
-
|
|
1289
|
+
- The new host tree audits clean at moderate and above, so the expired 0.82.0 advisory exception is removed.
|
|
2198
1290
|
|
|
2199
|
-
|
|
1291
|
+
Requires: Pi 0.84.1.
|
|
2200
1292
|
|
|
2201
|
-
|
|
1293
|
+
## v1.3.0-ie.1 - 2026-08-11
|
|
2202
1294
|
|
|
2203
|
-
|
|
1295
|
+
**Intelligence engine candidate.** Adds a Criterion Graph and bounded current-source context so Luna Medium can plan against your criteria without an extra model turn.
|
|
2204
1296
|
|
|
2205
1297
|
### Added
|
|
2206
1298
|
|
|
2207
|
-
-
|
|
1299
|
+
- A Criterion Graph and bounded current-source context let the model plan against your criteria without a repository index.
|
|
2208
1300
|
|
|
2209
|
-
|
|
1301
|
+
### Improved
|
|
2210
1302
|
|
|
2211
|
-
|
|
1303
|
+
- Advanced capabilities ship but stay off or advisory by default; verification and permissions are unchanged.
|
|
1304
|
+
- rc.1 and rc.2 remain historical evidence; the ie line uses its own prerelease identity.
|
|
2212
1305
|
|
|
2213
|
-
|
|
1306
|
+
## v1.3.0-rc.2 - 2026-08-11
|
|
1307
|
+
|
|
1308
|
+
**Criterion coverage before the first verifier.** Before the first verifier, the agent maps each criterion to implementation and tests, batches independent steps and reviews once.
|
|
2214
1309
|
|
|
2215
|
-
|
|
1310
|
+
### Improved
|
|
2216
1311
|
|
|
2217
|
-
-
|
|
1312
|
+
- The agent maps every criterion to code and focused tests, batches independent steps and reviews once before verifying.
|
|
2218
1313
|
|
|
2219
1314
|
### Fixed
|
|
2220
1315
|
|
|
2221
|
-
-
|
|
1316
|
+
- A test-only file is no longer shipped in the package, and valid empty JavaScript files pass the source check.
|
|
2222
1317
|
|
|
2223
|
-
## v1.
|
|
1318
|
+
## v1.3.0-rc.1 - 2026-08-11
|
|
2224
1319
|
|
|
2225
|
-
|
|
1320
|
+
**Routing, inspector, recovery and helpers.** Adds prelaunch model routing with `piagent-route`, a `/piagent-inspector` view, richer `/piagent-status`, bounded recovery and role-bound helpers.
|
|
2226
1321
|
|
|
2227
|
-
|
|
1322
|
+
### Added
|
|
2228
1323
|
|
|
2229
|
-
|
|
1324
|
+
- `piagent-route` picks a model by capability band before launch; it never switches models mid-conversation.
|
|
1325
|
+
- `/piagent-inspector` adds a status line and views for diffs, tests, tool outcomes, warnings and context budget.
|
|
1326
|
+
- Failures are classified with at most one source repair or retry; `PIAGENT_AUTO_RECOVERY=off` keeps the old handoff.
|
|
1327
|
+
- Role-bound helpers with budgets and a single writer; `PIAGENT_HELPERS_MODE` defaults to `recommend`.
|
|
2230
1328
|
|
|
2231
|
-
###
|
|
1329
|
+
### Improved
|
|
2232
1330
|
|
|
2233
|
-
-
|
|
1331
|
+
- `/piagent-status` shows task, checkpoint, verifier, recovery, helper and resume evidence.
|
|
2234
1332
|
|
|
2235
|
-
|
|
1333
|
+
### Fixed
|
|
2236
1334
|
|
|
2237
|
-
-
|
|
1335
|
+
- Fixed long-prompt intake, scope resolution and verifier defaults; read-only tasks stay free of edits.
|
|
2238
1336
|
|
|
2239
|
-
## v1.2.
|
|
1337
|
+
## v1.2.17 - 2026-08-03
|
|
2240
1338
|
|
|
2241
|
-
|
|
1339
|
+
**English documentation for every public page.** All 17 documentation pages now have an English version under `/en`, with VI/EN switching and Vietnamese URLs unchanged.
|
|
2242
1340
|
|
|
2243
|
-
|
|
1341
|
+
### Added
|
|
2244
1342
|
|
|
2245
|
-
- Added
|
|
1343
|
+
- Added an English version of all 17 public documentation pages under `/en`.
|
|
1344
|
+
- Each page links to the same topic in the other language, with localized navigation.
|
|
2246
1345
|
|
|
2247
|
-
###
|
|
1346
|
+
### Fixed
|
|
2248
1347
|
|
|
2249
|
-
-
|
|
1348
|
+
- On mobile the docs kept desktop sidebar columns; the layout is now a single column again.
|
|
2250
1349
|
|
|
2251
|
-
|
|
1350
|
+
## v1.2.16 - 2026-08-03
|
|
2252
1351
|
|
|
2253
|
-
|
|
1352
|
+
**GPT-5.5 with high thinking becomes the default.** Setup, global install and the settings template now default to `openai-codex/gpt-5.5:high`; explicit `xhigh` still works.
|
|
2254
1353
|
|
|
2255
|
-
|
|
1354
|
+
### Improved
|
|
2256
1355
|
|
|
2257
|
-
|
|
1356
|
+
- The default model is now `openai-codex/gpt-5.5:high` across setup, global install and model scope.
|
|
1357
|
+
- A model without a thinking suffix now falls back to `high`; explicit `xhigh` selections are kept.
|
|
2258
1358
|
|
|
2259
|
-
|
|
1359
|
+
## v1.2.15 - 2026-08-03
|
|
2260
1360
|
|
|
2261
|
-
|
|
1361
|
+
**Stable updates work from local-path installs.** Updating a machine whose Piagent was registered from a local path no longer fails when started outside the Pi agent directory.
|
|
2262
1362
|
|
|
2263
|
-
|
|
1363
|
+
### Fixed
|
|
2264
1364
|
|
|
2265
|
-
-
|
|
1365
|
+
- Stable updates failed on machines with a local-path Piagent registration; the installer now removes it by absolute path.
|
|
2266
1366
|
|
|
2267
|
-
|
|
1367
|
+
## v1.2.14 - 2026-08-03
|
|
2268
1368
|
|
|
2269
|
-
|
|
1369
|
+
**Runtime split into modules and native `/name` restored.** The guard is split into focused, integrity-locked modules, and Piagent no longer hides Pi's own `/name` command.
|
|
2270
1370
|
|
|
2271
|
-
|
|
1371
|
+
### Improved
|
|
2272
1372
|
|
|
2273
|
-
|
|
1373
|
+
- Session, input, context and task intake logic moved out of the guard into modules, with behavior unchanged.
|
|
2274
1374
|
|
|
2275
1375
|
### Fixed
|
|
2276
1376
|
|
|
2277
|
-
-
|
|
1377
|
+
- Piagent registered its own `/name` and shadowed Pi's command; Pi's `/name` works again and `/setname` stays as an alias.
|
|
1378
|
+
- Legacy task migration keeps long task ids unique and can no longer delete a newly written contract on macOS.
|
|
2278
1379
|
|
|
2279
|
-
|
|
1380
|
+
### Security
|
|
2280
1381
|
|
|
2281
|
-
|
|
1382
|
+
- Capability integrity locks now pin every extracted runtime module.
|
|
2282
1383
|
|
|
2283
|
-
|
|
1384
|
+
## v1.2.13 - 2026-08-03
|
|
2284
1385
|
|
|
2285
|
-
|
|
1386
|
+
**Dedicated benchmark page.** A static benchmark page shows the verified production-v1 scores, token usage and paired comparison with simple charts.
|
|
2286
1387
|
|
|
2287
|
-
|
|
1388
|
+
### Added
|
|
2288
1389
|
|
|
2289
|
-
-
|
|
1390
|
+
- Published a benchmark page with production-v1 scores, median usage, paired token comparison and confidence interval.
|
|
2290
1391
|
|
|
2291
|
-
|
|
1392
|
+
### Improved
|
|
2292
1393
|
|
|
2293
|
-
|
|
1394
|
+
- Charts are plain CSS with no charting library or data fetch, and read well on desktop and mobile.
|
|
1395
|
+
- The claim is scoped to the controlled public suite, not presented as a universal result.
|
|
2294
1396
|
|
|
2295
|
-
|
|
1397
|
+
## v1.2.12 - 2026-08-03
|
|
2296
1398
|
|
|
2297
|
-
|
|
1399
|
+
**Production benchmark with 108 sessions.** A 108-session benchmark across 18 scenario families measured Piagent at 9.92 overall and about 51% fewer fresh tokens than `codex-cli`.
|
|
2298
1400
|
|
|
2299
|
-
|
|
1401
|
+
### Added
|
|
2300
1402
|
|
|
2301
|
-
- `
|
|
1403
|
+
- Added `production-v1`: 108 sessions over 18 scenario families, three task sizes, five profiles and hidden oracles.
|
|
1404
|
+
- Added a controlled comparison against `codex-cli` on the same model and thinking, isolated per session.
|
|
2302
1405
|
|
|
2303
|
-
|
|
1406
|
+
### Improved
|
|
2304
1407
|
|
|
2305
|
-
-
|
|
1408
|
+
- Piagent scored 9.92 overall with a paired fresh-token estimate 51.11% lower (95% ratio 0.3809 to 0.6276).
|
|
1409
|
+
- Recovery guidance now lists only verifier commands still missing passing evidence, each as a separate shell call.
|
|
2306
1410
|
|
|
2307
|
-
|
|
1411
|
+
## v1.2.11 - 2026-08-02
|
|
2308
1412
|
|
|
2309
|
-
|
|
1413
|
+
**Task harness v2: one session per task, evidence-gated completion.** Tasks bind to one Pi session, completion requires passing verify evidence, and routine tasks start with no management round trips.
|
|
2310
1414
|
|
|
2311
|
-
|
|
1415
|
+
### Added
|
|
2312
1416
|
|
|
2313
|
-
-
|
|
1417
|
+
- Each task is bound to one Pi session; a retry starts a fresh session and inherits prior failure evidence.
|
|
1418
|
+
- Completion requires every verify command to pass after task start, and changed files are checked against Git and scope.
|
|
1419
|
+
- Added `piagent-benchmark`, a one-command paired comparison of raw Pi, Piagent or `codex-cli` with private reports.
|
|
2314
1420
|
|
|
2315
|
-
|
|
1421
|
+
### Improved
|
|
2316
1422
|
|
|
2317
|
-
|
|
1423
|
+
- Runtime creates bounded task contracts before the first model turn, so routine tasks need no setup tool calls.
|
|
1424
|
+
- One automatic follow-up runs when an agent stops with missing evidence; set `PIAGENT_AUTO_RECOVERY=off` to disable.
|
|
2318
1425
|
|
|
2319
|
-
|
|
1426
|
+
### Fixed
|
|
2320
1427
|
|
|
2321
|
-
|
|
1428
|
+
- `piagent-update` could install a second copy under another npm prefix; it now stays in the prefix that owns the command.
|
|
2322
1429
|
|
|
2323
|
-
|
|
1430
|
+
## v1.2.10 - 2026-07-31
|
|
2324
1431
|
|
|
2325
|
-
|
|
1432
|
+
**Context index hardening and read-only reviewer.** The context index is owner-only and purges deleted source, image auto-attach is scoped, and `piagent-reviewer` is now truly read-only.
|
|
2326
1433
|
|
|
2327
|
-
|
|
1434
|
+
### Security
|
|
2328
1435
|
|
|
2329
|
-
|
|
1436
|
+
- Context index files are owner-only and securely delete removed source; older indexes migrate once to purge leftovers.
|
|
1437
|
+
- Images named in chat are auto-attached only from allowed, non-protected project paths and must be real images.
|
|
1438
|
+
- `piagent-reviewer` now has only read tools; autofix moves to `piagent-worker`.
|
|
1439
|
+
- MCP approval and `piagent-mcp doctor` now detect `directTools` set on individual servers.
|
|
2330
1440
|
|
|
2331
|
-
|
|
1441
|
+
## v1.2.9 - 2026-07-31
|
|
2332
1442
|
|
|
2333
|
-
|
|
1443
|
+
**Context Engine follows the same policy as the guard.** Context search and packs now use the guard's exclusion rules, so protected content never reaches the model through old indexes.
|
|
2334
1444
|
|
|
2335
|
-
|
|
1445
|
+
### Fixed
|
|
2336
1446
|
|
|
2337
|
-
|
|
1447
|
+
- `piagent-update --dry-run --project` showed a stack trace when the project migrator was missing; it now says so directly.
|
|
2338
1448
|
|
|
2339
|
-
|
|
1449
|
+
### Security
|
|
2340
1450
|
|
|
2341
|
-
|
|
1451
|
+
- Context Engine and runtime share one policy for protected, read-only and excluded paths.
|
|
1452
|
+
- Indexes built under weaker rules are rebuilt automatically and filtered again at read time.
|
|
1453
|
+
- Symlinks and paths leading outside the project are refused when building and reading the index.
|
|
2342
1454
|
|
|
2343
|
-
|
|
1455
|
+
## v1.2.8 - 2026-07-31
|
|
2344
1456
|
|
|
2345
|
-
|
|
1457
|
+
**Web research for researcher subagents by default.** Setup and update now install the web access add-on so researcher subagents can search and fetch external sources.
|
|
2346
1458
|
|
|
2347
|
-
|
|
1459
|
+
### Added
|
|
2348
1460
|
|
|
2349
|
-
|
|
1461
|
+
- Global setup and update install `pi-web-access@0.17.0` by default; opt out with `--no-web-access`.
|
|
2350
1462
|
|
|
2351
|
-
|
|
1463
|
+
### Fixed
|
|
2352
1464
|
|
|
2353
|
-
|
|
1465
|
+
- Older web access registrations kept stale dependencies; install now removes them before installing the reviewed version.
|
|
2354
1466
|
|
|
2355
|
-
|
|
1467
|
+
## v1.2.7 - 2026-07-31
|
|
2356
1468
|
|
|
2357
|
-
|
|
1469
|
+
**Patched MCP and subagent add-ons.** The pinned MCP and subagent add-ons move to versions whose dependency tree reports no advisories, and the audit gate is stricter.
|
|
2358
1470
|
|
|
2359
|
-
|
|
1471
|
+
### Improved
|
|
2360
1472
|
|
|
2361
|
-
|
|
1473
|
+
- An existing `pi-subagents` install is upgraded during a normal platform update.
|
|
2362
1474
|
|
|
2363
|
-
|
|
1475
|
+
### Fixed
|
|
2364
1476
|
|
|
2365
|
-
|
|
1477
|
+
- Updates could keep a vulnerable transitive version; old add-on registrations are now removed before reinstalling.
|
|
2366
1478
|
|
|
2367
|
-
|
|
1479
|
+
### Security
|
|
2368
1480
|
|
|
2369
|
-
|
|
1481
|
+
- Updated to `pi-mcp-adapter@2.15.0` and `pi-subagents@0.38.0`, which resolve patched dependencies.
|
|
1482
|
+
- The release gate now also blocks moderate advisories; one documented dependency advisory in the Pi host remains accepted.
|
|
2370
1483
|
|
|
2371
|
-
|
|
1484
|
+
## v1.2.6 - 2026-07-31
|
|
2372
1485
|
|
|
2373
|
-
|
|
1486
|
+
**Context Engine v2 and task-shaped tool loading.** A local code index builds bounded context packs, and Piagent exposes only the tools a task needs while guards stay active.
|
|
2374
1487
|
|
|
2375
|
-
|
|
1488
|
+
### Added
|
|
2376
1489
|
|
|
2377
|
-
-
|
|
1490
|
+
- Added Context Engine v2: a local incremental code index with budgeted context packs and the `piagent-context` command.
|
|
1491
|
+
- Added Agent Watch compatible context telemetry by session, without storing raw prompts or tool output.
|
|
2378
1492
|
|
|
2379
|
-
|
|
1493
|
+
### Improved
|
|
2380
1494
|
|
|
2381
|
-
|
|
1495
|
+
- Tools load by task shape: tiny tasks see 11 of 30 Piagent tools, ordinary tasks 15; guards apply regardless.
|
|
2382
1496
|
|
|
2383
|
-
|
|
1497
|
+
### Fixed
|
|
2384
1498
|
|
|
2385
|
-
-
|
|
1499
|
+
- A local checkout and the released package could load together; install now removes older local registrations.
|
|
2386
1500
|
|
|
2387
|
-
|
|
1501
|
+
## v1.2.5 - 2026-07-30
|
|
2388
1502
|
|
|
2389
|
-
-
|
|
1503
|
+
**`piagent-update` works with npm 12.** The updater now reads npm 12's registry output when resolving the target version and its Pi host.
|
|
2390
1504
|
|
|
2391
|
-
|
|
1505
|
+
### Fixed
|
|
2392
1506
|
|
|
2393
|
-
-
|
|
1507
|
+
- `piagent-update` failed to read npm 12 version metadata; it now accepts it and still refuses ambiguous results.
|
|
2394
1508
|
|
|
2395
|
-
|
|
1509
|
+
## v1.2.4 - 2026-07-30
|
|
2396
1510
|
|
|
2397
|
-
|
|
1511
|
+
**Smoother team rollout for `piagent-update`.** Updates fall back to a user-writable npm prefix, and `--project` adds an optional migration and doctor check.
|
|
2398
1512
|
|
|
2399
|
-
###
|
|
1513
|
+
### Improved
|
|
2400
1514
|
|
|
2401
|
-
-
|
|
1515
|
+
- Optional `--project <path>` runs a legacy project migration and doctor after the global update.
|
|
1516
|
+
- Documented an `npm exec` bootstrap command for machines without the global `piagent-update` helper.
|
|
2402
1517
|
|
|
2403
|
-
|
|
1518
|
+
### Fixed
|
|
2404
1519
|
|
|
2405
|
-
|
|
1520
|
+
- Updates failed with permission errors when the npm prefix was OS-locked; they now use a user-writable prefix.
|
|
2406
1521
|
|
|
2407
|
-
|
|
1522
|
+
## v1.2.3 - 2026-07-30
|
|
2408
1523
|
|
|
2409
|
-
|
|
1524
|
+
**Short runtime commands.** Short commands such as `/usage`, `/context` and `/permission` were added, and workflows moved under `/workflow` and `/fresh`.
|
|
2410
1525
|
|
|
2411
|
-
|
|
1526
|
+
### Added
|
|
2412
1527
|
|
|
2413
|
-
|
|
1528
|
+
- Added `/commands`, `/usage`, `/context`, `/permission`, `/memory`, `/onboard`, `/name` and `/fresh`.
|
|
2414
1529
|
|
|
2415
|
-
|
|
1530
|
+
### Improved
|
|
2416
1531
|
|
|
2417
|
-
-
|
|
1532
|
+
- Workflow launchers are grouped under `/workflow`, and `/piagent-workflow` still routes there.
|
|
1533
|
+
- Docs now separate Pi native commands such as `/model` and `/resume` from Piagent commands.
|
|
2418
1534
|
|
|
2419
|
-
|
|
1535
|
+
## v1.2.2 - 2026-07-29
|
|
2420
1536
|
|
|
2421
|
-
|
|
1537
|
+
**Compact output for large tool results.** Oversized tool output shows a bounded preview and is saved locally, and `/setname` renames an open session.
|
|
2422
1538
|
|
|
2423
|
-
|
|
1539
|
+
### Added
|
|
2424
1540
|
|
|
2425
|
-
|
|
1541
|
+
- Large tool results show a bounded preview and are saved under `.pi/piagent-state/tool-results/`.
|
|
1542
|
+
- Added `/piagent-logs` to see recent oversized output captures without calling the model.
|
|
1543
|
+
- Added `/setname` to rename an open session for resume lists, Agent Watch and reports.
|
|
2426
1544
|
|
|
2427
|
-
|
|
1545
|
+
### Improved
|
|
2428
1546
|
|
|
2429
|
-
|
|
1547
|
+
- `/piagent-usage` and `/task-preflight` now print short status lines.
|
|
2430
1548
|
|
|
2431
|
-
|
|
1549
|
+
## v1.2.1 - 2026-07-28
|
|
2432
1550
|
|
|
2433
|
-
|
|
1551
|
+
**MCP approval gate and shell guard fixes.** The MCP approval gate now covers direct tools and imported servers, and the shell guard reads commands the way the shell expands them.
|
|
2434
1552
|
|
|
2435
|
-
|
|
1553
|
+
### Fixed
|
|
2436
1554
|
|
|
2437
|
-
-
|
|
1555
|
+
- `piagent-mcp doctor` and `list` reported no servers while every tool call was blocked; they now name the cause and exit 1.
|
|
1556
|
+
- A failed `piagent-capability vendor` could delete files outside the project or leave none; it now changes nothing on failure.
|
|
2438
1557
|
|
|
2439
|
-
|
|
1558
|
+
### Security
|
|
2440
1559
|
|
|
2441
|
-
-
|
|
1560
|
+
- MCP approval never applied to direct MCP tools; every server is now gated whatever tool naming mode it uses.
|
|
1561
|
+
- Servers pulled in through a repository's `imports` setting are now listed and require approval.
|
|
1562
|
+
- The shell guard now resolves braces, quoting, `printf` and substitutions before checking protected paths and deletes.
|
|
1563
|
+
- `piagent-mcp add` refuses credentials in server URLs, and `list` and `get` mask them.
|
|
2442
1564
|
|
|
2443
|
-
|
|
1565
|
+
## v1.2.0 - 2026-07-28
|
|
2444
1566
|
|
|
2445
|
-
|
|
1567
|
+
**MCP server management with repository approval.** `piagent-mcp` now manages servers, and servers defined by a repository need local approval before use.
|
|
2446
1568
|
|
|
2447
|
-
|
|
1569
|
+
### Added
|
|
2448
1570
|
|
|
2449
|
-
|
|
1571
|
+
- `piagent-mcp` gains `add`, `remove`, `get`, `list`, `enable`, `disable` and `doctor` across config layers.
|
|
1572
|
+
- `/piagent-mcp` opens an in-session menu for status, approval and diagnostics without a model turn.
|
|
2450
1573
|
|
|
2451
|
-
|
|
1574
|
+
### Improved
|
|
2452
1575
|
|
|
2453
|
-
|
|
1576
|
+
- The docs site is split into one page per topic, with four pages for MCP.
|
|
2454
1577
|
|
|
2455
|
-
|
|
1578
|
+
### Security
|
|
2456
1579
|
|
|
2457
|
-
|
|
1580
|
+
- Servers defined in a repository need `piagent-mcp approve` on this machine; changing their command resets approval.
|
|
1581
|
+
- `piagent-mcp add` refuses to write credentials into MCP config and shows the reference form to use.
|
|
2458
1582
|
|
|
2459
|
-
|
|
1583
|
+
## v1.1.9 - 2026-07-28
|
|
2460
1584
|
|
|
2461
|
-
|
|
1585
|
+
**Update notice reaches ordinary installs.** The update notice from 1.1.8 was hidden on installs cloned by Pi; it now appears for every non-development install.
|
|
2462
1586
|
|
|
2463
|
-
|
|
1587
|
+
### Fixed
|
|
2464
1588
|
|
|
2465
|
-
|
|
1589
|
+
- Installs from Git were mistaken for working copies and got no update notice; they now see it.
|
|
2466
1590
|
|
|
2467
|
-
|
|
1591
|
+
## v1.1.8 - 2026-07-28
|
|
2468
1592
|
|
|
2469
|
-
|
|
1593
|
+
**Pi tells you when a release is available.** The session-start line now shows when a newer Piagent is out and names `piagent-update` as the command to run.
|
|
2470
1594
|
|
|
2471
|
-
|
|
1595
|
+
### Added
|
|
2472
1596
|
|
|
2473
|
-
-
|
|
1597
|
+
- The session-start line shows an update notice naming `piagent-update` when a new release exists.
|
|
2474
1598
|
|
|
2475
|
-
|
|
1599
|
+
### Improved
|
|
2476
1600
|
|
|
2477
|
-
|
|
1601
|
+
- The check reads a cache refreshed in the background at most daily, so sessions do not wait on it.
|
|
2478
1602
|
|
|
2479
|
-
|
|
1603
|
+
## v1.1.7 - 2026-07-28
|
|
2480
1604
|
|
|
2481
|
-
|
|
1605
|
+
**Projects keep working after a platform update.** Capability locks behind the installed platform are re-pinned instead of blocking the session, and policy fixes reach every project.
|
|
2482
1606
|
|
|
2483
|
-
|
|
1607
|
+
### Added
|
|
2484
1608
|
|
|
2485
|
-
|
|
1609
|
+
- A project profile can `extends` an adapter instead of copying its policy.
|
|
2486
1610
|
|
|
2487
|
-
|
|
1611
|
+
### Improved
|
|
2488
1612
|
|
|
2489
|
-
-
|
|
1613
|
+
- Policy, prompt and skill content now follows the installed platform, so corrections reach existing projects.
|
|
2490
1614
|
|
|
2491
|
-
|
|
1615
|
+
### Fixed
|
|
2492
1616
|
|
|
2493
|
-
|
|
1617
|
+
- Projects with capability packs stopped working after each release until reapplied; the lock is now re-pinned automatically.
|
|
2494
1618
|
|
|
2495
|
-
|
|
1619
|
+
## v1.1.6 - 2026-07-27
|
|
2496
1620
|
|
|
2497
|
-
|
|
1621
|
+
**Monorepo detection and scoping fixes.** Profiles now detect and scope frontend and backend packages correctly in monorepos and workspaces.
|
|
2498
1622
|
|
|
2499
|
-
###
|
|
1623
|
+
### Fixed
|
|
2500
1624
|
|
|
2501
|
-
- `
|
|
1625
|
+
- `be-readonly-fe` left nested backends writable in monorepos; they are now read-only.
|
|
1626
|
+
- Frontend verify ran nothing and reported success when the frontend sat elsewhere; it now finds the right package.
|
|
1627
|
+
- Packages declared in `workspaces` or `pnpm-workspace.yaml` were ignored; detection now reads them.
|
|
2502
1628
|
|
|
2503
|
-
|
|
1629
|
+
## v1.1.5 - 2026-07-27
|
|
2504
1630
|
|
|
2505
|
-
|
|
1631
|
+
**One-command update with `piagent-update`.** `piagent-update` moves the Pi host, helper and Pi package to the next release in the correct order.
|
|
2506
1632
|
|
|
2507
|
-
###
|
|
1633
|
+
### Added
|
|
2508
1634
|
|
|
2509
|
-
-
|
|
1635
|
+
- Added `piagent-update`, which updates the Pi host, terminal helper and Pi package in order.
|
|
1636
|
+
- `--check` and `--dry-run` show exactly what a real run would install, resolved before anything changes.
|
|
2510
1637
|
|
|
2511
1638
|
## v1.1.4 - 2026-07-27
|
|
2512
1639
|
|
|
2513
|
-
|
|
1640
|
+
**Redaction of credentials in command options.** Credentials passed as command-line options or `Authorization` headers are now redacted reliably.
|
|
1641
|
+
|
|
1642
|
+
### Security
|
|
2514
1643
|
|
|
2515
|
-
-
|
|
2516
|
-
-
|
|
1644
|
+
- Options such as `--token`, `--password` and `--api-key` were not redacted; their values are now hidden.
|
|
1645
|
+
- `Authorization` header values are redacted wherever they appear in the arguments.
|
|
2517
1646
|
|
|
2518
1647
|
## v1.1.3 - 2026-07-27
|
|
2519
1648
|
|
|
2520
|
-
Fixes for
|
|
1649
|
+
**Fixes for issues found reviewing 1.1.2.** Short secrets are redacted, verify evidence identifies commands exactly again, and document reads no longer hang on pipes.
|
|
2521
1650
|
|
|
2522
1651
|
### Fixed
|
|
2523
1652
|
|
|
2524
|
-
- Verify evidence
|
|
2525
|
-
-
|
|
2526
|
-
-
|
|
2527
|
-
- A redirect must land on the page being verified. `npm run site:check` compared the hostname, scheme, port and credentials of the redirect target but not its path, so `/missing` or `/?release=old` passed while the run only ever fetched `/`.
|
|
2528
|
-
- `piagent-install` reports a missing Node runtime as a missing Node runtime. Validating the MCP preset early, added in v1.1.2, put a Node script ahead of the Node version check, so on a machine without Node the installer failed with `node: command not found` and blamed the preset.
|
|
1653
|
+
- Verify evidence gave commands with different secrets the same identity; each command is identified exactly again.
|
|
1654
|
+
- Reading a document replaced by a named pipe hung; it is now refused.
|
|
1655
|
+
- `piagent-install` showed `node: command not found` without Node.js; it now reports the missing runtime clearly.
|
|
2529
1656
|
|
|
2530
|
-
###
|
|
1657
|
+
### Security
|
|
2531
1658
|
|
|
2532
|
-
-
|
|
1659
|
+
- Short secret values such as `TOKEN=hunter2` were stored in clear text; they are now redacted.
|
|
2533
1660
|
|
|
2534
1661
|
## v1.1.2 - 2026-07-26
|
|
2535
1662
|
|
|
2536
|
-
Security and release
|
|
1663
|
+
**Security and release gating fixes.** Document reads close a file-swap race, evidence no longer hashes unredacted commands, and publishing waits for all checks.
|
|
1664
|
+
|
|
1665
|
+
### Improved
|
|
1666
|
+
|
|
1667
|
+
- Publishing now waits for the full verification matrix to pass.
|
|
2537
1668
|
|
|
2538
1669
|
### Fixed
|
|
2539
1670
|
|
|
2540
|
-
-
|
|
2541
|
-
- The evidence ledger no longer stores a digest of the unredacted command. It wrote a redacted command such as `export TOKEN= [REDACTED_SECRET] && npm test` beside a SHA-256 of the real line, so the redaction published the template and the hash confirmed guesses against it: the only unknown left was the secret, and SHA-256 is fast enough to walk a candidate list offline. A three-candidate list recovered the test secret. The digest now covers the redacted text, which is exactly what the file already shows, and command matching is unaffected because both sides redact before hashing. The CodeQL alert covering this line was dismissed as a false positive in v1.1.1; that dismissal was wrong and has been reversed.
|
|
2542
|
-
- `npm run site:check` no longer waits indefinitely on a peer that answers slowly. The request timeout measures socket inactivity, not elapsed time, so a server sending one byte per second reset it forever — a probe was still pending after 40 seconds and would have held the release gate open indefinitely. There is now a wall-clock deadline for the whole request.
|
|
2543
|
-
- A redirect that keeps the hostname is no longer accepted whatever else it changes. Only the hostname was compared, so a redirect to plaintext HTTP, to another port, or to a URL carrying credentials passed as if it were the site being verified.
|
|
2544
|
-
- A document path containing a control character is refused. Refusal messages and the read header quote the path back outside the data region, so a file named with an embedded newline wrote its own lines there, at instruction level. Paths in the header are additionally escaped when printed.
|
|
2545
|
-
- `.docx` text is decoded strictly. The strict decoding added in v1.1.1 covered plain text only, so a `.docx` whose `word/document.xml` was not valid UTF-8 still returned `ok` with replacement characters in the extracted prose.
|
|
1671
|
+
- An unknown `--mcp-preset` failed only after a partial install; it is now rejected before anything is installed.
|
|
2546
1672
|
|
|
2547
|
-
###
|
|
1673
|
+
### Security
|
|
2548
1674
|
|
|
2549
|
-
-
|
|
2550
|
-
-
|
|
2551
|
-
- `piagent-setup --no-mcp --mcp-preset <name>` fails instead of succeeding with the preset dropped. `piagent-install` already rejected that pair, but setup never forwarded both flags, so the check could not see it.
|
|
1675
|
+
- `piagent_document_read` could read a file swapped in after its checks; it now reads the file it checked.
|
|
1676
|
+
- The evidence ledger no longer stores a hash that could confirm guesses at a redacted secret.
|
|
2552
1677
|
|
|
2553
1678
|
## v1.1.1 - 2026-07-26
|
|
2554
1679
|
|
|
2555
|
-
Fixes for
|
|
1680
|
+
**Fixes for issues found reviewing 1.1.0.** `piagent-setup --no-mcp` skips MCP again, the site check no longer hangs or passes falsely, and binary documents are refused.
|
|
2556
1681
|
|
|
2557
1682
|
### Fixed
|
|
2558
1683
|
|
|
2559
|
-
- `piagent-setup --no-mcp`
|
|
2560
|
-
- `npm run site:check`
|
|
2561
|
-
- `
|
|
2562
|
-
- `piagent_document_read` refuses bytes that are not valid UTF-8 or UTF-16 instead of decoding them into replacement characters. The binary check was a scan for a NUL byte, which plenty of binary formats do not carry in their first bytes, and everything past it was decoded leniently — so a binary file renamed to `.txt` came back as content-shaped garbage and was handed to the model. Decoding is now strict in both encodings, which is what the surrounding code already claimed to do.
|
|
2563
|
-
- Two CodeQL high alerts came from building a regular expression out of a version string and escaping only `.`. Those assertions were comparing literal text, so they are substring checks now and need no escaping at all. Two further alerts were reviewed and dismissed with written reasons: extracting `<script>` from a document as `<script>` is the required result and the sink is a terminal tool result, not HTML; and the SHA-256 over a normalised shell command is a content identifier, not a password hash.
|
|
2564
|
-
|
|
2565
|
-
### Changed
|
|
2566
|
-
|
|
2567
|
-
- The release checklist now requires the **Code scanning results** check on the `main` ruleset, separately from the `analyze (...)` jobs. Requiring those jobs proves only that the analysis ran and uploaded its results — they succeed just as well when the analysis found new high-severity alerts, which is how v1.1.0 merged green with open ones.
|
|
1684
|
+
- `piagent-setup --no-mcp` still installed MCP; it installs none again.
|
|
1685
|
+
- `npm run site:check` could hang on large responses or pass with unchecked addresses; both are fixed.
|
|
1686
|
+
- `piagent_document_read` decoded binary bytes into garbled text; it now refuses invalid text.
|
|
2568
1687
|
|
|
2569
1688
|
## v1.1.0 - 2026-07-26
|
|
2570
1689
|
|
|
2571
|
-
|
|
1690
|
+
**Read documents from outside the project.** The agent can read a downloaded document outside the repository, and both install commands now install MCP by default.
|
|
2572
1691
|
|
|
2573
1692
|
### Added
|
|
2574
1693
|
|
|
2575
|
-
- Added `piagent_document_read
|
|
2576
|
-
- `.docx` is read without a dependency, from a bounds-checked archive reader that names what was wrong with a malformed file rather than reporting every failure as a missing document. Text struck out by an unaccepted tracked change is dropped instead of being spliced onto its replacement, tab-stop declarations no longer emit tab characters, field instruction codes are not read as prose, and a character reference outside the Unicode range is left as written rather than ending the read. `.pdf` goes through `pdftotext`, under a timeout, and a missing binary is reported as missing rather than as an empty document. Byte-order-marked UTF-16 is decoded rather than rejected as binary. Returned text is redacted and enclosed in a data region delimited by a marker the document cannot predict, because a downloaded document is exactly the kind of file that carries both a pasted key and a sentence addressed to an agent.
|
|
2577
|
-
- Added `npm run site:check`, which verifies the published documentation site at every address it resolves to instead of once through whichever address a browser happened to pick. It requires each address to return the released version, reports a redirect from an address back to its own host as a loop rather than following it, and reports an address the machine cannot route to as unverified rather than as a pass. Release checklist step 8 was a manual look, and a manual look cannot see a partial outage.
|
|
1694
|
+
- Added `piagent_document_read` to read a document from a granted directory outside the project, including `.docx`.
|
|
2578
1695
|
|
|
2579
|
-
###
|
|
1696
|
+
### Improved
|
|
2580
1697
|
|
|
2581
|
-
-
|
|
2582
|
-
-
|
|
2583
|
-
- Cut the command count in the three places a new user actually lands. The README went from 28 shell blocks to 4 and now opens with install rather than four variants of a wrapper for software the reader has not installed yet; the Vietnamese quickstart went from 23 to 7 and its install step from 120 lines to 28; the documentation site's onboarding flow went from eight install command cards to one. Pinned rollouts, updates, rollback, the `--dev` channel, and per-tool command lists were not deleted — every one of them already had a dedicated document, and each is now linked from where it used to be inlined.
|
|
1698
|
+
- `piagent-install` now installs the MCP baseline by default like `piagent-setup`; both accept `--no-mcp`.
|
|
1699
|
+
- The pinned Pi host moves from 0.81.1 to 0.82.0.
|
|
2584
1700
|
|
|
2585
1701
|
### Fixed
|
|
2586
1702
|
|
|
2587
|
-
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
- Project onboarding now says that the `.mcp.json` files it writes are empty on purpose and that the shared baseline lives in the global config. An empty file in a fresh project reads as a failed install.
|
|
2591
|
-
- Documented that `mcpCapabilities` in a project profile, the `github` key in the policy tool registry, and the `github` MCP server are three unrelated things that share a name. No code maps a capability name to an MCP server, so declaring `github` in a profile does not enable the GitHub server and never did.
|
|
2592
|
-
- `piagent-init` running from an installed package now writes `npm:@piagent/platform@<version>` into project settings, matching what `piagent-setup` already did. It is the second way a project gets its settings written, and it still wrote the directory the platform happened to be installed in — a value that means nothing on a teammate's machine, in a file meant to be committed.
|
|
2593
|
-
- Documentation-coverage checks in the local gate now name the term that went missing and the files searched. They were bare `grep >/dev/null` calls under `set -e`, so dropping a term from a document failed the gate with exit 1 and no output at all. The gate's `npm test` and `npm run typecheck` steps had the same defect from the other direction — their output went to `/dev/null` on every run, so a failing test ended the gate with no indication of which test failed. Both now stay quiet on success and print what they captured on failure.
|
|
2594
|
-
- Documented that `piagent-setup` installs the Herdr Pi integration when `herdr` is on `PATH`, and that installing Herdr afterwards needs `piagent-setup --global-only` to pick it up. The behaviour has always been the default and the skip is only a warning on stderr, so the ordering was discoverable only by reading the installer. Herdr is also now named as the way to run several Pi panes at once in the README, the quickstart, and the documentation site, none of which mentioned it, and every one of those places now carries the install command itself rather than a link to go find it. The `brew` form is listed beside the `curl` form that herdr.dev leads with, because piping a fetched script to a shell is worth an alternative in a project that pins everything else it installs.
|
|
2595
|
-
- Folded a stale `Unreleased` section into v1.0.0, where its contents actually shipped. It had been left behind by the namespace rename and still described tools as `company_orchestration_policy`, `company_profile_tech_options`, `company_profile_tech_apply`, `company_profile_tech_context_record`, and `/company-orchestration`, none of which exist.
|
|
1703
|
+
- Advisory tool-registry warnings were computed but never shown; they are now displayed.
|
|
1704
|
+
|
|
1705
|
+
Requires: Pi 0.82.0.
|
|
2596
1706
|
|
|
2597
1707
|
## v1.0.2 - 2026-07-25
|
|
2598
1708
|
|
|
2599
|
-
|
|
1709
|
+
**Two-command install and `piagent-uninstall`.** Install is now `npm install -g @piagent/platform` plus `piagent-setup`, and `piagent-uninstall` removes the package cleanly.
|
|
2600
1710
|
|
|
2601
1711
|
### Added
|
|
2602
1712
|
|
|
2603
|
-
- Added `piagent-uninstall`, which
|
|
1713
|
+
- Added `piagent-uninstall`, which reports by default and only removes the package with `--apply`.
|
|
2604
1714
|
|
|
2605
|
-
###
|
|
1715
|
+
### Improved
|
|
2606
1716
|
|
|
2607
|
-
-
|
|
1717
|
+
- Docs now lead with `npm install -g @piagent/platform` followed by `piagent-setup`.
|
|
2608
1718
|
|
|
2609
|
-
###
|
|
1719
|
+
### Fixed
|
|
2610
1720
|
|
|
2611
|
-
-
|
|
1721
|
+
- `piagent-setup` wrote a local install path into project settings; it now writes the npm package version.
|
|
2612
1722
|
|
|
2613
1723
|
## v1.0.1 - 2026-07-25
|
|
2614
1724
|
|
|
2615
|
-
|
|
1725
|
+
**Install from the npm registry.** Documentation now installs the terminal helper from npm instead of the Git source.
|
|
2616
1726
|
|
|
2617
|
-
###
|
|
1727
|
+
### Added
|
|
2618
1728
|
|
|
2619
|
-
-
|
|
2620
|
-
- Added an `npm` release channel with a real source, and narrowed `enterprise-npm` to what it actually describes: a fork published under a different scope.
|
|
2621
|
-
- Recorded why `stable` still resolves the Pi package to a commit SHA rather than an npm version. Tag-to-SHA resolution is checked against `PIAGENT_EXPECTED_RELEASE_COMMIT`, and a registry version range cannot express that check, so pointing `stable` at npm would remove it rather than replace it.
|
|
2622
|
-
- Aligned `repository.url` in both manifests with the form npm stores. Publishing rewrote the field and warned, which left the manifest in the repository disagreeing with the manifest on the registry.
|
|
1729
|
+
- Added an `npm` release channel.
|
|
2623
1730
|
|
|
2624
|
-
|
|
1731
|
+
### Improved
|
|
2625
1732
|
|
|
2626
|
-
|
|
1733
|
+
- Install, update and rollback docs use `npm install -g --ignore-scripts @piagent/platform@1.0.1`.
|
|
2627
1734
|
|
|
2628
|
-
|
|
1735
|
+
## v1.0.0 - 2026-07-25
|
|
2629
1736
|
|
|
2630
|
-
|
|
2631
|
-
- Added `piagent-capabilities vendor`, the only command that reaches the network. It fetches a declared remote source into `.pi/capability-vendor/`, refuses a tree containing symbolic links or no packs, and reports digests for review before the result is committed.
|
|
2632
|
-
- Added `piagent-migrate` to convert `.pi/company-profile.json`, its lock, and `.pi/company-state/` to the new names. Dry-run by default, with an explicit flag to write and a separate flag to remove the old files.
|
|
2633
|
-
- Added `piagent-import-instructions` to import `CLAUDE.md`, `.claude/rules/`, `.cursor/rules/`, and `.github/copilot-instructions.md` into `AGENTS.md`. Dry-run by default, with a deterministic conflict report; imported text is quoted as data and never alters protected paths, permission profile, or verify commands.
|
|
2634
|
-
- Added skill wiring for `.claude/skills` and `.codex/skills` at project scope and their home-directory equivalents at global scope, plus doctor checks that report skill directories present on disk but not declared, and instruction files written for other agents.
|
|
2635
|
-
- Added a golden enforcement suite covering protected paths, protected paths reached through the shell, destructive shell decisions, verification evidence, context budget ceilings, and secret redaction, with a valid and an invalid fixture for every shipped schema.
|
|
2636
|
-
- Added contributor documentation: `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, pull-request and issue templates.
|
|
2637
|
-
- Added a tag-driven publish workflow with npm provenance and pinned action revisions.
|
|
2638
|
-
- Added a solo-first orchestration policy covering bounded subagent usage, review lenses, Field Guide status, and model-role guidance, surfaced by `piagent_orchestration_policy` and `/piagent-orchestration` so status reads without a model follow-up. Task contracts gained `workPlan`, `reviewLenses`, and `orchestration` snapshots to record it.
|
|
2639
|
-
- Added select-style profile tech setup through `/profile setup` and `/profile tech setup`, including fullstack frontend, backend, and database selections. `piagent_profile_tech_options`, `piagent_profile_tech_apply`, and `piagent_profile_tech_context_record` produce Context7-ready stack manifests and per-tech snapshots.
|
|
1737
|
+
**Piagent 1.0: new namespace and stable API.** The `company` namespace becomes `piagent` with no alias, `apiVersion` is stable, and one command migrates existing projects.
|
|
2640
1738
|
|
|
2641
|
-
###
|
|
1739
|
+
### Breaking changes
|
|
2642
1740
|
|
|
2643
|
-
-
|
|
2644
|
-
-
|
|
2645
|
-
- The capability lock now records where each pack came from, so a pack that moves between sources reads as a substitution rather than an update.
|
|
2646
|
-
- The package is now published rather than private, scoped as `@piagent/platform` with public access and provenance.
|
|
2647
|
-
- Split shell and external-action classification, shared types, and filesystem helpers out of the guard into their own modules. Behaviour is unchanged.
|
|
2648
|
-
- Onboarding now names instruction files written for other agents, states plainly that their rules are not in effect, and offers the import; anything inside them is treated as data.
|
|
2649
|
-
- `/task`, `/plan`, `/review`, the subagent prompts, and the team docs now prefer one parent agent plus bounded scout, planner, and reviewer usage instead of broad swarm-style delegation.
|
|
2650
|
-
- Onboarding and docs treat profile family and project tech stack as explicit operator selections rather than long model explanations, and `/profile` status and list output stay compact around the single namespace and the next exact command.
|
|
2651
|
-
- Runtime support is stated across macOS Apple Silicon, macOS Intel, Linux x64 and ARM64, native Windows, and WSL2, and the installer and doctor report the runtime surface they are actually on.
|
|
1741
|
+
- Tools, commands, package and files are renamed from `company` to `piagent`; run `piagent-migrate` on existing projects.
|
|
1742
|
+
- Manifest `apiVersion` moves from `piagent/v1alpha1` to the stable `piagent/v1`.
|
|
2652
1743
|
|
|
2653
|
-
###
|
|
1744
|
+
### Added
|
|
2654
1745
|
|
|
2655
|
-
-
|
|
2656
|
-
-
|
|
2657
|
-
- Excluded maintainer working notes from the published tarball. The `files` allowlist takes precedence over `.npmignore`, so the exclusions live in `files`.
|
|
2658
|
-
- Fixed the package manifest declaring its extension entry points as a directory glob. Pi calls the default export of every path the field matches, so once the guard's helpers moved into modules beside it, the glob offered Pi two modules that export helpers and no extension factory. The manifest now names the guard, and the package still carried the old `@pi-agent/core` name the namespace rename was meant to retire.
|
|
2659
|
-
- Fixed the verify workflow, which had been unparseable since the runtime-platform step was added and so had not run at all. A single-line `run:` value containing `": "` ends the YAML scalar early; GitHub reports that as an instant failure with no job, so the gate was absent while still appearing present. The local gate now refuses that shape.
|
|
2660
|
-
- Fixed orchestration config normalization so a malformed numeric setting falls back to a safe value instead of producing invalid policy state.
|
|
2661
|
-
- Fixed tag CI verification, which checked tag object type and peeled commit identity without first fetching the annotated release tag ref.
|
|
2662
|
-
- Profile doctor and team doctor now warn on entries that appear only in `shellProtectedPaths`. Those paths block shell access alone; write protection requires `protectedPaths` or `readOnlyPaths`, and the warning names the move.
|
|
1746
|
+
- Projects can use capability packs from other sources, fetched for review with `piagent-capabilities vendor`.
|
|
1747
|
+
- Added `piagent-import-instructions` to import instruction files written for other agents into `AGENTS.md`.
|
|
2663
1748
|
|
|
2664
|
-
###
|
|
1749
|
+
### Improved
|
|
2665
1750
|
|
|
2666
|
-
- The
|
|
1751
|
+
- The package is now published on npm as `@piagent/platform` with provenance.
|
|
2667
1752
|
|
|
2668
1753
|
## v0.4.8 - 2026-07-22
|
|
2669
1754
|
|
|
1755
|
+
**Release channels, trusted profiles and stricter guards.** Install channels and rollback are documented, project profiles load only in trusted projects, and external writes need confirmation.
|
|
1756
|
+
|
|
2670
1757
|
### Added
|
|
2671
1758
|
|
|
2672
|
-
- Added
|
|
2673
|
-
- Added `pi-company-install` channel options and dry-run preview for stable, exact, dev, and local installs.
|
|
2674
|
-
- Added a package-root dispatcher for global `pi-company-*` terminal commands.
|
|
2675
|
-
- Added `readOnlyPaths` to project profiles for read-only contract areas such as backend code in `be-readonly-fe`.
|
|
2676
|
-
- Added regression tests for untrusted project profiles, profile-apply confirmation, shell/exec aliases, external-provider write confirmation, BE-readonly/FE-write paths, package distribution, and installer edge cases.
|
|
2677
|
-
- Added tag-triggered CI verification with immutable GitHub Action revisions on both Ubuntu and macOS.
|
|
2678
|
-
- Added release identity verification across root/core manifests, package lock, capability lock, changelog, docs badge, tag, and checked-out commit.
|
|
2679
|
-
- Added a separate high-severity dependency audit for the exact Pi host and pinned optional add-ons instead of relying only on the helper package lock.
|
|
2680
|
-
- Added a public threat model and `SECURITY.md` with private vulnerability reporting, supported-version, disclosure, and scope guidance.
|
|
2681
|
-
- Added weekly Dependabot checks for npm and GitHub Actions plus pinned CodeQL v4 analysis for JavaScript/TypeScript and workflow code.
|
|
2682
|
-
- Added a fail-closed Vercel project-link preflight so a stale local `.vercel` link cannot silently deploy docs to the wrong project.
|
|
2683
|
-
|
|
2684
|
-
### Changed
|
|
2685
|
-
|
|
2686
|
-
- Clarified in the public docs where this platform sits relative to a general agent coding CLI: Pi Company Platform brings similar governance concepts into Pi and packages them for team workflows.
|
|
2687
|
-
- Reworded security docs to describe the guard as an application-level policy enforcement layer, not a complete security boundary or OS sandbox.
|
|
2688
|
-
- Split install guidance so production/team setup uses pinned `v0.4.8` or resolved commit sources, while latest is reserved for personal/sandbox use.
|
|
2689
|
-
- Clarified that redaction benchmarks and internal review are not equivalent to an external security audit.
|
|
2690
|
-
- Raised the supported Node.js runtime contract to `>=22.19.0`.
|
|
2691
|
-
- Raised the pinned Pi Coding Agent and Pi AI compatibility from `0.80.10` to `0.81.1`, retaining exact `typebox` compatibility and removing the known high-severity transitive finding present in the previous host tree.
|
|
2692
|
-
- Updated CI to verify on Ubuntu and macOS with Node.js 22.19.0.
|
|
2693
|
-
- Documented the three-component Pi-host/helper/Pi-package lifecycle, exact rollback flow, supported operating systems, and post-tag Vercel promotion gate.
|
|
2694
|
-
- Made setup install or upgrade to the exact Pi host required by the release and made package installation reject an incompatible host version.
|
|
2695
|
-
- Expanded runtime dependency verification from the Pi host alone to the exact host plus all pinned optional add-ons.
|
|
2696
|
-
|
|
2697
|
-
### Fixed
|
|
2698
|
-
|
|
2699
|
-
- Hardened local profile loading so `.pi/company-profile.json` is ignored until the project is trusted, unless an operator explicitly sets `PI_COMPANY_PROFILE`.
|
|
2700
|
-
- Hardened `pi-company-install --stable` so it resolves the release tag to a commit SHA before install and fails closed when resolution is unavailable.
|
|
2701
|
-
- Bound the deterministic capability lock to `packages/pi-company-core/policies/base-policy.json`.
|
|
2702
|
-
- Fixed `be-readonly-fe` so backend paths are readable through safe path tools but remain blocked for writes and shell access.
|
|
2703
|
-
- Applied shell protected-path checks consistently to `bash`, `shell`, and `exec` tool aliases.
|
|
2704
|
-
- Inspected complete structured shell invocations, including `command`/`cmd` plus `args`, and rejected conflicting, malformed, oversized, or unbounded carriers before execution.
|
|
2705
|
-
- Added a generic human confirmation gate for external-provider write or ambiguous tools while preserving known safe reads such as `get_release`.
|
|
2706
|
-
- Rejected conflicting installer package selectors before any install command can run; the first explicit CLI selector now cleanly overrides environment defaults.
|
|
2707
|
-
- Routed global commands through a package-root dispatcher and converted missing shell-runner failures into controlled errors.
|
|
2708
|
-
- Isolated runtime-evidence test ledgers so test runs no longer leave new `pi-ledger-*` temporary directories.
|
|
2709
|
-
- Decoded the extension module URL before locating its package policy so installs under paths containing spaces or other URL-encoded characters load the intended policy.
|
|
2710
|
-
- Made project init resilient to npm package tarballs that omit its `.pi/.gitignore` dotfile by shipping an explicit fallback template.
|
|
2711
|
-
- Prevented project init from creating `.pi/.npmignore`, which could override repository ignore rules and re-include local Pi auth, trust, ledger, or database state in an npm package.
|
|
2712
|
-
- Applied provider confirmation and path policy to the default serialized MCP proxy carrier, including bounded JSON parsing and fail-closed malformed/deep payload handling.
|
|
2713
|
-
- Closed MCP path-policy bypasses across common aliases such as `filename`, `rootPath`, `source`, `cwd`, and `workingDirectory`; copy sources now use read scope while destinations use write/read-only scope, without treating provider metadata as a local path.
|
|
2714
|
-
- Applied protected-path checks to camelCase patch carriers and shell proxy variants such as `run`, `execute_process`, and command-bearing aliases before an operator confirmation can allow execution.
|
|
2715
|
-
- Added confirmation gates for shell-launched GitHub CLI writes and non-read-only HTTP client operations, including wrappers, executable aliases, line continuations, dynamic command construction, `xargs`, and FTP/SFTP quote commands, while keeping recognized reads and argument-only substitutions non-interactive.
|
|
2716
|
-
- Made every packaged `pi-company-* --help` command succeed without requiring a project path or creating project state.
|
|
1759
|
+
- Added stable, exact, dev and local install channels with dry-run preview, plus rollback docs.
|
|
2717
1760
|
|
|
2718
|
-
###
|
|
1761
|
+
### Improved
|
|
2719
1762
|
|
|
2720
|
-
-
|
|
2721
|
-
- Capability locks now detect base policy tampering, not only runtime source-file changes.
|
|
2722
|
-
- Tool-based profile apply requires operator confirmation before writing `.pi/company-profile.json` and `.pi/company-profile.lock.json`.
|
|
2723
|
-
- External provider writes are treated as human-gated actions even under `trusted-full-access`.
|
|
2724
|
-
- Unknown MCP/provider actions fail closed to operator confirmation; explicit safe reads remain non-interactive.
|
|
2725
|
-
- Release tags are verified in CI, installer stable channels resolve tags to commit SHAs, and dependency setup actions are pinned by commit SHA.
|
|
2726
|
-
- Tag CI binds stable resolution to the exact release commit and rejects environment attempts to substitute the helper's package-derived release tag.
|
|
2727
|
-
- Tag CI now requires an annotated tag whose peeled commit is the exact verified release commit; repository ruleset requirements are documented for immutable `v*` tags.
|
|
2728
|
-
- Release CI includes redaction, release identity, dependency, CodeQL, package-content, and cross-platform policy gates; Actions are pinned to reviewed commit SHAs.
|
|
2729
|
-
|
|
2730
|
-
### Verification
|
|
2731
|
-
|
|
2732
|
-
- `npm run verify`: pass.
|
|
2733
|
-
- `npm test`: 224/224 pass.
|
|
2734
|
-
- `npm run typecheck`: pass.
|
|
2735
|
-
- `npm run smoke`: pass.
|
|
2736
|
-
- Helper dependency audit (`npm audit --audit-level=high`): 0 vulnerabilities.
|
|
2737
|
-
- Exact Pi 0.81.1 host + pinned add-on audit (`npm run audit:runtime`): 0 high/critical findings; npm reports 11 moderate dependency paths across two upstream advisory families (`@hono/node-server` encoded-backslash traversal on Windows and `protobufjs` parser DoS).
|
|
2738
|
-
- `npm run benchmark:redaction`: pass.
|
|
2739
|
-
- `npm pack --dry-run --json`: 144 packaged files; required runtime files present and local trust/secret state excluded; all 12 installed terminal binaries pass `--help` from the built artifact.
|
|
2740
|
-
- Docs browser/runtime check: 0 duplicate IDs, broken anchors, broken images, unsafe blank targets, or console errors; mobile viewport has no horizontal overflow.
|
|
1763
|
+
- Requires Node.js 22.19.0 or newer and Pi 0.81.1; setup installs the exact Pi host.
|
|
2741
1764
|
|
|
2742
|
-
|
|
1765
|
+
### Security
|
|
2743
1766
|
|
|
2744
|
-
|
|
1767
|
+
- Project profiles are ignored until the project is trusted, and applying a profile needs confirmation.
|
|
1768
|
+
- External provider writes and unknown MCP actions now require human confirmation, even in full access.
|
|
2745
1769
|
|
|
2746
|
-
|
|
2747
|
-
- inspect status and diff before staging;
|
|
2748
|
-
- stage explicit reviewed files only;
|
|
2749
|
-
- run relevant verification before commit;
|
|
2750
|
-
- never push from `/commit`.
|
|
2751
|
-
- Added `/pr` as a guarded pull request preparation workflow:
|
|
2752
|
-
- inspect branch, status, upstream, and remote;
|
|
2753
|
-
- require a clean committed branch before PR work;
|
|
2754
|
-
- require explicit operator confirmation before `git push` or GitHub write actions.
|
|
2755
|
-
- Added an exec-policy confirmation rule for broad Git staging, including `git add .`, `git add -A`, `git add --all`, `git add -- .`, `git add :/`, and `git -C <repo> add .`.
|
|
2756
|
-
- Added regression tests for the new Git workflow prompts and broad-staging policy.
|
|
2757
|
-
- Added canonical public docs metadata for `https://piagent.io.vn`.
|
|
1770
|
+
Requires: Pi 0.81.1, Node.js 22.19.0.
|
|
2758
1771
|
|
|
2759
|
-
|
|
1772
|
+
## v0.4.7 - 2026-07-22
|
|
2760
1773
|
|
|
2761
|
-
|
|
2762
|
-
- `pi install git:github.com/Vt-mmm/pi_agent`
|
|
2763
|
-
- `pi update --extensions`
|
|
2764
|
-
- Pinned install examples use placeholders such as `vX.Y.Z` and `x.y.z` instead of hardcoding an old release.
|
|
2765
|
-
- Runtime smoke verification now reads the current package version from `package.json` instead of hardcoding a tag.
|
|
2766
|
-
- Docs site, README, package metadata, and Vercel docs now point to `https://piagent.io.vn`.
|
|
1774
|
+
**Guarded `/commit` and `/pr` workflows.** New `/commit` and `/pr` workflows review changes before staging and ask before any push, and broad staging needs confirmation.
|
|
2767
1775
|
|
|
2768
|
-
###
|
|
1776
|
+
### Added
|
|
2769
1777
|
|
|
2770
|
-
-
|
|
2771
|
-
-
|
|
2772
|
-
- Protected paths, sensitive-output redaction, capability lock integrity, and destructive/external confirmation gates remain active in every permission profile.
|
|
1778
|
+
- Added `/commit`, which stages only reviewed files, runs checks and never pushes.
|
|
1779
|
+
- Added `/pr`, which requires a clean branch and confirmation before `git push` or GitHub writes.
|
|
2773
1780
|
|
|
2774
|
-
###
|
|
1781
|
+
### Security
|
|
2775
1782
|
|
|
2776
|
-
- `
|
|
2777
|
-
- `bash scripts/runtime-policy-smoke.sh`: pass.
|
|
2778
|
-
- `npm test`: 185/185 pass.
|
|
2779
|
-
- `npm run typecheck`: pass.
|
|
1783
|
+
- Broad staging such as `git add .` or `git add -A` now asks for confirmation.
|
|
2780
1784
|
|
|
2781
1785
|
## v0.4.6 - 2026-07-22
|
|
2782
1786
|
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
- Added the static HTML documentation site under `docs-site/`.
|
|
2786
|
-
- Added Vercel static-site configuration and deployment documentation.
|
|
2787
|
-
- Added project logo, favicon, GitHub link, and Facebook link to the docs site.
|
|
1787
|
+
**Documentation site.** A static HTML documentation site was added, with shorter command docs for daily use.
|
|
2788
1788
|
|
|
2789
|
-
###
|
|
1789
|
+
### Added
|
|
2790
1790
|
|
|
2791
|
-
-
|
|
2792
|
-
- Removed the `SHIP` sidebar section from the docs site.
|
|
2793
|
-
- Centered the docs layout and tightened the visual structure for wide screens.
|
|
2794
|
-
- Documented latest global install and pinned project setup separately.
|
|
1791
|
+
- Added a static HTML documentation site under `docs-site/`.
|
|
2795
1792
|
|
|
2796
|
-
###
|
|
1793
|
+
### Improved
|
|
2797
1794
|
|
|
2798
|
-
-
|
|
2799
|
-
-
|
|
1795
|
+
- Command documentation is shorter for lower-token daily use.
|
|
1796
|
+
- Global install and pinned project setup are documented separately.
|
|
2800
1797
|
|
|
2801
1798
|
## v0.4.5 - 2026-07-22
|
|
2802
1799
|
|
|
2803
|
-
|
|
1800
|
+
**Direct `/profile` commands.** Profile commands apply immediately without a model follow-up, and routine status output is compact.
|
|
2804
1801
|
|
|
2805
|
-
|
|
2806
|
-
- `/profile`
|
|
2807
|
-
- `/profile`
|
|
2808
|
-
- `/profile list`
|
|
2809
|
-
- `/profile <profile>`
|
|
2810
|
-
- `/profile auto`
|
|
2811
|
-
- Added short profile aliases such as `fe`, `be`, `full`, `be-fe`, and TypeScript-oriented aliases.
|
|
1802
|
+
### Added
|
|
2812
1803
|
|
|
2813
|
-
|
|
1804
|
+
- Added `/profile`, `/profile list`, `/profile <profile>` and `/profile auto`, applied without a model turn.
|
|
1805
|
+
- Added short profile aliases such as `fe`, `be` and `full`.
|
|
2814
1806
|
|
|
2815
|
-
|
|
2816
|
-
- Profile status output is intentionally compact to reduce token burn in routine checks.
|
|
1807
|
+
### Improved
|
|
2817
1808
|
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
- Direct profile apply still regenerates the deterministic capability lock and does not relax protected paths, secret redaction, or capability integrity checks.
|
|
1809
|
+
- `/company-status` and `/company-memory` now return short local summaries.
|
|
2821
1810
|
|
|
2822
1811
|
## v0.4.4 - 2026-07-21
|
|
2823
1812
|
|
|
1813
|
+
**Session permission commands.** Slash commands switch the session between read-only, workspace-write and full access, with a clear precedence order.
|
|
1814
|
+
|
|
2824
1815
|
### Added
|
|
2825
1816
|
|
|
2826
|
-
- Added
|
|
2827
|
-
- `/permission-status`
|
|
2828
|
-
- `/read-only`
|
|
2829
|
-
- `/workspace-write`
|
|
2830
|
-
- `/full-access`
|
|
2831
|
-
- `/full-access <task>`
|
|
1817
|
+
- Added `/permission-status`, `/read-only`, `/workspace-write`, `/full-access` and `/full-access <task>`.
|
|
2832
1818
|
|
|
2833
|
-
###
|
|
1819
|
+
### Improved
|
|
2834
1820
|
|
|
2835
|
-
- Permission
|
|
2836
|
-
- `/full-access <task>` switches the session and forwards the task text as the next request.
|
|
1821
|
+
- Permission order is explicit: launch override, then session command, then project profile, then default.
|
|
2837
1822
|
|
|
2838
1823
|
### Security
|
|
2839
1824
|
|
|
2840
|
-
-
|
|
1825
|
+
- Full access still keeps protected paths, secret redaction and destructive or external confirmations.
|
|
2841
1826
|
|
|
2842
1827
|
## v0.4.3 - 2026-07-21
|
|
2843
1828
|
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
- Added runtime permission profiles:
|
|
2847
|
-
- `read-only`;
|
|
2848
|
-
- `workspace-write`;
|
|
2849
|
-
- `trusted-full-access`.
|
|
2850
|
-
- Added `PI_COMPANY_PERMISSION_PROFILE` for trusted one-run permission override.
|
|
1829
|
+
**Runtime permission profiles.** Three permission profiles were added: read-only, workspace-write and trusted-full-access.
|
|
2851
1830
|
|
|
2852
|
-
###
|
|
1831
|
+
### Added
|
|
2853
1832
|
|
|
2854
|
-
-
|
|
2855
|
-
-
|
|
1833
|
+
- Added `read-only`, `workspace-write` and `trusted-full-access` permission profiles.
|
|
1834
|
+
- Added `PI_COMPANY_PERMISSION_PROFILE` for a one-run override; invalid values fail closed.
|
|
2856
1835
|
|
|
2857
1836
|
## v0.4.2 - 2026-07-21
|
|
2858
1837
|
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
- Added sensitive-data redaction benchmark coverage for contextual secrets, benign preservation, structured payloads, and large output.
|
|
2862
|
-
- Added release gates for redaction recall and false-positive control.
|
|
1838
|
+
**Better secret redaction with a benchmark.** Redaction covers more credential shapes and nested data, measured by a new benchmark and release gate.
|
|
2863
1839
|
|
|
2864
|
-
###
|
|
1840
|
+
### Added
|
|
2865
1841
|
|
|
2866
|
-
-
|
|
2867
|
-
- Kept unlabeled high-entropy strings observational instead of redacting indiscriminately.
|
|
1842
|
+
- Added a redaction benchmark: 52/52 secrets detected with 0/30 false positives on benign text.
|
|
2868
1843
|
|
|
2869
|
-
###
|
|
1844
|
+
### Improved
|
|
2870
1845
|
|
|
2871
|
-
-
|
|
1846
|
+
- Redaction now catches more credential shapes and secrets inside nested structured data.
|
|
2872
1847
|
|
|
2873
1848
|
## v0.4.1 - 2026-07-21
|
|
2874
1849
|
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
- Hardened shell secret protection against glob expansion targeting protected files.
|
|
2878
|
-
- Hardened shell protection for bare-word aliases and symlinks resolving to protected paths.
|
|
2879
|
-
- Added sensitive bash output redaction before tool results reach the model.
|
|
2880
|
-
- Covered attached redirections such as `cat<.env` and similar shell forms.
|
|
1850
|
+
**Stronger shell protection for secrets.** The shell guard blocks more ways of reaching protected files, and bash output is redacted before the model sees it.
|
|
2881
1851
|
|
|
2882
1852
|
### Security
|
|
2883
1853
|
|
|
2884
|
-
-
|
|
2885
|
-
-
|
|
1854
|
+
- Globs, aliases, symlinks and redirections such as `cat<.env` can no longer reach protected files.
|
|
1855
|
+
- Sensitive bash output is redacted before tool results reach the model.
|
|
2886
1856
|
|
|
2887
1857
|
## v0.4.0 - 2026-07-21
|
|
2888
1858
|
|
|
1859
|
+
**Governed capability packs with integrity lock.** Capability packs are resolved per profile into `.pi/company-profile.lock.json`, and tampering with the lock fails closed.
|
|
1860
|
+
|
|
2889
1861
|
### Added
|
|
2890
1862
|
|
|
2891
|
-
- Added governed capability packs
|
|
2892
|
-
- Added profile capability resolution and `.pi/company-profile.lock.json`.
|
|
2893
|
-
- Added lock integrity checks for package source, artifact digests, capability scope, and runtime enforcement files.
|
|
2894
|
-
- Added atomic profile/lock write behavior with rollback on failure.
|
|
1863
|
+
- Added governed capability packs resolved per profile into `.pi/company-profile.lock.json`.
|
|
2895
1864
|
|
|
2896
1865
|
### Security
|
|
2897
1866
|
|
|
2898
|
-
-
|
|
2899
|
-
-
|
|
2900
|
-
- Capability scope can only narrow access; protected paths remain denied before allow-scope checks.
|
|
1867
|
+
- The lock checks package source, artifact digests and capability scope, and tampering fails closed.
|
|
1868
|
+
- `.pi/settings.json` and the lock file are protected, and capability scope can only narrow access.
|