Skip to content

Commit 9fd78b7

Browse files
committed
chore(release): prepare 0.46.0
Bump version 0.45.0 → 0.46.0 across pyproject.toml, uv.lock, README, install docs, and the linux-installer README. Move the Unreleased entries into a dated 0.46.0 CHANGELOG block (synced to the docs copy) and add the 0.46.0 breaking-changes entry (no breaking changes).
1 parent 95f4619 commit 9fd78b7

8 files changed

Lines changed: 55 additions & 40 deletions

File tree

CHANGELOG.md

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

1616
## Unreleased
1717

18+
## 0.46.0 (2026-06-14)
19+
1820
- **Startup auto-update now picks up new releases within half an hour instead of up to a day.** The background update check was throttled to once every 24h, so a freshly published release could go unnoticed for a full day after the last check; the interval is now 30 minutes. The silent installer also no longer marks the throttle *before* the network call — a transient startup network error returns `FAILED` and is retried on the next launch instead of suppressing updates for the whole window.
1921
- **The welcome banner now keeps the robot mark visible in compact terminals.** Below ~68 columns the robot was dropped (it could not sit beside the welcome copy); it now stacks centered above the copy instead, so the mark stays on screen at any width that can render its Unicode glyphs. ASCII-only terminals are unaffected.
2022
- **A persistent update notice now sits directly under the prompt input.** When a newer release is available the footer shows a yellow `↑ Update available — vX · /update` line; once a release has been installed in the background it switches to a restart-to-apply message instead of pointing at `/update`, and it clears after you restart onto the new version. The line is suppressed for dismissed versions, disabled auto-update, and source checkouts.
2123

24+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.46.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
25+
2226
## 0.45.0 (2026-06-14)
2327

2428
- **Agent-tracing dashboard.** Added `pythinker dashboard` — a local web UI for inspecting sessions, wire events, context messages, tool statistics, and usage over time. It is also reachable from the interactive shell via the `/reports` slash command (aliased `/dashboard`).

README.md

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

53-
## 🆕 What's New in 0.45.0
53+
## 🆕 What's New in 0.46.0
5454

55-
- **Agent-tracing dashboard.** `pythinker dashboard` opens a local web UI for inspecting sessions, wire events, context messages, tool statistics, and usage over time — also reachable from the shell via `/reports` or `/dashboard`.
56-
- **Project instructions immune to compaction.** `AGENTS.md` is now delivered as a fresh `<system-reminder>` on every request instead of being baked into the system prompt, so compaction can never summarize it away and the token budget can never truncate it. `pythinker system-prompt` shows the assembled prompt with the reminder below a labeled divider.
57-
- **Accept-edits mode.** `/accept-edits` auto-approves reversible in-workspace file edits while still prompting for shell, destructive, config, and sensitive host-file writes (`.git/hooks`, `.zshrc`, `.ssh`, etc.) — never swept into the auto-approve tier.
58-
- **Recover from output-token truncation.** When a turn is cut off by the output-token limit, the model is nudged to continue from where it stopped (up to `loop_control.max_truncation_recoveries` times, default 3) instead of treating a half-finished answer as complete.
55+
- **Faster auto-update detection.** The background startup update check now runs every 30 minutes instead of once a day, so a freshly published release is picked up within the hour rather than after a full day. A transient network error at startup is retried on the next launch instead of suppressing updates for the whole window.
56+
- **Persistent update notice under the prompt.** When a newer release is available, a yellow `↑ Update available — vX · /update` line sits directly under the input; after a background install it switches to a restart-to-apply message, then clears once you restart onto the new version. It stays out of the way for dismissed versions, disabled auto-update, and source checkouts.
57+
- **Welcome banner robot stays visible in narrow terminals.** Below ~68 columns the robot mark now stacks centered above the welcome copy instead of being dropped, so it stays on screen at any width that can render its Unicode glyphs.
5958

60-
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.45.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.46.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
6160

6261

6362
---
@@ -147,7 +146,7 @@ matches your OS — no Python, Node, or `uv` prerequisite.
147146

