Skip to content

Commit 989b154

Browse files
committed
chore(release): prepare 0.27.0
1 parent a0a2f96 commit 989b154

19 files changed

Lines changed: 93 additions & 53 deletions

File tree

.github/workflows/homebrew-tap.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
workflow_dispatch:
88
inputs:
99
version:
10-
description: "Version to push to the tap (e.g. 0.26.0)"
10+
description: "Version to push to the tap (e.g. 0.27.0)"
1111
required: true
1212
type: string
1313

.github/workflows/linux-installer.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
workflow_dispatch:
99
inputs:
1010
version:
11-
description: "Version to build (e.g. 0.26.0)"
11+
description: "Version to build (e.g. 0.27.0)"
1212
required: true
1313
type: string
1414

.github/workflows/promote-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ on:
2020
workflow_dispatch:
2121
inputs:
2222
tag:
23-
description: "Release tag to promote (e.g. v0.26.0)"
23+
description: "Release tag to promote (e.g. v0.27.0)"
2424
required: true
2525
type: string
2626

.github/workflows/windows-installer.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
workflow_dispatch:
99
inputs:
1010
version:
11-
description: "Version to build (e.g. 0.26.0)"
11+
description: "Version to build (e.g. 0.27.0)"
1212
required: true
1313
type: string
1414

CHANGELOG.md

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

1616
## Unreleased
1717

18+
## 0.27.0 (2026-05-31)
19+
20+
### What changed in this release
21+
1822
- **`/feedback` submits structured reports with redacted session context.** A new
1923
`/feedback [bug|feature|ux|wrong] [message]` command collects recent session context
2024
and strips sensitive file contents before sending, shows a confirmation preview, and
@@ -39,6 +43,8 @@ GitHub Releases page; `0.8.0` is the new starting line.
3943
surrounding context to make the old string unique, or pass `replace_all=true` when every
4044
occurrence should change.
4145

