Skip to content

Commit c8e4ff8

Browse files
committed
chore(release): prepare 0.59.0
Bump version 0.58.0 -> 0.59.0 across pyproject.toml, uv.lock, README, docs, and installer references. Consume Unreleased into a new 0.59.0 (2026-07-17) CHANGELOG section (deterministic reviewer Git scopes, safe streamed tool-call correlation, explicit provider compatibility and Z.AI routing, and supervised terminal-batch tool execution) and sync into docs/en/release-notes/changelog.md. Add 0.59.0 entry to docs/en/release-notes/breaking-changes.md (no breaking changes).
1 parent 21fc085 commit c8e4ff8

8 files changed

Lines changed: 49 additions & 37 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ GitHub Releases page; `0.8.0` is the new starting line.
1515

1616
## Unreleased
1717

18+
## 0.59.0 (2026-07-17)
19+
1820
- **Reviewer subagents now receive deterministic Git scopes.** Structured automatic,
1921
uncommitted, base, and commit targets resolve to full commit anchors before dispatch, reject
2022
invalid or empty scopes explicitly, and keep repository metadata isolated from instructions
@@ -23,6 +25,8 @@ GitHub Releases page; `0.8.0` is the new starting line.
2325
- **Provider compatibility and Z.AI routing are now explicit.** Immutable compatibility profiles keep request-format quirks behind the chat-provider boundary, while independent Z.AI Coding Plan and API login routes use separate credentials, endpoints, model identities, catalog refresh, logout, and usage/rate-limit state. Curated GLM requests now apply exact context/output limits, thinking controls, reasoning replay, and tool-stream support without activating for local or unknown models.
2426
- **Tool execution is now supervised as a terminal batch.** A private execution engine preserves the Toolset registry and legacy per-call API while centralizing ordered results, deduplication, callbacks, and batch summaries; cancellation is bounded, late work stays owned, and new batches fail closed until timed-out cleanup drains.
2527

28+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.59.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
29+
2630
## 0.58.0 (2026-07-11)
2731

2832
- **Agent-spec loading is more defensive and truthful.** Subagent `path`, `extend`, and

README.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr
5050
5151
---
5252

53-
## 🆕 What's New in 0.58.0
53+
## 🆕 What's New in 0.59.0
5454

55-
- **Agent core deepened with an observable request-assembly path.** Provider handoff, prompt ordering, and context persistence now run through explicit compatibility contracts, conversation history updates are transactional (atomic replacement with cancellation and rollback), and agent/skill definitions resolve through one source-aware catalogue instead of scattered lookups.
56-
- **Agent-spec loading is more defensive and truthful.** Subagent `path`, `extend`, and `system_prompt_path` references that resolve outside their spec's directory are now rejected instead of loaded, and malformed frontmatter parsing errors are no longer misreported as harmless skips.
57-
- **Thinking and subagent activity render cleanly in the terminal.** Live reasoning previews render complete Markdown without exposing stray HTML comments, and activity-tree rows stay visually stable during long-running turns.
55+
- **Explicit Z.AI compatibility routes.** Independent Z.AI Coding Plan and API login routes now use separate credentials, endpoints, model identities, catalog refresh, logout, and usage/rate-limit state, with immutable compatibility profiles keeping request-format quirks behind the chat-provider boundary.
56+
- **Streamed tool calls are correlated safely.** Interleaved argument chunks stay attached to their indexed calls, malformed or truncated call streams stop before tool execution, and failed attempts are not retried after output has already been shown.
57+
- **Deterministic reviewer scopes and supervised tool batches.** Reviewer subagents receive fully resolved Git commit anchors with invalid or empty scopes rejected explicitly, and tool execution runs through a supervised batch engine with ordered results, bounded cancellation, and fail-closed new batches until cleanup drains.
5858

59-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.58.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
59+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.59.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
6060

6161

6262
---
@@ -162,7 +162,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
162162

163163
| Platform | Recommended install | Artifact source |
164164
|---|---|---|
165-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.58.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
165+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.59.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
166166
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> / <img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux">** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
167167
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
168168
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -190,7 +190,7 @@ pythinker # start the interactive TUI
190190

191191
### 🪟 Windows — native installer
192192

