@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.
Files changed (107) hide show
  1. package/CHANGELOG.md +1006 -2038
  2. package/CONTRIBUTING.md +2 -0
  3. package/README.md +128 -325
  4. package/README.vi.md +149 -143
  5. package/docs/command-reference-vietnamese.md +2 -2
  6. package/docs/distribution-standard.md +6 -6
  7. package/docs/languages.json +2 -2
  8. package/docs/operator-manual-vietnamese.md +7 -7
  9. package/docs/publishing-for-teams.md +1 -0
  10. package/docs/release-install-policy.md +3 -3
  11. package/docs/team-onboarding.md +2 -2
  12. package/docs-site/architecture.html +71 -63
  13. package/docs-site/assets/docs.css +2736 -1030
  14. package/docs-site/assets/docs.js +451 -43
  15. package/docs-site/assets/og.png +0 -0
  16. package/docs-site/assets/piagent-logo.svg +9 -31
  17. package/docs-site/assets/search-en.json +1 -0
  18. package/docs-site/assets/search-vi.json +1 -0
  19. package/docs-site/benchmark.html +71 -63
  20. package/docs-site/commands.html +72 -64
  21. package/docs-site/content/en/index.html +220 -131
  22. package/docs-site/content/en/quickstart.html +74 -90
  23. package/docs-site/content/en/update.html +80 -0
  24. package/docs-site/content/en/whats-new.html +1 -684
  25. package/docs-site/content/index.html +220 -131
  26. package/docs-site/content/quickstart.html +73 -108
  27. package/docs-site/content/update.html +80 -0
  28. package/docs-site/content/whats-new.html +1 -684
  29. package/docs-site/context-engine.html +73 -65
  30. package/docs-site/ecosystem.html +73 -65
  31. package/docs-site/en/architecture.html +67 -59
  32. package/docs-site/en/benchmark.html +67 -59
  33. package/docs-site/en/commands.html +68 -60
  34. package/docs-site/en/context-engine.html +68 -60
  35. package/docs-site/en/ecosystem.html +68 -60
  36. package/docs-site/en/index.html +281 -220
  37. package/docs-site/en/mcp-approval.html +67 -59
  38. package/docs-site/en/mcp-auth.html +67 -59
  39. package/docs-site/en/mcp-servers.html +68 -60
  40. package/docs-site/en/mcp.html +64 -56
  41. package/docs-site/en/permissions.html +68 -60
  42. package/docs-site/en/profiles.html +68 -60
  43. package/docs-site/en/quickstart.html +142 -150
  44. package/docs-site/en/runtime.html +67 -59
  45. package/docs-site/en/scope.html +68 -60
  46. package/docs-site/en/security.html +64 -56
  47. package/docs-site/en/team.html +67 -59
  48. package/docs-site/en/update.html +228 -0
  49. package/docs-site/en/whats-new.html +1601 -725
  50. package/docs-site/en/windows.html +71 -63
  51. package/docs-site/en/workflows.html +68 -60
  52. package/docs-site/favicon.svg +9 -14
  53. package/docs-site/index.html +281 -220
  54. package/docs-site/mcp-approval.html +70 -62
  55. package/docs-site/mcp-auth.html +70 -62
  56. package/docs-site/mcp-servers.html +71 -63
  57. package/docs-site/mcp.html +70 -62
  58. package/docs-site/permissions.html +72 -64
  59. package/docs-site/profiles.html +72 -64
  60. package/docs-site/quickstart.html +145 -172
  61. package/docs-site/releases.json +4449 -0
  62. package/docs-site/runtime.html +73 -65
  63. package/docs-site/scope.html +73 -65
  64. package/docs-site/security.html +73 -65
  65. package/docs-site/team.html +71 -63
  66. package/docs-site/update.html +228 -0
  67. package/docs-site/whats-new.html +1605 -729
  68. package/docs-site/windows.html +75 -67
  69. package/docs-site/workflows.html +73 -65
  70. package/evals/private-holdout-v1/public-exposure.v2.json +1 -1
  71. package/package.json +1 -1
  72. package/packages/piagent-core/package.json +1 -1
  73. package/packages/piagent-webui/dist/client/assets/App-DBx4BU3F.js +5 -0
  74. package/packages/piagent-webui/dist/client/assets/LineReview-DzonwD-g.js +3 -0
  75. package/packages/piagent-webui/dist/client/assets/{MarkdownMessage-DeLo-xiz.js → MarkdownMessage-DchODuO7.js} +2 -2
  76. package/packages/piagent-webui/dist/client/assets/SessionInspectorDrawer-BHHNlct3.js +1 -0
  77. package/packages/piagent-webui/dist/client/assets/SettingsPage-DX28MsZA.js +1 -0
  78. package/packages/piagent-webui/dist/client/assets/TerminalPanel-C--BiN0p.js +2 -0
  79. package/packages/piagent-webui/dist/client/assets/{TerminalView-r9rG24IO.js → TerminalView-BML7uS6R.js} +3 -3
  80. package/packages/piagent-webui/dist/client/assets/WorkspaceCodeEditor-B7ieqDnt.js +2 -0
  81. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-BOafuPU-.js +5 -0
  82. package/packages/piagent-webui/dist/client/assets/WorkspaceQuickOpen-CGoGfUPk.js +1 -0
  83. package/packages/piagent-webui/dist/client/assets/api-BUjrtT1B.js +1 -0
  84. package/packages/piagent-webui/dist/client/assets/index-C7Azrwpq.js +132 -0
  85. package/packages/piagent-webui/dist/client/assets/index-Dqb2hNan.css +1 -0
  86. package/packages/piagent-webui/dist/client/assets/tab-close-Crj8vsUq.js +1 -0
  87. package/packages/piagent-webui/dist/client/assets/ui-preferences-B3UfDp-5.js +1 -0
  88. package/packages/piagent-webui/dist/client/assets/vendor-Ch5hIe0W.js +136 -0
  89. package/packages/piagent-webui/dist/client/index.html +5 -8
  90. package/scripts/build-docs-site.mjs +205 -348
  91. package/scripts/check-public-wording.mjs +2 -1
  92. package/scripts/docs-site-icons.mjs +84 -0
  93. package/scripts/docs-site-nav.mjs +302 -0
  94. package/scripts/docs-site-releases.mjs +227 -0
  95. package/packages/piagent-webui/dist/client/assets/Alert-DGWhP2MM.js +0 -1
  96. package/packages/piagent-webui/dist/client/assets/Button-QItfZUNj.js +0 -1
  97. package/packages/piagent-webui/dist/client/assets/DialogTitle-CyaFPaiW.js +0 -3
  98. package/packages/piagent-webui/dist/client/assets/TerminalPanel-BG-DP_qm.js +0 -2
  99. package/packages/piagent-webui/dist/client/assets/Typography-B9om7Evq.js +0 -1
  100. package/packages/piagent-webui/dist/client/assets/WorkspaceCodeEditor-BnqaR3pK.js +0 -2
  101. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-BIxwiGtl.js +0 -5
  102. package/packages/piagent-webui/dist/client/assets/WorkspaceQuickOpen-CK3dILhQ.js +0 -1
  103. package/packages/piagent-webui/dist/client/assets/index-DBUTrEXi.css +0 -1
  104. package/packages/piagent-webui/dist/client/assets/index-rlyRccut.js +0 -102
  105. package/packages/piagent-webui/dist/client/assets/tab-close-BoJRyBO_.js +0 -1
  106. package/packages/piagent-webui/dist/client/assets/ui-preferences-BO3AV7QE.js +0 -10
  107. package/packages/piagent-webui/dist/client/assets/useId-DEefKUAT.js +0 -124