148147
| Platform | Recommended install | Artifact source |
149148
|---|---|---|
150-
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.45.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
149+
| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.46.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) |
151150
| **<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) |
152151
| **<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 |
153152
| **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image |
@@ -175,7 +174,7 @@ pythinker # start the interactive TUI
175174

176175
### 🪟 Windows — native installer
177176

178-
`PythinkerSetup-0.45.0.exe` is a signed* Inno Setup wizard. Installs per-user
177+
`PythinkerSetup-0.46.0.exe` is a signed* Inno Setup wizard. Installs per-user
179178
into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user
180179
PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see
181180
the change. **No UAC prompt.**
@@ -186,13 +185,13 @@ irm https://pythinker.com/install.ps1 | iex
186185
187186
# Or manually download the installer + checksum from the Releases page,
188187
# verify with Get-FileHash, then run:
189-
.\PythinkerSetup-0.45.0.exe
188+
.\PythinkerSetup-0.46.0.exe
190189
191190
# Open a fresh PowerShell
192191
pythinker --version
193192
```
194193

195-
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.45.0.exe /ALLUSERS`
194+
**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.46.0.exe /ALLUSERS`
196195
installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin).
197196

198197
**Upgrade:** `pythinker update` from inside the running app — it downloads
@@ -250,26 +249,26 @@ attached to every GitHub Release.
250249

251250
```sh
252251
# Debian / Ubuntu (x86_64)
253-
sudo dpkg -i pythinker-code_0.45.0_amd64.deb
252+
sudo dpkg -i pythinker-code_0.46.0_amd64.deb
254253
sudo apt-get install -f # only if dpkg reports missing deps
255254

256255
# Debian / Ubuntu (ARM64)
257-
sudo dpkg -i pythinker-code_0.45.0_arm64.deb
256+
sudo dpkg -i pythinker-code_0.46.0_arm64.deb
258257

259258
# Fedora / RHEL / openSUSE (x86_64)
260-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.45.0/pythinker-code-0.45.0.x86_64.rpm
261-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.45.0/pythinker-code-0.45.0.x86_64.rpm.sha256
262-
sha256sum -c pythinker-code-0.45.0.x86_64.rpm.sha256
259+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code-0.46.0.x86_64.rpm
260+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code-0.46.0.x86_64.rpm.sha256
261+
sha256sum -c pythinker-code-0.46.0.x86_64.rpm.sha256
263262
# Fedora / RHEL:
264-
sudo dnf install ./pythinker-code-0.45.0.x86_64.rpm
263+
sudo dnf install ./pythinker-code-0.46.0.x86_64.rpm
265264
# openSUSE:
266-
sudo zypper install ./pythinker-code-0.45.0.x86_64.rpm
265+
sudo zypper install ./pythinker-code-0.46.0.x86_64.rpm
267266