193-
`PythinkerSetup-0.58.0.exe` is an Inno Setup wizard. Release builds are signed
193+
`PythinkerSetup-0.59.0.exe` is an Inno Setup wizard. Release builds are signed
194194
when Authenticode secrets are configured in CI; otherwise the installer ships
195195
unsigned. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers
196196
`pythinker` on your user PATH (`HKCU\Environment`), broadcasts
@@ -202,13 +202,13 @@ irm https://pythinker.com/install.ps1 | iex
202202
203203
# Or manually download the installer + checksum from the Releases page,
204204
# verify with Get-FileHash, then run:
205-
.\PythinkerSetup-0.58.0.exe
205+
.\PythinkerSetup-0.59.0.exe
206206
207207
# Open a fresh PowerShell
208208
pythinker --version
209209
```
210210

211-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.58.0.exe /ALLUSERS`
211+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.59.0.exe /ALLUSERS`
212212
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
213213

214214
**Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -266,26 +266,26 @@ attached to every GitHub Release.
266266

267267
```sh
268268
# Debian / Ubuntu (x86_64)
269-
sudo dpkg -i pythinker-code_0.58.0_amd64.deb
269+
sudo dpkg -i pythinker-code_0.59.0_amd64.deb
270270
sudo apt-get install -f # only if dpkg reports missing deps
271271

272272
# Debian / Ubuntu (ARM64)
273-
sudo dpkg -i pythinker-code_0.58.0_arm64.deb
273+
sudo dpkg -i pythinker-code_0.59.0_arm64.deb
274274

275275
# Fedora / RHEL / openSUSE (x86_64)
276-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code-0.58.0.x86_64.rpm
277-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code-0.58.0.x86_64.rpm.sha256
278-
sha256sum -c pythinker-code-0.58.0.x86_64.rpm.sha256
276+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm
277+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm.sha256
278+
sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256
279279
# Fedora / RHEL:
280-
sudo dnf install ./pythinker-code-0.58.0.x86_64.rpm
280+
sudo dnf install ./pythinker-code-0.59.0.x86_64.rpm
281281
# openSUSE:
282-
sudo zypper install ./pythinker-code-0.58.0.x86_64.rpm
282+
sudo zypper install ./pythinker-code-0.59.0.x86_64.rpm
283283

284284
# Fedora / RHEL (aarch64)
285-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code-0.58.0.aarch64.rpm
286-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code-0.58.0.aarch64.rpm.sha256
287-
sha256sum -c pythinker-code-0.58.0.aarch64.rpm.sha256
288-
sudo dnf install ./pythinker-code-0.58.0.aarch64.rpm
285+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.aarch64.rpm
286+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.aarch64.rpm.sha256
287+
sha256sum -c pythinker-code-0.59.0.aarch64.rpm.sha256
288+
sudo dnf install ./pythinker-code-0.59.0.aarch64.rpm
289289
```
290290

291291
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -294,8 +294,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
294294
**Verify before install:**
295295

296296
```sh
297-
sha256sum -c pythinker-code_0.58.0_amd64.deb.sha256 # Debian/Ubuntu
298-
sha256sum -c pythinker-code-0.58.0.x86_64.rpm.sha256 # Fedora/RHEL
297+
sha256sum -c pythinker-code_0.59.0_amd64.deb.sha256 # Debian/Ubuntu
298+
sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256 # Fedora/RHEL
299299
```
300300

301301
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /

docs/en/guides/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ On Windows, run the PowerShell bootstrap. It downloads the native installer, ver
4444
irm https://pythinker.com/install.ps1 | iex
4545
```
4646