46+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.27.0`, or use the native installer for your OS (see the README install table).
47+
4248
## 0.26.0 (2026-05-30)
4349

4450
### What changed in this release

README.md

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

53-
## 🆕 What's New in 0.26.0
53+
## 🆕 What's New in 0.27.0
5454

55-
- **Install and update no longer 404 on a freshly published release.** Releases are now published as a prerelease and promoted to "latest" only once every platform asset has uploaded, and the curl/PowerShell installers wait for their archive + checksum before downloading — so `irm | iex` / `curl | bash` run mid-publish no longer fail on a missing installer.
56-
- **OpenCode Go model catalog refreshes on startup without a re-login.** Bundled catalog changes (new models, corrected provider shapes) now reach existing installs through the every-startup refresh, across both OpenAI- and Anthropic-shaped providers, while preserving your default model and thinking settings.
57-
- **Homebrew install shows the logo and fails fast on a missing tap token.** `brew install` now prints the robot-head banner via formula caveats, and the tap workflow reports an actionable error when `HOMEBREW_TAP_TOKEN` is missing instead of an opaque git failure.
58-
- **Markdown and report rendering hardened against real model output.** Code-span pipes inside tables no longer fracture the table, and a `report` block nested inside a documentation fence is no longer wrongly promoted — report fences are now extracted via a markdown-it AST walk.
59-
- **Steadier agent editing and a restored update prompt.** File-replace edit handling is hardened, subagent prompt persistence and the agent's working language are preserved, and the blocking pre-start update prompt is restored so it runs before every interactive session.
55+
- **`/feedback` submits structured reports with redacted session context.** A new `/feedback [bug|feature|ux|wrong] [message]` command collects recent session context, strips sensitive file contents before sending, shows a confirmation preview, and falls back to a prefilled GitHub issue when direct submission is unavailable.
56+
- **Fresh releases surface in the startup update prompt immediately.** The pre-start update prompt revalidates a cached "already current" answer with a bounded conditional request instead of waiting for the 24-hour throttle, and release promotion now waits for the native assets, PyPI, and the Homebrew tap before marking a version latest — so clients never resolve a release before its install channel is ready.
57+
- **Background agent recovery preserves terminal task state.** Recovery re-reads task runtime under the store update lock before marking orphaned agent work recoverable, so a stale snapshot can no longer clobber a task that already completed.
58+
- **Shell prompt echoes and background todo rows are clearer.** Transcript echoes now show the resolved submitted text for pasted-content placeholders, and background todo rows align continuation icons with the first row.
59+
- **StrReplaceFile refuses ambiguous single replacements.** A non-`replace_all` edit now errors when `old` matches more than once instead of silently editing the first match — add surrounding context to make it unique, or pass `replace_all=true` when every occurrence should change.
6060

61-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.26.0`, or use the native installer for your platform from the [Releases page](https://github.com/TechMatrix-labs/pythinker-code/releases/latest).
61+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.27.0`, or use the native installer for your platform from the [Releases page](https://github.com/TechMatrix-labs/pythinker-code/releases/latest).
6262

6363

6464
---
@@ -148,7 +148,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
148148

149149
| Platform | Recommended install | Artifact source |
150150
|---|---|---|
151-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.26.0.exe` from [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
151+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.27.0.exe` from [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
152152
| **<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/TechMatrix-labs/pythinker-code/releases/latest) |
153153
| **<img src="https://img.shields.io/badge/-macOS-000000?style=flat-square&logo=apple&logoColor=white" alt="macOS"> — Homebrew** | `brew install TechMatrix-labs/pythinker/pythinker-code` | auto-published Homebrew tap |
154154
| **<img src="https://img.shields.io/badge/-Linux-FCC624?style=flat-square&logo=linux&logoColor=black" alt="Linux"> — system package** | Download the `.deb` or `.rpm` for your distro below | [Releases](https://github.com/TechMatrix-labs/pythinker-code/releases/latest) |
@@ -173,7 +173,7 @@ pythinker # start the interactive TUI
173173

174174
### 🪟 Windows — native installer
175175

176-
`PythinkerSetup-0.26.0.exe` is a signed* Inno Setup wizard. Installs per-user
176+
`PythinkerSetup-0.27.0.exe` is a signed* Inno Setup wizard. Installs per-user
177177
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
178178
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
179179
the change. **No UAC prompt.**
@@ -184,13 +184,13 @@ irm https://pythinker.com/install.ps1 | iex
184184
185185
# Or manually download the installer + checksum from the Releases page,
186186
# verify with Get-FileHash, then run:
187-
.\PythinkerSetup-0.26.0.exe
187+
.\PythinkerSetup-0.27.0.exe
188188
189189
# Open a fresh PowerShell
190190
pythinker --version
191191
```
192192

193-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.26.0.exe /ALLUSERS`
193+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.27.0.exe /ALLUSERS`
194194
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
195195

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

242242
```sh
243243
# Debian / Ubuntu (x86_64)
244-
sudo dpkg -i pythinker-code_0.26.0_amd64.deb
244+
sudo dpkg -i pythinker-code_0.27.0_amd64.deb
245245
sudo apt-get install -f # only if dpkg reports missing deps
246246

247247
# Debian / Ubuntu (ARM64)
248-
sudo dpkg -i pythinker-code_0.26.0_arm64.deb
248+
sudo dpkg -i pythinker-code_0.27.0_arm64.deb
249249

250250
# Fedora / RHEL / openSUSE (x86_64)
251-
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.26.0/pythinker-code-0.26.0.x86_64.rpm
252-
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.26.0/pythinker-code-0.26.0.x86_64.rpm.sha256
253-
sha256sum -c pythinker-code-0.26.0.x86_64.rpm.sha256
251+
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.27.0/pythinker-code-0.27.0.x86_64.rpm
252+
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.27.0/pythinker-code-0.27.0.x86_64.rpm.sha256
253+
sha256sum -c pythinker-code-0.27.0.x86_64.rpm.sha256
254254
# Fedora / RHEL:
255-
sudo dnf install ./pythinker-code-0.26.0.x86_64.rpm
255+
sudo dnf install ./pythinker-code-0.27.0.x86_64.rpm
256256
# openSUSE:
257-
sudo zypper install ./pythinker-code-0.26.0.x86_64.rpm
257+
sudo zypper install ./pythinker-code-0.27.0.x86_64.rpm
258258

259259
# Fedora / RHEL (aarch64)
260-
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.26.0/pythinker-code-0.26.0.aarch64.rpm
261-
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.26.0/pythinker-code-0.26.0.aarch64.rpm.sha256
262-
sha256sum -c pythinker-code-0.26.0.aarch64.rpm.sha256
263-
sudo dnf install ./pythinker-code-0.26.0.aarch64.rpm
260+
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.27.0/pythinker-code-0.27.0.aarch64.rpm
261+
curl -LO https://github.com/TechMatrix-labs/pythinker-code/releases/download/v0.27.0/pythinker-code-0.27.0.aarch64.rpm.sha256
262+
sha256sum -c pythinker-code-0.27.0.aarch64.rpm.sha256
263+
sudo dnf install ./pythinker-code-0.27.0.aarch64.rpm
264264
```
265265

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

271271
```sh
272-
sha256sum -c pythinker-code_0.26.0_amd64.deb.sha256 # Debian/Ubuntu
273-
sha256sum -c pythinker-code-0.26.0.x86_64.rpm.sha256 # Fedora/RHEL
272+
sha256sum -c pythinker-code_0.27.0_amd64.deb.sha256 # Debian/Ubuntu
273+
sha256sum -c pythinker-code-0.27.0.x86_64.rpm.sha256 # Fedora/RHEL
274274
```
275275

276276
**Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` /
@@ -300,7 +300,7 @@ at `~/.local/bin/pythinker`.
300300
curl -fsSL https://pythinker.com/install.sh | bash
301301

302302
# Pin a specific version
303-
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.26.0
303+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.27.0
304304

305305
# Custom prefix (defaults to $HOME/.local)
306306
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker

docs/en/guides/getting-started.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Run the native installation script to complete the installation. The canonical e
3131
curl -fsSL https://pythinker.com/install.sh | bash
3232

3333
# Pin a specific version
34-
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.26.0
34+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.27.0
3535

3636
# Custom prefix (defaults to $HOME/.local)
3737
curl -fsSL https://pythinker.com/install.sh | bash -s -- --prefix /opt/pythinker
@@ -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.26.0.exe` manually from the [latest release](https://github.com/TechMatrix-labs/pythinker-code/releases/latest).
47+
You can also download `PythinkerSetup-0.27.0.exe` manually from the [latest release](https://github.com/TechMatrix-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
@@ -2,6 +2,10 @@
22

33
This page documents breaking changes in Pythinker Code releases and provides migration guidance.
44

5+
## 0.27.0 (2026-05-31)
6+
7+
No breaking changes. This release is compatible with 0.26.0 user configuration, native installs, and session data.
8+
59
## 0.26.0 (2026-05-30)
610

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

docs/en/release-notes/changelog.md

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

1818
## Unreleased
1919

20+
## 0.27.0 (2026-05-31)
21+
22+
### What changed in this release
23+
24+
- **`/feedback` submits structured reports with redacted session context.** A new
25+
`/feedback [bug|feature|ux|wrong] [message]` command collects recent session context
26+
and strips sensitive file contents before sending, shows a confirmation preview, and
27+
falls back to opening a prefilled GitHub issue when direct submission is unavailable.
28+
- **Fresh releases surface in the startup update prompt immediately.** The pre-start
29+
update prompt now revalidates a cached "already current" answer with a bounded
30+
conditional request instead of waiting for the 24-hour background-check throttle.
31+
Release promotion also waits for exact native assets, PyPI, and the Homebrew tap
32+
before marking a version latest, so installed clients no longer resolve a release
33+
before its install channel is ready.
34+
- **Background agent recovery preserves terminal task state.** Recovery now re-reads
35+
task runtime under the store update lock before marking orphaned agent work
36+
recoverable, so a stale snapshot can no longer clobber a task that completed.
37+
- **Project memory recall keeps the simple lexical path.** The unused SQLite FTS
38+
retriever seam and dead recall path argument are removed; collaborators now use
39+
a public memory-store root accessor instead of reaching into private methods.
40+
- **Shell prompt echoes and background todo rows are clearer.** Transcript echoes now
41+
show the resolved submitted text for pasted-content placeholders, and background
42+
todo rows align continuation icons with the first row.
43+
- **StrReplaceFile now refuses ambiguous single replacements.** A non-`replace_all` edit now
44+
errors when `old` matches more than once instead of silently editing the first match. Add
45+
surrounding context to make the old string unique, or pass `replace_all=true` when every
46+
occurrence should change.
47+
48+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.27.0`, or use the native installer for your OS (see the README install table).
49+
2050
## 0.26.0 (2026-05-30)
2151

2252
### What changed in this release

docs/public/install.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# irm https://pythinker.com/install.ps1 | iex
88
#
99
# To pin a version when running the hosted script, set:
10-
# $env:PYTHINKER_VERSION = "0.26.0"; irm https://pythinker.com/install.ps1 | iex
10+
# $env:PYTHINKER_VERSION = "0.27.0"; irm https://pythinker.com/install.ps1 | iex
1111

1212
$ErrorActionPreference = "Stop"
1313

0 commit comments

Comments
 (0)