@@ -0,0 +1,4449 @@
1
+ [
2
+ {
3
+ "version": "1.42.0",
4
+ "date": "2026-10-25",
5
+ "status": "stable",
6
+ "title": {
7
+ "en": "A redesigned dashboard and older messages that load without jumping",
8
+ "vi": "Dashboard thiết kế lại, tin cũ tải mà không nhảy trang"
9
+ },
10
+ "summary": {
11
+ "en": "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.",
12
+ "vi": "Dashboard có một thang thiết kế và mọi theme tô tới mọi khung; tin cũ tự tải khi cuộn lên và tin bạn đang đọc đứng yên."
13
+ },
14
+ "items": [
15
+ {
16
+ "kind": "new",
17
+ "en": "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.",
18
+ "vi": "Tin cũ tự tải khi cuộn gần đầu, và tin đang đọc không còn bị đẩy đi khi có trang mới chèn phía trên."
19
+ },
20
+ {
21
+ "kind": "improved",
22
+ "en": "All 13 colour themes now reach the diff, approval, question and document views; header, sidebar, composer and new chat page are redesigned.",
23
+ "vi": "Cả 13 theme giờ tô tới diff, thẻ duyệt, câu hỏi và tài liệu; header, sidebar, ô soạn tin và trang tạo mới được thiết kế lại."
24
+ },
25
+ {
26
+ "kind": "improved",
27
+ "en": "A running turn shows one moving indicator at a time: the step's spinner, the streaming caret, or a thinking spinner.",
28
+ "vi": "Một lượt đang chạy chỉ có một hiệu ứng chạy: spinner của bước, con trỏ khi chữ đang về, hoặc spinner khi agent đang nghĩ."
29
+ },
30
+ {
31
+ "kind": "fixed",
32
+ "en": "History showed raw markdown for a moment and then reflowed; it now appears formatted from the first frame.",
33
+ "vi": "Lịch sử từng hiện markdown thô rồi co lại; giờ hiện đúng định dạng ngay từ đầu."
34
+ },
35
+ {
36
+ "kind": "fixed",
37
+ "en": "Loading many older pages silently dropped the newest messages; the window now holds 1,000 items and offers a way back to the newest.",
38
+ "vi": "Tải nhiều trang tin cũ từng làm mất tin mới nhất mà không báo; cửa sổ giờ giữ 1.000 mục và có nút về tin mới nhất."
39
+ },
40
+ {
41
+ "kind": "improved",
42
+ "en": "New website and README with an Update & uninstall guide; release notes now come from one file that also writes `CHANGELOG.md`.",
43
+ "vi": "Website và README mới, có hướng dẫn Cập nhật và gỡ; ghi chú phát hành giờ từ một file duy nhất, file này sinh luôn `CHANGELOG.md`."
44
+ }
45
+ ],
46
+ "requires": null
47
+ },
48
+ {
49
+ "version": "1.41.0",
50
+ "date": "2026-10-24",
51
+ "status": "stable",
52
+ "title": {
53
+ "en": "Front-end change reports with before/after screenshots",
54
+ "vi": "Báo cáo thay đổi giao diện với ảnh trước/sau"
55
+ },
56
+ "summary": {
57
+ "en": "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.",
58
+ "vi": "Skill mới biến task front-end thành báo cáo có ảnh trước/sau được khoanh khung, thay đổi business và logic, kết quả check, hiện ngay trên dashboard."
59
+ },
60
+ "items": [
61
+ {
62
+ "kind": "new",
63
+ "en": "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.",
64
+ "vi": "Skill `fe-change-report` chụp trang cũ và mới ở chế độ headless trên cùng dữ liệu, khoanh từng thay đổi bằng khung đỏ đánh số trên cả hai ảnh."
65
+ },
66
+ {
67
+ "kind": "new",
68
+ "en": "The agent runs the project's checks and full E2E headless, naming baseline failures, and writes what changed in business, logic and on screen.",
69
+ "vi": "Agent chạy check của project và toàn bộ E2E headless, ghi rõ lỗi có từ trước, rồi viết lại thay đổi về business, logic và giao diện."
70
+ },
71
+ {
72
+ "kind": "new",
73
+ "en": "Documents draws `reports/fe-change/<slug>/report.json` as the report, with zoom per frame, other screen sizes and a full-screen view.",
74
+ "vi": "Tài liệu trên dashboard vẽ `reports/fe-change/<slug>/report.json` thành báo cáo, có phóng to từng khung, kích thước màn hình khác và toàn màn hình."
75
+ },
76
+ {
77
+ "kind": "new",
78
+ "en": "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.",
79
+ "vi": "Script dùng Playwright có sẵn của project, không thêm dependency, và xuất một file `report.html` độc lập, không có script, để gửi cho bất kỳ ai."
80
+ },
81
+ {
82
+ "kind": "security",
83
+ "en": "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.",
84
+ "vi": "Báo cáo được vẽ từ dữ liệu, không từ file HTML, và chỉ ảnh PNG của nó được trả về, nên dashboard vẫn không hiển thị markup do model tạo."
85
+ }
86
+ ],
87
+ "requires": null
88
+ },
89
+ {
90
+ "version": "1.40.0",
91
+ "date": "2026-10-24",
92
+ "status": "stable",
93
+ "title": {
94
+ "en": "Local projects are reported to Studio too",
95
+ "vi": "Project local cũng được báo cho Studio"
96
+ },
97
+ "summary": {
98
+ "en": "Company conversations in folders without a remote report a local project to Studio, every run reports, and members see every kind of project warning.",
99
+ "vi": "Cuộc trò chuyện công ty trong thư mục không có remote báo project local cho Studio, mọi lượt chạy đều báo, và member thấy mọi loại cảnh báo project."
100
+ },
101
+ "items": [
102
+ {
103
+ "kind": "new",
104
+ "en": "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.",
105
+ "vi": "Thư mục không có remote đọc được được báo như project local, theo commit gốc của Git hoặc theo mã băm; đường dẫn không bao giờ rời khỏi máy."
106
+ },
107
+ {
108
+ "kind": "new",
109
+ "en": "A Git project's local key is the same on every computer with that history, including clones and checkouts without an `origin` remote.",
110
+ "vi": "Key local của project Git giống nhau trên mọi máy có cùng lịch sử, kể cả bản clone và checkout không có remote `origin`."
111
+ },
112
+ {
113
+ "kind": "improved",
114
+ "en": "Every run reports its projects, not only a conversation's first, so Studio counts each use and knows which computers never report.",
115
+ "vi": "Mọi lượt chạy đều báo project, không chỉ lượt đầu của cuộc trò chuyện, nên Studio đếm được từng lần dùng và biết máy nào chưa bao giờ báo."
116
+ },
117
+ {
118
+ "kind": "improved",
119
+ "en": "Members see a line for every warning: another team's project, one outside the team's list, an unregistered project or an unreadable folder.",
120
+ "vi": "Member thấy một dòng cho mọi cảnh báo: project của team khác, ngoài danh sách của team, chưa đăng ký cho team, hoặc thư mục không đọc được."
121
+ },
122
+ {
123
+ "kind": "improved",
124
+ "en": "A folder holding several checkouts reports each one, up to six, and a local project is named by its folder.",
125
+ "vi": "Thư mục chứa nhiều checkout báo từng checkout, tối đa sáu, và project local được gọi theo tên thư mục."
126
+ },
127
+ {
128
+ "kind": "security",
129
+ "en": "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.",
130
+ "vi": "Ba cảnh báo bảo mật của dependency trong Pi host được chấp nhận tới 2026-11-07: từ chối dịch vụ và lỗi Pi không dùng tới, không lộ dữ liệu."
131
+ }
132
+ ],
133
+ "requires": {
134
+ "en": "Agent Studio 0.40.0",
135
+ "vi": "Agent Studio 0.40.0"
136
+ }
137
+ },
138
+ {
139
+ "version": "1.39.0",
140
+ "date": "2026-10-23",
141
+ "status": "stable",
142
+ "title": {
143
+ "en": "Warnings when a team key is used outside its team",
144
+ "vi": "Cảnh báo khi key của team được dùng ngoài team"
145
+ },
146
+ "summary": {
147
+ "en": "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.",
148
+ "vi": "Studio biết cuộc trò chuyện công ty làm trong repository nào và cảnh báo khi key của team bị dùng ngoài team; dashboard giữ ngôn ngữ và theme màu."
149
+ },
150
+ "items": [
151
+ {
152
+ "kind": "new",
153
+ "en": "Company conversations tell Studio their repositories, using the same `host/path` keys team memory already sends.",
154
+ "vi": "Cuộc trò chuyện công ty báo cho Studio các repository đang làm, dùng cùng key `host/path` mà team memory đã gửi."
155
+ },
156
+ {
157
+ "kind": "new",
158
+ "en": "Administrators see the warnings in Logs → \"Sai project\"; the member reads one line above the composer and in `piagent studio`.",
159
+ "vi": "Admin thấy cảnh báo trong Logs → \"Sai project\"; member thấy một dòng nhắc phía trên ô soạn tin và trong `piagent studio`."
160
+ },
161
+ {
162
+ "kind": "improved",
163
+ "en": "Nothing is blocked, and team memory works as before.",
164
+ "vi": "Không có gì bị chặn, và team memory chạy như cũ."
165
+ },
166
+ {
167
+ "kind": "fixed",
168
+ "en": "The dashboard went back to the default language and colour theme on every restart; it now keeps both.",
169
+ "vi": "Dashboard trước đây quay về ngôn ngữ và theme màu mặc định sau mỗi lần khởi động lại; giờ nó giữ cả hai."
170
+ }
171
+ ],
172
+ "requires": {
173
+ "en": "Agent Studio 0.39.0",
174
+ "vi": "Agent Studio 0.39.0"
175
+ }
176
+ },
177
+ {
178
+ "version": "1.38.2",
179
+ "date": "2026-10-23",
180
+ "status": "stable",
181
+ "title": {
182
+ "en": "Folder tree, colour themes and an editor that stays in view",
183
+ "vi": "Cây thư mục, theme màu và editor luôn trong tầm nhìn"
184
+ },
185
+ "summary": {
186
+ "en": "The files panel becomes a folder tree, 13 colour themes arrive, and the editor and terminal stay pinned while the conversation scrolls.",
187
+ "vi": "Khung Tệp thành cây thư mục, có 13 theme màu, và editor cùng terminal đứng yên khi cuộc trò chuyện cuộn."
188
+ },
189
+ "items": [
190
+ {
191
+ "kind": "new",
192
+ "en": "Colour themes in Settings → Appearance or the command palette (⌘K) colour the interface, the editor's syntax and the terminal.",
193
+ "vi": "Theme màu trong Cài đặt → Giao diện hoặc bảng lệnh (⌘K) đổi màu cả giao diện, cú pháp trong editor và terminal."
194
+ },
195
+ {
196
+ "kind": "improved",
197
+ "en": "On wide screens the editor and terminal stay pinned under the header while the conversation scrolls; a splitter sets the editor's width.",
198
+ "vi": "Trên màn hình rộng, editor và terminal đứng yên dưới header khi cuộc trò chuyện cuộn; kéo thanh chia để đổi độ rộng editor."
199
+ },
200
+ {
201
+ "kind": "improved",
202
+ "en": "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.",
203
+ "vi": "Khung Tệp là cây thư mục: thư mục mở ngay tại chỗ, file đang mở được tô sáng, và Tệp mới bắt đầu ở thư mục vừa chọn."
204
+ },
205
+ {
206
+ "kind": "improved",
207
+ "en": "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.",
208
+ "vi": "Nút Tệp/Terminal luôn hiện ở mọi độ rộng; trên điện thoại cây thư mục hẹp hơn và các nút của editor nằm trên một dòng."
209
+ }
210
+ ],
211
+ "requires": null
212
+ },
213
+ {
214
+ "version": "1.38.1",
215
+ "date": "2026-10-23",
216
+ "status": "stable",
217
+ "title": {
218
+ "en": "Published release of v1.38.0",
219
+ "vi": "Bản phát hành chính thức của v1.38.0"
220
+ },
221
+ "summary": {
222
+ "en": "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.",
223
+ "vi": "v1.38.0 không qua release check vì hai test nên chưa từng được phát hành; v1.38.1 là cùng bản đó với hai test đã được sửa."
224
+ },
225
+ "items": [
226
+ {
227
+ "kind": "improved",
228
+ "en": "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.",
229
+ "vi": "Hai test phát hành nay pass trên Linux và máy chạy chậm, nên editor, terminal, review, checkpoint và Bypass của v1.38.0 có trong bản này."
230
+ }
231
+ ],
232
+ "requires": null
233
+ },
234
+ {
235
+ "version": "1.38.0",
236
+ "date": "2026-10-23",
237
+ "status": "unpublished",
238
+ "title": {
239
+ "en": "Piagent becomes an editor, and Bypass asks nothing",
240
+ "vi": "Piagent thành editor, Bypass không hỏi gì"
241
+ },
242
+ "summary": {
243
+ "en": "Files, terminals, inline review and checkpoints in the dashboard, and a Bypass mode that asks nothing, in company conversations where the Harness allows it.",
244
+ "vi": "Dashboard có file, terminal, review inline và checkpoint, cùng chế độ Bypass không hỏi gì, cả trong cuộc trò chuyện công ty khi Harness cho phép."
245
+ },
246
+ "items": [
247
+ {
248
+ "kind": "new",
249
+ "en": "The `bypass` mode (`/permission bypass`, `piagent-auto --bypass`) turns every gate off; output is still redacted and `/undo` still works.",
250
+ "vi": "Chế độ `bypass` (`/permission bypass`, `piagent-auto --bypass`) tắt mọi bước chặn; output vẫn được che secret và `/undo` vẫn hoàn tác được."
251
+ },
252
+ {
253
+ "kind": "breaking",
254
+ "en": "Company conversations have Ask first, Full access (formerly called Bypass) and Bypass, offered only when the Harness allows it.",
255
+ "vi": "Cuộc trò chuyện công ty có Hỏi trước, Toàn quyền (trước đây gọi là Bypass) và Bypass, chỉ có khi Harness cho phép."
256
+ },
257
+ {
258
+ "kind": "new",
259
+ "en": "The dashboard opens, edits, saves, renames and deletes project files, with Cmd/Ctrl+P, search and conflicts when a file changed on disk.",
260
+ "vi": "Dashboard mở, sửa, lưu, đổi tên và xóa file của project, có Cmd/Ctrl+P, tìm kiếm và báo xung đột khi file đã đổi trên đĩa."
261
+ },
262
+ {
263
+ "kind": "new",
264
+ "en": "Project terminals in the dashboard; company terminals run in the sandbox, on macOS too, and never on the host.",
265
+ "vi": "Terminal của project ngay trên dashboard; terminal của cuộc trò chuyện công ty chạy trong sandbox, cả trên macOS, không bao giờ chạy trên host."
266
+ },
267
+ {
268
+ "kind": "new",
269
+ "en": "Inline review of the agent's hunks with Keep and Revert, and Timeline restore with a preview, sharing checkpoints with `/undo`.",
270
+ "vi": "Review inline từng hunk agent sửa với Giữ và Hoàn tác, và khôi phục trong Timeline có xem trước, dùng chung checkpoint với `/undo`."
271
+ },
272
+ {
273
+ "kind": "fixed",
274
+ "en": "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.",
275
+ "vi": "Checkpoint không tạo được từng chặn mọi lần sửa; giờ thì không, và snapshot mất khoảng 0,5 s thay vì 35 s trên repo 4.000 file."
276
+ }
277
+ ],
278
+ "requires": {
279
+ "en": "Agent Studio 0.38.0 and Agent Watch 0.15.14 (Windows 0.1.17) for the company Bypass level",
280
+ "vi": "Agent Studio 0.38.0 và Agent Watch 0.15.14 (Windows 0.1.17) cho mức Bypass ở chế độ công ty"
281
+ }
282
+ },
283
+ {
284
+ "version": "1.37.1",
285
+ "date": "2026-10-22",
286
+ "status": "stable",
287
+ "title": {
288
+ "en": "Run closes and helper reports Studio can trust",
289
+ "vi": "Đóng run và báo cáo helper mà Studio tin được"
290
+ },
291
+ "summary": {
292
+ "en": "A retried close counts only when it reaches Studio, helpers keep their answers, and outbound requests refuse every IPv6 form of a private address.",
293
+ "vi": "Lần đóng run hỏi lại chỉ được tính khi tới Studio, helper giữ câu trả lời, và yêu cầu ra ngoài chặn mọi dạng IPv6 của địa chỉ nội bộ."
294
+ },
295
+ "items": [
296
+ {
297
+ "kind": "security",
298
+ "en": "The `web_fetch` tool and the package proxy let some IPv6 forms of a private address through; every such form is now refused.",
299
+ "vi": "Tool `web_fetch` và package proxy từng cho qua một số dạng IPv6 của địa chỉ nội bộ; giờ mọi dạng như vậy đều bị chặn."
300
+ },
301
+ {
302
+ "kind": "security",
303
+ "en": "With a company upstream proxy (`HTTPS_PROXY`), the package proxy now checks each destination itself instead of leaving it to the upstream.",
304
+ "vi": "Khi có upstream proxy của công ty (`HTTPS_PROXY`), package proxy giờ tự kiểm tra từng đích kết nối thay vì để upstream tự xử lý."
305
+ },
306
+ {
307
+ "kind": "fixed",
308
+ "en": "A close retried after a brief failure could be recorded without reaching Studio; it now counts only when Studio receives it.",
309
+ "vi": "Lần đóng run hỏi lại sau lỗi thoáng qua có thể được ghi nhận dù không tới Studio; giờ chỉ được tính khi Studio nhận được."
310
+ },
311
+ {
312
+ "kind": "fixed",
313
+ "en": "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.",
314
+ "vi": "Helper đóng lỗi trong chốc lát từng bị coi là thất bại; giờ nó giữ câu trả lời, và báo cáo được gửi lại sau lỗi thoáng qua."
315
+ },
316
+ {
317
+ "kind": "fixed",
318
+ "en": "Team memory merged failures of two commands of one executable into one lesson; the whole command is now the key.",
319
+ "vi": "Team memory từng gộp lỗi của hai lệnh khác nhau cùng một chương trình thành một bài học; giờ khóa là cả câu lệnh."
320
+ },
321
+ {
322
+ "kind": "fixed",
323
+ "en": "Skill feedback mixed skills with alike names such as `a/b` and `a_b`; each skill name now keeps its own file.",
324
+ "vi": "Phản hồi skill từng trộn các skill có tên giống nhau như `a/b` và `a_b`; giờ mỗi tên skill có file riêng."
325
+ }
326
+ ],
327
+ "requires": {
328
+ "en": "Agent Watch 0.15.11 (Windows 0.1.16)",
329
+ "vi": "Agent Watch 0.15.11 (Windows 0.1.16)"
330
+ }
331
+ },
332
+ {
333
+ "version": "1.37.0",
334
+ "date": "2026-10-22",
335
+ "status": "stable",
336
+ "title": {
337
+ "en": "A cut answer no longer stops a long task",
338
+ "vi": "Câu trả lời bị cắt không còn làm dừng task dài"
339
+ },
340
+ "summary": {
341
+ "en": "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.",
342
+ "vi": "Câu trả lời bị cắt giữa chừng phía sau Studio được hỏi lại và task tự làm tiếp; `piagent studio --rpc` cho script điều khiển cuộc trò chuyện công ty."
343
+ },
344
+ "items": [
345
+ {
346
+ "kind": "fixed",
347
+ "en": "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.",
348
+ "vi": "Câu trả lời bị cắt giữa chừng từng hiện \"không gửi được yêu cầu\" và dừng task dài; giờ Piagent hỏi lại và task tự làm tiếp."
349
+ },
350
+ {
351
+ "kind": "fixed",
352
+ "en": "The company Terminal no longer exits with an error when a conversation closes right after a turn while Git still reports branch status.",
353
+ "vi": "Terminal công ty không còn thoát với lỗi khi cuộc trò chuyện đóng ngay sau một lượt trong lúc Git vẫn đang trả trạng thái branch."
354
+ },
355
+ {
356
+ "kind": "new",
357
+ "en": "New `piagent studio --rpc` runs one company conversation over Pi's RPC protocol on stdin/stdout, with several messages and `ask_user`.",
358
+ "vi": "Lệnh mới `piagent studio --rpc` chạy một cuộc trò chuyện công ty qua giao thức RPC của Pi trên stdin/stdout, nhiều tin nhắn và có `ask_user`."
359
+ },
360
+ {
361
+ "kind": "new",
362
+ "en": "A long-task soak lane in the repository drives the real company agent through 45–150-minute tasks with a simulated member.",
363
+ "vi": "Repository có lane soak cho task dài: một member giả lập điều khiển agent công ty thật qua các task 45–150 phút."
364
+ }
365
+ ],
366
+ "requires": null
367
+ },
368
+ {
369
+ "version": "1.36.1",
370
+ "date": "2026-10-22",
371
+ "status": "stable",
372
+ "title": {
373
+ "en": "A brief Agent Watch failure no longer stops a task",
374
+ "vi": "Agent Watch lỗi thoáng qua không còn làm dừng task"
375
+ },
376
+ "summary": {
377
+ "en": "When Agent Watch briefly cannot reach a running Studio, Piagent asks again for up to 3 minutes instead of stopping the task.",
378
+ "vi": "Khi Agent Watch tạm thời không tới được Studio đang chạy, Piagent hỏi lại trong tối đa 3 phút thay vì dừng task."
379
+ },
380
+ "items": [
381
+ {
382
+ "kind": "fixed",
383
+ "en": "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.",
384
+ "vi": "Một lần gia hạn quyền qua Agent Watch bị lỗi từng làm dừng task 25 phút; giờ Piagent hỏi lại, mỗi lần chờ lâu hơn, trong tối đa 3 phút."
385
+ },
386
+ {
387
+ "kind": "fixed",
388
+ "en": "Closing the round's run goes through the same wait, so a passing gateway error no longer fails a turn whose work is done.",
389
+ "vi": "Bước đóng run cuối lượt cũng chờ như vậy, nên lỗi gateway thoáng qua không còn làm hỏng lượt đã làm xong."
390
+ },
391
+ {
392
+ "kind": "improved",
393
+ "en": "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.",
394
+ "vi": "Mỗi lần chờ được ghi vào log trên máy và báo về Studio trong Logs → \"Mất kết nối\"; key hay báo cáo bị từ chối vẫn lỗi ngay."
395
+ }
396
+ ],
397
+ "requires": null
398
+ },
399
+ {
400
+ "version": "1.36.0",
401
+ "date": "2026-10-21",
402
+ "status": "stable",
403
+ "title": {
404
+ "en": "Team memory learns from what went wrong",
405
+ "vi": "Team memory học từ chỗ làm sai"
406
+ },
407
+ "summary": {
408
+ "en": "Memory learns from member feedback and repeated errors, keeps only completed tasks that add something, and proposes failing skills for review.",
409
+ "vi": "Memory học từ phản hồi của member và lỗi lặp lại, chỉ giữ task hoàn thành có thêm điều mới, và đề xuất xem lại skill hay lỗi."
410
+ },
411
+ "items": [
412
+ {
413
+ "kind": "new",
414
+ "en": "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.",
415
+ "vi": "Những gì memory đưa cho một lượt được gửi lại Studio, để Studio chấm theo câu tiếp theo của member và thôi đưa ghi chú bị nói là sai."
416
+ },
417
+ {
418
+ "kind": "new",
419
+ "en": "A command that fails the same way twice in a round becomes a lesson that keeps the first error line, with no guessed cause.",
420
+ "vi": "Lệnh lỗi giống nhau hai lần trong một lượt thành bài học, giữ dòng lỗi đầu tiên và không đoán nguyên nhân."
421
+ },
422
+ {
423
+ "kind": "improved",
424
+ "en": "Repository memory skips completed tasks that change only build output, caches, logs or Piagent's state, or repeat files already known.",
425
+ "vi": "Memory của repo bỏ qua task chỉ đổi build output, cache, log hay trạng thái của Piagent, hoặc lặp lại file đã biết."
426
+ },
427
+ {
428
+ "kind": "new",
429
+ "en": "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.",
430
+ "vi": "Khi 3 lượt gần nhất của một skill bị lỗi, Piagent ghi đề xuất vào `.pi/piagent-state/skill-proposals/`, tối đa mỗi tuần; không tự sửa skill."
431
+ }
432
+ ],
433
+ "requires": {
434
+ "en": "Agent Studio 0.37.0",
435
+ "vi": "Agent Studio 0.37.0"
436
+ }
437
+ },
438
+ {
439
+ "version": "1.35.1",
440
+ "date": "2026-10-21",
441
+ "status": "stable",
442
+ "title": {
443
+ "en": "A passing model provider failure no longer stops a long task",
444
+ "vi": "Lỗi tạm thời của nhà cung cấp model không còn làm dừng task dài"
445
+ },
446
+ "summary": {
447
+ "en": "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.",
448
+ "vi": "Lỗi của nhà cung cấp model giữa câu trả lời được hỏi lại, và vòng bị cắt bởi lỗi như vậy tự chạy tiếp sau một lúc chờ."
449
+ },
450
+ "items": [
451
+ {
452
+ "kind": "fixed",
453
+ "en": "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.",
454
+ "vi": "Lỗi của nhà cung cấp sau một bước tool từng dừng task dài cho tới khi member nhắn lại; giờ Piagent hỏi lại sau 2 và 4 giây."
455
+ },
456
+ {
457
+ "kind": "improved",
458
+ "en": "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).",
459
+ "vi": "Khi không hỏi lại được, vòng sau tự bắt đầu sau một lúc chờ và báo agent lý do, tối đa 8 lần mỗi tin nhắn của member (khoảng 23 phút)."
460
+ },
461
+ {
462
+ "kind": "improved",
463
+ "en": "A round that ends well resets the count, Stop ends the pause, and after the last attempt the turn fails with its reason.",
464
+ "vi": "Vòng kết thúc tốt sẽ đặt lại bộ đếm, Stop dừng lúc chờ, và sau lần cuối lượt báo lỗi kèm lý do."
465
+ },
466
+ {
467
+ "kind": "improved",
468
+ "en": "Every retry is recorded in the member's local log, so why a task stopped or went on can be read back.",
469
+ "vi": "Mỗi lần hỏi lại được ghi vào log trên máy của member, để đọc lại vì sao task dừng hay chạy tiếp."
470
+ }
471
+ ],
472
+ "requires": null
473
+ },
474
+ {
475
+ "version": "1.35.0",
476
+ "date": "2026-10-21",
477
+ "status": "stable",
478
+ "title": {
479
+ "en": "Long company tasks go on across Studio updates",
480
+ "vi": "Task dài của công ty chạy qua được lúc Studio cập nhật"
481
+ },
482
+ "summary": {
483
+ "en": "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.",
484
+ "vi": "Khi Studio dừng, khởi động lại hay cập nhật giữa task, Piagent chờ rồi làm tiếp thay vì báo lỗi, và một lượt trên dashboard chạy được 24 giờ."
485
+ },
486
+ "items": [
487
+ {
488
+ "kind": "new",
489
+ "en": "When Studio is away, Piagent reads its heartbeat and asks again once it is back, with no time limit; Stop ends the wait.",
490
+ "vi": "Khi Studio không phản hồi, Piagent đọc heartbeat và hỏi lại khi Studio trở lại, không giới hạn thời gian; Stop vẫn dừng được."
491
+ },
492
+ {
493
+ "kind": "improved",
494
+ "en": "A round the dashboard cannot replay starts again by itself and tells the agent Studio was updated, so it continues where it was.",
495
+ "vi": "Vòng mà dashboard không phát lại được sẽ tự bắt đầu lại và báo agent Studio vừa cập nhật, để agent làm tiếp từ chỗ dở."
496
+ },
497
+ {
498
+ "kind": "new",
499
+ "en": "Every wait is logged locally and reported to Studio, which lists it with its cause in Logs → \"Mất kết nối\".",
500
+ "vi": "Mỗi lần chờ được ghi vào log trên máy và báo về Studio, nơi hiện nó kèm nguyên nhân trong Logs → \"Mất kết nối\"."
501
+ },
502
+ {
503
+ "kind": "improved",
504
+ "en": "One member message can run for 24 hours in the dashboard (it was 6); the 15-minute silence limit stays.",
505
+ "vi": "Một tin nhắn của member chạy được tới 24 giờ trên dashboard (trước là 6); giới hạn 15 phút im lặng vẫn giữ."
506
+ },
507
+ {
508
+ "kind": "improved",
509
+ "en": "A key, quota or policy failure still fails at once, as before.",
510
+ "vi": "Lỗi key, quota hay policy vẫn báo lỗi ngay như trước."
511
+ }
512
+ ],
513
+ "requires": {
514
+ "en": "Agent Studio 0.36.0",
515
+ "vi": "Agent Studio 0.36.0"
516
+ }
517
+ },
518
+ {
519
+ "version": "1.34.3",
520
+ "date": "2026-10-20",
521
+ "status": "stable",
522
+ "title": {
523
+ "en": "Agent Watch notifies for company conversations",
524
+ "vi": "Agent Watch báo cho cuộc trò chuyện công ty"
525
+ },
526
+ "summary": {
527
+ "en": "Company conversation states were written where Agent Watch does not read, so it never notified; they are now written where it reads.",
528
+ "vi": "Trạng thái cuộc trò chuyện công ty từng được ghi vào chỗ Agent Watch không đọc nên không có thông báo; giờ được ghi đúng chỗ."
529
+ },
530
+ "items": [
531
+ {
532
+ "kind": "fixed",
533
+ "en": "Agent Watch never notified for company conversations; their states now go to `~/.pi/agent/status/company`, without prompts or answers.",
534
+ "vi": "Agent Watch từng không báo gì cho cuộc trò chuyện công ty; giờ trạng thái được ghi vào `~/.pi/agent/status/company`, không kèm prompt hay câu trả lời."
535
+ }
536
+ ],
537
+ "requires": null
538
+ },
539
+ {
540
+ "version": "1.34.2",
541
+ "date": "2026-10-20",
542
+ "status": "stable",
543
+ "title": {
544
+ "en": "Helper outcomes reach Studio",
545
+ "vi": "Kết quả của helper đến được Studio"
546
+ },
547
+ "summary": {
548
+ "en": "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.",
549
+ "vi": "Ở bản 1.34.1, Studio từ chối báo cáo của helper vì gửi bằng token cũ nên không ghi nhận kết quả; giờ báo cáo dùng token hiện tại."
550
+ },
551
+ "items": [
552
+ {
553
+ "kind": "fixed",
554
+ "en": "Helper reports were refused after a token renewal and no outcome was recorded; they now use the helper role's current token.",
555
+ "vi": "Báo cáo của helper từng bị từ chối sau khi token được gia hạn và không có kết quả nào được ghi nhận; giờ dùng token hiện tại của role."
556
+ }
557
+ ],
558
+ "requires": null
559
+ },
560
+ {
561
+ "version": "1.34.1",
562
+ "date": "2026-10-20",
563
+ "status": "stable",
564
+ "title": {
565
+ "en": "Helper outcomes, line review and Agent Watch notifications",
566
+ "vi": "Kết quả helper, comment theo dòng và thông báo Agent Watch"
567
+ },
568
+ "summary": {
569
+ "en": "Helpers report how their work ended, line comments on a diff go to the agent, and Agent Watch notifies when a conversation needs you.",
570
+ "vi": "Helper báo kết quả công việc, comment theo dòng trên diff được gửi cho agent, và Agent Watch báo khi cuộc trò chuyện cần bạn."
571
+ },
572
+ "items": [
573
+ {
574
+ "kind": "new",
575
+ "en": "Each helper reports how it ended: succeeded, failed, cancelled or unverifiable; Studio shows it in Logs → Lượt agent.",
576
+ "vi": "Mỗi helper báo cách nó kết thúc: thành công, lỗi, đã dừng hay chưa kiểm chứng được; Studio hiện trong Logs → Lượt agent."
577
+ },
578
+ {
579
+ "kind": "new",
580
+ "en": "In Source Changes, click a line number to comment; comments on several files go to the composer as one message with `file:line`.",
581
+ "vi": "Trong Source Changes, bấm số dòng để comment; comment trên nhiều file được đưa vào ô soạn tin thành một tin nhắn có `file:line`."
582
+ },
583
+ {
584
+ "kind": "new",
585
+ "en": "The review helper's findings show under the line they name, and findings without a line under their file.",
586
+ "vi": "Kết quả của helper review hiện ngay dưới dòng nó nói tới, và kết quả không có dòng hiện dưới file."
587
+ },
588
+ {
589
+ "kind": "new",
590
+ "en": "Conversation states are written for Agent Watch notifications, holding only the title and project name, never prompts or answers.",
591
+ "vi": "Trạng thái cuộc trò chuyện được ghi để Agent Watch thông báo, chỉ có tên cuộc trò chuyện và tên project, không có prompt hay câu trả lời."
592
+ },
593
+ {
594
+ "kind": "new",
595
+ "en": "The `delegate` tool takes optional target, change, constraints, ownership and acceptance fields, which head the helper's brief.",
596
+ "vi": "Tool `delegate` nhận thêm các trường tùy chọn: mục tiêu, thay đổi, ràng buộc, phạm vi được đụng và tiêu chí chấp nhận, đặt ở đầu brief của helper."
597
+ },
598
+ {
599
+ "kind": "improved",
600
+ "en": "Piagent asks Studio hourly which operations it serves and uses newer ones only when listed; an older Studio keeps today's behaviour.",
601
+ "vi": "Piagent hỏi Studio mỗi giờ những thao tác nó hỗ trợ và chỉ dùng thao tác mới khi có trong danh sách; Studio cũ vẫn chạy như trước."
602
+ }
603
+ ],
604
+ "requires": {
605
+ "en": "Agent Studio 0.34, Agent Watch 0.15.9 (Windows 0.1.15)",
606
+ "vi": "Agent Studio 0.34, Agent Watch 0.15.9 (Windows 0.1.15)"
607
+ }
608
+ },
609
+ {
610
+ "version": "1.33.0",
611
+ "date": "2026-10-20",
612
+ "status": "stable",
613
+ "title": {
614
+ "en": "Company and personal sessions run on Pi 1.3.0",
615
+ "vi": "Session công ty và cá nhân chạy trên Pi 1.3.0"
616
+ },
617
+ "summary": {
618
+ "en": "`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.",
619
+ "vi": "`piagent-setup` và `piagent-update` chuyển Piagent từ Pi 0.87.1 lên Pi 1.3.0, từ chối lời gọi tool hỏng và tự thử lại lỗi gateway."
620
+ },
621
+ "items": [
622
+ {
623
+ "kind": "improved",
624
+ "en": "A tool call with malformed JSON arguments is refused and shown to the model instead of running with the fields parsed before the error.",
625
+ "vi": "Lời gọi tool có tham số JSON hỏng bị từ chối và trả lại cho model thay vì chạy với phần đọc được trước chỗ lỗi."
626
+ },
627
+ {
628
+ "kind": "improved",
629
+ "en": "Gateway errors are retried, a resumed session keeps its active tools, and switching model drops the previous model's thinking.",
630
+ "vi": "Lỗi gateway được tự thử lại, session mở lại giữ đúng các tool đang bật, và đổi model sẽ bỏ thinking của model trước."
631
+ },
632
+ {
633
+ "kind": "breaking",
634
+ "en": "Your personal `pi` also becomes 1.3.0: theme `$schema` references changed, and `kimi-coding` base URL overrides must end in `/v1`.",
635
+ "vi": "Lệnh `pi` cá nhân cũng lên 1.3.0: tham chiếu `$schema` của theme đã đổi, và URL gốc ghi đè cho `kimi-coding` phải kết thúc bằng `/v1`."
636
+ },
637
+ {
638
+ "kind": "improved",
639
+ "en": "GPT-6.1 Sol keeps its reviewed 272k window in company sessions, where use above 272k is priced at twice the rate.",
640
+ "vi": "GPT-6.1 Sol trong session công ty vẫn giữ cửa sổ 272k đã duyệt, vì phần trên 272k bị tính giá gấp đôi."
641
+ },
642
+ {
643
+ "kind": "fixed",
644
+ "en": "A run started by a custom message now gets the usual system prompt and starts no extra turn, task or context pack.",
645
+ "vi": "Lượt chạy bắt đầu từ một tin nhắn tùy chỉnh nay nhận system prompt như thường và không tạo thêm lượt, task hay context pack."
646
+ },
647
+ {
648
+ "kind": "security",
649
+ "en": "Three accepted dependency advisories are resolved: Pi 1.3.0 installs the fixed version.",
650
+ "vi": "Ba cảnh báo bảo mật dependency từng được chấp nhận đã được xử lý: Pi 1.3.0 cài bản đã sửa."
651
+ }
652
+ ],
653
+ "requires": {
654
+ "en": "Pi 1.3.0",
655
+ "vi": "Pi 1.3.0"
656
+ }
657
+ },
658
+ {
659
+ "version": "1.32.1",
660
+ "date": "2026-10-19",
661
+ "status": "stable",
662
+ "title": {
663
+ "en": "Bypass survives a reload, and a tab in use stays signed in",
664
+ "vi": "Bypass được giữ sau khi tải lại, tab đang dùng không bị đăng xuất"
665
+ },
666
+ "summary": {
667
+ "en": "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.",
668
+ "vi": "Bypass và Fast bật ngay sau câu trả lời được giữ, nút quyền truy cập theo đúng cuộc trò chuyện đang mở, và tab đang dùng không còn bị đăng xuất."
669
+ },
670
+ "items": [
671
+ {
672
+ "kind": "fixed",
673
+ "en": "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.",
674
+ "vi": "Bật Bypass hoặc Fast ngay sau câu trả lời từng bị từ chối, nên tải lại vẫn thấy \"Hỏi trước\"; giờ lệnh được gửi lại theo trạng thái mới nhất."
675
+ },
676
+ {
677
+ "kind": "fixed",
678
+ "en": "Opening another conversation in Bypass showed \"Hỏi trước\"; the access button and Settings → Access now follow the open conversation.",
679
+ "vi": "Mở cuộc trò chuyện khác cũng đang Bypass từng hiện \"Hỏi trước\"; nút quyền và Cài đặt → Quyền truy cập giờ theo cuộc trò chuyện đang mở."
680
+ },
681
+ {
682
+ "kind": "fixed",
683
+ "en": "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.",
684
+ "vi": "Phiên trình duyệt từng hết hạn 8 giờ sau khi mở dù tab vẫn đang dùng; giờ được gia hạn tới 7 ngày, chỉ tab bỏ không 8 giờ mới bị đăng xuất."
685
+ }
686
+ ],
687
+ "requires": null
688
+ },
689
+ {
690
+ "version": "1.32.0",
691
+ "date": "2026-10-19",
692
+ "status": "stable",
693
+ "title": {
694
+ "en": "Failed or stopped company streams end at Studio too",
695
+ "vi": "Lượt lỗi hoặc bấm Stop được dừng cả ở Studio"
696
+ },
697
+ "summary": {
698
+ "en": "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.",
699
+ "vi": "Khi lượt trả lời của cuộc trò chuyện công ty lỗi hoặc bạn bấm Stop, Piagent báo Studio dừng yêu cầu, để tài khoản rảnh ngay cho lượt sau."
700
+ },
701
+ "items": [
702
+ {
703
+ "kind": "fixed",
704
+ "en": "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.",
705
+ "vi": "Lượt bị đứt kết nối có thể vẫn chạy ở Studio tới 10 phút, khiến mọi lần thử lại bị báo \"tài khoản đang bận\"; giờ Studio được báo để dừng."
706
+ },
707
+ {
708
+ "kind": "improved",
709
+ "en": "New failure messages for an over-long answer, a cancelled request and a superseded one; an over-long answer is asked again.",
710
+ "vi": "Thông báo lỗi mới cho câu trả lời quá dài, yêu cầu bị hủy và yêu cầu bị thay thế; câu trả lời quá dài được hỏi lại."
711
+ }
712
+ ],
713
+ "requires": {
714
+ "en": "Agent Studio 0.32.0",
715
+ "vi": "Agent Studio 0.32.0"
716
+ }
717
+ },
718
+ {
719
+ "version": "1.31.1",
720
+ "date": "2026-10-19",
721
+ "status": "stable",
722
+ "title": {
723
+ "en": "`memory_ask` is there from the first conversation after an update",
724
+ "vi": "`memory_ask` có ngay từ cuộc trò chuyện đầu tiên sau khi cập nhật"
725
+ },
726
+ "summary": {
727
+ "en": "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.",
728
+ "vi": "Cuộc trò chuyện công ty đầu tiên sau khi có Agent Studio 0.30.0 từng thiếu `memory_ask`; giờ tool có mặt mỗi khi cuộc trò chuyện có team memory."
729
+ },
730
+ "items": [
731
+ {
732
+ "kind": "fixed",
733
+ "en": "The `memory_ask` tool was missing from the first company conversation after a Studio update; it is now offered whenever team memory is on.",
734
+ "vi": "Tool `memory_ask` từng thiếu trong cuộc trò chuyện công ty đầu tiên sau khi Studio cập nhật; giờ có mặt mỗi khi team memory bật."
735
+ },
736
+ {
737
+ "kind": "improved",
738
+ "en": "On a Studio without it, `memory_ask` says to use `memory_search`, and memory stays on.",
739
+ "vi": "Với Studio chưa hỗ trợ, `memory_ask` nhắc dùng `memory_search`, và memory vẫn bật."
740
+ }
741
+ ],
742
+ "requires": null
743
+ },
744
+ {
745
+ "version": "1.31.0",
746
+ "date": "2026-10-19",
747
+ "status": "stable",
748
+ "title": {
749
+ "en": "Team memory follows the work",
750
+ "vi": "Team memory đi theo việc đang làm"
751
+ },
752
+ "summary": {
753
+ "en": "Team rules lead the brief, memories from the current branch and folders are preferred, and the new `memory_ask` answers with sources.",
754
+ "vi": "Brief mở đầu bằng luật của team, memory của branch và thư mục đang làm được ưu tiên, và tool mới `memory_ask` trả lời kèm nguồn."
755
+ },
756
+ "items": [
757
+ {
758
+ "kind": "new",
759
+ "en": "The brief starts with the team's rules, which override recalled memories.",
760
+ "vi": "Brief mở đầu bằng luật của team, được ưu tiên hơn memory được gợi lại."
761
+ },
762
+ {
763
+ "kind": "improved",
764
+ "en": "Each round carries its branch, folders, changed files and checks, so Studio prefers memories from the current branch and folders.",
765
+ "vi": "Mỗi lượt gửi kèm branch, thư mục, file đã đổi và check, để Studio ưu tiên memory của branch và thư mục đang làm."
766
+ },
767
+ {
768
+ "kind": "improved",
769
+ "en": "An agent's \"fixed\" or \"done\" is a claim until a check passes, and turns stale when Git removes the files it named.",
770
+ "vi": "Điều agent nói \"đã fix\" hay \"xong\" chỉ là claim cho tới khi check pass, và thành cũ khi Git xóa các file nó nhắc tới."
771
+ },
772
+ {
773
+ "kind": "new",
774
+ "en": "The new read-only `memory_ask` tool answers a question from team memory with its sources, for the main agent and helpers.",
775
+ "vi": "Tool mới chỉ đọc `memory_ask` trả lời câu hỏi từ team memory kèm nguồn, dùng được cho agent chính và helper."
776
+ },
777
+ {
778
+ "kind": "fixed",
779
+ "en": "Folders with several repositories, a remote not named `origin` and Git \"dubious ownership\" on WSL no longer turn memory off silently.",
780
+ "vi": "Thư mục chứa nhiều repo, remote không tên `origin` và lỗi Git \"dubious ownership\" trên WSL không còn làm memory tắt im lặng."
781
+ },
782
+ {
783
+ "kind": "improved",
784
+ "en": "Check results from piped commands such as `cmd | tail` now count as lessons, and Agent Studio 0.27–0.29 keeps working.",
785
+ "vi": "Kết quả check từ lệnh có pipe như `cmd | tail` giờ được tính là bài học, và Agent Studio 0.27–0.29 vẫn chạy được."
786
+ }
787
+ ],
788
+ "requires": {
789
+ "en": "Agent Studio 0.30.0",
790
+ "vi": "Agent Studio 0.30.0"
791
+ }
792
+ },
793
+ {
794
+ "version": "1.30.1",
795
+ "date": "2026-10-18",
796
+ "status": "stable",
797
+ "title": {
798
+ "en": "Company Terminal hides model names; clear message in the home folder",
799
+ "vi": "Terminal công ty ẩn tên model; báo đúng lý do ở thư mục home"
800
+ },
801
+ "summary": {
802
+ "en": "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.",
803
+ "vi": "Terminal công ty hiện vai trò thay cho tên model, và `piagent studio` ở thư mục home giờ báo đúng lý do không mở được và cách xử lý."
804
+ },
805
+ "items": [
806
+ {
807
+ "kind": "fixed",
808
+ "en": "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`.",
809
+ "vi": "Terminal công ty từng hiện tên model của Harness ở header, thanh dưới và câu trả lời /model; giờ chỉ hiện vai trò, ví dụ `Main agent • Rất cao`."
810
+ },
811
+ {
812
+ "kind": "fixed",
813
+ "en": "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`.",
814
+ "vi": "Lệnh `piagent studio` ở thư mục home từng báo nhầm Agent Watch hoặc Piagent vừa đổi; giờ nó nhắc mở thư mục project hoặc dùng `--project`."
815
+ },
816
+ {
817
+ "kind": "improved",
818
+ "en": "Pi's start-up warnings no longer point at /bug, which is off in company conversations, or name a model.",
819
+ "vi": "Cảnh báo lúc khởi động của Pi không còn nhắc /bug, vốn bị tắt trong cuộc trò chuyện công ty, và không nêu tên model."
820
+ }
821
+ ],
822
+ "requires": null
823
+ },
824
+ {
825
+ "version": "1.30.0",
826
+ "date": "2026-10-18",
827
+ "status": "stable",
828
+ "title": {
829
+ "en": "Large contexts over slow connections; a clearer company Terminal",
830
+ "vi": "Context lớn đi qua mạng chậm; Terminal công ty rõ ràng hơn"
831
+ },
832
+ "summary": {
833
+ "en": "Model calls to Studio are gzip-compressed, about 3x smaller, and the company Terminal shows turn stats, running helpers and the Git branch.",
834
+ "vi": "Lời gọi model lên Studio được nén gzip, nhỏ hơn khoảng 3 lần, và Terminal công ty hiện thống kê lượt, subagent đang chạy và branch Git."
835
+ },
836
+ "items": [
837
+ {
838
+ "kind": "improved",
839
+ "en": "Model calls of 64 KiB or more go to Studio gzip-compressed once Studio accepts it, about 3x smaller.",
840
+ "vi": "Lời gọi model từ 64 KiB trở lên được nén gzip khi gửi lên Studio nếu Studio chấp nhận, nhỏ hơn khoảng 3 lần."
841
+ },
842
+ {
843
+ "kind": "fixed",
844
+ "en": "A slow upload that keeps sending is no longer cut at 15 s.",
845
+ "vi": "Lần tải lên chậm nhưng vẫn đang gửi không còn bị cắt sau 15 giây."
846
+ },
847
+ {
848
+ "kind": "improved",
849
+ "en": "Each turn's end notice in the company Terminal adds requests, tokens, time and output speed.",
850
+ "vi": "Thông báo cuối lượt trong Terminal công ty có thêm số request, token, thời gian và tốc độ output."
851
+ },
852
+ {
853
+ "kind": "improved",
854
+ "en": "The footer shows `Subagent n/m` and the Git branch; `memory_search` and `memory_page` results stay short, with Ctrl+O to show all.",
855
+ "vi": "Thanh dưới hiện `Subagent n/m` và branch Git; kết quả `memory_search` và `memory_page` được thu gọn, bấm Ctrl+O để xem hết."
856
+ },
857
+ {
858
+ "kind": "fixed",
859
+ "en": "Commands `/bypass status` and `/fast on` run on the first Enter, and `piagent studio` says it is joining Agent Watch before the Terminal draws.",
860
+ "vi": "Lệnh `/bypass status` và `/fast on` chạy ngay lần Enter đầu, và `piagent studio` báo đang kết nối Agent Watch trước khi Terminal hiện ra."
861
+ }
862
+ ],
863
+ "requires": {
864
+ "en": "Agent Studio 0.28.2",
865
+ "vi": "Agent Studio 0.28.2"
866
+ }
867
+ },
868
+ {
869
+ "version": "1.29.0",
870
+ "date": "2026-10-18",
871
+ "status": "stable",
872
+ "title": {
873
+ "en": "Company Terminal shows the Harness and keeps work inside the company",
874
+ "vi": "Terminal công ty hiện Harness và giữ cuộc trò chuyện trong công ty"
875
+ },
876
+ "summary": {
877
+ "en": "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.",
878
+ "vi": "Terminal công ty có phần đầu, footer và checklist plan riêng, chặn lệnh gửi dữ liệu ra ngoài, và Stop không còn làm hỏng tin nhắn kế tiếp."
879
+ },
880
+ "items": [
881
+ {
882
+ "kind": "security",
883
+ "en": "`/share` and `/bug` are refused in the company Terminal, since both sent company conversations and code outside the company.",
884
+ "vi": "`/share` và `/bug` bị chặn trong Terminal công ty, vì cả hai từng gửi cuộc trò chuyện và code của công ty ra ngoài."
885
+ },
886
+ {
887
+ "kind": "fixed",
888
+ "en": "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.",
889
+ "vi": "Dừng lượt khi lệnh đang chạy từng làm hỏng tin nhắn kế tiếp; với Studio và Watch tương ứng, tin nhắn sau giờ mở một run mới."
890
+ },
891
+ {
892
+ "kind": "improved",
893
+ "en": "`/login`, `/model`, `/thinking`, `/settings` and their keys say the team's Harness decides instead of opening Pi's pickers.",
894
+ "vi": "`/login`, `/model`, `/thinking`, `/settings` và phím tắt tương ứng báo Harness của team quyết định thay vì mở bảng chọn của Pi."
895
+ },
896
+ {
897
+ "kind": "new",
898
+ "en": "A company header shows team, Harness model and effort, review model, Ask first or Bypass, Fast, memory and release.",
899
+ "vi": "Phần đầu công ty hiện team, model và mức thinking của Harness, model review, Hỏi trước hay Bypass, Fast, memory và phiên bản."
900
+ },
901
+ {
902
+ "kind": "improved",
903
+ "en": "The footer shows the Harness's real model and effort with no USD cost, and the plan is drawn as a checklist.",
904
+ "vi": "Footer hiện đúng model và mức thinking của Harness, không hiện chi phí USD, và plan hiện thành checklist."
905
+ },
906
+ {
907
+ "kind": "improved",
908
+ "en": "`/changelog` shows Piagent's release notes, and the loader reads “Đang chờ bạn trả lời” while a question waits.",
909
+ "vi": "`/changelog` hiện ghi chú phát hành của Piagent, và khi chờ bạn trả lời câu hỏi thì hiện “Đang chờ bạn trả lời”."
910
+ }
911
+ ],
912
+ "requires": {
913
+ "en": "Agent Studio 0.28.1, Agent Watch 0.15.7 (Windows 0.1.14) for the Stop fix",
914
+ "vi": "Agent Studio 0.28.1, Agent Watch 0.15.7 (Windows 0.1.14) cho bản sửa Stop"
915
+ }
916
+ },
917
+ {
918
+ "version": "1.28.3",
919
+ "date": "2026-10-18",
920
+ "status": "stable",
921
+ "title": {
922
+ "en": "Agent Watch self-updates no longer break the company Terminal",
923
+ "vi": "Agent Watch tự cập nhật không còn làm gián đoạn Terminal công ty"
924
+ },
925
+ "summary": {
926
+ "en": "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.",
927
+ "vi": "Ngay sau khi Agent Watch tự cập nhật trên macOS, `piagent studio` và dashboard chờ cấu hình mới thay vì báo lỗi trong khoảng một phút."
928
+ },
929
+ "items": [
930
+ {
931
+ "kind": "fixed",
932
+ "en": "`piagent studio` failed for up to a minute after Agent Watch updated itself; it now waits for the new setup and runs.",
933
+ "vi": "`piagent studio` từng báo lỗi tới một phút sau khi Agent Watch tự cập nhật; giờ nó chờ cấu hình mới rồi chạy."
934
+ },
935
+ {
936
+ "kind": "security",
937
+ "en": "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.",
938
+ "vi": "Chỉ chờ khi file thay đổi vẫn đúng là ứng dụng Agent Watch, và mọi đường dẫn, mã băm đã ghim đều được kiểm lại trước."
939
+ }
940
+ ],
941
+ "requires": null
942
+ },
943
+ {
944
+ "version": "1.28.2",
945
+ "date": "2026-10-18",
946
+ "status": "stable",
947
+ "title": {
948
+ "en": "No setup error right after a Piagent update",
949
+ "vi": "Không còn lỗi cấu hình ngay sau khi cập nhật Piagent"
950
+ },
951
+ "summary": {
952
+ "en": "After a Piagent update, `piagent studio` waits up to 90 seconds for Agent Watch to rewrite the company setup instead of failing at once.",
953
+ "vi": "Sau khi cập nhật Piagent, `piagent studio` chờ tối đa 90 giây để Agent Watch ghi lại cấu hình công ty thay vì báo lỗi ngay."
954
+ },
955
+ "items": [
956
+ {
957
+ "kind": "fixed",
958
+ "en": "`piagent studio` failed right after an update while Agent Watch had not rewritten the setup; it now waits, rechecks every hash and runs.",
959
+ "vi": "`piagent studio` từng báo lỗi ngay sau khi cập nhật khi Agent Watch chưa ghi lại cấu hình; giờ nó chờ, kiểm lại mọi mã băm rồi chạy."
960
+ },
961
+ {
962
+ "kind": "improved",
963
+ "en": "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.",
964
+ "vi": "Trong lúc chờ nó báo “Agent Watch đang cập nhật cấu hình…” hoặc Agent Watch không chạy; dashboard cũng chờ như vậy."
965
+ },
966
+ {
967
+ "kind": "improved",
968
+ "en": "Update notes in the Terminal and the dashboard no longer tell members to import the configuration again by hand.",
969
+ "vi": "Ghi chú cập nhật trong Terminal và dashboard không còn bảo member nhập lại cấu hình bằng tay."
970
+ }
971
+ ],
972
+ "requires": null
973
+ },
974
+ {
975
+ "version": "1.28.1",
976
+ "date": "2026-10-18",
977
+ "status": "stable",
978
+ "title": {
979
+ "en": "Company Terminal and personal Pi stop stepping on each other",
980
+ "vi": "Terminal công ty và Pi cá nhân không còn giẫm chân nhau"
981
+ },
982
+ "summary": {
983
+ "en": "Personal Pi starts again when Piagent was loaded twice, old company entries are cleaned up, and company conversations stay in the company Terminal.",
984
+ "vi": "Pi cá nhân khởi động lại được khi Piagent bị nạp hai lần, mục công ty cũ được dọn, và cuộc trò chuyện công ty chỉ mở trong Terminal công ty."
985
+ },
986
+ "items": [
987
+ {
988
+ "kind": "fixed",
989
+ "en": "Personal `pi` exited without an answer when Piagent was loaded twice; `piagent-update` and the installer now remove the duplicate, with a backup.",
990
+ "vi": "`pi` cá nhân từng thoát không trả lời khi Piagent bị nạp hai lần; `piagent-update` và installer giờ gỡ mục trùng, có backup."
991
+ },
992
+ {
993
+ "kind": "fixed",
994
+ "en": "Old Agent Watch company providers and models in personal Pi are removed once a company binding exists; your own settings stay.",
995
+ "vi": "Provider và model công ty cũ của Agent Watch trong Pi cá nhân được gỡ khi máy đã có binding công ty; cài đặt của bạn được giữ."
996
+ },
997
+ {
998
+ "kind": "fixed",
999
+ "en": "Personal Pi refuses to continue a company conversation and says to open it with `piagent studio --project <folder>` and `/resume`.",
1000
+ "vi": "Pi cá nhân không tiếp tục cuộc trò chuyện công ty và chỉ cách mở bằng `piagent studio --project <folder>` và `/resume`."
1001
+ },
1002
+ {
1003
+ "kind": "fixed",
1004
+ "en": "`/help` in the company Terminal lists commands locally instead of going to the agent, which even started a review.",
1005
+ "vi": "`/help` trong Terminal công ty liệt kê lệnh tại chỗ thay vì gửi cho agent, vốn từng khởi động cả review."
1006
+ },
1007
+ {
1008
+ "kind": "fixed",
1009
+ "en": "Stopping `piagent` from a script, editor or timeout now stops the company run under it instead of leaving it running.",
1010
+ "vi": "Dừng `piagent` từ script, editor hay timeout giờ dừng luôn run công ty bên dưới thay vì để nó chạy ngầm."
1011
+ },
1012
+ {
1013
+ "kind": "improved",
1014
+ "en": "`piagent-update --check` reports the installed Pi package version and any personal Pi conflict.",
1015
+ "vi": "`piagent-update --check` báo phiên bản Pi package đã cài và mọi xung đột với Pi cá nhân."
1016
+ }
1017
+ ],
1018
+ "requires": null
1019
+ },
1020
+ {
1021
+ "version": "1.28.0",
1022
+ "date": "2026-10-17",
1023
+ "status": "stable",
1024
+ "title": {
1025
+ "en": "Team memory v2: each round once, brief restored after compaction",
1026
+ "vi": "Team memory v2: mỗi lượt ghi một lần, tóm tắt lại sau compaction"
1027
+ },
1028
+ "summary": {
1029
+ "en": "Each company round reaches team memory exactly once, the brief returns after compaction, and observed check recoveries are kept.",
1030
+ "vi": "Mỗi lượt công ty vào team memory đúng một lần, bản tóm tắt quay lại sau compaction, và các lần check được sửa thành pass được giữ lại."
1031
+ },
1032
+ "items": [
1033
+ {
1034
+ "kind": "improved",
1035
+ "en": "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.",
1036
+ "vi": "Mỗi lượt được lưu xuống đĩa trước khi gửi, nên mất phản hồi, crash hay hai session cùng lúc không ghi một lượt hai lần hay dưới key khác."
1037
+ },
1038
+ {
1039
+ "kind": "new",
1040
+ "en": "After a compaction the agent gets a fresh brief for the latest request, and the conversation keeps exactly one brief.",
1041
+ "vi": "Sau compaction, agent nhận bản tóm tắt mới cho yêu cầu gần nhất, và cuộc trò chuyện chỉ giữ đúng một bản."
1042
+ },
1043
+ {
1044
+ "kind": "new",
1045
+ "en": "A round carries up to three observed check recoveries (fail, change, pass), redacted, never a guessed cause.",
1046
+ "vi": "Mỗi lượt mang tối đa ba lần check quan sát được (fail, sửa, pass), đã che secret, không bao giờ đoán nguyên nhân."
1047
+ },
1048
+ {
1049
+ "kind": "fixed",
1050
+ "en": "An empty or failed brief is no longer requested again every round, and closing a round waits at most 4.5 seconds.",
1051
+ "vi": "Bản tóm tắt rỗng hoặc lỗi không còn bị hỏi lại mỗi lượt, và việc đóng lượt chờ tối đa 4,5 giây."
1052
+ },
1053
+ {
1054
+ "kind": "improved",
1055
+ "en": "On Agent Studio 0.27.x rounds still reach memory, so either release order keeps memory growing.",
1056
+ "vi": "Trên Agent Studio 0.27.x các lượt vẫn vào memory, nên cập nhật theo thứ tự nào memory cũng tiếp tục được ghi."
1057
+ }
1058
+ ],
1059
+ "requires": {
1060
+ "en": "Agent Studio 0.28.0",
1061
+ "vi": "Agent Studio 0.28.0"
1062
+ }
1063
+ },
1064
+ {
1065
+ "version": "1.27.1",
1066
+ "date": "2026-10-17",
1067
+ "status": "stable",
1068
+ "title": {
1069
+ "en": "Team memory keeps working while the agent calls the model",
1070
+ "vi": "Team memory chạy ổn cả khi agent đang gọi model"
1071
+ },
1072
+ "summary": {
1073
+ "en": "Commits and memory searches made beside a model request no longer fail, so a repository's commits reach team memory again.",
1074
+ "vi": "Commit và lệnh tìm memory chạy cạnh một request model không còn bị từ chối, nên commit của repo lại vào được team memory."
1075
+ },
1076
+ "items": [
1077
+ {
1078
+ "kind": "fixed",
1079
+ "en": "Memory calls made beside a model request were refused on an expired token; they now renew the token and retry once.",
1080
+ "vi": "Lời gọi memory chạy cạnh request model từng bị từ chối vì token đã hết hiệu lực; giờ chúng làm mới token và gửi lại một lần."
1081
+ }
1082
+ ],
1083
+ "requires": {
1084
+ "en": "Agent Studio 0.27.1",
1085
+ "vi": "Agent Studio 0.27.1"
1086
+ }
1087
+ },
1088
+ {
1089
+ "version": "1.27.0",
1090
+ "date": "2026-10-17",
1091
+ "status": "stable",
1092
+ "title": {
1093
+ "en": "Team memory: company agents remember what the team settled",
1094
+ "vi": "Team memory: agent công ty nhớ những gì team đã chốt"
1095
+ },
1096
+ "summary": {
1097
+ "en": "With team memory on, a new company conversation opens with a short brief of the repository's decisions, rules and work in progress.",
1098
+ "vi": "Khi bật team memory, cuộc trò chuyện công ty mới mở đầu bằng bản tóm tắt ngắn về quyết định, quy tắc và việc đang làm của repo."
1099
+ },
1100
+ "items": [
1101
+ {
1102
+ "kind": "new",
1103
+ "en": "New company conversations open with a brief from the team's memory of the repository, kept in the conversation for the prompt cache.",
1104
+ "vi": "Cuộc trò chuyện công ty mới mở đầu bằng bản tóm tắt từ memory của team về repo, giữ trong cuộc trò chuyện để prompt cache ổn định."
1105
+ },
1106
+ {
1107
+ "kind": "new",
1108
+ "en": "Each round (your words, the final answer, changed files; never tool output) goes back to memory redacted, and new commits once.",
1109
+ "vi": "Mỗi lượt (lời bạn, câu trả lời cuối, file đã sửa; không có output của tool) được lưu vào memory sau khi che secret, commit mới gửi một lần."
1110
+ },
1111
+ {
1112
+ "kind": "new",
1113
+ "en": "The main agent gets `memory_search` and `memory_page`; helpers get a read-only `memory_search`.",
1114
+ "vi": "Main agent có `memory_search` và `memory_page`; subagent có `memory_search` chỉ đọc."
1115
+ },
1116
+ {
1117
+ "kind": "improved",
1118
+ "en": "Memory never fails or slows a turn: calls are bounded, and a team without memory gets no memory traffic or tools.",
1119
+ "vi": "Memory không bao giờ làm hỏng hay chậm một lượt: mọi lời gọi có giới hạn, team không bật memory thì không có lưu lượng hay tool memory."
1120
+ }
1121
+ ],
1122
+ "requires": {
1123
+ "en": "Agent Studio 0.27.0 with team memory turned on",
1124
+ "vi": "Agent Studio 0.27.0, team đã bật memory"
1125
+ }
1126
+ },
1127
+ {
1128
+ "version": "1.26.1",
1129
+ "date": "2026-10-16",
1130
+ "status": "stable",
1131
+ "title": {
1132
+ "en": "Rename a conversation while its turn runs",
1133
+ "vi": "Đổi tên cuộc trò chuyện được cả khi lượt đang chạy"
1134
+ },
1135
+ "summary": {
1136
+ "en": "Renaming a conversation mid-turn now takes effect, and a rename, fork or archive that fails says why in words.",
1137
+ "vi": "Đổi tên cuộc trò chuyện giữa lượt giờ có tác dụng, và đổi tên, fork hay lưu trữ bị lỗi thì nói lý do bằng lời."
1138
+ },
1139
+ "items": [
1140
+ {
1141
+ "kind": "fixed",
1142
+ "en": "Renaming a conversation from its menu during a turn showed an error and kept the old name; the rename now lands mid-turn.",
1143
+ "vi": "Đổi tên cuộc trò chuyện từ menu trong lúc lượt chạy từng báo lỗi và giữ tên cũ; giờ tên mới được ghi ngay giữa lượt."
1144
+ },
1145
+ {
1146
+ "kind": "improved",
1147
+ "en": "A rename, fork or archive that still fails explains why in words, with the code at the end.",
1148
+ "vi": "Đổi tên, fork hay lưu trữ vẫn lỗi thì giải thích lý do bằng lời, kèm mã lỗi ở cuối."
1149
+ }
1150
+ ],
1151
+ "requires": null
1152
+ },
1153
+ {
1154
+ "version": "1.26.0",
1155
+ "date": "2026-10-15",
1156
+ "status": "stable",
1157
+ "title": {
1158
+ "en": "Dashboard `/` commands, `/undo` and dev servers across turns",
1159
+ "vi": "Lệnh `/` trên dashboard, `/undo` và dev server chạy qua nhiều lượt"
1160
+ },
1161
+ "summary": {
1162
+ "en": "Company conversations gain Terminal-style `/` commands in the dashboard, `/undo` for the last turn, long-running dev servers and instant type errors.",
1163
+ "vi": "Cuộc trò chuyện công ty có lệnh `/` kiểu Terminal trên dashboard, `/undo` cho lượt trước, dev server chạy lâu và báo lỗi type ngay."
1164
+ },
1165
+ "items": [
1166
+ {
1167
+ "kind": "new",
1168
+ "en": "Dashboard `/` commands such as `/new`, `/fork`, `/undo`, `/fast` and `/bypass` run locally, plus ⌘⇧O, ⌘/ and Esc shortcuts.",
1169
+ "vi": "Lệnh `/` trên dashboard như `/new`, `/fork`, `/undo`, `/fast`, `/bypass` chạy tại chỗ, kèm phím tắt ⌘⇧O, ⌘/ và Esc."
1170
+ },
1171
+ {
1172
+ "kind": "new",
1173
+ "en": "`/undo` restores the files the agent's last turn changed, one turn at a time, without touching your index, HEAD or commits.",
1174
+ "vi": "`/undo` trả các file lượt trước của agent đã sửa về như cũ, từng lượt một, không đụng index, HEAD hay commit của bạn."
1175
+ },
1176
+ {
1177
+ "kind": "new",
1178
+ "en": "On macOS a dev server or watcher started by the agent keeps running across turns in the sandbox, for up to 4 hours.",
1179
+ "vi": "Trên macOS, dev server hay watcher do agent mở chạy tiếp qua nhiều lượt trong sandbox, tối đa 4 giờ."
1180
+ },
1181
+ {
1182
+ "kind": "new",
1183
+ "en": "After editing a TypeScript or JavaScript file, the agent gets that file's errors from the project's own TypeScript.",
1184
+ "vi": "Sau khi sửa file TypeScript hay JavaScript, agent nhận ngay lỗi của file đó từ TypeScript của chính project."
1185
+ },
1186
+ {
1187
+ "kind": "new",
1188
+ "en": "`piagent studio --prompt <text> --json` writes the same event stream as `pi --mode json`.",
1189
+ "vi": "`piagent studio --prompt <text> --json` xuất luồng sự kiện giống `pi --mode json`."
1190
+ },
1191
+ {
1192
+ "kind": "fixed",
1193
+ "en": "Fetching a repository with many branches stopped after 60 seconds; the download now has ten minutes.",
1194
+ "vi": "Fetch repo có nhiều branch từng dừng sau 60 giây; giờ được tải trong mười phút."
1195
+ }
1196
+ ],
1197
+ "requires": null
1198
+ },
1199
+ {
1200
+ "version": "1.25.0",
1201
+ "date": "2026-10-13",
1202
+ "status": "stable",
1203
+ "title": {
1204
+ "en": "When the machine lacks something, the agent asks and then runs",
1205
+ "vi": "Máy thiếu môi trường thì agent xin duyệt, duyệt xong là chạy"
1206
+ },
1207
+ "summary": {
1208
+ "en": "A company conversation no longer gives up on a missing runtime, sign-in or stopped Docker: the agent asks for approval and carries on.",
1209
+ "vi": "Cuộc trò chuyện công ty không còn bỏ cuộc khi thiếu runtime, đăng nhập hay Docker chưa bật: agent xin duyệt rồi làm tiếp."
1210
+ },
1211
+ "items": [
1212
+ {
1213
+ "kind": "new",
1214
+ "en": "`run_on_host` runs one approved command on your machine outside the sandbox, such as installing a runtime or `git push`; it always asks.",
1215
+ "vi": "`run_on_host` chạy một lệnh đã duyệt trên máy bạn, ngoài sandbox, như cài runtime hay `git push`; luôn hỏi, kể cả Bypass."
1216
+ },
1217
+ {
1218
+ "kind": "new",
1219
+ "en": "`start_docker` asks to start an installed but stopped Docker and waits for it, so `run_with_docker` works in the same conversation.",
1220
+ "vi": "`start_docker` xin bật Docker đã cài nhưng chưa chạy và chờ nó sẵn sàng, nên `run_with_docker` dùng được ngay trong cuộc trò chuyện đó."
1221
+ },
1222
+ {
1223
+ "kind": "improved",
1224
+ "en": "Every sandbox failure names the way forward instead of “report it and stop”.",
1225
+ "vi": "Mọi lỗi sandbox đều chỉ cách đi tiếp thay vì “báo lại và dừng”."
1226
+ },
1227
+ {
1228
+ "kind": "improved",
1229
+ "en": "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”.",
1230
+ "vi": "Việc chỉ bạn làm được, như mật khẩu `sudo` hay đăng nhập, được hỏi kèm từng bước và lựa chọn “đã xong, làm tiếp” hoặc “bỏ qua”."
1231
+ },
1232
+ {
1233
+ "kind": "fixed",
1234
+ "en": "A turn that only read repositories with `git -C` was counted as a code change and asked for checks three times.",
1235
+ "vi": "Lượt chỉ đọc repo bằng `git -C` từng bị tính là có sửa code và bị đòi check ba lần."
1236
+ }
1237
+ ],
1238
+ "requires": null
1239
+ },
1240
+ {
1241
+ "version": "1.24.0",
1242
+ "date": "2026-10-13",
1243
+ "status": "stable",
1244
+ "title": {
1245
+ "en": "Choose Fast when a company conversation starts",
1246
+ "vi": "Chọn Fast ngay khi tạo cuộc trò chuyện công ty"
1247
+ },
1248
+ "summary": {
1249
+ "en": "The new chat page offers a Fast switch when the team's Harness allows it, and the switch turns amber while on.",
1250
+ "vi": "Trang cuộc trò chuyện mới có nút Fast khi Harness của team cho phép, và nút chuyển màu vàng khi đang bật."
1251
+ },
1252
+ "items": [
1253
+ {
1254
+ "kind": "new",
1255
+ "en": "“Fast: tắt / Fast: bật” next to the company model makes a new conversation run Fast from its first message.",
1256
+ "vi": "Nút “Fast: tắt / Fast: bật” cạnh model công ty cho cuộc trò chuyện mới chạy Fast ngay từ tin nhắn đầu."
1257
+ },
1258
+ {
1259
+ "kind": "improved",
1260
+ "en": "The Fast switch in the header turns amber while on, since its calls count 2.5 times toward the quota.",
1261
+ "vi": "Nút Fast ở đầu cuộc trò chuyện chuyển màu vàng khi bật, vì call lúc đó tính vào quota gấp 2,5 lần."
1262
+ }
1263
+ ],
1264
+ "requires": null
1265
+ },
1266
+ {
1267
+ "version": "1.23.1",
1268
+ "date": "2026-10-13",
1269
+ "status": "stable",
1270
+ "title": {
1271
+ "en": "Agent questions wait at the end of the conversation",
1272
+ "vi": "Câu hỏi của agent luôn nằm cuối cuộc trò chuyện"
1273
+ },
1274
+ "summary": {
1275
+ "en": "Questions and approvals now sit right above the composer, so a long turn no longer pushes them out of view.",
1276
+ "vi": "Câu hỏi và yêu cầu duyệt giờ nằm ngay trên ô nhập, nên lượt chạy dài không còn đẩy chúng khỏi màn hình."
1277
+ },
1278
+ "items": [
1279
+ {
1280
+ "kind": "fixed",
1281
+ "en": "A long turn pushed a waiting question out of view; questions now come last and the page scrolls to them.",
1282
+ "vi": "Lượt chạy dài từng đẩy câu hỏi đang chờ khỏi màn hình; giờ câu hỏi nằm cuối và trang tự cuộn tới."
1283
+ },
1284
+ {
1285
+ "kind": "improved",
1286
+ "en": "The question card has larger text and roomier options, and “Let the agent decide” no longer outweighs “Send answer”.",
1287
+ "vi": "Thẻ câu hỏi có chữ lớn hơn, đáp án thoáng hơn, và nút “Để agent tự quyết” không còn nổi hơn “Gửi câu trả lời”."
1288
+ }
1289
+ ],
1290
+ "requires": null
1291
+ },
1292
+ {
1293
+ "version": "1.23.0",
1294
+ "date": "2026-10-13",
1295
+ "status": "stable",
1296
+ "title": {
1297
+ "en": "Fast mode for company conversations, tool failures sent to Studio",
1298
+ "vi": "Fast mode cho cuộc trò chuyện công ty, tool lỗi được báo về Studio"
1299
+ },
1300
+ "summary": {
1301
+ "en": "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.",
1302
+ "vi": "Khi Harness cho phép, nút Fast cho câu trả lời GPT nhanh hơn với quota gấp 2,5 lần, và tool lỗi được báo về Agent Studio."
1303
+ },
1304
+ "items": [
1305
+ {
1306
+ "kind": "new",
1307
+ "en": "Fast mode via the dashboard switch or `/fast on|off|status`: same GPT model and thinking, faster, tokens counted 2.5 times.",
1308
+ "vi": "Fast mode qua nút trên dashboard hoặc `/fast on|off|status`: cùng model GPT và thinking, nhanh hơn, token tính gấp 2,5 lần."
1309
+ },
1310
+ {
1311
+ "kind": "improved",
1312
+ "en": "On Claude or API-key models Fast adds nothing, and a refused fast request falls back to standard speed with a note.",
1313
+ "vi": "Trên model Claude hay model API key thì Fast không thêm gì, và request Fast bị từ chối sẽ quay về tốc độ thường kèm ghi chú."
1314
+ },
1315
+ {
1316
+ "kind": "new",
1317
+ "en": "Failed tool calls in company runs are reported to Agent Studio with secrets redacted and no prompts.",
1318
+ "vi": "Tool lỗi trong run công ty được báo về Agent Studio, đã che secret và không gửi prompt."
1319
+ },
1320
+ {
1321
+ "kind": "fixed",
1322
+ "en": "After an admin changed the Harness, a new company conversation never sent its first message; it now starts at an allowed level.",
1323
+ "vi": "Sau khi quản trị viên đổi Harness, cuộc trò chuyện công ty mới không gửi được tin đầu; giờ nó bắt đầu ở mức Harness cho phép."
1324
+ }
1325
+ ],
1326
+ "requires": {
1327
+ "en": "An Agent Studio and Agent Watch that support the Harness Fast setting",
1328
+ "vi": "Agent Studio và Agent Watch có hỗ trợ cài đặt Fast của Harness"
1329
+ }
1330
+ },
1331
+ {
1332
+ "version": "1.22.1",
1333
+ "date": "2026-10-12",
1334
+ "status": "stable",
1335
+ "title": {
1336
+ "en": "Dashboard no longer hangs on a slow file system",
1337
+ "vi": "Dashboard không còn treo khi project nằm trên ổ chậm"
1338
+ },
1339
+ "summary": {
1340
+ "en": "A project on a Windows drive seen from WSL no longer leaves the dashboard stuck on “Opening Piagent…”.",
1341
+ "vi": "Project nằm trên ổ Windows nhìn từ WSL không còn làm dashboard kẹt ở “Đang mở Piagent…”."
1342
+ },
1343
+ "items": [
1344
+ {
1345
+ "kind": "fixed",
1346
+ "en": "On Windows the dashboard could stay on “Opening Piagent…”; it now waits 15 seconds for the company runtime and opens anyway.",
1347
+ "vi": "Trên Windows dashboard có thể kẹt ở “Đang mở Piagent…”; giờ nó chờ runtime công ty 15 giây rồi vẫn mở."
1348
+ },
1349
+ {
1350
+ "kind": "fixed",
1351
+ "en": "Git gets 8 seconds per repository to list changed files; a slower one is shown without them and retried after 5 minutes.",
1352
+ "vi": "Git có 8 giây mỗi repo để liệt kê file thay đổi; repo chậm hơn hiện chưa có danh sách và được thử lại sau 5 phút."
1353
+ },
1354
+ {
1355
+ "kind": "improved",
1356
+ "en": "On Windows, keep projects in the Ubuntu file system (`~/projects`); under `/mnt/c` or `/mnt/d` they work but stay slow.",
1357
+ "vi": "Trên Windows, nên để project trong ổ Ubuntu (`~/projects`); project ở `/mnt/c` hay `/mnt/d` vẫn chạy nhưng chậm."
1358
+ }
1359
+ ],
1360
+ "requires": null
1361
+ },
1362
+ {
1363
+ "version": "1.22.0",
1364
+ "date": "2026-10-09",
1365
+ "status": "stable",
1366
+ "title": {
1367
+ "en": "Attach any source or text file",
1368
+ "vi": "Đính kèm được mọi file code và văn bản"
1369
+ },
1370
+ "summary": {
1371
+ "en": "Any text file can be attached under its own name, binaries are refused up front with an alternative, and messages with files show once.",
1372
+ "vi": "Mọi file văn bản đính kèm được với đúng tên của nó, file nhị phân bị từ chối ngay kèm cách khác, và tin nhắn có file chỉ hiện một lần."
1373
+ },
1374
+ "items": [
1375
+ {
1376
+ "kind": "new",
1377
+ "en": "Attach `.html`, `.css`, `.ts`, `.py`, `.go`, `.sql` and any other text file, including `Dockerfile` or `Makefile`, under its own name.",
1378
+ "vi": "Đính kèm `.html`, `.css`, `.ts`, `.py`, `.go`, `.sql` và mọi file văn bản khác, cả `Dockerfile` hay `Makefile`, với đúng tên của nó."
1379
+ },
1380
+ {
1381
+ "kind": "improved",
1382
+ "en": "Binary formats are refused before upload with what to send instead, such as .csv for spreadsheets or .pdf for slide decks.",
1383
+ "vi": "File nhị phân bị từ chối trước khi tải lên, kèm cách gửi khác như .csv cho bảng tính hay .pdf cho file trình chiếu."
1384
+ },
1385
+ {
1386
+ "kind": "fixed",
1387
+ "en": "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.",
1388
+ "vi": "Tin nhắn có file từng hiện hai lần sau khi lượt xong, một lần kèm nội dung file; giờ chỉ còn câu bạn gõ và thẻ file."
1389
+ }
1390
+ ],
1391
+ "requires": null
1392
+ },
1393
+ {
1394
+ "version": "1.21.1",
1395
+ "date": "2026-10-09",
1396
+ "status": "stable",
1397
+ "title": {
1398
+ "en": "Turn on Bypass while a turn runs, and it stays on",
1399
+ "vi": "Bật Bypass ngay cả khi lượt đang chạy, và Bypass được giữ"
1400
+ },
1401
+ "summary": {
1402
+ "en": "A company conversation can switch between Ask first and Bypass at any time, and the next commands follow the new choice.",
1403
+ "vi": "Cuộc trò chuyện công ty đổi giữa Hỏi trước và Bypass lúc nào cũng được, và các lệnh sau làm theo lựa chọn mới."
1404
+ },
1405
+ "items": [
1406
+ {
1407
+ "kind": "fixed",
1408
+ "en": "Turning on Bypass while a command waited for approval looked done but did not take; it now applies mid-turn and is kept.",
1409
+ "vi": "Bật Bypass lúc lệnh đang chờ duyệt trông như đã bật nhưng không có tác dụng; giờ đổi được giữa lượt và được giữ."
1410
+ },
1411
+ {
1412
+ "kind": "improved",
1413
+ "en": "A command already waiting keeps its Allow or Deny card, and the result of a switch shows in a notice at the top.",
1414
+ "vi": "Lệnh đang chờ vẫn giữ thẻ Cho phép hoặc Từ chối, và kết quả đổi quyền hiện thành thông báo ở trên cùng."
1415
+ }
1416
+ ],
1417
+ "requires": null
1418
+ },
1419
+ {
1420
+ "version": "1.21.0",
1421
+ "date": "2026-10-09",
1422
+ "status": "stable",
1423
+ "title": {
1424
+ "en": "Decisions one card at a time, alerts from other conversations",
1425
+ "vi": "Việc cần bạn quyết hiện từng thẻ, báo khi cuộc trò chuyện khác xong"
1426
+ },
1427
+ "summary": {
1428
+ "en": "Questions and approvals show one card at a time, other conversations announce when they finish or wait for you, and Studio logs compactions.",
1429
+ "vi": "Câu hỏi và yêu cầu duyệt hiện từng thẻ một, cuộc trò chuyện khác báo khi xong hay chờ bạn, và Studio ghi lại mỗi lần compaction."
1430
+ },
1431
+ "items": [
1432
+ {
1433
+ "kind": "improved",
1434
+ "en": "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.",
1435
+ "vi": "Câu hỏi và yêu cầu duyệt hiện từng thẻ một, có thanh “Việc cần bạn quyết · 1/3”, việc của main agent hiện trước."
1436
+ },
1437
+ {
1438
+ "kind": "new",
1439
+ "en": "A toast says when another conversation finishes, fails, stops or waits for you, and “Mở” opens it.",
1440
+ "vi": "Thông báo góc trên báo khi cuộc trò chuyện khác xong, lỗi, dừng hay đang chờ bạn, bấm “Mở” để vào."
1441
+ },
1442
+ {
1443
+ "kind": "new",
1444
+ "en": "The sidebar marks conversations waiting for you or finished unseen, and the tab title counts what waits.",
1445
+ "vi": "Cột trái đánh dấu cuộc trò chuyện đang chờ bạn hoặc đã xong mà chưa xem, và tiêu đề tab đếm số việc đang chờ."
1446
+ },
1447
+ {
1448
+ "kind": "new",
1449
+ "en": "Studio logs each context compaction of a company conversation with its reason and size before and after; no summary text is sent.",
1450
+ "vi": "Studio ghi lại mỗi lần compaction context của cuộc trò chuyện công ty, kèm lý do và kích thước trước sau; không gửi nội dung tóm tắt."
1451
+ }
1452
+ ],
1453
+ "requires": null
1454
+ },
1455
+ {
1456
+ "version": "1.20.0",
1457
+ "date": "2026-10-09",
1458
+ "status": "stable",
1459
+ "title": {
1460
+ "en": "Package installs in the company sandbox no longer ask",
1461
+ "vi": "Cài package trong sandbox công ty không phải duyệt nữa"
1462
+ },
1463
+ "summary": {
1464
+ "en": "Plain commands reach the usual package registries through a restricted proxy, long subagents keep running, and review reads earlier commits.",
1465
+ "vi": "Lệnh thường tải được từ các registry quen thuộc qua proxy giới hạn, subagent chạy lâu không bị dừng, và review đọc được commit trước đó."
1466
+ },
1467
+ "items": [
1468
+ {
1469
+ "kind": "new",
1470
+ "en": "Installs from npm and other common registries run without approval through a proxy that allows only those hosts.",
1471
+ "vi": "Cài từ npm và các registry phổ biến khác chạy không cần duyệt, qua một proxy chỉ cho phép đúng các host đó."
1472
+ },
1473
+ {
1474
+ "kind": "improved",
1475
+ "en": "Add your own registry hosts in `~/.piagent/sandbox-domains`, one per line; registry credentials stay out of the sandbox.",
1476
+ "vi": "Thêm host registry riêng vào `~/.piagent/sandbox-domains`, mỗi dòng một host; thông tin đăng nhập registry không vào sandbox."
1477
+ },
1478
+ {
1479
+ "kind": "improved",
1480
+ "en": "Bypass runs `run_with_docker` without asking; pushes, deploys, registry logins and unclear deletes still ask.",
1481
+ "vi": "Bypass chạy `run_with_docker` không cần hỏi; push, deploy, đăng nhập registry và lệnh xoá không rõ đích vẫn hỏi."
1482
+ },
1483
+ {
1484
+ "kind": "fixed",
1485
+ "en": "A subagent working longer than 15 minutes was stopped and the turn aborted; it now keeps running.",
1486
+ "vi": "Subagent chạy quá 15 phút từng bị dừng và lượt bị huỷ; giờ nó chạy tiếp."
1487
+ },
1488
+ {
1489
+ "kind": "fixed",
1490
+ "en": "The review subagent said “no patch” for work committed earlier; it now reads commits since a given commit, branch or `HEAD~N`.",
1491
+ "vi": "Subagent review từng báo “không có patch” với code đã commit trước; giờ nó đọc các commit kể từ commit, branch hoặc `HEAD~N`."
1492
+ }
1493
+ ],
1494
+ "requires": null
1495
+ },
1496
+ {
1497
+ "version": "1.19.0",
1498
+ "date": "2026-10-08",
1499
+ "status": "stable",
1500
+ "title": {
1501
+ "en": "Checklist tasks carried to the end, Docker in the company sandbox",
1502
+ "vi": "Task có checklist được làm đến hết, Docker trong sandbox công ty"
1503
+ },
1504
+ "summary": {
1505
+ "en": "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.",
1506
+ "vi": "Harness đưa task có checklist tới bước cuối, mỗi lượt báo kết thúc thế nào, lệnh đã duyệt dùng được Docker, và folder nhiều repo dùng được."
1507
+ },
1508
+ "items": [
1509
+ {
1510
+ "kind": "new",
1511
+ "en": "When the Harness requires a plan, it sends the agent on to the next open checklist step until done, stopped or stalled.",
1512
+ "vi": "Khi Harness bắt buộc plan, nó cho agent làm tiếp bước còn mở của checklist cho tới khi xong, bị dừng hoặc không tiến triển."
1513
+ },
1514
+ {
1515
+ "kind": "new",
1516
+ "en": "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.",
1517
+ "vi": "Mỗi lượt công ty kết thúc bằng một dòng trạng thái như “Hoàn thành · n/n bước”, có nút Tiếp tục khi task chưa xong."
1518
+ },
1519
+ {
1520
+ "kind": "new",
1521
+ "en": "`run_with_docker` runs one approved command with internet and Docker, for test databases, builds or container tests.",
1522
+ "vi": "`run_with_docker` chạy một lệnh đã duyệt với internet và Docker, để bật database cho test, build hay test container."
1523
+ },
1524
+ {
1525
+ "kind": "new",
1526
+ "en": "A folder holding several repositories shows “N repo”, with each repository's branch and changed files.",
1527
+ "vi": "Folder chứa nhiều repo hiện “N repo”, kèm branch và file thay đổi của từng repo."
1528
+ },
1529
+ {
1530
+ "kind": "improved",
1531
+ "en": "Steps you postpone are marked deferred, never completed, and `./mvnw` and `./gradlew` reuse distributions already on the machine.",
1532
+ "vi": "Bước bạn bảo để sau được đánh dấu deferred, không bao giờ ghi là xong, và `./mvnw`, `./gradlew` dùng lại bản đã có trên máy."
1533
+ },
1534
+ {
1535
+ "kind": "fixed",
1536
+ "en": "A turn that committed its change counted as “no code changed”; checks and review now apply to committed work.",
1537
+ "vi": "Lượt đã commit thay đổi từng bị tính là “không sửa code”; giờ check và review vẫn áp dụng cho phần đã commit."
1538
+ }
1539
+ ],
1540
+ "requires": null
1541
+ },
1542
+ {
1543
+ "version": "1.18.0",
1544
+ "date": "2026-10-08",
1545
+ "status": "stable",
1546
+ "title": {
1547
+ "en": "Switch Git branch from the dashboard, retries, Claude Haiku 5.5",
1548
+ "vi": "Đổi branch Git trên dashboard, tự thử lại, Claude Haiku 5.5"
1549
+ },
1550
+ "summary": {
1551
+ "en": "The branch in the dashboard becomes a switcher, passing model failures are retried before showing, and Claude Haiku 5.5 is available.",
1552
+ "vi": "Tên branch trên dashboard thành nút đổi branch, lỗi model tạm thời được thử lại trước khi báo, và có thêm Claude Haiku 5.5."
1553
+ },
1554
+ "items": [
1555
+ {
1556
+ "kind": "new",
1557
+ "en": "The Git branch in the header and status bar lists branches to switch to, or creates a new one from the current commit.",
1558
+ "vi": "Tên branch Git ở đầu trang và thanh trạng thái liệt kê branch để chuyển, hoặc tạo branch mới từ commit hiện tại."
1559
+ },
1560
+ {
1561
+ "kind": "improved",
1562
+ "en": "A branch switch waits while any conversation in that folder runs, and shows Git's own reason when Git refuses.",
1563
+ "vi": "Đổi branch chờ khi còn cuộc trò chuyện chạy trong folder đó, và hiện đúng lý do của Git khi Git từ chối."
1564
+ },
1565
+ {
1566
+ "kind": "improved",
1567
+ "en": "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.",
1568
+ "vi": "Câu trả lời công ty hỏng vì lỗi tạm thời được thử lại tối đa hai lần trước khi báo; lỗi quota hay key báo ngay."
1569
+ },
1570
+ {
1571
+ "kind": "new",
1572
+ "en": "Claude Haiku 5.5 can be used in company conversations when Studio offers it, and joins the personal Claude model scope.",
1573
+ "vi": "Claude Haiku 5.5 dùng được trong cuộc trò chuyện công ty khi Studio cung cấp, và được thêm vào danh sách model Claude cá nhân."
1574
+ }
1575
+ ],
1576
+ "requires": null
1577
+ },
1578
+ {
1579
+ "version": "1.17.0",
1580
+ "date": "2026-10-08",
1581
+ "status": "stable",
1582
+ "title": {
1583
+ "en": "The dashboard shows each project's Git branch",
1584
+ "vi": "Dashboard hiện branch Git của project"
1585
+ },
1586
+ "summary": {
1587
+ "en": "The dashboard shows which Git branch each conversation's project is on, and warns when HEAD is detached.",
1588
+ "vi": "Dashboard hiện project của từng cuộc trò chuyện đang ở branch Git nào, và cảnh báo khi HEAD bị detached."
1589
+ },
1590
+ "items": [
1591
+ {
1592
+ "kind": "new",
1593
+ "en": "The branch shows under the chat title, in the status bar and beside each project group in the sidebar, worktrees included.",
1594
+ "vi": "Branch hiện dưới tên cuộc trò chuyện, ở thanh trạng thái và cạnh từng nhóm project trong sidebar, kể cả worktree."
1595
+ },
1596
+ {
1597
+ "kind": "new",
1598
+ "en": "A detached HEAD shows its short commit in the warning colour, since work there belongs to no branch.",
1599
+ "vi": "HEAD detached hiện mã commit ngắn bằng màu cảnh báo, vì việc làm ở đó không thuộc branch nào."
1600
+ }
1601
+ ],
1602
+ "requires": null
1603
+ },
1604
+ {
1605
+ "version": "1.16.3",
1606
+ "date": "2026-10-08",
1607
+ "status": "stable",
1608
+ "title": {
1609
+ "en": "Dashboard keeps checking for updates after updating itself",
1610
+ "vi": "Dashboard cập nhật xong vẫn tự kiểm tra bản mới"
1611
+ },
1612
+ "summary": {
1613
+ "en": "After an update from the dashboard's button, the dashboard checks for the next release again.",
1614
+ "vi": "Sau khi cập nhật bằng nút trên dashboard, dashboard lại tự kiểm tra bản kế tiếp."
1615
+ },
1616
+ "items": [
1617
+ {
1618
+ "kind": "fixed",
1619
+ "en": "Updating from the button restarted the dashboard with update checks off until the machine restarted; this is fixed from any release.",
1620
+ "vi": "Cập nhật bằng nút từng khởi động lại dashboard với việc kiểm tra bản mới bị tắt tới khi khởi động lại máy; đã sửa từ mọi bản."
1621
+ }
1622
+ ],
1623
+ "requires": null
1624
+ },
1625
+ {
1626
+ "version": "1.16.2",
1627
+ "date": "2026-10-08",
1628
+ "status": "stable",
1629
+ "title": {
1630
+ "en": "The Terminal says what the dashboard says",
1631
+ "vi": "Terminal nói giống dashboard"
1632
+ },
1633
+ "summary": {
1634
+ "en": "The Terminal now offers updates, a `/bypass` switch, and the dashboard's explanations for network commands and failures.",
1635
+ "vi": "Terminal giờ hỏi cập nhật, có công tắc `/bypass`, và giải thích lệnh mạng cũng như lỗi giống dashboard."
1636
+ },
1637
+ "items": [
1638
+ {
1639
+ "kind": "new",
1640
+ "en": "`pi` and `piagent studio` offer a new Piagent between turns with “Cập nhật ngay” or “Để sau”; `/piagent-update` checks at once.",
1641
+ "vi": "`pi` và `piagent studio` báo bản Piagent mới giữa các lượt với “Cập nhật ngay” hoặc “Để sau”; `/piagent-update` kiểm tra ngay."
1642
+ },
1643
+ {
1644
+ "kind": "new",
1645
+ "en": "`/bypass` in `piagent studio` switches between asking first and Bypass, and the footer shows “Bypass” while on.",
1646
+ "vi": "`/bypass` trong `piagent studio` đổi giữa Hỏi trước và Bypass, footer hiện “Bypass” khi đang bật."
1647
+ },
1648
+ {
1649
+ "kind": "improved",
1650
+ "en": "Network command prompts, failed requests and Harness notes read in the dashboard's Vietnamese wording.",
1651
+ "vi": "Hỏi duyệt lệnh mạng, lỗi request và ghi chú của Harness hiện bằng tiếng Việt như trên dashboard."
1652
+ },
1653
+ {
1654
+ "kind": "fixed",
1655
+ "en": "A slash command of a company Terminal extension was sent to the model as a message.",
1656
+ "vi": "Lệnh slash của extension trong Terminal công ty từng bị gửi cho model như một tin nhắn."
1657
+ },
1658
+ {
1659
+ "kind": "breaking",
1660
+ "en": "The company launcher changed: if `piagent studio` reports the setup changed, import it again in Agent Watch → Studio.",
1661
+ "vi": "Trình khởi chạy công ty đã đổi: nếu `piagent studio` báo cấu hình đã đổi, nhập lại trong Agent Watch → Studio."
1662
+ }
1663
+ ],
1664
+ "requires": {
1665
+ "en": "Agent Watch 0.15.2 for the Keychain prompt after a Watch update",
1666
+ "vi": "Agent Watch 0.15.2 cho hộp thoại Keychain sau khi Watch cập nhật"
1667
+ }
1668
+ },
1669
+ {
1670
+ "version": "1.16.1",
1671
+ "date": "2026-10-07",
1672
+ "status": "stable",
1673
+ "title": {
1674
+ "en": "New releases announced in a dialog and checked every hour",
1675
+ "vi": "Báo bản mới bằng hộp thoại, kiểm tra mỗi giờ"
1676
+ },
1677
+ "summary": {
1678
+ "en": "A dialog announces each new release, checks run hourly, and a dashboard tab no longer loses its sign-in to another local Piagent server.",
1679
+ "vi": "Hộp thoại báo mỗi bản mới, kiểm tra chạy mỗi giờ, và tab dashboard không còn mất đăng nhập vì một server Piagent khác trên máy."
1680
+ },
1681
+ "items": [
1682
+ {
1683
+ "kind": "new",
1684
+ "en": "A dialog shows what a new release changes with “Update now”; “Later” asks again after an hour.",
1685
+ "vi": "Hộp thoại ghi rõ bản mới đổi gì kèm nút “Cập nhật ngay”; chọn “Để sau” thì một giờ sau nhắc lại."
1686
+ },
1687
+ {
1688
+ "kind": "improved",
1689
+ "en": "The dashboard and the Terminal check for a new release every hour.",
1690
+ "vi": "Dashboard và Terminal kiểm tra bản mới mỗi giờ."
1691
+ },
1692
+ {
1693
+ "kind": "fixed",
1694
+ "en": "A dashboard tab lost its sign-in when another local Piagent server signed in; each port now has its own cookie.",
1695
+ "vi": "Tab dashboard từng mất đăng nhập khi một server Piagent khác trên máy đăng nhập; giờ mỗi cổng có cookie riêng."
1696
+ },
1697
+ {
1698
+ "kind": "fixed",
1699
+ "en": "A signed-out tab stops polling and says how to reopen Piagent with `piagent dashboard` or Agent Watch.",
1700
+ "vi": "Tab hết đăng nhập ngừng gọi lại liên tục và chỉ cách mở lại bằng `piagent dashboard` hoặc Agent Watch."
1701
+ }
1702
+ ],
1703
+ "requires": null
1704
+ },
1705
+ {
1706
+ "version": "1.16.0",
1707
+ "date": "2026-10-07",
1708
+ "status": "stable",
1709
+ "title": {
1710
+ "en": "Bypass for company conversations",
1711
+ "vi": "Bypass cho cuộc trò chuyện công ty"
1712
+ },
1713
+ "summary": {
1714
+ "en": "Company conversations can run in Bypass, where network commands run without asking but anything that pushes or deletes still asks.",
1715
+ "vi": "Cuộc trò chuyện công ty chạy được ở Bypass: lệnh cần mạng chạy không hỏi, còn lệnh push hay xoá vẫn hỏi."
1716
+ },
1717
+ "items": [
1718
+ {
1719
+ "kind": "new",
1720
+ "en": "In Bypass, installs, downloads, `git pull` and tests with a server or browser run without asking; Ask first stays the default.",
1721
+ "vi": "Ở Bypass, cài package, tải file, `git pull` và test có server hay browser chạy không hỏi; Hỏi trước vẫn là mặc định."
1722
+ },
1723
+ {
1724
+ "kind": "security",
1725
+ "en": "Bypass still asks before `git push`, deploys, uploads, migrations, unclear deletes and `sudo`, and says why.",
1726
+ "vi": "Bypass vẫn hỏi trước `git push`, deploy, upload, migration, lệnh xoá không rõ đích và `sudo`, kèm lý do."
1727
+ },
1728
+ {
1729
+ "kind": "improved",
1730
+ "en": "Personal sessions with full access no longer ask before a broad `git add`.",
1731
+ "vi": "Session cá nhân toàn quyền không còn hỏi trước khi `git add` toàn bộ."
1732
+ },
1733
+ {
1734
+ "kind": "fixed",
1735
+ "en": "A helper added to the Harness during a conversation can be used from the next message.",
1736
+ "vi": "Subagent được thêm vào Harness trong lúc đang làm dùng được ngay từ tin nhắn kế tiếp."
1737
+ }
1738
+ ],
1739
+ "requires": null
1740
+ },
1741
+ {
1742
+ "version": "1.15.2",
1743
+ "date": "2026-10-07",
1744
+ "status": "stable",
1745
+ "title": {
1746
+ "en": "Long company conversations compact again, and earlier",
1747
+ "vi": "Cuộc trò chuyện công ty dài tự thu gọn trở lại, và sớm hơn"
1748
+ },
1749
+ "summary": {
1750
+ "en": "Summaries of long company conversations work again and start at 90% of the model's window, never later than 300k tokens.",
1751
+ "vi": "Tóm tắt cuộc trò chuyện công ty dài chạy lại được và bắt đầu ở 90% cửa sổ của model, muộn nhất ở 300k token."
1752
+ },
1753
+ "items": [
1754
+ {
1755
+ "kind": "fixed",
1756
+ "en": "Long company conversations could not be summarised and kept growing past the model's window; summaries now use the run's grant.",
1757
+ "vi": "Cuộc trò chuyện công ty dài từng không tóm tắt được và vượt cửa sổ của model; giờ tóm tắt dùng quyền của run."
1758
+ },
1759
+ {
1760
+ "kind": "improved",
1761
+ "en": "Compaction starts at 90% of the window and never later than 300k tokens, keeping about the last 20k tokens verbatim.",
1762
+ "vi": "Compaction bắt đầu ở 90% cửa sổ và muộn nhất ở 300k token, giữ nguyên văn khoảng 20k token gần nhất."
1763
+ },
1764
+ {
1765
+ "kind": "fixed",
1766
+ "en": "A failed summary is retried after 1, 2, 4 … minutes (at most 30) instead of before every step.",
1767
+ "vi": "Tóm tắt lỗi được thử lại sau 1, 2, 4 … phút (tối đa 30) thay vì trước mỗi bước."
1768
+ }
1769
+ ],
1770
+ "requires": null
1771
+ },
1772
+ {
1773
+ "version": "1.15.1",
1774
+ "date": "2026-10-07",
1775
+ "status": "stable",
1776
+ "title": {
1777
+ "en": "Studio sees what each company model call is for",
1778
+ "vi": "Studio thấy mỗi call model công ty dùng để làm gì"
1779
+ },
1780
+ "summary": {
1781
+ "en": "Each company model call tells Studio its purpose, and several conversations in one folder keep their changes apart.",
1782
+ "vi": "Mỗi call model công ty báo cho Studio mục đích của nó, và nhiều cuộc trò chuyện trong cùng folder không lẫn thay đổi của nhau."
1783
+ },
1784
+ "items": [
1785
+ {
1786
+ "kind": "new",
1787
+ "en": "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.",
1788
+ "vi": "Mỗi call model công ty báo cho Studio mục đích, như trả lời, tóm tắt hay brief của subagent; không gửi thêm nội dung prompt nào."
1789
+ },
1790
+ {
1791
+ "kind": "fixed",
1792
+ "en": "Several company conversations in one folder took each other's edits; checks and review now follow each conversation's own files.",
1793
+ "vi": "Nhiều cuộc trò chuyện công ty trong một folder từng nhận nhầm thay đổi của nhau; giờ check và review chỉ xét file của chính nó."
1794
+ },
1795
+ {
1796
+ "kind": "fixed",
1797
+ "en": "A new company conversation whose runtime fails to open says why, and Archive and Restart work without restarting the dashboard.",
1798
+ "vi": "Cuộc trò chuyện công ty mới không mở được runtime sẽ nói lý do, và Lưu trữ, Khởi động lại dùng được mà không cần mở lại dashboard."
1799
+ },
1800
+ {
1801
+ "kind": "improved",
1802
+ "en": "`piagent doctor` and other `piagent <command>` forms run `piagent-<command>`.",
1803
+ "vi": "`piagent doctor` và các dạng `piagent <command>` khác chạy `piagent-<command>`."
1804
+ }
1805
+ ],
1806
+ "requires": {
1807
+ "en": "Agent Studio 0.20.0 to see call purposes",
1808
+ "vi": "Agent Studio 0.20.0 để xem mục đích của call"
1809
+ }
1810
+ },
1811
+ {
1812
+ "version": "1.15.0",
1813
+ "date": "2026-10-07",
1814
+ "status": "stable",
1815
+ "title": {
1816
+ "en": "A refused subagent says why, long noisy commands finish",
1817
+ "vi": "Subagent bị từ chối nói đúng lý do, lệnh dài in nhiều chạy hết"
1818
+ },
1819
+ "summary": {
1820
+ "en": "A company subagent Studio refuses now gives Studio's reason, and long commands that print a lot are no longer stopped.",
1821
+ "vi": "Subagent công ty bị Studio từ chối giờ báo đúng lý do của Studio, và lệnh chạy lâu in nhiều không còn bị dừng."
1822
+ },
1823
+ "items": [
1824
+ {
1825
+ "kind": "fixed",
1826
+ "en": "Every refused subagent said the key, Harness or run had changed; it now gives Studio's actual reason.",
1827
+ "vi": "Mọi subagent bị từ chối từng báo key, Harness hay run đã đổi; giờ nó báo đúng lý do của Studio."
1828
+ },
1829
+ {
1830
+ "kind": "fixed",
1831
+ "en": "Commands that printed for more than about 25 seconds, such as test suites or builds, were stopped as too large; they now finish.",
1832
+ "vi": "Lệnh in liên tục quá khoảng 25 giây, như bộ test hay build, từng bị dừng vì quá lớn; giờ chạy hết."
1833
+ },
1834
+ {
1835
+ "kind": "improved",
1836
+ "en": "A company command writing to `/tmp` is told to use `$TMPDIR` or the project.",
1837
+ "vi": "Lệnh công ty ghi vào `/tmp` được chỉ sang `$TMPDIR` hoặc thư mục project."
1838
+ },
1839
+ {
1840
+ "kind": "fixed",
1841
+ "en": "`piagent-update` from `npm exec` installs a lasting helper, and on Windows Pi is found in custom npm prefixes.",
1842
+ "vi": "`piagent-update` chạy từ `npm exec` cài helper lâu dài, và trên Windows Pi được tìm thấy trong npm prefix tùy chỉnh."
1843
+ }
1844
+ ],
1845
+ "requires": {
1846
+ "en": "Agent Watch 0.15.0; Agent Studio 0.19.0 for model fallback",
1847
+ "vi": "Agent Watch 0.15.0; Agent Studio 0.19.0 cho model dự phòng"
1848
+ }
1849
+ },
1850
+ {
1851
+ "version": "1.14.0",
1852
+ "date": "2026-10-06",
1853
+ "status": "stable",
1854
+ "title": {
1855
+ "en": "Updates keep each member's Pi model choices",
1856
+ "vi": "Cập nhật giữ lựa chọn model Pi của từng member"
1857
+ },
1858
+ "summary": {
1859
+ "en": "Updates set Pi's default model and model list only on first install, then keep yours and add only newly offered models.",
1860
+ "vi": "Cập nhật chỉ đặt model mặc định và danh sách model của Pi ở lần cài đầu, sau đó giữ của bạn và chỉ thêm model mới."
1861
+ },
1862
+ "items": [
1863
+ {
1864
+ "kind": "improved",
1865
+ "en": "`piagent-update`, the dashboard update and `piagent-setup` keep your default model and list; a model you removed is not added back.",
1866
+ "vi": "`piagent-update`, nút cập nhật trên dashboard và `piagent-setup` giữ model mặc định và danh sách của bạn; model đã bỏ không bị thêm lại."
1867
+ },
1868
+ {
1869
+ "kind": "new",
1870
+ "en": "`piagent-update -- --reset-model-scope` applies Piagent's preset over your choices.",
1871
+ "vi": "`piagent-update -- --reset-model-scope` áp lại preset của Piagent lên lựa chọn của bạn."
1872
+ },
1873
+ {
1874
+ "kind": "fixed",
1875
+ "en": "`piagent-update` in WSL2 no longer warns that WSL2 is experimental.",
1876
+ "vi": "`piagent-update` trong WSL2 không còn cảnh báo WSL2 là thử nghiệm."
1877
+ },
1878
+ {
1879
+ "kind": "new",
1880
+ "en": "Windows installs with one PowerShell command, and the docs site has a Windows install page with fixes for failed installs.",
1881
+ "vi": "Windows cài bằng một lệnh PowerShell, và trang docs có trang Cài trên Windows kèm cách xử lý khi cài lỗi."
1882
+ }
1883
+ ],
1884
+ "requires": null
1885
+ },
1886
+ {
1887
+ "version": "1.13.1",
1888
+ "date": "2026-10-06",
1889
+ "status": "stable",
1890
+ "title": {
1891
+ "en": "Conversations keep their place, agent text is formatted",
1892
+ "vi": "Cuộc trò chuyện giữ chỗ đang đọc, chữ của agent có định dạng"
1893
+ },
1894
+ "summary": {
1895
+ "en": "Reopening a conversation no longer jumps to its first message, and text between tool calls is formatted like the final answer.",
1896
+ "vi": "Mở lại cuộc trò chuyện không còn nhảy về tin đầu tiên, và chữ giữa các tool call có định dạng như câu trả lời cuối."
1897
+ },
1898
+ "items": [
1899
+ {
1900
+ "kind": "fixed",
1901
+ "en": "Opening a conversation jumped to its first message; it now keeps its place, or opens at the newest message.",
1902
+ "vi": "Mở cuộc trò chuyện từng nhảy về tin đầu tiên; giờ giữ đúng chỗ đang đọc, hoặc mở ở tin mới nhất."
1903
+ },
1904
+ {
1905
+ "kind": "fixed",
1906
+ "en": "Text between tool calls showed raw markdown; it is now formatted like the final answer.",
1907
+ "vi": "Chữ giữa các tool call từng hiện markdown thô; giờ có định dạng như câu trả lời cuối."
1908
+ },
1909
+ {
1910
+ "kind": "improved",
1911
+ "en": "Updating from 1.13.0 needs no new Agent Watch import; from 1.12 or earlier, import again as for 1.13.0.",
1912
+ "vi": "Cập nhật từ 1.13.0 không cần nhập lại trong Agent Watch; từ 1.12 trở về trước thì nhập lại như ở 1.13.0."
1913
+ }
1914
+ ],
1915
+ "requires": null
1916
+ },
1917
+ {
1918
+ "version": "1.13.0",
1919
+ "date": "2026-10-06",
1920
+ "status": "stable",
1921
+ "title": {
1922
+ "en": "Piagent on Windows through WSL2",
1923
+ "vi": "Piagent trên Windows qua WSL2"
1924
+ },
1925
+ "summary": {
1926
+ "en": "Company conversations run on Linux and WSL2 in a sandbox with the macOS guarantees; personal mode on Windows itself is a preview.",
1927
+ "vi": "Cuộc trò chuyện công ty chạy trên Linux và WSL2 trong sandbox giữ đúng cam kết của macOS; chế độ cá nhân trên Windows là bản xem trước."
1928
+ },
1929
+ "items": [
1930
+ {
1931
+ "kind": "breaking",
1932
+ "en": "After updating, each member imports the Piagent configuration again in Agent Watch, since the company launcher changed.",
1933
+ "vi": "Sau khi cập nhật, mỗi member nhập lại cấu hình Piagent trong Agent Watch, vì trình khởi chạy công ty đã đổi."
1934
+ },
1935
+ {
1936
+ "kind": "new",
1937
+ "en": "The Linux sandbox keeps the project writable, other folders read-only, credentials empty and unapproved commands offline.",
1938
+ "vi": "Sandbox Linux cho ghi trong project, folder khác chỉ đọc, file credential đọc ra rỗng, lệnh chưa duyệt không có mạng."
1939
+ },
1940
+ {
1941
+ "kind": "new",
1942
+ "en": "Agent Watch for Windows binds Piagent in WSL, and `piagent studio --doctor` checks each sandbox guarantee.",
1943
+ "vi": "Agent Watch cho Windows kết nối Piagent trong WSL, và `piagent studio --doctor` kiểm tra từng cam kết của sandbox."
1944
+ },
1945
+ {
1946
+ "kind": "new",
1947
+ "en": "From WSL, the folder picker is the Windows dialog and links open in the Windows browser.",
1948
+ "vi": "Từ WSL, hộp chọn folder là hộp thoại Windows và link mở trong trình duyệt Windows."
1949
+ },
1950
+ {
1951
+ "kind": "fixed",
1952
+ "en": "Several Windows path, loader and file-saving bugs that stopped the guard, dashboard and `piagent` are fixed.",
1953
+ "vi": "Đã sửa nhiều lỗi đường dẫn, trình nạp và lưu file trên Windows từng làm guard, dashboard và `piagent` không chạy."
1954
+ }
1955
+ ],
1956
+ "requires": null
1957
+ },
1958
+ {
1959
+ "version": "1.12.1",
1960
+ "date": "2026-10-06",
1961
+ "status": "stable",
1962
+ "title": {
1963
+ "en": "Forked company conversations take messages again",
1964
+ "vi": "Fork của cuộc trò chuyện công ty gửi được tin nhắn"
1965
+ },
1966
+ "summary": {
1967
+ "en": "A forked company conversation now accepts messages; forks made with 1.12.0 or earlier must be forked again.",
1968
+ "vi": "Fork của cuộc trò chuyện công ty giờ nhận tin nhắn; fork tạo bằng 1.12.0 trở về trước cần tạo lại."
1969
+ },
1970
+ "items": [
1971
+ {
1972
+ "kind": "fixed",
1973
+ "en": "Every message to a forked company conversation returned “The message was not sent”; forks now work.",
1974
+ "vi": "Mọi tin nhắn tới fork của cuộc trò chuyện công ty từng báo “Tin nhắn chưa được gửi”; giờ fork dùng được."
1975
+ },
1976
+ {
1977
+ "kind": "breaking",
1978
+ "en": "Forks made with 1.12.0 or earlier stay unreachable: fork the source conversation again after updating.",
1979
+ "vi": "Fork tạo bằng 1.12.0 trở về trước vẫn không dùng được: hãy fork lại cuộc trò chuyện gốc sau khi cập nhật."
1980
+ }
1981
+ ],
1982
+ "requires": null
1983
+ },
1984
+ {
1985
+ "version": "1.12.0",
1986
+ "date": "2026-10-06",
1987
+ "status": "stable",
1988
+ "title": {
1989
+ "en": "@ any file or folder, skills with /, tests in the company sandbox",
1990
+ "vi": "@ mọi file và folder, skill dùng bằng /, test trong sandbox công ty"
1991
+ },
1992
+ "summary": {
1993
+ "en": "@ picks any file or folder, agents read outside folders read-only, existing skills work with /, and common test suites run in the sandbox.",
1994
+ "vi": "@ chọn được mọi file hay folder, agent đọc folder ngoài project ở chế độ chỉ đọc, skill có sẵn dùng bằng /, và test phổ biến chạy trong sandbox."
1995
+ },
1996
+ "items": [
1997
+ {
1998
+ "kind": "new",
1999
+ "en": "Typing @ offers the project's files and folders, and after `~/`, `/` or `../` any folder on this Mac.",
2000
+ "vi": "Gõ @ để chọn file, folder của project, và sau `~/`, `/` hay `../` là mọi folder trên máy Mac."
2001
+ },
2002
+ {
2003
+ "kind": "new",
2004
+ "en": "Agents read folders you point to outside the project, read-only; hidden home files, `~/Library` and credential files stay closed.",
2005
+ "vi": "Agent đọc folder bạn chỉ tới ngoài project, chỉ đọc; file ẩn trong home, `~/Library` và file credential vẫn bị chặn."
2006
+ },
2007
+ {
2008
+ "kind": "new",
2009
+ "en": "Skills and commands in the project's and your agent folders, such as `.pi` and `.agents/skills`, work with `/command` or `/skill:name`.",
2010
+ "vi": "Skill và command trong folder agent của project và của bạn, như `.pi` và `.agents/skills`, dùng được bằng `/command` hoặc `/skill:tên`."
2011
+ },
2012
+ {
2013
+ "kind": "new",
2014
+ "en": "Tests of common languages run in company conversations, with per-project package caches and local servers reachable.",
2015
+ "vi": "Test của các ngôn ngữ phổ biến chạy được trong cuộc trò chuyện công ty, có cache package theo project và tới được server cục bộ."
2016
+ },
2017
+ {
2018
+ "kind": "improved",
2019
+ "en": "An unsent message stays in each conversation and the new chat across switching and reloads.",
2020
+ "vi": "Tin nhắn soạn dở được giữ ở từng cuộc trò chuyện và ở khung chat mới khi chuyển qua lại hay tải lại trang."
2021
+ },
2022
+ {
2023
+ "kind": "security",
2024
+ "en": "Personal conversations could edit `~/` paths outside the project; the guard now checks the path the tool actually opens.",
2025
+ "vi": "Cuộc trò chuyện cá nhân từng sửa được đường dẫn `~/` ngoài project; giờ guard kiểm tra đúng đường dẫn tool mở."
2026
+ }
2027
+ ],
2028
+ "requires": null
2029
+ },
2030
+ {
2031
+ "version": "1.11.1",
2032
+ "date": "2026-10-05",
2033
+ "status": "stable",
2034
+ "title": {
2035
+ "en": "Updates end on the new release's dashboard",
2036
+ "vi": "Cập nhật xong là dashboard chạy bản mới"
2037
+ },
2038
+ "summary": {
2039
+ "en": "Whether started from the dashboard or `piagent-update`, an update now ends with the dashboard running the installed release.",
2040
+ "vi": "Dù cập nhật từ dashboard hay bằng `piagent-update`, dashboard đều chạy lại trên bản vừa cài."
2041
+ },
2042
+ "items": [
2043
+ {
2044
+ "kind": "fixed",
2045
+ "en": "An update from the dashboard installed the release but could not restart the dashboard on npm installs; it now restarts.",
2046
+ "vi": "Cập nhật từ dashboard từng cài được bản mới nhưng không khởi động lại được dashboard với bản cài từ npm; giờ đã chạy được."
2047
+ },
2048
+ {
2049
+ "kind": "fixed",
2050
+ "en": "After `piagent-update`, `piagent dashboard` reused the old release's dashboard; it now restarts on the installed one.",
2051
+ "vi": "Sau `piagent-update`, `piagent dashboard` từng dùng lại dashboard của bản cũ; giờ nó mở lại trên bản vừa cài."
2052
+ }
2053
+ ],
2054
+ "requires": null
2055
+ },
2056
+ {
2057
+ "version": "1.11.0",
2058
+ "date": "2026-10-05",
2059
+ "status": "stable",
2060
+ "title": {
2061
+ "en": "One-click updates and an editor-style dashboard",
2062
+ "vi": "Cập nhật bằng một nút, dashboard như một trình soạn code"
2063
+ },
2064
+ "summary": {
2065
+ "en": "The dashboard checks for and installs Piagent and Pi updates itself, and gains a status bar, a command palette and searchable Settings.",
2066
+ "vi": "Dashboard tự kiểm tra và cài bản mới của Piagent và Pi, kèm thanh trạng thái, bảng lệnh và Cài đặt tìm kiếm được."
2067
+ },
2068
+ "items": [
2069
+ {
2070
+ "kind": "new",
2071
+ "en": "The dashboard checks for a new release on open and every 6 hours, and shows it in the status bar and Settings.",
2072
+ "vi": "Dashboard kiểm tra bản mới khi mở và mỗi 6 giờ, rồi báo ở thanh trạng thái và Cài đặt."
2073
+ },
2074
+ {
2075
+ "kind": "new",
2076
+ "en": "One click updates Pi and Piagent together, with Pi kept on the version Piagent pins; it is locked while a turn runs.",
2077
+ "vi": "Một nút cập nhật cả Pi và Piagent, Pi luôn ở đúng bản Piagent đã ghim; nút bị khoá khi có lượt đang chạy."
2078
+ },
2079
+ {
2080
+ "kind": "new",
2081
+ "en": "A command palette (⌘K / Ctrl+K) reaches actions, settings and conversations by name, ignoring Vietnamese accents.",
2082
+ "vi": "Bảng lệnh (⌘K / Ctrl+K) mở mọi thao tác, cài đặt và cuộc trò chuyện theo tên, gõ không dấu vẫn tìm được."
2083
+ },
2084
+ {
2085
+ "kind": "new",
2086
+ "en": "Settings can be searched by what a setting does, with grouped sections and a Shortcuts section.",
2087
+ "vi": "Cài đặt tìm được theo việc mỗi mục làm, có nhóm mục rõ ràng và mục Phím tắt."
2088
+ }
2089
+ ],
2090
+ "requires": null
2091
+ },
2092
+ {
2093
+ "version": "1.10.0",
2094
+ "date": "2026-10-05",
2095
+ "status": "stable",
2096
+ "title": {
2097
+ "en": "Agent asks when unclear, subagents can object to a brief",
2098
+ "vi": "Main agent hỏi lại khi chưa rõ, subagent được phản biện brief"
2099
+ },
2100
+ "summary": {
2101
+ "en": "The main agent asks you numbered questions when a decision is open, and subagents can object to a brief with evidence.",
2102
+ "vi": "Main agent hỏi bạn bằng câu hỏi có lựa chọn đánh số khi còn quyết định bỏ ngỏ, và subagent được phản biện brief kèm bằng chứng."
2103
+ },
2104
+ "items": [
2105
+ {
2106
+ "kind": "new",
2107
+ "en": "The main agent asks 1–4 questions with numbered options and “Other” when the request leaves a decision open, then waits.",
2108
+ "vi": "Main agent hỏi 1–4 câu với lựa chọn đánh số và “Khác” khi yêu cầu còn để ngỏ quyết định, rồi chờ bạn trả lời."
2109
+ },
2110
+ {
2111
+ "kind": "new",
2112
+ "en": "Subagents read your request verbatim and can object to a brief with evidence; a second objection goes to you.",
2113
+ "vi": "Subagent đọc nguyên văn yêu cầu và được phản biện brief kèm bằng chứng; bất đồng lần hai thì chuyển cho bạn quyết."
2114
+ },
2115
+ {
2116
+ "kind": "improved",
2117
+ "en": "A subagent out of quota or whose account is resting runs again on the Harness's fallback model.",
2118
+ "vi": "Subagent hết quota hoặc tài khoản đang nghỉ được chạy lại trên model dự phòng của Harness."
2119
+ },
2120
+ {
2121
+ "kind": "improved",
2122
+ "en": "A patch larger than 120 KB is reviewed in parts and the findings merge, instead of stopping the review.",
2123
+ "vi": "Patch lớn hơn 120 KB được review theo từng phần rồi gộp kết quả, thay vì dừng review."
2124
+ },
2125
+ {
2126
+ "kind": "fixed",
2127
+ "en": "A check that returns an error result now counts as failed, so a required check never passes on a failing run.",
2128
+ "vi": "Check trả về kết quả lỗi giờ được tính là fail, nên check bắt buộc không bao giờ pass khi chạy lỗi."
2129
+ }
2130
+ ],
2131
+ "requires": null
2132
+ },
2133
+ {
2134
+ "version": "1.9.3",
2135
+ "date": "2026-10-03",
2136
+ "status": "stable",
2137
+ "title": {
2138
+ "en": "Vietnamese typing no longer sends twice, helpers read less",
2139
+ "vi": "Gõ tiếng Việt không gửi nhầm, subagent đọc trang gọn hơn"
2140
+ },
2141
+ "summary": {
2142
+ "en": "Enter used by an input method no longer sends, a double Enter sends once, and helpers read less of each web page.",
2143
+ "vi": "Enter dùng để chốt chữ khi gõ dấu không còn gửi tin, bấm Enter hai lần chỉ gửi một lần, và subagent đọc mỗi trang web ít hơn."
2144
+ },
2145
+ "items": [
2146
+ {
2147
+ "kind": "fixed",
2148
+ "en": "An Enter that commits text from a Vietnamese input method sent the message; it now only finishes the word.",
2149
+ "vi": "Enter dùng để chốt chữ của bộ gõ tiếng Việt từng gửi tin; giờ chỉ chốt chữ."
2150
+ },
2151
+ {
2152
+ "kind": "fixed",
2153
+ "en": "Pressing Enter twice could create two identical conversations; it now creates one and sends one message.",
2154
+ "vi": "Bấm Enter hai lần từng tạo hai cuộc trò chuyện giống nhau; giờ chỉ tạo một và gửi một tin."
2155
+ },
2156
+ {
2157
+ "kind": "improved",
2158
+ "en": "A helper reads at most 20,000 characters of a web page (12,000 by default), cutting token use on research.",
2159
+ "vi": "Subagent đọc tối đa 20.000 ký tự mỗi trang web (mặc định 12.000), giảm token khi nghiên cứu."
2160
+ }
2161
+ ],
2162
+ "requires": null
2163
+ },
2164
+ {
2165
+ "version": "1.9.2",
2166
+ "date": "2026-10-03",
2167
+ "status": "stable",
2168
+ "title": {
2169
+ "en": "Web work goes to the research helper, chat stays in place",
2170
+ "vi": "Việc trên web giao cho subagent research, khung chat không giật"
2171
+ },
2172
+ "summary": {
2173
+ "en": "With a research helper, web work runs on its model and only a summary reaches the main agent; sending no longer jumps the page.",
2174
+ "vi": "Khi có subagent research, việc trên web chạy trên model của nó và main agent chỉ nhận bản tóm tắt; gửi tin không còn kéo trang lên đầu."
2175
+ },
2176
+ "items": [
2177
+ {
2178
+ "kind": "improved",
2179
+ "en": "With a research helper in the Harness, searches and page reads run on its model and only its summary with sources returns.",
2180
+ "vi": "Khi Harness có subagent research, search và đọc trang chạy trên model của nó, chỉ bản tóm tắt kèm nguồn được trả về."
2181
+ },
2182
+ {
2183
+ "kind": "improved",
2184
+ "en": "Each search result names the engine that answered it.",
2185
+ "vi": "Mỗi kết quả search ghi rõ engine nào đã trả lời."
2186
+ },
2187
+ {
2188
+ "kind": "fixed",
2189
+ "en": "Sending a message in a long company conversation jumped the page to the top; the history now stays in place.",
2190
+ "vi": "Gửi tin trong cuộc trò chuyện công ty dài từng kéo trang lên đầu; giờ lịch sử đứng yên."
2191
+ },
2192
+ {
2193
+ "kind": "fixed",
2194
+ "en": "The helper count shows the number the Harness enables instead of a fixed 2.",
2195
+ "vi": "Số subagent hiện đúng số Harness bật thay vì luôn là 2."
2196
+ }
2197
+ ],
2198
+ "requires": null
2199
+ },
2200
+ {
2201
+ "version": "1.9.1",
2202
+ "date": "2026-10-03",
2203
+ "status": "stable",
2204
+ "title": {
2205
+ "en": "Scout and verify helpers, web search for every company role",
2206
+ "vi": "Subagent scout và verify, tìm web cho mọi vai công ty"
2207
+ },
2208
+ "summary": {
2209
+ "en": "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.",
2210
+ "vi": "Thêm hai subagent công ty, mọi vai tìm web qua search pool của team, và sandbox chạy được check type cùng test end-to-end."
2211
+ },
2212
+ "items": [
2213
+ {
2214
+ "kind": "new",
2215
+ "en": "Scout reads the project only and answers with `file:line` facts; verify runs checks offline and rates each claim with evidence.",
2216
+ "vi": "Scout chỉ đọc project và trả lời kèm `file:line`; verify chạy check không mạng và đánh giá từng kết luận kèm bằng chứng."
2217
+ },
2218
+ {
2219
+ "kind": "new",
2220
+ "en": "Company `web_search` uses the team's search pool for every role, so roles on API-key models can search too.",
2221
+ "vi": "`web_search` công ty dùng search pool của team cho mọi vai, nên vai chạy model API key cũng tìm được web."
2222
+ },
2223
+ {
2224
+ "kind": "fixed",
2225
+ "en": "Type checks, test runners and end-to-end suites that the sandbox used to stop now run, with credential files hidden.",
2226
+ "vi": "Check type, trình chạy test và bộ test end-to-end từng bị sandbox chặn giờ chạy được, file credential được ẩn đi."
2227
+ },
2228
+ {
2229
+ "kind": "improved",
2230
+ "en": "A command's own timeout, up to 30 minutes, now extends the 10-minute limit.",
2231
+ "vi": "Timeout riêng của lệnh, tối đa 30 phút, giờ kéo dài giới hạn 10 phút."
2232
+ },
2233
+ {
2234
+ "kind": "fixed",
2235
+ "en": "`piagent-install` and `piagent-setup` no longer suggest commands that 1.9.0 retired, which would have started a paid turn.",
2236
+ "vi": "`piagent-install` và `piagent-setup` không còn gợi ý lệnh đã bỏ từ 1.9.0, vốn có thể khởi động một lượt tính phí."
2237
+ }
2238
+ ],
2239
+ "requires": null
2240
+ },
2241
+ {
2242
+ "version": "1.9.0",
2243
+ "date": "2026-10-02",
2244
+ "status": "stable",
2245
+ "title": {
2246
+ "en": "Freeform sessions and the team Harness",
2247
+ "vi": "Nói việc bằng lời, Harness của team lo phần kiểm tra"
2248
+ },
2249
+ "summary": {
2250
+ "en": "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.",
2251
+ "vi": "Bỏ task contract và các lệnh workflow: bạn giao việc bằng lời thường, guard vẫn kiểm tra từng tool call, chế độ công ty chạy Harness của team."
2252
+ },
2253
+ "items": [
2254
+ {
2255
+ "kind": "breaking",
2256
+ "en": "Retired the task contract and `/workflow`, `/fresh`, `/onboard` and related commands; ask in plain language instead.",
2257
+ "vi": "Bỏ task contract cùng `/workflow`, `/fresh`, `/onboard` và các lệnh liên quan; hãy giao việc bằng lời thường."
2258
+ },
2259
+ {
2260
+ "kind": "new",
2261
+ "en": "Company sessions run the team's Harness from Studio: plan, checks and review each turn, suggested or required, with bounded fix loops.",
2262
+ "vi": "Session ở chế độ công ty chạy Harness của team từ Studio: kế hoạch, check và review mỗi lượt, ở mức gợi ý hay bắt buộc, có giới hạn vòng sửa."
2263
+ },
2264
+ {
2265
+ "kind": "improved",
2266
+ "en": "When every company model account is busy, a request waits in line for up to 20 minutes instead of failing.",
2267
+ "vi": "Khi mọi tài khoản model của công ty đang bận, yêu cầu tự chờ tới lượt (tối đa 20 phút) thay vì báo lỗi."
2268
+ },
2269
+ {
2270
+ "kind": "fixed",
2271
+ "en": "Approved network commands always failed with `ENOTFOUND`; `run_with_network` now resolves host names.",
2272
+ "vi": "Lệnh có mạng đã được duyệt luôn lỗi `ENOTFOUND`; nay `run_with_network` phân giải được tên máy chủ."
2273
+ },
2274
+ {
2275
+ "kind": "fixed",
2276
+ "en": "The dashboard was slow with many conversations and left messages sent after Stop unconfirmed; both are fixed.",
2277
+ "vi": "Dashboard chậm khi có nhiều cuộc trò chuyện và để tin nhắn gửi sau Dừng treo chờ xác nhận; cả hai đã được sửa."
2278
+ },
2279
+ {
2280
+ "kind": "security",
2281
+ "en": "Agent Studio credentials are now redacted in edit previews, command output and the gateway stream.",
2282
+ "vi": "Thông tin đăng nhập Agent Studio nay được che trong bản xem trước khi sửa, output lệnh và luồng gateway."
2283
+ }
2284
+ ],
2285
+ "requires": {
2286
+ "en": "Pi 0.87.1",
2287
+ "vi": "Pi 0.87.1"
2288
+ }
2289
+ },
2290
+ {
2291
+ "version": "1.8.0",
2292
+ "date": "2026-09-23",
2293
+ "status": "stable",
2294
+ "title": {
2295
+ "en": "GPT-6 Astra, Sol and Luna models",
2296
+ "vi": "Hỗ trợ model GPT-6 Astra, Sol và Luna"
2297
+ },
2298
+ "summary": {
2299
+ "en": "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.",
2300
+ "vi": "Ghim Pi 0.87.1 để session đã đăng nhập và WebUI liệt kê được GPT-6 Astra, Sol và Luna, kèm bảng định tuyến GPT-6 mới."
2301
+ },
2302
+ "items": [
2303
+ {
2304
+ "kind": "new",
2305
+ "en": "GPT-6 Astra, Sol and Luna appear in authenticated sessions and the WebUI; Pi's catalog decides availability.",
2306
+ "vi": "GPT-6 Astra, Sol và Luna có trong session đã đăng nhập và WebUI; danh mục của Pi quyết định model nào dùng được."
2307
+ },
2308
+ {
2309
+ "kind": "new",
2310
+ "en": "New parent-routing map: Luna Medium for bounded work, Sol Medium/High for everyday work, Astra Extra High for broad work.",
2311
+ "vi": "Bảng định tuyến mới: Luna Medium cho việc gọn, Sol Medium/High cho việc hằng ngày, Astra Extra High cho việc rộng và mơ hồ."
2312
+ },
2313
+ {
2314
+ "kind": "improved",
2315
+ "en": "Parent routing stays off by default and explicit model pins are unchanged.",
2316
+ "vi": "Định tuyến vẫn tắt mặc định; model đã ghim rõ giữ nguyên."
2317
+ },
2318
+ {
2319
+ "kind": "improved",
2320
+ "en": "New setup and WebUI sessions prefer GPT-6 Sol High; existing sessions and explicit settings are not rewritten.",
2321
+ "vi": "Cài mới và session WebUI mới ưu tiên GPT-6 Sol High; session cũ và cài đặt bạn đã chọn không bị ghi đè."
2322
+ },
2323
+ {
2324
+ "kind": "improved",
2325
+ "en": "If a GPT-6 target is unavailable, the router records a 5.6 fallback instead of substituting it silently.",
2326
+ "vi": "Nếu model GPT-6 đích không có, bộ định tuyến ghi lại việc lùi về 5.6 thay vì lặng lẽ thay thế."
2327
+ }
2328
+ ],
2329
+ "requires": {
2330
+ "en": "Pi 0.87.1",
2331
+ "vi": "Pi 0.87.1"
2332
+ }
2333
+ },
2334
+ {
2335
+ "version": "1.7.1",
2336
+ "date": "2026-09-23",
2337
+ "status": "stable",
2338
+ "title": {
2339
+ "en": "Pi 0.86.1, requested pauses and diagnostic acceptance",
2340
+ "vi": "Pi 0.86.1, tạm dừng theo yêu cầu và acceptance chẩn đoán"
2341
+ },
2342
+ "summary": {
2343
+ "en": "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.",
2344
+ "vi": "Thay cho v1.7.0 chưa phát hành, cập nhật Pi 0.86.1, thêm tool chờ khi bạn yêu cầu tạm dừng và để bằng chứng acceptance ở mức chẩn đoán."
2345
+ },
2346
+ "items": [
2347
+ {
2348
+ "kind": "improved",
2349
+ "en": "Updated Pi to 0.86.1, keeping the selected model and thinking level while correcting usage and WebUI settlement.",
2350
+ "vi": "Cập nhật Pi 0.86.1, giữ model và mức thinking đã chọn, đồng thời sửa cách ghi usage và kết thúc lượt trên WebUI."
2351
+ },
2352
+ {
2353
+ "kind": "new",
2354
+ "en": "Added a wait tool for pauses you request inside a session; it does not call the model while waiting.",
2355
+ "vi": "Thêm tool chờ cho lần tạm dừng bạn yêu cầu trong session; khi chờ không gọi model."
2356
+ },
2357
+ {
2358
+ "kind": "improved",
2359
+ "en": "Acceptance proof is diagnostic by default: unproved criteria stay pending; strict mode remains available by policy.",
2360
+ "vi": "Bằng chứng acceptance mặc định chỉ để chẩn đoán: tiêu chí chưa chứng minh vẫn ở trạng thái chờ; chế độ nghiêm vẫn bật được qua policy."
2361
+ },
2362
+ {
2363
+ "kind": "improved",
2364
+ "en": "Task usage, timing and context delivery are bound to the active task, and unsupported context files are filtered out.",
2365
+ "vi": "Usage, thời gian và context được gắn với task đang chạy; file context không hỗ trợ được lọc bỏ."
2366
+ },
2367
+ {
2368
+ "kind": "improved",
2369
+ "en": "The release CI limit is raised to 75 minutes after the v1.7.0 macOS gate timed out.",
2370
+ "vi": "Giới hạn CI phát hành tăng lên 75 phút sau khi bước kiểm tra macOS của v1.7.0 hết giờ."
2371
+ }
2372
+ ],
2373
+ "requires": {
2374
+ "en": "Pi 0.86.1",
2375
+ "vi": "Pi 0.86.1"
2376
+ }
2377
+ },
2378
+ {
2379
+ "version": "1.7.0",
2380
+ "date": null,
2381
+ "status": "unpublished",
2382
+ "title": {
2383
+ "en": "Not published; use v1.7.1",
2384
+ "vi": "Không phát hành; hãy dùng v1.7.1"
2385
+ },
2386
+ "summary": {
2387
+ "en": "The tag exists, but its macOS gate timed out twice at 40 minutes, so no npm package or GitHub Release was created.",
2388
+ "vi": "Tag đã có nhưng bước kiểm tra macOS hết giờ hai lần ở mốc 40 phút, nên không có gói npm hay GitHub Release nào được tạo."
2389
+ },
2390
+ "items": [
2391
+ {
2392
+ "kind": "improved",
2393
+ "en": "No `@piagent/platform@1.7.0` package exists; install v1.7.1 instead.",
2394
+ "vi": "Không có gói `@piagent/platform@1.7.0`; hãy cài v1.7.1."
2395
+ }
2396
+ ],
2397
+ "requires": null
2398
+ },
2399
+ {
2400
+ "version": "1.6.1",
2401
+ "date": "2026-08-26",
2402
+ "status": "stable",
2403
+ "title": {
2404
+ "en": "Truthful WebUI state and read-only source review",
2405
+ "vi": "Trạng thái WebUI đúng thực tế và review mã nguồn chỉ đọc"
2406
+ },
2407
+ "summary": {
2408
+ "en": "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.",
2409
+ "vi": "WebUI không còn báo thành công trước khi task xong, link Git host được review ở chế độ chỉ đọc, và chỉ dùng tối đa một subagent."
2410
+ },
2411
+ "items": [
2412
+ {
2413
+ "kind": "fixed",
2414
+ "en": "A pending task could show a completed message or success bubble; drafts now stay hidden until the task ends.",
2415
+ "vi": "Task chưa xong có thể hiện tin hoàn tất hoặc bong bóng thành công; nay bản nháp được ẩn cho tới khi task kết thúc."
2416
+ },
2417
+ {
2418
+ "kind": "fixed",
2419
+ "en": "Rejected or evidence-free helper calls could later show as passed in Activity; they now stay visible as failures.",
2420
+ "vi": "Lệnh gọi helper bị từ chối hoặc không có bằng chứng có thể hiện là đã qua trong Activity; nay chúng được giữ là thất bại."
2421
+ },
2422
+ {
2423
+ "kind": "new",
2424
+ "en": "A GitHub or other Git host link can be checked out for read-only review, up to eight sources, cleaned up at session end.",
2425
+ "vi": "Link GitHub hay Git host khác được checkout để review chỉ đọc, tối đa tám nguồn, tự dọn khi session kết thúc."
2426
+ },
2427
+ {
2428
+ "kind": "improved",
2429
+ "en": "Subagents are limited to one read-only helper with bounded calls, turns and runtime, and no automatic retry.",
2430
+ "vi": "Subagent giới hạn ở một helper chỉ đọc, có giới hạn số lần gọi, số lượt và thời gian chạy, không tự thử lại."
2431
+ },
2432
+ {
2433
+ "kind": "fixed",
2434
+ "en": "Attachments and workflow wrappers no longer replace your actual request when a task starts.",
2435
+ "vi": "Tệp đính kèm và phần bọc workflow không còn thay thế yêu cầu thật của bạn khi task bắt đầu."
2436
+ }
2437
+ ],
2438
+ "requires": null
2439
+ },
2440
+ {
2441
+ "version": "1.6.0",
2442
+ "date": "2026-08-24",
2443
+ "status": "stable",
2444
+ "title": {
2445
+ "en": "Leaner context, redacted snapshots, steadier WebUI",
2446
+ "vi": "Context gọn hơn, snapshot được che, WebUI ổn định hơn"
2447
+ },
2448
+ "summary": {
2449
+ "en": "One criterion-aware context pack replaces overlapping discovery, source snapshots are redacted before reaching the model, and the WebUI recovers after reloads.",
2450
+ "vi": "Một gói context theo tiêu chí thay cho các bước dò trùng lặp, snapshot mã nguồn được che trước khi tới model, và WebUI phục hồi đúng sau khi tải lại."
2451
+ },
2452
+ "items": [
2453
+ {
2454
+ "kind": "improved",
2455
+ "en": "One criterion-aware initial context pack replaces overlapping discovery and puts explicit targets and their tests first.",
2456
+ "vi": "Một gói context ban đầu theo tiêu chí thay cho các bước dò trùng lặp, ưu tiên file được nêu rõ và test của chúng."
2457
+ },
2458
+ {
2459
+ "kind": "security",
2460
+ "en": "Automatic source snapshots are redacted before reaching the provider, including short and numeric secret values.",
2461
+ "vi": "Snapshot mã nguồn tự động được che trước khi gửi tới provider, kể cả giá trị bí mật ngắn hoặc dạng số."
2462
+ },
2463
+ {
2464
+ "kind": "improved",
2465
+ "en": "New installations default to GPT-5.6 Sol with High thinking; you can still pick another model per message or session.",
2466
+ "vi": "Cài mới mặc định dùng GPT-5.6 Sol với thinking High; bạn vẫn chọn được model khác cho từng tin nhắn hay session."
2467
+ },
2468
+ {
2469
+ "kind": "improved",
2470
+ "en": "Reloads and multiple browser tabs agree on the running operation, and concurrent Stop requests share one termination.",
2471
+ "vi": "Tải lại trang và nhiều tab trình duyệt thống nhất về thao tác đang chạy; nhiều lần bấm Dừng cùng lúc chỉ dừng một lần."
2472
+ },
2473
+ {
2474
+ "kind": "fixed",
2475
+ "en": "Empty provider output could create a blank success bubble in the conversation; it no longer does.",
2476
+ "vi": "Output rỗng từ provider có thể tạo bong bóng thành công trống trong cuộc trò chuyện; lỗi này đã được sửa."
2477
+ },
2478
+ {
2479
+ "kind": "improved",
2480
+ "en": "A token-reduction claim is published only after a complete zero-retry 108-session run on the exact tagged release.",
2481
+ "vi": "Kết quả giảm token chỉ được công bố sau một lượt chạy đủ 108 session, không thử lại, trên đúng bản đã gắn tag."
2482
+ }
2483
+ ],
2484
+ "requires": null
2485
+ },
2486
+ {
2487
+ "version": "1.5.5",
2488
+ "date": "2026-08-21",
2489
+ "status": "stable",
2490
+ "title": {
2491
+ "en": "WebUI command execution hotfix",
2492
+ "vi": "Bản sửa nóng chạy lệnh trên WebUI"
2493
+ },
2494
+ "summary": {
2495
+ "en": "Fixes approvals that fell back to a missing terminal prompt, search commands mistaken for migrations, and sessions stuck after Stop.",
2496
+ "vi": "Sửa lỗi duyệt bị chuyển sang lời nhắc terminal không tồn tại, lệnh tìm kiếm bị coi là migration, và session kẹt sau khi bấm Dừng."
2497
+ },
2498
+ "items": [
2499
+ {
2500
+ "kind": "fixed",
2501
+ "en": "Some tool calls fell back to a terminal confirmation that does not exist in the WebUI; they are now approved in the WebUI.",
2502
+ "vi": "Một số tool call bị chuyển sang xác nhận trên terminal vốn không có trong WebUI; nay chúng được duyệt ngay trên WebUI."
2503
+ },
2504
+ {
2505
+ "kind": "fixed",
2506
+ "en": "`rg` and `grep` with `migrate` in their arguments were treated as migrations; real migrations still need confirmation.",
2507
+ "vi": "`rg` và `grep` có chữ `migrate` trong tham số bị coi là migration; migration thật vẫn cần xác nhận."
2508
+ },
2509
+ {
2510
+ "kind": "fixed",
2511
+ "en": "Stop could leave a session waiting on an approval; it now cancels the pending approval first.",
2512
+ "vi": "Bấm Dừng có thể để session kẹt chờ duyệt; nay Dừng huỷ yêu cầu duyệt đang chờ trước."
2513
+ },
2514
+ {
2515
+ "kind": "fixed",
2516
+ "en": "Dashboard restart could silently reuse a hung instance; it now waits for the old process to exit.",
2517
+ "vi": "Khởi động lại dashboard có thể lặng lẽ dùng lại tiến trình bị treo; nay nó chờ tiến trình cũ thoát hẳn."
2518
+ }
2519
+ ],
2520
+ "requires": null
2521
+ },
2522
+ {
2523
+ "version": "1.5.4",
2524
+ "date": "2026-08-20",
2525
+ "status": "stable",
2526
+ "title": {
2527
+ "en": "WebUI workflow hotfix",
2528
+ "vi": "Bản sửa nóng workflow trên WebUI"
2529
+ },
2530
+ "summary": {
2531
+ "en": "New WebUI sessions no longer report an unknown command effect after the turn started, and completed turns no longer appear twice.",
2532
+ "vi": "Session WebUI mới không còn báo không rõ kết quả lệnh khi lượt đã chạy, và lượt đã xong không còn hiện hai lần."
2533
+ },
2534
+ "items": [
2535
+ {
2536
+ "kind": "fixed",
2537
+ "en": "New WebUI sessions reported an unknown command effect although Pi had started the turn; this is fixed.",
2538
+ "vi": "Session WebUI mới báo không rõ kết quả lệnh dù Pi đã bắt đầu lượt; lỗi này đã được sửa."
2539
+ },
2540
+ {
2541
+ "kind": "improved",
2542
+ "en": "While sync is still in progress, the UI opens the known session and blocks a resend that could run the request twice.",
2543
+ "vi": "Khi đồng bộ chưa xong, giao diện mở session đã biết và chặn gửi lại để yêu cầu không chạy hai lần."
2544
+ },
2545
+ {
2546
+ "kind": "fixed",
2547
+ "en": "Completed turns appeared twice in the transcript; they now appear once.",
2548
+ "vi": "Lượt đã xong từng hiện hai lần trong lịch sử; nay chỉ hiện một lần."
2549
+ },
2550
+ {
2551
+ "kind": "fixed",
2552
+ "en": "A slow model-catalog refresh could undo a model or thinking change you just made and leave the button disabled.",
2553
+ "vi": "Lần làm mới danh mục model chậm có thể huỷ lựa chọn model hay thinking vừa đổi và để nút bị vô hiệu; lỗi này đã được sửa."
2554
+ }
2555
+ ],
2556
+ "requires": null
2557
+ },
2558
+ {
2559
+ "version": "1.5.3",
2560
+ "date": "2026-08-20",
2561
+ "status": "stable",
2562
+ "title": {
2563
+ "en": "WebUI and Terminal parity",
2564
+ "vi": "WebUI ngang bằng Terminal"
2565
+ },
2566
+ "summary": {
2567
+ "en": "The Session Hub gains ten per-message workflows, a simpler new-session composer and Project Controls, plus a new deep-logic benchmark.",
2568
+ "vi": "Session Hub có mười workflow theo từng tin nhắn, khung soạn session mới gọn hơn và Project Controls, cùng benchmark deep-logic mới."
2569
+ },
2570
+ "items": [
2571
+ {
2572
+ "kind": "new",
2573
+ "en": "The Session Hub offers ten per-message workflows; after sending, the composer returns to Freeform.",
2574
+ "vi": "Session Hub có mười workflow theo từng tin nhắn; sau khi gửi, khung soạn quay về Freeform."
2575
+ },
2576
+ {
2577
+ "kind": "improved",
2578
+ "en": "The new-session composer shows project, model and send; advanced choices sit behind a `+` control.",
2579
+ "vi": "Khung soạn session mới chỉ còn project, model và nút gửi; lựa chọn nâng cao nằm sau nút `+`."
2580
+ },
2581
+ {
2582
+ "kind": "new",
2583
+ "en": "Project Controls cover runtime, usage, onboarding, Context Engine, memory and MCP; changes ask for confirmation.",
2584
+ "vi": "Project Controls cho runtime, usage, onboarding, Context Engine, memory và MCP; thao tác thay đổi đều cần xác nhận."
2585
+ },
2586
+ {
2587
+ "kind": "new",
2588
+ "en": "Added the `deep-logic-v1` benchmark: six large problems, run with Piagent and `codex-cli` on GPT-5.6 Luna Medium.",
2589
+ "vi": "Thêm benchmark `deep-logic-v1`: sáu bài toán lớn, chạy với Piagent và `codex-cli` trên GPT-5.6 Luna Medium."
2590
+ },
2591
+ {
2592
+ "kind": "improved",
2593
+ "en": "`capability-v1` grows from four to six families with 69 atomic checks.",
2594
+ "vi": "`capability-v1` tăng từ bốn lên sáu nhóm bài, với 69 check nhỏ."
2595
+ }
2596
+ ],
2597
+ "requires": null
2598
+ },
2599
+ {
2600
+ "version": "1.5.2",
2601
+ "date": "2026-08-18",
2602
+ "status": "stable",
2603
+ "title": {
2604
+ "en": "Drag and drop in the new-chat composer",
2605
+ "vi": "Kéo thả tệp vào khung soạn cuộc trò chuyện mới"
2606
+ },
2607
+ "summary": {
2608
+ "en": "A document dragged or pasted onto the new-chat composer is now attached instead of being silently lost.",
2609
+ "vi": "Tài liệu kéo thả hoặc dán vào khung soạn cuộc trò chuyện mới nay được đính kèm thay vì mất mà không báo."
2610
+ },
2611
+ "items": [
2612
+ {
2613
+ "kind": "fixed",
2614
+ "en": "A document dropped or pasted on the new-chat screen was silently lost; it is now attached.",
2615
+ "vi": "Tài liệu thả hoặc dán vào màn hình cuộc trò chuyện mới từng bị mất mà không báo; nay được đính kèm."
2616
+ },
2617
+ {
2618
+ "kind": "fixed",
2619
+ "en": "A file dropped outside the composer no longer navigates the page away.",
2620
+ "vi": "Thả tệp ra ngoài khung soạn không còn làm trang chuyển đi nơi khác."
2621
+ }
2622
+ ],
2623
+ "requires": null
2624
+ },
2625
+ {
2626
+ "version": "1.5.1",
2627
+ "date": "2026-08-17",
2628
+ "status": "stable",
2629
+ "title": {
2630
+ "en": "Release repair for v1.5.0",
2631
+ "vi": "Bản phát hành bù cho v1.5.0"
2632
+ },
2633
+ "summary": {
2634
+ "en": "Publishes the content of v1.5.0, which was tagged but never published, plus a fix for a composer test race.",
2635
+ "vi": "Phát hành nội dung của v1.5.0 (đã gắn tag nhưng chưa từng phát hành) kèm bản sửa một lỗi race trong test khung soạn."
2636
+ },
2637
+ "items": [
2638
+ {
2639
+ "kind": "improved",
2640
+ "en": "Ships everything from v1.5.0, whose macOS release matrix failed before publishing.",
2641
+ "vi": "Gồm toàn bộ nội dung v1.5.0, bản có bước kiểm tra macOS thất bại trước khi phát hành."
2642
+ },
2643
+ {
2644
+ "kind": "fixed",
2645
+ "en": "Fixed a WebUI composer test race that left the confirm button disabled on slower runners.",
2646
+ "vi": "Sửa lỗi race trong test khung soạn WebUI khiến nút xác nhận bị vô hiệu trên máy chạy chậm."
2647
+ }
2648
+ ],
2649
+ "requires": null
2650
+ },
2651
+ {
2652
+ "version": "1.5.0",
2653
+ "date": "2026-08-17",
2654
+ "status": "unpublished",
2655
+ "title": {
2656
+ "en": "Document workspace and attachments",
2657
+ "vi": "Không gian tài liệu và tệp đính kèm"
2658
+ },
2659
+ "summary": {
2660
+ "en": "Adds a document workspace, attachments and a compact activity timeline to the Session Hub; tagged but not published, shipped as v1.5.1.",
2661
+ "vi": "Thêm không gian tài liệu, tệp đính kèm và dòng hoạt động gọn cho Session Hub; đã gắn tag nhưng không phát hành, nội dung có trong v1.5.1."
2662
+ },
2663
+ "items": [
2664
+ {
2665
+ "kind": "new",
2666
+ "en": "A document workspace in the Session Hub for Markdown, text, PDF and DOCX, with redaction and in-browser previews.",
2667
+ "vi": "Không gian tài liệu trong Session Hub cho Markdown, text, PDF và DOCX, có che dữ liệu nhạy cảm và xem trước trên trình duyệt."
2668
+ },
2669
+ {
2670
+ "kind": "new",
2671
+ "en": "Attach documents and images in New chat and in active sessions; sent files show as compact cards.",
2672
+ "vi": "Đính kèm tài liệu và ảnh ở New chat và trong session đang mở; tệp đã gửi hiện dưới dạng thẻ gọn."
2673
+ },
2674
+ {
2675
+ "kind": "improved",
2676
+ "en": "Large tool-result blocks in chat are replaced by a compact live activity timeline.",
2677
+ "vi": "Khối kết quả tool lớn trong chat được thay bằng dòng hoạt động trực tiếp gọn gàng."
2678
+ },
2679
+ {
2680
+ "kind": "new",
2681
+ "en": "Session titles and previews are generated without a model turn.",
2682
+ "vi": "Tiêu đề và đoạn xem trước của session được tạo mà không tốn lượt model."
2683
+ },
2684
+ {
2685
+ "kind": "improved",
2686
+ "en": "Project folder import is more reliable on macOS and Linux, including several folders at once.",
2687
+ "vi": "Nhập thư mục project ổn định hơn trên macOS và Linux, kể cả nhập nhiều thư mục một lúc."
2688
+ },
2689
+ {
2690
+ "kind": "improved",
2691
+ "en": "Providers & models shows whether each model supports web search and image input.",
2692
+ "vi": "Providers & models cho biết từng model có hỗ trợ web search và đầu vào ảnh hay không."
2693
+ }
2694
+ ],
2695
+ "requires": null
2696
+ },
2697
+ {
2698
+ "version": "1.4.1",
2699
+ "date": "2026-08-17",
2700
+ "status": "stable",
2701
+ "title": {
2702
+ "en": "Integrity, redaction and install fixes",
2703
+ "vi": "Sửa lỗi toàn vẹn, che dữ liệu và cài đặt"
2704
+ },
2705
+ "summary": {
2706
+ "en": "Closes gaps in the runtime integrity lock, redacts npm tokens, fixes install and uninstall bugs, and lets the dashboard start without the MCP adapter.",
2707
+ "vi": "Vá lỗ hổng trong khoá toàn vẹn runtime, che token npm, sửa lỗi cài và gỡ cài, và cho dashboard chạy được khi không có MCP adapter."
2708
+ },
2709
+ "items": [
2710
+ {
2711
+ "kind": "security",
2712
+ "en": "The integrity lock now covers shell entrypoints and the served WebUI bundle, which could previously run unpinned code.",
2713
+ "vi": "Khoá toàn vẹn nay bao cả lệnh shell và bundle WebUI được phục vụ, vốn trước đây có thể chạy code chưa được ghim."
2714
+ },
2715
+ {
2716
+ "kind": "security",
2717
+ "en": "npm tokens in `.npmrc` lines and in publish output are now redacted.",
2718
+ "vi": "Token npm trong dòng `.npmrc` và trong output khi publish nay được che."
2719
+ },
2720
+ {
2721
+ "kind": "fixed",
2722
+ "en": "The two-command install could downgrade the global Pi package to a project's pin; the two scopes now resolve separately.",
2723
+ "vi": "Cài bằng hai lệnh có thể hạ gói Pi toàn máy về bản ghim của một project; nay hai phạm vi được xác định riêng."
2724
+ },
2725
+ {
2726
+ "kind": "fixed",
2727
+ "en": "Uninstall did nothing under a non-default npm prefix yet reported success; it now uses the helper's actual prefix.",
2728
+ "vi": "Gỡ cài không làm gì khi npm dùng prefix khác mặc định mà vẫn báo xong; nay dùng đúng prefix nơi helper đang nằm."
2729
+ },
2730
+ {
2731
+ "kind": "fixed",
2732
+ "en": "`piagent dashboard` failed to start when the MCP adapter was not installed; it now starts.",
2733
+ "vi": "`piagent dashboard` không khởi động được khi chưa cài MCP adapter; nay đã chạy được."
2734
+ },
2735
+ {
2736
+ "kind": "new",
2737
+ "en": "Added Google Drive, Gmail, Docs and Sheets MCP servers as experimental, kept out of every default preset.",
2738
+ "vi": "Thêm MCP server Google Drive, Gmail, Docs và Sheets ở mức thử nghiệm, không nằm trong preset mặc định nào."
2739
+ }
2740
+ ],
2741
+ "requires": null
2742
+ },
2743
+ {
2744
+ "version": "1.4.0",
2745
+ "date": "2026-08-15",
2746
+ "status": "stable",
2747
+ "title": {
2748
+ "en": "Local Session Hub and WebUI",
2749
+ "vi": "Session Hub và WebUI chạy cục bộ"
2750
+ },
2751
+ "summary": {
2752
+ "en": "Adds `piagent dashboard`: a local Gateway and browser client to create, resume and review Pi sessions without extra model turns.",
2753
+ "vi": "Thêm `piagent dashboard`: Gateway cục bộ và giao diện trình duyệt để tạo, tiếp tục và review session Pi mà không tốn thêm lượt model."
2754
+ },
2755
+ "items": [
2756
+ {
2757
+ "kind": "new",
2758
+ "en": "`piagent dashboard` opens a local Gateway to create, reopen, resume, rename, pin, archive and fork sessions.",
2759
+ "vi": "`piagent dashboard` mở Gateway cục bộ để tạo, mở lại, tiếp tục, đổi tên, ghim, lưu trữ và tách nhánh session."
2760
+ },
2761
+ {
2762
+ "kind": "new",
2763
+ "en": "A conversation-first browser client with light and dark themes, Vietnamese and English UI, and an Agent Inspector.",
2764
+ "vi": "Giao diện trình duyệt lấy cuộc trò chuyện làm trung tâm, có giao diện sáng/tối, tiếng Việt và tiếng Anh, cùng Agent Inspector."
2765
+ },
2766
+ {
2767
+ "kind": "new",
2768
+ "en": "Streaming chat, held-message queues, attachments, model and thinking controls, and approval cards in the browser.",
2769
+ "vi": "Chat streaming, hàng đợi tin nhắn, tệp đính kèm, điều khiển model và thinking, cùng thẻ duyệt ngay trên trình duyệt."
2770
+ },
2771
+ {
2772
+ "kind": "new",
2773
+ "en": "Task Changes, Working Tree and Staged views with bounded diffs and guarded stage, unstage and revert actions.",
2774
+ "vi": "Các khung Task Changes, Working Tree và Staged với diff có giới hạn và thao tác stage, unstage, revert có kiểm soát."
2775
+ },
2776
+ {
2777
+ "kind": "improved",
2778
+ "en": "Sessions recover after restarts and stale owners, and corrupt state fails closed.",
2779
+ "vi": "Session phục hồi sau khi khởi động lại hoặc khi chủ cũ bỏ dở; trạng thái hỏng thì bị chặn an toàn."
2780
+ },
2781
+ {
2782
+ "kind": "security",
2783
+ "en": "Hardened the TypeScript loader, local control socket, browser authentication, redaction and credential handling.",
2784
+ "vi": "Gia cố bộ nạp TypeScript, socket điều khiển cục bộ, xác thực trình duyệt, che dữ liệu và xử lý thông tin đăng nhập."
2785
+ }
2786
+ ],
2787
+ "requires": null
2788
+ },
2789
+ {
2790
+ "version": "1.3.1",
2791
+ "date": "2026-08-13",
2792
+ "status": "stable",
2793
+ "title": {
2794
+ "en": "Security and reliability hardening",
2795
+ "vi": "Gia cố bảo mật và độ tin cậy"
2796
+ },
2797
+ "summary": {
2798
+ "en": "Widens the integrity inventory, speeds up per-call integrity checks with a cache, and lets local state locks recover safely.",
2799
+ "vi": "Mở rộng danh mục kiểm tra toàn vẹn, tăng tốc kiểm tra ở mỗi tool call bằng cache, và giúp khoá trạng thái cục bộ phục hồi an toàn."
2800
+ },
2801
+ "items": [
2802
+ {
2803
+ "kind": "security",
2804
+ "en": "The integrity inventory now covers the TypeScript loader, the CLI dispatcher and the remaining enforcement modules.",
2805
+ "vi": "Danh mục toàn vẹn nay bao gồm bộ nạp TypeScript, bộ điều phối CLI và các module thực thi chính sách còn lại."
2806
+ },
2807
+ {
2808
+ "kind": "improved",
2809
+ "en": "Integrity checks use a metadata cache instead of rehashing files on every tool call; build drift mid-session blocks until restart.",
2810
+ "vi": "Kiểm tra toàn vẹn dùng cache metadata thay vì băm lại file mỗi tool call; bản build đổi giữa session sẽ bị chặn tới khi khởi động lại."
2811
+ },
2812
+ {
2813
+ "kind": "security",
2814
+ "en": "Removed shell interpolation from the PDF tool availability check.",
2815
+ "vi": "Bỏ nội suy shell khỏi bước kiểm tra công cụ đọc PDF."
2816
+ },
2817
+ {
2818
+ "kind": "fixed",
2819
+ "en": "A hard-killed writer no longer leaves a state lock stuck; if recovery itself is killed, remove its `.recovery` lock.",
2820
+ "vi": "Tiến trình ghi bị tắt đột ngột không còn làm kẹt khoá trạng thái; nếu chính bước phục hồi bị tắt, hãy xoá khoá `.recovery`."
2821
+ }
2822
+ ],
2823
+ "requires": null
2824
+ },
2825
+ {
2826
+ "version": "1.3.0",
2827
+ "date": "2026-08-12",
2828
+ "status": "stable",
2829
+ "title": {
2830
+ "en": "First stable intelligence engine release",
2831
+ "vi": "Bản ổn định đầu tiên của intelligence engine"
2832
+ },
2833
+ "summary": {
2834
+ "en": "Promotes the ie.9 tree to stable with Pi 0.84.1 and unchanged runtime behaviour; stable installs come from npm `latest`.",
2835
+ "vi": "Đưa bản ie.9 lên ổn định với Pi 0.84.1, hành vi runtime giữ nguyên; bản ổn định cài từ npm `latest`."
2836
+ },
2837
+ "items": [
2838
+ {
2839
+ "kind": "new",
2840
+ "en": "First stable package with Pi 0.84.1, where every terminal command works from the installed package.",
2841
+ "vi": "Gói ổn định đầu tiên dùng Pi 0.84.1, mọi lệnh terminal chạy được từ gói đã cài."
2842
+ },
2843
+ {
2844
+ "kind": "improved",
2845
+ "en": "Stable installs use npm `latest` and the Git tag `v1.3.0`; the prerelease `next` channel is now historical.",
2846
+ "vi": "Bản ổn định cài qua npm `latest` và Git tag `v1.3.0`; kênh thử nghiệm `next` nay chỉ còn là lịch sử."
2847
+ },
2848
+ {
2849
+ "kind": "improved",
2850
+ "en": "Runtime behaviour is unchanged from ie.9, with conservative defaults: parent routing off, recovery on, one continuation.",
2851
+ "vi": "Hành vi runtime giữ nguyên như ie.9 với mặc định thận trọng: tắt định tuyến model, bật phục hồi, tối đa một lần tiếp tục."
2852
+ },
2853
+ {
2854
+ "kind": "improved",
2855
+ "en": "The 108-session Luna Medium run from ie.7 is kept as evidence and not relabelled as a v1.3.0 measurement.",
2856
+ "vi": "Lượt chạy 108 session Luna Medium của ie.7 được giữ làm bằng chứng, không gắn nhãn lại thành số đo của v1.3.0."
2857
+ }
2858
+ ],
2859
+ "requires": {
2860
+ "en": "Pi 0.84.1",
2861
+ "vi": "Pi 0.84.1"
2862
+ }
2863
+ },
2864
+ {
2865
+ "version": "1.3.0-ie.9",
2866
+ "date": "2026-08-12",
2867
+ "status": "prerelease",
2868
+ "title": {
2869
+ "en": "Installed-package runtime parity",
2870
+ "vi": "Lệnh từ gói đã cài chạy như bản gốc"
2871
+ },
2872
+ "summary": {
2873
+ "en": "Commands installed from npm can now load the TypeScript runtime, fixing the route and benchmark commands that failed in ie.8.",
2874
+ "vi": "Lệnh cài từ npm nay nạp được runtime TypeScript, sửa các lệnh route và benchmark từng lỗi ở ie.8."
2875
+ },
2876
+ "items": [
2877
+ {
2878
+ "kind": "fixed",
2879
+ "en": "In ie.8 the route and benchmark commands could not load TypeScript from `node_modules`; they now work.",
2880
+ "vi": "Ở ie.8 các lệnh route và benchmark không nạp được TypeScript từ `node_modules`; nay đã chạy được."
2881
+ },
2882
+ {
2883
+ "kind": "improved",
2884
+ "en": "The global benchmark helper uses the exact Pi package source installed by `piagent-install --stable`.",
2885
+ "vi": "Helper benchmark toàn máy dùng đúng nguồn gói Pi mà `piagent-install --stable` đã cài."
2886
+ },
2887
+ {
2888
+ "kind": "improved",
2889
+ "en": "A packed-and-installed test now checks that every global command prints its help.",
2890
+ "vi": "Test cài từ gói đã đóng nay kiểm tra mọi lệnh toàn máy đều in được phần trợ giúp."
2891
+ }
2892
+ ],
2893
+ "requires": null
2894
+ },
2895
+ {
2896
+ "version": "1.3.0-ie.8",
2897
+ "date": "2026-08-12",
2898
+ "status": "prerelease",
2899
+ "title": {
2900
+ "en": "Reproducible prerelease publishing",
2901
+ "vi": "Phát hành bản thử nghiệm ổn định, lặp lại được"
2902
+ },
2903
+ "summary": {
2904
+ "en": "Fixes the publish job that stopped ie.7 before publishing; the runtime is identical to ie.7.",
2905
+ "vi": "Sửa job phát hành đã dừng ie.7 trước khi publish; runtime giống hệt ie.7."
2906
+ },
2907
+ "items": [
2908
+ {
2909
+ "kind": "fixed",
2910
+ "en": "The tag-driven publish job now fetches the full tag history and installs the test prerequisites it needs.",
2911
+ "vi": "Job phát hành theo tag nay lấy đủ lịch sử tag và cài các phụ thuộc mà test cần."
2912
+ },
2913
+ {
2914
+ "kind": "improved",
2915
+ "en": "The runtime is unchanged from ie.7; this release corrects distribution only.",
2916
+ "vi": "Runtime giữ nguyên như ie.7; bản này chỉ sửa khâu phân phối."
2917
+ }
2918
+ ],
2919
+ "requires": null
2920
+ },
2921
+ {
2922
+ "version": "1.3.0-ie.7",
2923
+ "date": "2026-08-12",
2924
+ "status": "unpublished",
2925
+ "title": {
2926
+ "en": "Return-shape guidance before the first edit",
2927
+ "vi": "Gợi ý dạng giá trị trả về trước lần sửa đầu tiên"
2928
+ },
2929
+ "summary": {
2930
+ "en": "The first model turn now shows whether a public result returns names or objects, so edits keep the public API intact.",
2931
+ "vi": "Lượt model đầu tiên nay cho biết kết quả công khai trả về tên hay đối tượng, để bản sửa giữ nguyên API công khai."
2932
+ },
2933
+ "items": [
2934
+ {
2935
+ "kind": "improved",
2936
+ "en": "Detects whether helper results return names or objects, including graph traversals, and shows it before the first edit.",
2937
+ "vi": "Nhận ra kết quả helper trả về tên hay đối tượng, kể cả khi duyệt đồ thị, và báo trước lần sửa đầu tiên."
2938
+ },
2939
+ {
2940
+ "kind": "improved",
2941
+ "en": "No hard gate, extra continuation or benchmark change is added.",
2942
+ "vi": "Không thêm chốt chặn cứng, lần tiếp tục phụ hay thay đổi benchmark nào."
2943
+ }
2944
+ ],
2945
+ "requires": null
2946
+ },
2947
+ {
2948
+ "version": "1.3.0-ie.6",
2949
+ "date": "2026-08-12",
2950
+ "status": "prerelease",
2951
+ "title": {
2952
+ "en": "Benchmark stop aligned with the evaluator",
2953
+ "vi": "Điểm dừng benchmark khớp với bộ chấm"
2954
+ },
2955
+ "summary": {
2956
+ "en": "The paired benchmark stops only when a Piagent outcome falls below the floor; a miss by the baseline alone no longer ends coverage.",
2957
+ "vi": "Benchmark theo cặp chỉ dừng khi kết quả của Piagent dưới ngưỡng; baseline trượt một mình không còn làm dừng các bài sau."
2958
+ },
2959
+ "items": [
2960
+ {
2961
+ "kind": "improved",
2962
+ "en": "A Piagent outcome below the frozen floor stops the run after its pair; a baseline-only miss does not.",
2963
+ "vi": "Kết quả Piagent dưới ngưỡng cố định làm dừng lượt chạy sau cặp đó; baseline trượt một mình thì không."
2964
+ },
2965
+ {
2966
+ "kind": "improved",
2967
+ "en": "Helper timing under parallel load is observational; correctness, token reduction and privacy gate the release.",
2968
+ "vi": "Thời gian helper khi tải song song chỉ để quan sát; độ đúng, mức giảm token và quyền riêng tư mới quyết định phát hành."
2969
+ }
2970
+ ],
2971
+ "requires": null
2972
+ },
2973
+ {
2974
+ "version": "1.3.0-ie.5",
2975
+ "date": "2026-08-12",
2976
+ "status": "prerelease",
2977
+ "title": {
2978
+ "en": "Finite release benchmark and `next` publishing",
2979
+ "vi": "Benchmark phát hành có điểm dừng và kênh `next`"
2980
+ },
2981
+ "summary": {
2982
+ "en": "Benchmark runs stop after a below-floor pair, and prerelease packages publish to npm `next`, keeping `latest` for stable releases.",
2983
+ "vi": "Benchmark dừng sau cặp có kết quả dưới ngưỡng, và bản thử nghiệm phát hành lên npm `next`, giữ `latest` cho bản ổn định."
2984
+ },
2985
+ "items": [
2986
+ {
2987
+ "kind": "new",
2988
+ "en": "A release benchmark stops after the current pair once an outcome falls below the floor, starting no new paid session.",
2989
+ "vi": "Benchmark phát hành dừng sau cặp hiện tại khi kết quả dưới ngưỡng, không mở thêm session tốn phí."
2990
+ },
2991
+ {
2992
+ "kind": "improved",
2993
+ "en": "Prereleases publish to the npm `next` dist-tag; `latest` stays reserved for stable releases.",
2994
+ "vi": "Bản thử nghiệm phát hành lên dist-tag npm `next`; `latest` dành cho bản ổn định."
2995
+ }
2996
+ ],
2997
+ "requires": null
2998
+ },
2999
+ {
3000
+ "version": "1.3.0-ie.4",
3001
+ "date": "2026-08-11",
3002
+ "status": "prerelease",
3003
+ "title": {
3004
+ "en": "Matching CI prerequisites on Ubuntu and macOS",
3005
+ "vi": "Phụ thuộc CI giống nhau trên Ubuntu và macOS"
3006
+ },
3007
+ "summary": {
3008
+ "en": "CI installs the same search tool on Ubuntu and macOS and gives integration waits more room; no product gate was relaxed.",
3009
+ "vi": "CI cài cùng công cụ tìm kiếm trên Ubuntu và macOS, nới thời gian chờ của test tích hợp; không nới chốt kiểm tra sản phẩm nào."
3010
+ },
3011
+ "items": [
3012
+ {
3013
+ "kind": "improved",
3014
+ "en": "CI installs the same test prerequisite on Ubuntu and macOS, and integration test deadlines allow for filesystem load.",
3015
+ "vi": "CI cài cùng phụ thuộc test trên Ubuntu và macOS, và hạn chờ của test tích hợp tính tới tải hệ thống file."
3016
+ }
3017
+ ],
3018
+ "requires": null
3019
+ },
3020
+ {
3021
+ "version": "1.3.0-ie.3",
3022
+ "date": "2026-08-11",
3023
+ "status": "prerelease",
3024
+ "title": {
3025
+ "en": "Deterministic cross-platform helper gate",
3026
+ "vi": "Chốt kiểm tra helper ổn định trên mọi nền tảng"
3027
+ },
3028
+ "summary": {
3029
+ "en": "The release gate now depends on helper correctness and token reduction, not on timing that varied on Linux CI.",
3030
+ "vi": "Chốt phát hành nay dựa vào độ đúng của helper và mức giảm token, không dựa vào thời gian vốn dao động trên CI Linux."
3031
+ },
3032
+ "items": [
3033
+ {
3034
+ "kind": "improved",
3035
+ "en": "Helper timing stays as a metric, but the release gate checks retrieval correctness, token reduction and privacy.",
3036
+ "vi": "Thời gian helper vẫn được đo, nhưng chốt phát hành kiểm tra độ đúng khi truy xuất, mức giảm token và quyền riêng tư."
3037
+ }
3038
+ ],
3039
+ "requires": null
3040
+ },
3041
+ {
3042
+ "version": "1.3.0-ie.2",
3043
+ "date": "2026-08-11",
3044
+ "status": "prerelease",
3045
+ "title": {
3046
+ "en": "Pi 0.84.1 host pin",
3047
+ "vi": "Ghim Pi 0.84.1"
3048
+ },
3049
+ "summary": {
3050
+ "en": "Raises the Pi host pin to 0.84.1, which passes the dependency audit and replaces an expired advisory exception.",
3051
+ "vi": "Nâng bản Pi được ghim lên 0.84.1, bản này qua kiểm tra phụ thuộc và thay cho ngoại lệ cảnh báo đã hết hạn."
3052
+ },
3053
+ "items": [
3054
+ {
3055
+ "kind": "improved",
3056
+ "en": "Pi Coding Agent and Pi AI are pinned to 0.84.1, with host compatibility and package lifecycle checked again.",
3057
+ "vi": "Pi Coding Agent và Pi AI được ghim ở 0.84.1; tương thích host và vòng đời gói được kiểm tra lại."
3058
+ },
3059
+ {
3060
+ "kind": "security",
3061
+ "en": "The new host tree audits clean at moderate and above, so the expired 0.82.0 advisory exception is removed.",
3062
+ "vi": "Cây phụ thuộc host mới không còn cảnh báo từ mức moderate trở lên, nên ngoại lệ đã hết hạn của 0.82.0 được bỏ."
3063
+ }
3064
+ ],
3065
+ "requires": {
3066
+ "en": "Pi 0.84.1",
3067
+ "vi": "Pi 0.84.1"
3068
+ }
3069
+ },
3070
+ {
3071
+ "version": "1.3.0-ie.1",
3072
+ "date": "2026-08-11",
3073
+ "status": "prerelease",
3074
+ "title": {
3075
+ "en": "Intelligence engine candidate",
3076
+ "vi": "Bản ứng viên intelligence engine"
3077
+ },
3078
+ "summary": {
3079
+ "en": "Adds a Criterion Graph and bounded current-source context so Luna Medium can plan against your criteria without an extra model turn.",
3080
+ "vi": "Thêm Criterion Graph và context mã nguồn hiện tại có giới hạn để Luna Medium lập kế hoạch theo tiêu chí của bạn mà không tốn thêm lượt model."
3081
+ },
3082
+ "items": [
3083
+ {
3084
+ "kind": "new",
3085
+ "en": "A Criterion Graph and bounded current-source context let the model plan against your criteria without a repository index.",
3086
+ "vi": "Criterion Graph và context mã nguồn hiện tại có giới hạn giúp model lập kế hoạch theo tiêu chí của bạn mà không cần index repository."
3087
+ },
3088
+ {
3089
+ "kind": "improved",
3090
+ "en": "Advanced capabilities ship but stay off or advisory by default; verification and permissions are unchanged.",
3091
+ "vi": "Các khả năng nâng cao có sẵn nhưng mặc định tắt hoặc chỉ gợi ý; kiểm chứng và quyền hạn giữ nguyên."
3092
+ },
3093
+ {
3094
+ "kind": "improved",
3095
+ "en": "rc.1 and rc.2 remain historical evidence; the ie line uses its own prerelease identity.",
3096
+ "vi": "rc.1 và rc.2 được giữ làm bằng chứng lịch sử; dòng ie dùng định danh thử nghiệm riêng."
3097
+ }
3098
+ ],
3099
+ "requires": null
3100
+ },
3101
+ {
3102
+ "version": "1.3.0-rc.2",
3103
+ "date": "2026-08-11",
3104
+ "status": "prerelease",
3105
+ "title": {
3106
+ "en": "Criterion coverage before the first verifier",
3107
+ "vi": "Đối chiếu tiêu chí trước lần kiểm chứng đầu"
3108
+ },
3109
+ "summary": {
3110
+ "en": "Before the first verifier, the agent maps each criterion to implementation and tests, batches independent steps and reviews once.",
3111
+ "vi": "Trước lần kiểm chứng đầu tiên, agent đối chiếu từng tiêu chí với phần cài đặt và test, gộp các bước độc lập và review một lần."
3112
+ },
3113
+ "items": [
3114
+ {
3115
+ "kind": "improved",
3116
+ "en": "The agent maps every criterion to code and focused tests, batches independent steps and reviews once before verifying.",
3117
+ "vi": "Agent đối chiếu mọi tiêu chí với code và test liên quan, gộp các bước độc lập và review một lần trước khi kiểm chứng."
3118
+ },
3119
+ {
3120
+ "kind": "fixed",
3121
+ "en": "A test-only file is no longer shipped in the package, and valid empty JavaScript files pass the source check.",
3122
+ "vi": "File chỉ dùng cho test không còn nằm trong gói, và file JavaScript rỗng hợp lệ qua được bước kiểm tra mã nguồn."
3123
+ }
3124
+ ],
3125
+ "requires": null
3126
+ },
3127
+ {
3128
+ "version": "1.3.0-rc.1",
3129
+ "date": "2026-08-11",
3130
+ "status": "prerelease",
3131
+ "title": {
3132
+ "en": "Routing, inspector, recovery and helpers",
3133
+ "vi": "Định tuyến model, inspector, phục hồi và helper"
3134
+ },
3135
+ "summary": {
3136
+ "en": "Adds prelaunch model routing with `piagent-route`, a `/piagent-inspector` view, richer `/piagent-status`, bounded recovery and role-bound helpers.",
3137
+ "vi": "Thêm định tuyến model trước khi chạy bằng `piagent-route`, khung `/piagent-inspector`, `/piagent-status` chi tiết hơn, phục hồi có giới hạn và helper theo vai trò."
3138
+ },
3139
+ "items": [
3140
+ {
3141
+ "kind": "new",
3142
+ "en": "`piagent-route` picks a model by capability band before launch; it never switches models mid-conversation.",
3143
+ "vi": "`piagent-route` chọn model theo mức năng lực trước khi chạy; không bao giờ đổi model giữa cuộc trò chuyện."
3144
+ },
3145
+ {
3146
+ "kind": "new",
3147
+ "en": "`/piagent-inspector` adds a status line and views for diffs, tests, tool outcomes, warnings and context budget.",
3148
+ "vi": "`/piagent-inspector` thêm dòng trạng thái và các khung xem diff, test, kết quả tool, cảnh báo và ngân sách context."
3149
+ },
3150
+ {
3151
+ "kind": "improved",
3152
+ "en": "`/piagent-status` shows task, checkpoint, verifier, recovery, helper and resume evidence.",
3153
+ "vi": "`/piagent-status` hiện bằng chứng về task, checkpoint, kiểm chứng, phục hồi, helper và tiếp tục."
3154
+ },
3155
+ {
3156
+ "kind": "new",
3157
+ "en": "Failures are classified with at most one source repair or retry; `PIAGENT_AUTO_RECOVERY=off` keeps the old handoff.",
3158
+ "vi": "Lỗi được phân loại, tối đa một lần sửa mã nguồn hoặc thử lại; `PIAGENT_AUTO_RECOVERY=off` giữ cách bàn giao cũ."
3159
+ },
3160
+ {
3161
+ "kind": "new",
3162
+ "en": "Role-bound helpers with budgets and a single writer; `PIAGENT_HELPERS_MODE` defaults to `recommend`.",
3163
+ "vi": "Helper theo vai trò có ngân sách và chỉ một tiến trình ghi; `PIAGENT_HELPERS_MODE` mặc định là `recommend`."
3164
+ },
3165
+ {
3166
+ "kind": "fixed",
3167
+ "en": "Fixed long-prompt intake, scope resolution and verifier defaults; read-only tasks stay free of edits.",
3168
+ "vi": "Sửa cách nhận prompt dài, xác định phạm vi và verifier mặc định; task chỉ đọc vẫn không sửa gì."
3169
+ }
3170
+ ],
3171
+ "requires": null
3172
+ },
3173
+ {
3174
+ "version": "1.2.17",
3175
+ "date": "2026-08-03",
3176
+ "status": "stable",
3177
+ "title": {
3178
+ "en": "English documentation for every public page",
3179
+ "vi": "Tài liệu tiếng Anh cho mọi trang công khai"
3180
+ },
3181
+ "summary": {
3182
+ "en": "All 17 documentation pages now have an English version under `/en`, with VI/EN switching and Vietnamese URLs unchanged.",
3183
+ "vi": "Cả 17 trang tài liệu giờ có bản tiếng Anh dưới `/en`, chuyển qua lại VI/EN được và URL tiếng Việt giữ nguyên."
3184
+ },
3185
+ "items": [
3186
+ {
3187
+ "kind": "new",
3188
+ "en": "Added an English version of all 17 public documentation pages under `/en`.",
3189
+ "vi": "Thêm bản tiếng Anh cho cả 17 trang tài liệu công khai dưới `/en`."
3190
+ },
3191
+ {
3192
+ "kind": "new",
3193
+ "en": "Each page links to the same topic in the other language, with localized navigation.",
3194
+ "vi": "Mỗi trang dẫn sang cùng chủ đề ở ngôn ngữ còn lại, kèm điều hướng đã bản địa hóa."
3195
+ },
3196
+ {
3197
+ "kind": "fixed",
3198
+ "en": "On mobile the docs kept desktop sidebar columns; the layout is now a single column again.",
3199
+ "vi": "Trên mobile tài liệu vẫn giữ cột sidebar của desktop; giờ đã trở lại bố cục một cột."
3200
+ }
3201
+ ],
3202
+ "requires": null
3203
+ },
3204
+ {
3205
+ "version": "1.2.16",
3206
+ "date": "2026-08-03",
3207
+ "status": "stable",
3208
+ "title": {
3209
+ "en": "GPT-5.5 with high thinking becomes the default",
3210
+ "vi": "GPT-5.5 với thinking high thành mặc định"
3211
+ },
3212
+ "summary": {
3213
+ "en": "Setup, global install and the settings template now default to `openai-codex/gpt-5.5:high`; explicit `xhigh` still works.",
3214
+ "vi": "Setup, cài global và settings template giờ mặc định `openai-codex/gpt-5.5:high`; chọn `xhigh` tường minh vẫn được hỗ trợ."
3215
+ },
3216
+ "items": [
3217
+ {
3218
+ "kind": "improved",
3219
+ "en": "The default model is now `openai-codex/gpt-5.5:high` across setup, global install and model scope.",
3220
+ "vi": "Model mặc định giờ là `openai-codex/gpt-5.5:high` trong setup, cài global và model scope."
3221
+ },
3222
+ {
3223
+ "kind": "improved",
3224
+ "en": "A model without a thinking suffix now falls back to `high`; explicit `xhigh` selections are kept.",
3225
+ "vi": "Model không có hậu tố thinking giờ dùng `high`; lựa chọn `xhigh` tường minh được giữ nguyên."
3226
+ }
3227
+ ],
3228
+ "requires": null
3229
+ },
3230
+ {
3231
+ "version": "1.2.15",
3232
+ "date": "2026-08-03",
3233
+ "status": "stable",
3234
+ "title": {
3235
+ "en": "Stable updates work from local-path installs",
3236
+ "vi": "Cập nhật stable chạy được với bản cài từ đường dẫn local"
3237
+ },
3238
+ "summary": {
3239
+ "en": "Updating a machine whose Piagent was registered from a local path no longer fails when started outside the Pi agent directory.",
3240
+ "vi": "Cập nhật máy có Piagent đăng ký từ đường dẫn local không còn lỗi khi chạy ngoài thư mục agent của Pi."
3241
+ },
3242
+ "items": [
3243
+ {
3244
+ "kind": "fixed",
3245
+ "en": "Stable updates failed on machines with a local-path Piagent registration; the installer now removes it by absolute path.",
3246
+ "vi": "Cập nhật stable lỗi trên máy có Piagent đăng ký bằng đường dẫn local; installer giờ gỡ bản đó bằng đường dẫn tuyệt đối."
3247
+ }
3248
+ ],
3249
+ "requires": null
3250
+ },
3251
+ {
3252
+ "version": "1.2.14",
3253
+ "date": "2026-08-03",
3254
+ "status": "stable",
3255
+ "title": {
3256
+ "en": "Runtime split into modules and native `/name` restored",
3257
+ "vi": "Tách runtime thành module và trả lại `/name` gốc của Pi"
3258
+ },
3259
+ "summary": {
3260
+ "en": "The guard is split into focused, integrity-locked modules, and Piagent no longer hides Pi's own `/name` command.",
3261
+ "vi": "Guard được tách thành các module nhỏ có khóa toàn vẹn, và Piagent không còn che lệnh `/name` gốc của Pi."
3262
+ },
3263
+ "items": [
3264
+ {
3265
+ "kind": "fixed",
3266
+ "en": "Piagent registered its own `/name` and shadowed Pi's command; Pi's `/name` works again and `/setname` stays as an alias.",
3267
+ "vi": "Piagent từng đăng ký `/name` riêng và che lệnh của Pi; giờ `/name` của Pi hoạt động lại, `/setname` vẫn là alias."
3268
+ },
3269
+ {
3270
+ "kind": "improved",
3271
+ "en": "Session, input, context and task intake logic moved out of the guard into modules, with behavior unchanged.",
3272
+ "vi": "Logic session, input, context và task intake được tách khỏi guard thành module riêng, hành vi không đổi."
3273
+ },
3274
+ {
3275
+ "kind": "security",
3276
+ "en": "Capability integrity locks now pin every extracted runtime module.",
3277
+ "vi": "Capability integrity lock giờ ghim mọi module runtime đã tách."
3278
+ },
3279
+ {
3280
+ "kind": "fixed",
3281
+ "en": "Legacy task migration keeps long task ids unique and can no longer delete a newly written contract on macOS.",
3282
+ "vi": "Migration task cũ giữ id task dài không trùng và không còn xóa nhầm contract vừa ghi trên macOS."
3283
+ }
3284
+ ],
3285
+ "requires": null
3286
+ },
3287
+ {
3288
+ "version": "1.2.13",
3289
+ "date": "2026-08-03",
3290
+ "status": "stable",
3291
+ "title": {
3292
+ "en": "Dedicated benchmark page",
3293
+ "vi": "Trang benchmark riêng"
3294
+ },
3295
+ "summary": {
3296
+ "en": "A static benchmark page shows the verified production-v1 scores, token usage and paired comparison with simple charts.",
3297
+ "vi": "Một trang benchmark tĩnh hiển thị điểm production-v1 đã xác minh, mức dùng token và so sánh theo cặp bằng biểu đồ đơn giản."
3298
+ },
3299
+ "items": [
3300
+ {
3301
+ "kind": "new",
3302
+ "en": "Published a benchmark page with production-v1 scores, median usage, paired token comparison and confidence interval.",
3303
+ "vi": "Xuất bản trang benchmark với điểm production-v1, mức dùng trung vị, so sánh token theo cặp và khoảng tin cậy."
3304
+ },
3305
+ {
3306
+ "kind": "improved",
3307
+ "en": "Charts are plain CSS with no charting library or data fetch, and read well on desktop and mobile.",
3308
+ "vi": "Biểu đồ chỉ dùng CSS, không thư viện chart hay tải dữ liệu, đọc tốt trên desktop và mobile."
3309
+ },
3310
+ {
3311
+ "kind": "improved",
3312
+ "en": "The claim is scoped to the controlled public suite, not presented as a universal result.",
3313
+ "vi": "Kết luận được giới hạn trong bộ benchmark công khai có kiểm soát, không trình bày như kết quả phổ quát."
3314
+ }
3315
+ ],
3316
+ "requires": null
3317
+ },
3318
+ {
3319
+ "version": "1.2.12",
3320
+ "date": "2026-08-03",
3321
+ "status": "stable",
3322
+ "title": {
3323
+ "en": "Production benchmark with 108 sessions",
3324
+ "vi": "Benchmark production với 108 session"
3325
+ },
3326
+ "summary": {
3327
+ "en": "A 108-session benchmark across 18 scenario families measured Piagent at 9.92 overall and about 51% fewer fresh tokens than `codex-cli`.",
3328
+ "vi": "Benchmark 108 session trên 18 nhóm kịch bản cho Piagent 9.92 điểm tổng và ít hơn khoảng 51% fresh token so với `codex-cli`."
3329
+ },
3330
+ "items": [
3331
+ {
3332
+ "kind": "new",
3333
+ "en": "Added `production-v1`: 108 sessions over 18 scenario families, three task sizes, five profiles and hidden oracles.",
3334
+ "vi": "Thêm `production-v1`: 108 session trên 18 nhóm kịch bản, ba cỡ task, năm profile và oracle ẩn."
3335
+ },
3336
+ {
3337
+ "kind": "new",
3338
+ "en": "Added a controlled comparison against `codex-cli` on the same model and thinking, isolated per session.",
3339
+ "vi": "Thêm so sánh có kiểm soát với `codex-cli` trên cùng model và thinking, cô lập theo từng session."
3340
+ },
3341
+ {
3342
+ "kind": "improved",
3343
+ "en": "Piagent scored 9.92 overall with a paired fresh-token estimate 51.11% lower (95% ratio 0.3809 to 0.6276).",
3344
+ "vi": "Piagent đạt 9.92 điểm tổng, fresh token ước tính thấp hơn 51.11% theo cặp (tỉ lệ 95%: 0.3809 đến 0.6276)."
3345
+ },
3346
+ {
3347
+ "kind": "improved",
3348
+ "en": "Recovery guidance now lists only verifier commands still missing passing evidence, each as a separate shell call.",
3349
+ "vi": "Hướng dẫn recovery giờ chỉ liệt kê lệnh verify còn thiếu bằng chứng pass, mỗi lệnh là một shell call riêng."
3350
+ }
3351
+ ],
3352
+ "requires": null
3353
+ },
3354
+ {
3355
+ "version": "1.2.11",
3356
+ "date": "2026-08-02",
3357
+ "status": "stable",
3358
+ "title": {
3359
+ "en": "Task harness v2: one session per task, evidence-gated completion",
3360
+ "vi": "Task harness v2: mỗi task một session, hoàn thành cần bằng chứng"
3361
+ },
3362
+ "summary": {
3363
+ "en": "Tasks bind to one Pi session, completion requires passing verify evidence, and routine tasks start with no management round trips.",
3364
+ "vi": "Task gắn với một session Pi, hoàn thành cần bằng chứng verify pass, và task thường bắt đầu không cần lượt quản lý nào."
3365
+ },
3366
+ "items": [
3367
+ {
3368
+ "kind": "new",
3369
+ "en": "Each task is bound to one Pi session; a retry starts a fresh session and inherits prior failure evidence.",
3370
+ "vi": "Mỗi task gắn với một session Pi; lần thử lại mở session mới và kế thừa bằng chứng lỗi trước đó."
3371
+ },
3372
+ {
3373
+ "kind": "new",
3374
+ "en": "Completion requires every verify command to pass after task start, and changed files are checked against Git and scope.",
3375
+ "vi": "Hoàn thành yêu cầu mọi lệnh verify pass sau khi task bắt đầu, và file thay đổi được đối chiếu với Git và scope."
3376
+ },
3377
+ {
3378
+ "kind": "improved",
3379
+ "en": "Runtime creates bounded task contracts before the first model turn, so routine tasks need no setup tool calls.",
3380
+ "vi": "Runtime tạo task contract có giới hạn trước lượt model đầu tiên, nên task thường không cần tool call khởi tạo."
3381
+ },
3382
+ {
3383
+ "kind": "new",
3384
+ "en": "Added `piagent-benchmark`, a one-command paired comparison of raw Pi, Piagent or `codex-cli` with private reports.",
3385
+ "vi": "Thêm `piagent-benchmark`, so sánh theo cặp Pi gốc, Piagent hoặc `codex-cli` bằng một lệnh, báo cáo giữ riêng tư."
3386
+ },
3387
+ {
3388
+ "kind": "improved",
3389
+ "en": "One automatic follow-up runs when an agent stops with missing evidence; set `PIAGENT_AUTO_RECOVERY=off` to disable.",
3390
+ "vi": "Một lượt tiếp tục tự động chạy khi agent dừng mà thiếu bằng chứng; đặt `PIAGENT_AUTO_RECOVERY=off` để tắt."
3391
+ },
3392
+ {
3393
+ "kind": "fixed",
3394
+ "en": "`piagent-update` could install a second copy under another npm prefix; it now stays in the prefix that owns the command.",
3395
+ "vi": "`piagent-update` có thể cài bản thứ hai vào npm prefix khác; giờ luôn giữ trong prefix sở hữu lệnh đang chạy."
3396
+ }
3397
+ ],
3398
+ "requires": null
3399
+ },
3400
+ {
3401
+ "version": "1.2.10",
3402
+ "date": "2026-07-31",
3403
+ "status": "stable",
3404
+ "title": {
3405
+ "en": "Context index hardening and read-only reviewer",
3406
+ "vi": "Gia cố context index và reviewer chỉ đọc"
3407
+ },
3408
+ "summary": {
3409
+ "en": "The context index is owner-only and purges deleted source, image auto-attach is scoped, and `piagent-reviewer` is now truly read-only.",
3410
+ "vi": "Context index chỉ chủ sở hữu đọc được và xóa sạch source đã xóa, auto-attach ảnh có giới hạn, `piagent-reviewer` giờ chỉ đọc thật."
3411
+ },
3412
+ "items": [
3413
+ {
3414
+ "kind": "security",
3415
+ "en": "Context index files are owner-only and securely delete removed source; older indexes migrate once to purge leftovers.",
3416
+ "vi": "File context index chỉ chủ sở hữu truy cập và xóa an toàn source đã gỡ; index cũ tự migrate một lần để dọn phần còn sót."
3417
+ },
3418
+ {
3419
+ "kind": "security",
3420
+ "en": "Images named in chat are auto-attached only from allowed, non-protected project paths and must be real images.",
3421
+ "vi": "Ảnh nhắc trong chat chỉ được auto-attach từ đường dẫn project được phép, không protected, và phải là ảnh thật."
3422
+ },
3423
+ {
3424
+ "kind": "security",
3425
+ "en": "`piagent-reviewer` now has only read tools; autofix moves to `piagent-worker`.",
3426
+ "vi": "`piagent-reviewer` giờ chỉ có tool đọc; autofix chuyển sang `piagent-worker`."
3427
+ },
3428
+ {
3429
+ "kind": "security",
3430
+ "en": "MCP approval and `piagent-mcp doctor` now detect `directTools` set on individual servers.",
3431
+ "vi": "MCP approval và `piagent-mcp doctor` giờ nhận ra `directTools` đặt trên từng server."
3432
+ }
3433
+ ],
3434
+ "requires": null
3435
+ },
3436
+ {
3437
+ "version": "1.2.9",
3438
+ "date": "2026-07-31",
3439
+ "status": "stable",
3440
+ "title": {
3441
+ "en": "Context Engine follows the same policy as the guard",
3442
+ "vi": "Context Engine dùng chung policy với guard"
3443
+ },
3444
+ "summary": {
3445
+ "en": "Context search and packs now use the guard's exclusion rules, so protected content never reaches the model through old indexes.",
3446
+ "vi": "Context search và pack giờ dùng luật loại trừ của guard, nên nội dung protected không lọt vào model qua index cũ."
3447
+ },
3448
+ "items": [
3449
+ {
3450
+ "kind": "security",
3451
+ "en": "Context Engine and runtime share one policy for protected, read-only and excluded paths.",
3452
+ "vi": "Context Engine và runtime dùng chung một policy cho đường dẫn protected, read-only và bị loại trừ."
3453
+ },
3454
+ {
3455
+ "kind": "security",
3456
+ "en": "Indexes built under weaker rules are rebuilt automatically and filtered again at read time.",
3457
+ "vi": "Index dựng bằng luật yếu hơn được tự động dựng lại và lọc lại khi đọc."
3458
+ },
3459
+ {
3460
+ "kind": "security",
3461
+ "en": "Symlinks and paths leading outside the project are refused when building and reading the index.",
3462
+ "vi": "Symlink và đường dẫn đi ra ngoài project bị từ chối khi dựng và đọc index."
3463
+ },
3464
+ {
3465
+ "kind": "fixed",
3466
+ "en": "`piagent-update --dry-run --project` showed a stack trace when the project migrator was missing; it now says so directly.",
3467
+ "vi": "`piagent-update --dry-run --project` hiện stack trace khi thiếu project migrator; giờ báo thẳng lỗi đó."
3468
+ }
3469
+ ],
3470
+ "requires": null
3471
+ },
3472
+ {
3473
+ "version": "1.2.8",
3474
+ "date": "2026-07-31",
3475
+ "status": "stable",
3476
+ "title": {
3477
+ "en": "Web research for researcher subagents by default",
3478
+ "vi": "Researcher subagent có web research mặc định"
3479
+ },
3480
+ "summary": {
3481
+ "en": "Setup and update now install the web access add-on so researcher subagents can search and fetch external sources.",
3482
+ "vi": "Setup và update giờ cài add-on web access để researcher subagent tìm kiếm và tải nguồn bên ngoài."
3483
+ },
3484
+ "items": [
3485
+ {
3486
+ "kind": "new",
3487
+ "en": "Global setup and update install `pi-web-access@0.17.0` by default; opt out with `--no-web-access`.",
3488
+ "vi": "Setup và update global cài `pi-web-access@0.17.0` mặc định; bỏ qua bằng `--no-web-access`."
3489
+ },
3490
+ {
3491
+ "kind": "fixed",
3492
+ "en": "Older web access registrations kept stale dependencies; install now removes them before installing the reviewed version.",
3493
+ "vi": "Bản đăng ký web access cũ giữ dependency lỗi thời; cài đặt giờ gỡ chúng trước khi cài bản đã review."
3494
+ }
3495
+ ],
3496
+ "requires": null
3497
+ },
3498
+ {
3499
+ "version": "1.2.7",
3500
+ "date": "2026-07-31",
3501
+ "status": "stable",
3502
+ "title": {
3503
+ "en": "Patched MCP and subagent add-ons",
3504
+ "vi": "Vá add-on MCP và subagent"
3505
+ },
3506
+ "summary": {
3507
+ "en": "The pinned MCP and subagent add-ons move to versions whose dependency tree reports no advisories, and the audit gate is stricter.",
3508
+ "vi": "Add-on MCP và subagent được ghim lên bản có cây dependency không còn cảnh báo, và cổng audit chặt hơn."
3509
+ },
3510
+ "items": [
3511
+ {
3512
+ "kind": "security",
3513
+ "en": "Updated to `pi-mcp-adapter@2.15.0` and `pi-subagents@0.38.0`, which resolve patched dependencies.",
3514
+ "vi": "Cập nhật lên `pi-mcp-adapter@2.15.0` và `pi-subagents@0.38.0`, dùng các dependency đã vá."
3515
+ },
3516
+ {
3517
+ "kind": "security",
3518
+ "en": "The release gate now also blocks moderate advisories; one documented dependency advisory in the Pi host remains accepted.",
3519
+ "vi": "Cổng release giờ chặn cả cảnh báo mức moderate; một cảnh báo dependency đã ghi rõ trong Pi host vẫn được chấp nhận."
3520
+ },
3521
+ {
3522
+ "kind": "fixed",
3523
+ "en": "Updates could keep a vulnerable transitive version; old add-on registrations are now removed before reinstalling.",
3524
+ "vi": "Cập nhật có thể giữ phiên bản dependency có lỗ hổng; bản đăng ký add-on cũ giờ được gỡ trước khi cài lại."
3525
+ },
3526
+ {
3527
+ "kind": "improved",
3528
+ "en": "An existing `pi-subagents` install is upgraded during a normal platform update.",
3529
+ "vi": "Bản `pi-subagents` đã cài được nâng cấp trong lần update platform thông thường."
3530
+ }
3531
+ ],
3532
+ "requires": null
3533
+ },
3534
+ {
3535
+ "version": "1.2.6",
3536
+ "date": "2026-07-31",
3537
+ "status": "stable",
3538
+ "title": {
3539
+ "en": "Context Engine v2 and task-shaped tool loading",
3540
+ "vi": "Context Engine v2 và nạp tool theo dạng task"
3541
+ },
3542
+ "summary": {
3543
+ "en": "A local code index builds bounded context packs, and Piagent exposes only the tools a task needs while guards stay active.",
3544
+ "vi": "Index code local tạo context pack có giới hạn, và Piagent chỉ hiện tool task cần trong khi guard vẫn hoạt động."
3545
+ },
3546
+ "items": [
3547
+ {
3548
+ "kind": "new",
3549
+ "en": "Added Context Engine v2: a local incremental code index with budgeted context packs and the `piagent-context` command.",
3550
+ "vi": "Thêm Context Engine v2: index code local cập nhật dần, context pack có ngân sách và lệnh `piagent-context`."
3551
+ },
3552
+ {
3553
+ "kind": "improved",
3554
+ "en": "Tools load by task shape: tiny tasks see 11 of 30 Piagent tools, ordinary tasks 15; guards apply regardless.",
3555
+ "vi": "Tool nạp theo dạng task: task nhỏ thấy 11/30 tool Piagent, task thường 15; guard vẫn áp dụng đầy đủ."
3556
+ },
3557
+ {
3558
+ "kind": "new",
3559
+ "en": "Added Agent Watch compatible context telemetry by session, without storing raw prompts or tool output.",
3560
+ "vi": "Thêm telemetry context tương thích Agent Watch theo session, không lưu prompt hay tool output thô."
3561
+ },
3562
+ {
3563
+ "kind": "fixed",
3564
+ "en": "A local checkout and the released package could load together; install now removes older local registrations.",
3565
+ "vi": "Bản checkout local và package phát hành có thể nạp cùng lúc; cài đặt giờ gỡ đăng ký local cũ."
3566
+ }
3567
+ ],
3568
+ "requires": null
3569
+ },
3570
+ {
3571
+ "version": "1.2.5",
3572
+ "date": "2026-07-30",
3573
+ "status": "stable",
3574
+ "title": {
3575
+ "en": "`piagent-update` works with npm 12",
3576
+ "vi": "`piagent-update` chạy được với npm 12"
3577
+ },
3578
+ "summary": {
3579
+ "en": "The updater now reads npm 12's registry output when resolving the target version and its Pi host.",
3580
+ "vi": "Updater giờ đọc được output registry của npm 12 khi xác định phiên bản đích và Pi host."
3581
+ },
3582
+ "items": [
3583
+ {
3584
+ "kind": "fixed",
3585
+ "en": "`piagent-update` failed to read npm 12 version metadata; it now accepts it and still refuses ambiguous results.",
3586
+ "vi": "`piagent-update` không đọc được metadata phiên bản của npm 12; giờ đã đọc được và vẫn từ chối kết quả mơ hồ."
3587
+ }
3588
+ ],
3589
+ "requires": null
3590
+ },
3591
+ {
3592
+ "version": "1.2.4",
3593
+ "date": "2026-07-30",
3594
+ "status": "stable",
3595
+ "title": {
3596
+ "en": "Smoother team rollout for `piagent-update`",
3597
+ "vi": "Triển khai `piagent-update` cho team mượt hơn"
3598
+ },
3599
+ "summary": {
3600
+ "en": "Updates fall back to a user-writable npm prefix, and `--project` adds an optional migration and doctor check.",
3601
+ "vi": "Update tự chuyển sang npm prefix người dùng ghi được, và `--project` thêm bước migration và doctor tùy chọn."
3602
+ },
3603
+ "items": [
3604
+ {
3605
+ "kind": "fixed",
3606
+ "en": "Updates failed with permission errors when the npm prefix was OS-locked; they now use a user-writable prefix.",
3607
+ "vi": "Update lỗi quyền khi npm prefix bị hệ điều hành khóa; giờ dùng prefix người dùng ghi được."
3608
+ },
3609
+ {
3610
+ "kind": "improved",
3611
+ "en": "Optional `--project <path>` runs a legacy project migration and doctor after the global update.",
3612
+ "vi": "Tùy chọn `--project <path>` chạy migration project cũ và doctor sau khi update global."
3613
+ },
3614
+ {
3615
+ "kind": "improved",
3616
+ "en": "Documented an `npm exec` bootstrap command for machines without the global `piagent-update` helper.",
3617
+ "vi": "Ghi tài liệu lệnh bootstrap `npm exec` cho máy chưa có helper `piagent-update` global."
3618
+ }
3619
+ ],
3620
+ "requires": null
3621
+ },
3622
+ {
3623
+ "version": "1.2.3",
3624
+ "date": "2026-07-30",
3625
+ "status": "stable",
3626
+ "title": {
3627
+ "en": "Short runtime commands",
3628
+ "vi": "Lệnh runtime ngắn gọn"
3629
+ },
3630
+ "summary": {
3631
+ "en": "Short commands such as `/usage`, `/context` and `/permission` were added, and workflows moved under `/workflow` and `/fresh`.",
3632
+ "vi": "Thêm lệnh ngắn như `/usage`, `/context`, `/permission`, và workflow gom về `/workflow` và `/fresh`."
3633
+ },
3634
+ "items": [
3635
+ {
3636
+ "kind": "new",
3637
+ "en": "Added `/commands`, `/usage`, `/context`, `/permission`, `/memory`, `/onboard`, `/name` and `/fresh`.",
3638
+ "vi": "Thêm `/commands`, `/usage`, `/context`, `/permission`, `/memory`, `/onboard`, `/name` và `/fresh`."
3639
+ },
3640
+ {
3641
+ "kind": "improved",
3642
+ "en": "Workflow launchers are grouped under `/workflow`, and `/piagent-workflow` still routes there.",
3643
+ "vi": "Các lệnh mở workflow gom về `/workflow`, và `/piagent-workflow` vẫn chuyển về đó."
3644
+ },
3645
+ {
3646
+ "kind": "improved",
3647
+ "en": "Docs now separate Pi native commands such as `/model` and `/resume` from Piagent commands.",
3648
+ "vi": "Tài liệu giờ tách lệnh gốc của Pi như `/model`, `/resume` khỏi lệnh của Piagent."
3649
+ }
3650
+ ],
3651
+ "requires": null
3652
+ },
3653
+ {
3654
+ "version": "1.2.2",
3655
+ "date": "2026-07-29",
3656
+ "status": "stable",
3657
+ "title": {
3658
+ "en": "Compact output for large tool results",
3659
+ "vi": "Gọn output cho tool result lớn"
3660
+ },
3661
+ "summary": {
3662
+ "en": "Oversized tool output shows a bounded preview and is saved locally, and `/setname` renames an open session.",
3663
+ "vi": "Tool output quá lớn chỉ hiện bản xem trước có giới hạn và được lưu local, `/setname` đổi tên session đang mở."
3664
+ },
3665
+ "items": [
3666
+ {
3667
+ "kind": "new",
3668
+ "en": "Large tool results show a bounded preview and are saved under `.pi/piagent-state/tool-results/`.",
3669
+ "vi": "Tool result lớn hiện bản xem trước có giới hạn và được lưu dưới `.pi/piagent-state/tool-results/`."
3670
+ },
3671
+ {
3672
+ "kind": "new",
3673
+ "en": "Added `/piagent-logs` to see recent oversized output captures without calling the model.",
3674
+ "vi": "Thêm `/piagent-logs` để xem output lớn gần đây mà không gọi model."
3675
+ },
3676
+ {
3677
+ "kind": "new",
3678
+ "en": "Added `/setname` to rename an open session for resume lists, Agent Watch and reports.",
3679
+ "vi": "Thêm `/setname` để đổi tên session đang mở cho danh sách resume, Agent Watch và báo cáo."
3680
+ },
3681
+ {
3682
+ "kind": "improved",
3683
+ "en": "`/piagent-usage` and `/task-preflight` now print short status lines.",
3684
+ "vi": "`/piagent-usage` và `/task-preflight` giờ in dòng trạng thái ngắn."
3685
+ }
3686
+ ],
3687
+ "requires": null
3688
+ },
3689
+ {
3690
+ "version": "1.2.1",
3691
+ "date": "2026-07-28",
3692
+ "status": "stable",
3693
+ "title": {
3694
+ "en": "MCP approval gate and shell guard fixes",
3695
+ "vi": "Sửa MCP approval gate và shell guard"
3696
+ },
3697
+ "summary": {
3698
+ "en": "The MCP approval gate now covers direct tools and imported servers, and the shell guard reads commands the way the shell expands them.",
3699
+ "vi": "MCP approval gate giờ bao phủ direct tool và server import, shell guard đọc lệnh theo đúng cách shell mở rộng."
3700
+ },
3701
+ "items": [
3702
+ {
3703
+ "kind": "security",
3704
+ "en": "MCP approval never applied to direct MCP tools; every server is now gated whatever tool naming mode it uses.",
3705
+ "vi": "MCP approval chưa từng áp dụng cho direct tool MCP; giờ mọi server đều qua gate dù đặt tên tool kiểu nào."
3706
+ },
3707
+ {
3708
+ "kind": "security",
3709
+ "en": "Servers pulled in through a repository's `imports` setting are now listed and require approval.",
3710
+ "vi": "Server được kéo vào qua thiết lập `imports` của repository giờ được liệt kê và cần approval."
3711
+ },
3712
+ {
3713
+ "kind": "security",
3714
+ "en": "The shell guard now resolves braces, quoting, `printf` and substitutions before checking protected paths and deletes.",
3715
+ "vi": "Shell guard giờ xử lý brace, quoting, `printf` và substitution trước khi kiểm tra protected path và lệnh xóa."
3716
+ },
3717
+ {
3718
+ "kind": "fixed",
3719
+ "en": "`piagent-mcp doctor` and `list` reported no servers while every tool call was blocked; they now name the cause and exit 1.",
3720
+ "vi": "`piagent-mcp doctor` và `list` báo không có server trong khi mọi tool call bị chặn; giờ nêu nguyên nhân và thoát mã 1."
3721
+ },
3722
+ {
3723
+ "kind": "security",
3724
+ "en": "`piagent-mcp add` refuses credentials in server URLs, and `list` and `get` mask them.",
3725
+ "vi": "`piagent-mcp add` từ chối credential trong URL server, `list` và `get` che chúng đi."
3726
+ },
3727
+ {
3728
+ "kind": "fixed",
3729
+ "en": "A failed `piagent-capability vendor` could delete files outside the project or leave none; it now changes nothing on failure.",
3730
+ "vi": "`piagent-capability vendor` lỗi có thể xóa file ngoài project hoặc để trống; giờ không thay đổi gì khi lỗi."
3731
+ }
3732
+ ],
3733
+ "requires": null
3734
+ },
3735
+ {
3736
+ "version": "1.2.0",
3737
+ "date": "2026-07-28",
3738
+ "status": "stable",
3739
+ "title": {
3740
+ "en": "MCP server management with repository approval",
3741
+ "vi": "Quản lý MCP server và approval cho repository"
3742
+ },
3743
+ "summary": {
3744
+ "en": "`piagent-mcp` now manages servers, and servers defined by a repository need local approval before use.",
3745
+ "vi": "`piagent-mcp` giờ quản lý server, và server do repository định nghĩa cần approval trên máy trước khi dùng."
3746
+ },
3747
+ "items": [
3748
+ {
3749
+ "kind": "new",
3750
+ "en": "`piagent-mcp` gains `add`, `remove`, `get`, `list`, `enable`, `disable` and `doctor` across config layers.",
3751
+ "vi": "`piagent-mcp` có thêm `add`, `remove`, `get`, `list`, `enable`, `disable` và `doctor` trên các lớp config."
3752
+ },
3753
+ {
3754
+ "kind": "security",
3755
+ "en": "Servers defined in a repository need `piagent-mcp approve` on this machine; changing their command resets approval.",
3756
+ "vi": "Server định nghĩa trong repository cần `piagent-mcp approve` trên máy này; đổi lệnh chạy sẽ reset approval."
3757
+ },
3758
+ {
3759
+ "kind": "new",
3760
+ "en": "`/piagent-mcp` opens an in-session menu for status, approval and diagnostics without a model turn.",
3761
+ "vi": "`/piagent-mcp` mở menu trong session cho trạng thái, approval và chẩn đoán mà không tốn lượt model."
3762
+ },
3763
+ {
3764
+ "kind": "security",
3765
+ "en": "`piagent-mcp add` refuses to write credentials into MCP config and shows the reference form to use.",
3766
+ "vi": "`piagent-mcp add` từ chối ghi credential vào config MCP và chỉ dạng tham chiếu biến cần dùng."
3767
+ },
3768
+ {
3769
+ "kind": "improved",
3770
+ "en": "The docs site is split into one page per topic, with four pages for MCP.",
3771
+ "vi": "Trang tài liệu được tách thành mỗi chủ đề một trang, MCP có bốn trang riêng."
3772
+ }
3773
+ ],
3774
+ "requires": null
3775
+ },
3776
+ {
3777
+ "version": "1.1.9",
3778
+ "date": "2026-07-28",
3779
+ "status": "stable",
3780
+ "title": {
3781
+ "en": "Update notice reaches ordinary installs",
3782
+ "vi": "Thông báo cập nhật đến được bản cài thông thường"
3783
+ },
3784
+ "summary": {
3785
+ "en": "The update notice from 1.1.8 was hidden on installs cloned by Pi; it now appears for every non-development install.",
3786
+ "vi": "Thông báo cập nhật từ 1.1.8 bị ẩn với bản cài do Pi clone; giờ hiện cho mọi bản cài không phải bản phát triển."
3787
+ },
3788
+ "items": [
3789
+ {
3790
+ "kind": "fixed",
3791
+ "en": "Installs from Git were mistaken for working copies and got no update notice; they now see it.",
3792
+ "vi": "Bản cài từ Git bị nhầm là bản làm việc nên không có thông báo cập nhật; giờ đã hiện."
3793
+ }
3794
+ ],
3795
+ "requires": null
3796
+ },
3797
+ {
3798
+ "version": "1.1.8",
3799
+ "date": "2026-07-28",
3800
+ "status": "stable",
3801
+ "title": {
3802
+ "en": "Pi tells you when a release is available",
3803
+ "vi": "Pi báo khi có bản phát hành mới"
3804
+ },
3805
+ "summary": {
3806
+ "en": "The session-start line now shows when a newer Piagent is out and names `piagent-update` as the command to run.",
3807
+ "vi": "Dòng mở session giờ báo khi có Piagent mới và chỉ lệnh `piagent-update` cần chạy."
3808
+ },
3809
+ "items": [
3810
+ {
3811
+ "kind": "new",
3812
+ "en": "The session-start line shows an update notice naming `piagent-update` when a new release exists.",
3813
+ "vi": "Dòng mở session hiện thông báo cập nhật kèm lệnh `piagent-update` khi có bản mới."
3814
+ },
3815
+ {
3816
+ "kind": "improved",
3817
+ "en": "The check reads a cache refreshed in the background at most daily, so sessions do not wait on it.",
3818
+ "vi": "Việc kiểm tra đọc cache được làm mới ngầm tối đa mỗi ngày, nên session không phải chờ."
3819
+ }
3820
+ ],
3821
+ "requires": null
3822
+ },
3823
+ {
3824
+ "version": "1.1.7",
3825
+ "date": "2026-07-28",
3826
+ "status": "stable",
3827
+ "title": {
3828
+ "en": "Projects keep working after a platform update",
3829
+ "vi": "Project vẫn chạy sau khi update platform"
3830
+ },
3831
+ "summary": {
3832
+ "en": "Capability locks behind the installed platform are re-pinned instead of blocking the session, and policy fixes reach every project.",
3833
+ "vi": "Capability lock cũ hơn platform đã cài được ghim lại thay vì chặn session, và bản sửa policy đến được mọi project."
3834
+ },
3835
+ "items": [
3836
+ {
3837
+ "kind": "fixed",
3838
+ "en": "Projects with capability packs stopped working after each release until reapplied; the lock is now re-pinned automatically.",
3839
+ "vi": "Project dùng capability pack ngừng chạy sau mỗi bản phát hành cho đến khi áp lại; giờ lock được ghim lại tự động."
3840
+ },
3841
+ {
3842
+ "kind": "improved",
3843
+ "en": "Policy, prompt and skill content now follows the installed platform, so corrections reach existing projects.",
3844
+ "vi": "Nội dung policy, prompt và skill giờ theo platform đã cài, nên bản sửa đến được project hiện có."
3845
+ },
3846
+ {
3847
+ "kind": "new",
3848
+ "en": "A project profile can `extends` an adapter instead of copying its policy.",
3849
+ "vi": "Project profile có thể `extends` một adapter thay vì sao chép policy của nó."
3850
+ }
3851
+ ],
3852
+ "requires": null
3853
+ },
3854
+ {
3855
+ "version": "1.1.6",
3856
+ "date": "2026-07-27",
3857
+ "status": "stable",
3858
+ "title": {
3859
+ "en": "Monorepo detection and scoping fixes",
3860
+ "vi": "Sửa nhận diện và giới hạn phạm vi monorepo"
3861
+ },
3862
+ "summary": {
3863
+ "en": "Profiles now detect and scope frontend and backend packages correctly in monorepos and workspaces.",
3864
+ "vi": "Profile giờ nhận diện và giới hạn đúng package frontend và backend trong monorepo và workspace."
3865
+ },
3866
+ "items": [
3867
+ {
3868
+ "kind": "fixed",
3869
+ "en": "`be-readonly-fe` left nested backends writable in monorepos; they are now read-only.",
3870
+ "vi": "`be-readonly-fe` để backend lồng trong monorepo vẫn ghi được; giờ đã chỉ đọc."
3871
+ },
3872
+ {
3873
+ "kind": "fixed",
3874
+ "en": "Frontend verify ran nothing and reported success when the frontend sat elsewhere; it now finds the right package.",
3875
+ "vi": "Verify frontend không chạy gì mà vẫn báo thành công khi frontend nằm chỗ khác; giờ tìm đúng package."
3876
+ },
3877
+ {
3878
+ "kind": "fixed",
3879
+ "en": "Packages declared in `workspaces` or `pnpm-workspace.yaml` were ignored; detection now reads them.",
3880
+ "vi": "Package khai báo trong `workspaces` hoặc `pnpm-workspace.yaml` bị bỏ qua; nhận diện giờ đọc chúng."
3881
+ }
3882
+ ],
3883
+ "requires": null
3884
+ },
3885
+ {
3886
+ "version": "1.1.5",
3887
+ "date": "2026-07-27",
3888
+ "status": "stable",
3889
+ "title": {
3890
+ "en": "One-command update with `piagent-update`",
3891
+ "vi": "Cập nhật bằng một lệnh `piagent-update`"
3892
+ },
3893
+ "summary": {
3894
+ "en": "`piagent-update` moves the Pi host, helper and Pi package to the next release in the correct order.",
3895
+ "vi": "`piagent-update` đưa Pi host, helper và Pi package lên bản mới theo đúng thứ tự."
3896
+ },
3897
+ "items": [
3898
+ {
3899
+ "kind": "new",
3900
+ "en": "Added `piagent-update`, which updates the Pi host, terminal helper and Pi package in order.",
3901
+ "vi": "Thêm `piagent-update`, cập nhật Pi host, terminal helper và Pi package theo thứ tự."
3902
+ },
3903
+ {
3904
+ "kind": "new",
3905
+ "en": "`--check` and `--dry-run` show exactly what a real run would install, resolved before anything changes.",
3906
+ "vi": "`--check` và `--dry-run` cho thấy chính xác những gì sẽ cài, được xác định trước khi thay đổi gì."
3907
+ }
3908
+ ],
3909
+ "requires": null
3910
+ },
3911
+ {
3912
+ "version": "1.1.4",
3913
+ "date": "2026-07-27",
3914
+ "status": "stable",
3915
+ "title": {
3916
+ "en": "Redaction of credentials in command options",
3917
+ "vi": "Che credential trong option dòng lệnh"
3918
+ },
3919
+ "summary": {
3920
+ "en": "Credentials passed as command-line options or `Authorization` headers are now redacted reliably.",
3921
+ "vi": "Credential truyền qua option dòng lệnh hoặc header `Authorization` giờ được che ổn định."
3922
+ },
3923
+ "items": [
3924
+ {
3925
+ "kind": "security",
3926
+ "en": "Options such as `--token`, `--password` and `--api-key` were not redacted; their values are now hidden.",
3927
+ "vi": "Option như `--token`, `--password`, `--api-key` chưa được che; giờ giá trị của chúng đã được ẩn."
3928
+ },
3929
+ {
3930
+ "kind": "security",
3931
+ "en": "`Authorization` header values are redacted wherever they appear in the arguments.",
3932
+ "vi": "Giá trị header `Authorization` được che ở bất kỳ vị trí nào trong tham số."
3933
+ }
3934
+ ],
3935
+ "requires": null
3936
+ },
3937
+ {
3938
+ "version": "1.1.3",
3939
+ "date": "2026-07-27",
3940
+ "status": "stable",
3941
+ "title": {
3942
+ "en": "Fixes for issues found reviewing 1.1.2",
3943
+ "vi": "Sửa lỗi phát hiện khi review 1.1.2"
3944
+ },
3945
+ "summary": {
3946
+ "en": "Short secrets are redacted, verify evidence identifies commands exactly again, and document reads no longer hang on pipes.",
3947
+ "vi": "Secret ngắn được che, bằng chứng verify lại nhận đúng lệnh, và đọc tài liệu không còn treo khi gặp pipe."
3948
+ },
3949
+ "items": [
3950
+ {
3951
+ "kind": "security",
3952
+ "en": "Short secret values such as `TOKEN=hunter2` were stored in clear text; they are now redacted.",
3953
+ "vi": "Giá trị secret ngắn như `TOKEN=hunter2` bị lưu dạng rõ; giờ đã được che."
3954
+ },
3955
+ {
3956
+ "kind": "fixed",
3957
+ "en": "Verify evidence gave commands with different secrets the same identity; each command is identified exactly again.",
3958
+ "vi": "Bằng chứng verify coi các lệnh chứa secret khác nhau là một; giờ mỗi lệnh lại được nhận diện chính xác."
3959
+ },
3960
+ {
3961
+ "kind": "fixed",
3962
+ "en": "Reading a document replaced by a named pipe hung; it is now refused.",
3963
+ "vi": "Đọc tài liệu bị thay bằng named pipe làm treo; giờ bị từ chối."
3964
+ },
3965
+ {
3966
+ "kind": "fixed",
3967
+ "en": "`piagent-install` showed `node: command not found` without Node.js; it now reports the missing runtime clearly.",
3968
+ "vi": "`piagent-install` báo `node: command not found` khi thiếu Node.js; giờ báo rõ thiếu runtime."
3969
+ }
3970
+ ],
3971
+ "requires": null
3972
+ },
3973
+ {
3974
+ "version": "1.1.2",
3975
+ "date": "2026-07-26",
3976
+ "status": "stable",
3977
+ "title": {
3978
+ "en": "Security and release gating fixes",
3979
+ "vi": "Sửa bảo mật và cổng phát hành"
3980
+ },
3981
+ "summary": {
3982
+ "en": "Document reads close a file-swap race, evidence no longer hashes unredacted commands, and publishing waits for all checks.",
3983
+ "vi": "Đọc tài liệu đóng lỗ hổng tráo file, bằng chứng không còn băm lệnh chưa che, và phát hành chờ mọi check."
3984
+ },
3985
+ "items": [
3986
+ {
3987
+ "kind": "security",
3988
+ "en": "`piagent_document_read` could read a file swapped in after its checks; it now reads the file it checked.",
3989
+ "vi": "`piagent_document_read` có thể đọc file bị tráo sau khi kiểm tra; giờ đọc đúng file đã kiểm tra."
3990
+ },
3991
+ {
3992
+ "kind": "security",
3993
+ "en": "The evidence ledger no longer stores a hash that could confirm guesses at a redacted secret.",
3994
+ "vi": "Evidence ledger không còn lưu hash có thể xác nhận phỏng đoán secret đã che."
3995
+ },
3996
+ {
3997
+ "kind": "fixed",
3998
+ "en": "An unknown `--mcp-preset` failed only after a partial install; it is now rejected before anything is installed.",
3999
+ "vi": "`--mcp-preset` sai chỉ báo lỗi sau khi đã cài dở; giờ bị từ chối trước khi cài gì."
4000
+ },
4001
+ {
4002
+ "kind": "improved",
4003
+ "en": "Publishing now waits for the full verification matrix to pass.",
4004
+ "vi": "Phát hành giờ chờ toàn bộ ma trận kiểm tra pass."
4005
+ }
4006
+ ],
4007
+ "requires": null
4008
+ },
4009
+ {
4010
+ "version": "1.1.1",
4011
+ "date": "2026-07-26",
4012
+ "status": "stable",
4013
+ "title": {
4014
+ "en": "Fixes for issues found reviewing 1.1.0",
4015
+ "vi": "Sửa lỗi phát hiện khi review 1.1.0"
4016
+ },
4017
+ "summary": {
4018
+ "en": "`piagent-setup --no-mcp` skips MCP again, the site check no longer hangs or passes falsely, and binary documents are refused.",
4019
+ "vi": "`piagent-setup --no-mcp` lại bỏ qua MCP, site check không còn treo hay pass sai, và tài liệu nhị phân bị từ chối."
4020
+ },
4021
+ "items": [
4022
+ {
4023
+ "kind": "fixed",
4024
+ "en": "`piagent-setup --no-mcp` still installed MCP; it installs none again.",
4025
+ "vi": "`piagent-setup --no-mcp` vẫn cài MCP; giờ lại không cài."
4026
+ },
4027
+ {
4028
+ "kind": "fixed",
4029
+ "en": "`npm run site:check` could hang on large responses or pass with unchecked addresses; both are fixed.",
4030
+ "vi": "`npm run site:check` có thể treo với response lớn hoặc pass dù còn địa chỉ chưa kiểm; cả hai đã được sửa."
4031
+ },
4032
+ {
4033
+ "kind": "fixed",
4034
+ "en": "`piagent_document_read` decoded binary bytes into garbled text; it now refuses invalid text.",
4035
+ "vi": "`piagent_document_read` giải mã byte nhị phân thành chữ lỗi; giờ từ chối nội dung không phải văn bản hợp lệ."
4036
+ }
4037
+ ],
4038
+ "requires": null
4039
+ },
4040
+ {
4041
+ "version": "1.1.0",
4042
+ "date": "2026-07-26",
4043
+ "status": "stable",
4044
+ "title": {
4045
+ "en": "Read documents from outside the project",
4046
+ "vi": "Đọc tài liệu nằm ngoài project"
4047
+ },
4048
+ "summary": {
4049
+ "en": "The agent can read a downloaded document outside the repository, and both install commands now install MCP by default.",
4050
+ "vi": "Agent đọc được tài liệu tải về nằm ngoài repository, và cả hai lệnh cài đặt giờ đều cài MCP mặc định."
4051
+ },
4052
+ "items": [
4053
+ {
4054
+ "kind": "new",
4055
+ "en": "Added `piagent_document_read` to read a document from a granted directory outside the project, including `.docx`.",
4056
+ "vi": "Thêm `piagent_document_read` để đọc tài liệu từ thư mục được cấp quyền ngoài project, kể cả `.docx`."
4057
+ },
4058
+ {
4059
+ "kind": "improved",
4060
+ "en": "`piagent-install` now installs the MCP baseline by default like `piagent-setup`; both accept `--no-mcp`.",
4061
+ "vi": "`piagent-install` giờ cài MCP baseline mặc định như `piagent-setup`; cả hai nhận `--no-mcp`."
4062
+ },
4063
+ {
4064
+ "kind": "improved",
4065
+ "en": "The pinned Pi host moves from 0.81.1 to 0.82.0.",
4066
+ "vi": "Pi host được ghim nâng từ 0.81.1 lên 0.82.0."
4067
+ },
4068
+ {
4069
+ "kind": "fixed",
4070
+ "en": "Advisory tool-registry warnings were computed but never shown; they are now displayed.",
4071
+ "vi": "Cảnh báo tool-registry ở chế độ advisory được tính nhưng không hiện; giờ đã hiển thị."
4072
+ }
4073
+ ],
4074
+ "requires": {
4075
+ "en": "Pi 0.82.0",
4076
+ "vi": "Pi 0.82.0"
4077
+ }
4078
+ },
4079
+ {
4080
+ "version": "1.0.2",
4081
+ "date": "2026-07-25",
4082
+ "status": "stable",
4083
+ "title": {
4084
+ "en": "Two-command install and `piagent-uninstall`",
4085
+ "vi": "Cài bằng hai lệnh và `piagent-uninstall`"
4086
+ },
4087
+ "summary": {
4088
+ "en": "Install is now `npm install -g @piagent/platform` plus `piagent-setup`, and `piagent-uninstall` removes the package cleanly.",
4089
+ "vi": "Cài đặt giờ là `npm install -g @piagent/platform` cùng `piagent-setup`, và `piagent-uninstall` gỡ package gọn gàng."
4090
+ },
4091
+ "items": [
4092
+ {
4093
+ "kind": "new",
4094
+ "en": "Added `piagent-uninstall`, which reports by default and only removes the package with `--apply`.",
4095
+ "vi": "Thêm `piagent-uninstall`, mặc định chỉ báo cáo và chỉ gỡ package khi có `--apply`."
4096
+ },
4097
+ {
4098
+ "kind": "fixed",
4099
+ "en": "`piagent-setup` wrote a local install path into project settings; it now writes the npm package version.",
4100
+ "vi": "`piagent-setup` ghi đường dẫn cài local vào settings của project; giờ ghi phiên bản npm package."
4101
+ },
4102
+ {
4103
+ "kind": "improved",
4104
+ "en": "Docs now lead with `npm install -g @piagent/platform` followed by `piagent-setup`.",
4105
+ "vi": "Tài liệu giờ hướng dẫn trước `npm install -g @piagent/platform` rồi `piagent-setup`."
4106
+ }
4107
+ ],
4108
+ "requires": null
4109
+ },
4110
+ {
4111
+ "version": "1.0.1",
4112
+ "date": "2026-07-25",
4113
+ "status": "stable",
4114
+ "title": {
4115
+ "en": "Install from the npm registry",
4116
+ "vi": "Cài từ npm registry"
4117
+ },
4118
+ "summary": {
4119
+ "en": "Documentation now installs the terminal helper from npm instead of the Git source.",
4120
+ "vi": "Tài liệu giờ cài terminal helper từ npm thay vì từ nguồn Git."
4121
+ },
4122
+ "items": [
4123
+ {
4124
+ "kind": "improved",
4125
+ "en": "Install, update and rollback docs use `npm install -g --ignore-scripts @piagent/platform@1.0.1`.",
4126
+ "vi": "Tài liệu cài đặt, cập nhật và rollback dùng `npm install -g --ignore-scripts @piagent/platform@1.0.1`."
4127
+ },
4128
+ {
4129
+ "kind": "new",
4130
+ "en": "Added an `npm` release channel.",
4131
+ "vi": "Thêm kênh phát hành `npm`."
4132
+ }
4133
+ ],
4134
+ "requires": null
4135
+ },
4136
+ {
4137
+ "version": "1.0.0",
4138
+ "date": "2026-07-25",
4139
+ "status": "stable",
4140
+ "title": {
4141
+ "en": "Piagent 1.0: new namespace and stable API",
4142
+ "vi": "Piagent 1.0: namespace mới và API ổn định"
4143
+ },
4144
+ "summary": {
4145
+ "en": "The `company` namespace becomes `piagent` with no alias, `apiVersion` is stable, and one command migrates existing projects.",
4146
+ "vi": "Namespace `company` đổi thành `piagent` không có alias, `apiVersion` ổn định, và một lệnh migrate project hiện có."
4147
+ },
4148
+ "items": [
4149
+ {
4150
+ "kind": "breaking",
4151
+ "en": "Tools, commands, package and files are renamed from `company` to `piagent`; run `piagent-migrate` on existing projects.",
4152
+ "vi": "Tool, lệnh, package và file đổi tên từ `company` sang `piagent`; chạy `piagent-migrate` cho project hiện có."
4153
+ },
4154
+ {
4155
+ "kind": "breaking",
4156
+ "en": "Manifest `apiVersion` moves from `piagent/v1alpha1` to the stable `piagent/v1`.",
4157
+ "vi": "`apiVersion` của manifest chuyển từ `piagent/v1alpha1` sang `piagent/v1` ổn định."
4158
+ },
4159
+ {
4160
+ "kind": "new",
4161
+ "en": "Projects can use capability packs from other sources, fetched for review with `piagent-capabilities vendor`.",
4162
+ "vi": "Project dùng được capability pack từ nguồn khác, tải về để review bằng `piagent-capabilities vendor`."
4163
+ },
4164
+ {
4165
+ "kind": "new",
4166
+ "en": "Added `piagent-import-instructions` to import instruction files written for other agents into `AGENTS.md`.",
4167
+ "vi": "Thêm `piagent-import-instructions` để nhập file hướng dẫn viết cho agent khác vào `AGENTS.md`."
4168
+ },
4169
+ {
4170
+ "kind": "improved",
4171
+ "en": "The package is now published on npm as `@piagent/platform` with provenance.",
4172
+ "vi": "Package giờ được phát hành trên npm với tên `@piagent/platform`, kèm provenance."
4173
+ }
4174
+ ],
4175
+ "requires": null
4176
+ },
4177
+ {
4178
+ "version": "0.4.8",
4179
+ "date": "2026-07-22",
4180
+ "status": "stable",
4181
+ "title": {
4182
+ "en": "Release channels, trusted profiles and stricter guards",
4183
+ "vi": "Kênh phát hành, profile tin cậy và guard chặt hơn"
4184
+ },
4185
+ "summary": {
4186
+ "en": "Install channels and rollback are documented, project profiles load only in trusted projects, and external writes need confirmation.",
4187
+ "vi": "Kênh cài đặt và rollback được ghi rõ, project profile chỉ nạp khi project được tin cậy, và thao tác ghi ra ngoài cần xác nhận."
4188
+ },
4189
+ "items": [
4190
+ {
4191
+ "kind": "new",
4192
+ "en": "Added stable, exact, dev and local install channels with dry-run preview, plus rollback docs.",
4193
+ "vi": "Thêm kênh cài stable, exact, dev và local có xem trước dry-run, kèm tài liệu rollback."
4194
+ },
4195
+ {
4196
+ "kind": "security",
4197
+ "en": "Project profiles are ignored until the project is trusted, and applying a profile needs confirmation.",
4198
+ "vi": "Project profile bị bỏ qua cho đến khi project được tin cậy, và áp profile cần xác nhận."
4199
+ },
4200
+ {
4201
+ "kind": "security",
4202
+ "en": "External provider writes and unknown MCP actions now require human confirmation, even in full access.",
4203
+ "vi": "Thao tác ghi ra provider bên ngoài và action MCP chưa biết giờ cần người xác nhận, kể cả ở full access."
4204
+ },
4205
+ {
4206
+ "kind": "improved",
4207
+ "en": "Requires Node.js 22.19.0 or newer and Pi 0.81.1; setup installs the exact Pi host.",
4208
+ "vi": "Yêu cầu Node.js 22.19.0 trở lên và Pi 0.81.1; setup cài đúng phiên bản Pi host."
4209
+ }
4210
+ ],
4211
+ "requires": {
4212
+ "en": "Pi 0.81.1, Node.js 22.19.0",
4213
+ "vi": "Pi 0.81.1, Node.js 22.19.0"
4214
+ }
4215
+ },
4216
+ {
4217
+ "version": "0.4.7",
4218
+ "date": "2026-07-22",
4219
+ "status": "stable",
4220
+ "title": {
4221
+ "en": "Guarded `/commit` and `/pr` workflows",
4222
+ "vi": "Workflow `/commit` và `/pr` có bảo vệ"
4223
+ },
4224
+ "summary": {
4225
+ "en": "New `/commit` and `/pr` workflows review changes before staging and ask before any push, and broad staging needs confirmation.",
4226
+ "vi": "Workflow `/commit` và `/pr` mới review thay đổi trước khi stage và hỏi trước mọi push, stage hàng loạt cần xác nhận."
4227
+ },
4228
+ "items": [
4229
+ {
4230
+ "kind": "new",
4231
+ "en": "Added `/commit`, which stages only reviewed files, runs checks and never pushes.",
4232
+ "vi": "Thêm `/commit`, chỉ stage file đã review, chạy check và không bao giờ push."
4233
+ },
4234
+ {
4235
+ "kind": "new",
4236
+ "en": "Added `/pr`, which requires a clean branch and confirmation before `git push` or GitHub writes.",
4237
+ "vi": "Thêm `/pr`, yêu cầu branch sạch và xác nhận trước `git push` hoặc thao tác ghi GitHub."
4238
+ },
4239
+ {
4240
+ "kind": "security",
4241
+ "en": "Broad staging such as `git add .` or `git add -A` now asks for confirmation.",
4242
+ "vi": "Stage hàng loạt như `git add .` hay `git add -A` giờ cần xác nhận."
4243
+ }
4244
+ ],
4245
+ "requires": null
4246
+ },
4247
+ {
4248
+ "version": "0.4.6",
4249
+ "date": "2026-07-22",
4250
+ "status": "stable",
4251
+ "title": {
4252
+ "en": "Documentation site",
4253
+ "vi": "Trang tài liệu"
4254
+ },
4255
+ "summary": {
4256
+ "en": "A static HTML documentation site was added, with shorter command docs for daily use.",
4257
+ "vi": "Thêm trang tài liệu HTML tĩnh, với tài liệu lệnh ngắn gọn hơn cho dùng hằng ngày."
4258
+ },
4259
+ "items": [
4260
+ {
4261
+ "kind": "new",
4262
+ "en": "Added a static HTML documentation site under `docs-site/`.",
4263
+ "vi": "Thêm trang tài liệu HTML tĩnh dưới `docs-site/`."
4264
+ },
4265
+ {
4266
+ "kind": "improved",
4267
+ "en": "Command documentation is shorter for lower-token daily use.",
4268
+ "vi": "Tài liệu lệnh ngắn hơn để dùng hằng ngày tốn ít token."
4269
+ },
4270
+ {
4271
+ "kind": "improved",
4272
+ "en": "Global install and pinned project setup are documented separately.",
4273
+ "vi": "Cài global và setup project ghim phiên bản được ghi tài liệu riêng."
4274
+ }
4275
+ ],
4276
+ "requires": null
4277
+ },
4278
+ {
4279
+ "version": "0.4.5",
4280
+ "date": "2026-07-22",
4281
+ "status": "stable",
4282
+ "title": {
4283
+ "en": "Direct `/profile` commands",
4284
+ "vi": "Lệnh `/profile` áp dụng trực tiếp"
4285
+ },
4286
+ "summary": {
4287
+ "en": "Profile commands apply immediately without a model follow-up, and routine status output is compact.",
4288
+ "vi": "Lệnh profile áp dụng ngay không cần lượt model, và output trạng thái thường ngày gọn hơn."
4289
+ },
4290
+ "items": [
4291
+ {
4292
+ "kind": "new",
4293
+ "en": "Added `/profile`, `/profile list`, `/profile <profile>` and `/profile auto`, applied without a model turn.",
4294
+ "vi": "Thêm `/profile`, `/profile list`, `/profile <profile>` và `/profile auto`, áp dụng không cần lượt model."
4295
+ },
4296
+ {
4297
+ "kind": "new",
4298
+ "en": "Added short profile aliases such as `fe`, `be` and `full`.",
4299
+ "vi": "Thêm alias profile ngắn như `fe`, `be` và `full`."
4300
+ },
4301
+ {
4302
+ "kind": "improved",
4303
+ "en": "`/company-status` and `/company-memory` now return short local summaries.",
4304
+ "vi": "`/company-status` và `/company-memory` giờ trả về tóm tắt local ngắn."
4305
+ }
4306
+ ],
4307
+ "requires": null
4308
+ },
4309
+ {
4310
+ "version": "0.4.4",
4311
+ "date": "2026-07-21",
4312
+ "status": "stable",
4313
+ "title": {
4314
+ "en": "Session permission commands",
4315
+ "vi": "Lệnh quyền theo session"
4316
+ },
4317
+ "summary": {
4318
+ "en": "Slash commands switch the session between read-only, workspace-write and full access, with a clear precedence order.",
4319
+ "vi": "Slash command chuyển session giữa read-only, workspace-write và full access, theo thứ tự ưu tiên rõ ràng."
4320
+ },
4321
+ "items": [
4322
+ {
4323
+ "kind": "new",
4324
+ "en": "Added `/permission-status`, `/read-only`, `/workspace-write`, `/full-access` and `/full-access <task>`.",
4325
+ "vi": "Thêm `/permission-status`, `/read-only`, `/workspace-write`, `/full-access` và `/full-access <task>`."
4326
+ },
4327
+ {
4328
+ "kind": "improved",
4329
+ "en": "Permission order is explicit: launch override, then session command, then project profile, then default.",
4330
+ "vi": "Thứ tự quyền được nêu rõ: override khi khởi chạy, rồi lệnh session, rồi project profile, rồi mặc định."
4331
+ },
4332
+ {
4333
+ "kind": "security",
4334
+ "en": "Full access still keeps protected paths, secret redaction and destructive or external confirmations.",
4335
+ "vi": "Full access vẫn giữ protected path, che secret và xác nhận thao tác phá hủy hoặc ra ngoài."
4336
+ }
4337
+ ],
4338
+ "requires": null
4339
+ },
4340
+ {
4341
+ "version": "0.4.3",
4342
+ "date": "2026-07-21",
4343
+ "status": "stable",
4344
+ "title": {
4345
+ "en": "Runtime permission profiles",
4346
+ "vi": "Permission profile ở runtime"
4347
+ },
4348
+ "summary": {
4349
+ "en": "Three permission profiles were added: read-only, workspace-write and trusted-full-access.",
4350
+ "vi": "Thêm ba permission profile: read-only, workspace-write và trusted-full-access."
4351
+ },
4352
+ "items": [
4353
+ {
4354
+ "kind": "new",
4355
+ "en": "Added `read-only`, `workspace-write` and `trusted-full-access` permission profiles.",
4356
+ "vi": "Thêm các permission profile `read-only`, `workspace-write` và `trusted-full-access`."
4357
+ },
4358
+ {
4359
+ "kind": "new",
4360
+ "en": "Added `PI_COMPANY_PERMISSION_PROFILE` for a one-run override; invalid values fail closed.",
4361
+ "vi": "Thêm `PI_COMPANY_PERMISSION_PROFILE` để override cho một lần chạy; giá trị sai sẽ bị chặn."
4362
+ }
4363
+ ],
4364
+ "requires": null
4365
+ },
4366
+ {
4367
+ "version": "0.4.2",
4368
+ "date": "2026-07-21",
4369
+ "status": "stable",
4370
+ "title": {
4371
+ "en": "Better secret redaction with a benchmark",
4372
+ "vi": "Che secret tốt hơn, có benchmark"
4373
+ },
4374
+ "summary": {
4375
+ "en": "Redaction covers more credential shapes and nested data, measured by a new benchmark and release gate.",
4376
+ "vi": "Việc che secret bao phủ thêm dạng credential và dữ liệu lồng nhau, đo bằng benchmark và cổng phát hành mới."
4377
+ },
4378
+ "items": [
4379
+ {
4380
+ "kind": "improved",
4381
+ "en": "Redaction now catches more credential shapes and secrets inside nested structured data.",
4382
+ "vi": "Che secret giờ bắt được thêm dạng credential và secret trong dữ liệu có cấu trúc lồng nhau."
4383
+ },
4384
+ {
4385
+ "kind": "new",
4386
+ "en": "Added a redaction benchmark: 52/52 secrets detected with 0/30 false positives on benign text.",
4387
+ "vi": "Thêm benchmark che secret: phát hiện 52/52 secret, 0/30 nhận nhầm trên văn bản vô hại."
4388
+ }
4389
+ ],
4390
+ "requires": null
4391
+ },
4392
+ {
4393
+ "version": "0.4.1",
4394
+ "date": "2026-07-21",
4395
+ "status": "stable",
4396
+ "title": {
4397
+ "en": "Stronger shell protection for secrets",
4398
+ "vi": "Bảo vệ secret trong shell chặt hơn"
4399
+ },
4400
+ "summary": {
4401
+ "en": "The shell guard blocks more ways of reaching protected files, and bash output is redacted before the model sees it.",
4402
+ "vi": "Shell guard chặn thêm cách chạm vào file protected, và output bash được che trước khi đến model."
4403
+ },
4404
+ "items": [
4405
+ {
4406
+ "kind": "security",
4407
+ "en": "Globs, aliases, symlinks and redirections such as `cat<.env` can no longer reach protected files.",
4408
+ "vi": "Glob, alias, symlink và redirection như `cat<.env` không còn chạm được vào file protected."
4409
+ },
4410
+ {
4411
+ "kind": "security",
4412
+ "en": "Sensitive bash output is redacted before tool results reach the model.",
4413
+ "vi": "Output bash nhạy cảm được che trước khi tool result đến model."
4414
+ }
4415
+ ],
4416
+ "requires": null
4417
+ },
4418
+ {
4419
+ "version": "0.4.0",
4420
+ "date": "2026-07-21",
4421
+ "status": "stable",
4422
+ "title": {
4423
+ "en": "Governed capability packs with integrity lock",
4424
+ "vi": "Capability pack có quản trị và khóa toàn vẹn"
4425
+ },
4426
+ "summary": {
4427
+ "en": "Capability packs are resolved per profile into `.pi/company-profile.lock.json`, and tampering with the lock fails closed.",
4428
+ "vi": "Capability pack được giải theo profile vào `.pi/company-profile.lock.json`, và lock bị sửa trái phép sẽ bị chặn."
4429
+ },
4430
+ "items": [
4431
+ {
4432
+ "kind": "new",
4433
+ "en": "Added governed capability packs resolved per profile into `.pi/company-profile.lock.json`.",
4434
+ "vi": "Thêm capability pack có quản trị, giải theo profile vào `.pi/company-profile.lock.json`."
4435
+ },
4436
+ {
4437
+ "kind": "security",
4438
+ "en": "The lock checks package source, artifact digests and capability scope, and tampering fails closed.",
4439
+ "vi": "Lock kiểm tra nguồn package, digest artifact và capability scope; bị sửa trái phép sẽ bị chặn."
4440
+ },
4441
+ {
4442
+ "kind": "security",
4443
+ "en": "`.pi/settings.json` and the lock file are protected, and capability scope can only narrow access.",
4444
+ "vi": "`.pi/settings.json` và file lock được bảo vệ, capability scope chỉ có thể thu hẹp quyền truy cập."
4445
+ }
4446
+ ],
4447
+ "requires": null
4448
+ }
4449
+ ]