47-
You can also download `PythinkerSetup-0.58.0.exe` manually from the [latest release](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
47+
You can also download `PythinkerSetup-0.59.0.exe` manually from the [latest release](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
4848

4949
Verify the installation:
5050

docs/en/release-notes/breaking-changes.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ This page documents breaking changes in Pythinker Code releases and provides mig
44

55
## Unreleased
66

7+
## 0.59.0 (2026-07-17)
8+
9+
No breaking changes. This release is compatible with 0.58.0 user configuration, native installs, and session data.
10+
711
## 0.58.0 (2026-07-11)
812

913
No breaking changes. This release is compatible with 0.57.0 user configuration, native installs, and session data.

docs/en/release-notes/changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ GitHub Releases page; `0.8.0` is the new starting line.
1717

1818
## Unreleased
1919

20+
## 0.59.0 (2026-07-17)
21+
2022
- **Reviewer subagents now receive deterministic Git scopes.** Structured automatic,
2123
uncommitted, base, and commit targets resolve to full commit anchors before dispatch, reject
2224
invalid or empty scopes explicitly, and keep repository metadata isolated from instructions
@@ -25,6 +27,8 @@ GitHub Releases page; `0.8.0` is the new starting line.
2527
- **Provider compatibility and Z.AI routing are now explicit.** Immutable compatibility profiles keep request-format quirks behind the chat-provider boundary, while independent Z.AI Coding Plan and API login routes use separate credentials, endpoints, model identities, catalog refresh, logout, and usage/rate-limit state. Curated GLM requests now apply exact context/output limits, thinking controls, reasoning replay, and tool-stream support without activating for local or unknown models.
2628
- **Tool execution is now supervised as a terminal batch.** A private execution engine preserves the Toolset registry and legacy per-call API while centralizing ordered results, deduplication, callbacks, and batch summaries; cancellation is bounded, late work stays owned, and new batches fail closed until timed-out cleanup drains.
2729

30+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.59.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
31+
2832
## 0.58.0 (2026-07-11)
2933

3034
- **Agent-spec loading is more defensive and truthful.** Subagent `path`, `extend`, and

packages/linux-installer/README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ End-user install from the current GitHub Release:
88

99
```sh
1010
# Debian / Ubuntu
11-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code_0.58.0_amd64.deb
12-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code_0.58.0_amd64.deb.sha256
13-
sha256sum -c pythinker-code_0.58.0_amd64.deb.sha256
14-
sudo dpkg -i pythinker-code_0.58.0_amd64.deb
11+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code_0.59.0_amd64.deb
12+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code_0.59.0_amd64.deb.sha256
13+
sha256sum -c pythinker-code_0.59.0_amd64.deb.sha256
14+
sudo dpkg -i pythinker-code_0.59.0_amd64.deb
1515
sudo apt-get install -f # only needed if dependencies fail to resolve
1616

1717
# Fedora / RHEL / openSUSE
18-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code-0.58.0.x86_64.rpm
19-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.58.0/pythinker-code-0.58.0.x86_64.rpm.sha256
20-
sha256sum -c pythinker-code-0.58.0.x86_64.rpm.sha256
21-
sudo dnf install ./pythinker-code-0.58.0.x86_64.rpm
18+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm
19+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.59.0/pythinker-code-0.59.0.x86_64.rpm.sha256
20+
sha256sum -c pythinker-code-0.59.0.x86_64.rpm.sha256
21+
sudo dnf install ./pythinker-code-0.59.0.x86_64.rpm
2222
# or, on openSUSE:
23-
sudo zypper install ./pythinker-code-0.58.0.x86_64.rpm
23+
sudo zypper install ./pythinker-code-0.59.0.x86_64.rpm
2424
```
2525

2626
The package drops a single executable at `/usr/bin/pythinker` and a license
@@ -36,13 +36,13 @@ file at `/usr/share/doc/pythinker-code/LICENSE`.
3636
## Build
3737

3838
```sh
39-
bash packages/linux-installer/build.sh 0.58.0
39+
bash packages/linux-installer/build.sh 0.59.0
4040
```
4141

4242
Outputs to `dist/`:
4343

44-
- `pythinker-code_0.58.0_amd64.deb`
45-
- `pythinker-code-0.58.0.x86_64.rpm`
44+
- `pythinker-code_0.59.0_amd64.deb`
45+
- `pythinker-code-0.59.0.x86_64.rpm`
4646

4747
The portable tarball used by `scripts/install-native.sh` is published by
4848
the existing `release-pythinker-cli.yml` workflow under the cargo-dist

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "pythinker-code"
3-
version = "0.58.0"
3+
version = "0.59.0"
44
description = "Pythinker — an agentic CLI developed by Pythoughts-labs."
55
readme = "README.md"
66
requires-python = ">=3.12"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)