268267
# Fedora / RHEL (aarch64)
269-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.45.0/pythinker-code-0.45.0.aarch64.rpm
270-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.45.0/pythinker-code-0.45.0.aarch64.rpm.sha256
271-
sha256sum -c pythinker-code-0.45.0.aarch64.rpm.sha256
272-
sudo dnf install ./pythinker-code-0.45.0.aarch64.rpm
268+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code-0.46.0.aarch64.rpm
269+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code-0.46.0.aarch64.rpm.sha256
270+
sha256sum -c pythinker-code-0.46.0.aarch64.rpm.sha256
271+
sudo dnf install ./pythinker-code-0.46.0.aarch64.rpm
273272
```
274273

275274
Both packages drop a small `/usr/bin/pythinker` launcher that execs the real
@@ -278,8 +277,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy.
278277
**Verify before install:**
279278

280279
```sh
281-
sha256sum -c pythinker-code_0.45.0_amd64.deb.sha256 # Debian/Ubuntu
282-
sha256sum -c pythinker-code-0.45.0.x86_64.rpm.sha256 # Fedora/RHEL
280+
sha256sum -c pythinker-code_0.46.0_amd64.deb.sha256 # Debian/Ubuntu
281+
sha256sum -c pythinker-code-0.46.0.x86_64.rpm.sha256 # Fedora/RHEL
283282
```
284283

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

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.45.0
34+
curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.46.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.45.0.exe` manually from the [latest release](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
47+
You can also download `PythinkerSetup-0.46.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.46.0 (2026-06-14)
8+
9+
No breaking changes. This release is compatible with 0.45.0 user configuration, native installs, and session data.
10+
711
## 0.45.0 (2026-06-14)
812

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

docs/en/release-notes/changelog.md

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

1818
## Unreleased
1919

20+
## 0.46.0 (2026-06-14)
21+
22+
- **Startup auto-update now picks up new releases within half an hour instead of up to a day.** The background update check was throttled to once every 24h, so a freshly published release could go unnoticed for a full day after the last check; the interval is now 30 minutes. The silent installer also no longer marks the throttle *before* the network call — a transient startup network error returns `FAILED` and is retried on the next launch instead of suppressing updates for the whole window.
23+
- **The welcome banner now keeps the robot mark visible in compact terminals.** Below ~68 columns the robot was dropped (it could not sit beside the welcome copy); it now stacks centered above the copy instead, so the mark stays on screen at any width that can render its Unicode glyphs. ASCII-only terminals are unaffected.
24+
- **A persistent update notice now sits directly under the prompt input.** When a newer release is available the footer shows a yellow `↑ Update available — vX · /update` line; once a release has been installed in the background it switches to a restart-to-apply message instead of pointing at `/update`, and it clears after you restart onto the new version. The line is suppressed for dismissed versions, disabled auto-update, and source checkouts.
25+
26+
Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.46.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest).
27+
2028
## 0.45.0 (2026-06-14)
2129

2230
- **Agent-tracing dashboard.** Added `pythinker dashboard` — a local web UI for inspecting sessions, wire events, context messages, tool statistics, and usage over time. It is also reachable from the interactive shell via the `/reports` slash command (aliased `/dashboard`).

packages/linux-installer/README.md

Lines changed: 13 additions & 13 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.45.0/pythinker-code_0.45.0_amd64.deb
12-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.45.0/pythinker-code_0.45.0_amd64.deb.sha256
13-
sha256sum -c pythinker-code_0.45.0_amd64.deb.sha256
14-
sudo dpkg -i pythinker-code_0.45.0_amd64.deb
11+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code_0.46.0_amd64.deb
12+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code_0.46.0_amd64.deb.sha256
13+
sha256sum -c pythinker-code_0.46.0_amd64.deb.sha256
14+
sudo dpkg -i pythinker-code_0.46.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.45.0/pythinker-code-0.45.0.x86_64.rpm
19-
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.45.0/pythinker-code-0.45.0.x86_64.rpm.sha256
20-
sha256sum -c pythinker-code-0.45.0.x86_64.rpm.sha256
21-
sudo dnf install ./pythinker-code-0.45.0.x86_64.rpm
18+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code-0.46.0.x86_64.rpm
19+
curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.46.0/pythinker-code-0.46.0.x86_64.rpm.sha256
20+
sha256sum -c pythinker-code-0.46.0.x86_64.rpm.sha256
21+
sudo dnf install ./pythinker-code-0.46.0.x86_64.rpm
2222
# or, on openSUSE:
23-
sudo zypper install ./pythinker-code-0.45.0.x86_64.rpm
23+
sudo zypper install ./pythinker-code-0.46.0.x86_64.rpm
2424
```
2525

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

3838
```sh
39-
bash packages/linux-installer/build.sh 0.45.0
39+
bash packages/linux-installer/build.sh 0.46.0
4040
```
4141

4242
Outputs to `dist/`:
4343

44-
- `pythinker-code_0.45.0_amd64.deb`
45-
- `pythinker-code-0.45.0.x86_64.rpm`
44+
- `pythinker-code_0.46.0_amd64.deb`
45+
- `pythinker-code-0.46.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
49-
target-triple naming (e.g. `pythinker-0.45.0-x86_64-unknown-linux-gnu.tar.gz`).
49+
target-triple naming (e.g. `pythinker-0.46.0-x86_64-unknown-linux-gnu.tar.gz`).
5050

5151
## CI
5252

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.45.0"
3+
version = "0.46.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)