From 87ba2155e35b432170774c4937f016b2aea39be8 Mon Sep 17 00:00:00 2001 From: Mohamed Elkholy Date: Sat, 13 Jun 2026 16:33:06 -0400 Subject: [PATCH] chore(release): prepare 0.43.0 --- CHANGELOG.md | 18 ++++++--- README.md | 48 +++++++++++------------ docs/en/guides/getting-started.md | 4 +- docs/en/release-notes/breaking-changes.md | 6 +++ docs/en/release-notes/changelog.md | 18 +++++++++ packages/linux-installer/README.md | 26 ++++++------ pyproject.toml | 2 +- uv.lock | 2 +- 8 files changed, 77 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5d33d1d..cf32c222 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,17 +15,23 @@ GitHub Releases page; `0.8.0` is the new starting line. ## Unreleased -- Added silent startup auto-updates with `auto_update`/`PYTHINKER_AUTO_UPDATE` opt-outs and a restart-to-apply notice. +## 0.43.0 (2026-06-13) + +- **Silent startup auto-updates (default on).** Managed and native installs now check for and apply updates in the background at startup, surfacing a restart-to-apply notice instead of a blocking prompt. Opt out with `auto_update = false` in config or `PYTHINKER_AUTO_UPDATE=0` in the environment. The Windows update path that replaces the running binary no longer escapes as an uncaught `SystemExit` and crashes the shell. +- **Tracing dashboard redesign.** The visualization dashboard (`pythinker vis`, the `/reports` UI) gets a soft-enterprise analytics refresh: redesigned Statistics and Sessions surfaces, a new Usage page with a usage heatmap and metric cards, and a consistent blue-accent treatment across the app. +- **Robust project-memory tooling.** Per-store budget accounting is now delimiter-aware, so a capacity rejection reports the exact free space instead of silently miscounting; the `Memory` tool gains a read-only `list` action for mid-session introspection; `/memory` shows per-store capacity with a "nearly full" panel at ≥85%; and writes that look like a rule, a value/limit, or that name a project file are gated behind a confirmation (honoring yolo/auto and "allow for session") that steers corrections toward the authoritative file instead of letting them silently accumulate in memory. Headless runs skip the gated write cleanly rather than erroring, and the routing-flagged debug log no longer records the raw content preview. - **designer-skill MCP bridge.** Bundled a `designer-skill` stub skill that routes frontend work to the connected designer-skill MCP tools instead of failing ReadSkill; plugin-style names like `designer-skill:designer-skill` resolve correctly, and ReadSkill falls back to a generic MCP bridge (any user-configured server name) when only the MCP server is connected. - **Always-on best practices.** New `best_practices_always` config option folds the full `/best-practices` engineering guidance into the root session's system prompt at startup, so the guardrails apply to every new session without running the command. Default off. -- **Smarter multi-edit errors.** A `StrReplaceFile` batch that fails schema validation (e.g. edit entries collapsed by a streaming glitch) now returns a precise, actionable error naming the bad entries and steering toward single-edit calls, instead of a wall of validation errors. Valid edits are never partially applied. - **Agent guardrails.** The default system prompt now requires absence claims ("no em-dashes", "no leftover debug", "matches the source") to be backed by an actual zero-hit scan, and to re-ask rather than act on a self-authored reading of a non-responsive clarifying answer. -- **`/recap on|off`.** Toggle turn recaps from the recap command (mirrors `/settings recap(s)`), with a grey inline autosuggest reflecting the current state. -- **Recap hygiene.** Session recaps strip `` blocks so injected harness context no longer leaks into one-line recaps. +- **Smarter multi-edit errors.** A `StrReplaceFile` batch that fails schema validation (e.g. edit entries collapsed by a streaming glitch) now returns a precise, actionable error naming the bad entries and steering toward single-edit calls, instead of a wall of validation errors. Valid edits are never partially applied. +- **`/recap on|off`.** Toggle turn recaps from the recap command (mirrors `/settings recap(s)`), with a grey inline autosuggest reflecting the current state. Recaps also strip `` blocks so injected harness context no longer leaks into one-line recaps. +- **Cleaner slash command menu.** The slash command popup now has a blank line separating it from the input row, drops the repetitive `[command]`/`[shell]` tag (keeping the distinguishing `[skill]`/`[flow]` ones), and gains a persistent footer (`Enter to select · ↑/↓ to navigate · Esc to cancel`) set off by its own separator line. When the list scrolls, the footer folds in a `+N more` count instead of silently hiding entries, and the menu height adapts to the terminal. - **Login selector polish.** Configured `/login` providers render with distinct success/state styling; the background working indicator uses the braille spinner, and working tips wrap with a hanging indent under the verb. -- **Scratch cleanup on exit.** Sessions that end via an exception now clean up their scratch files instead of orphaning them. - **Readable diff context.** Unchanged context lines in file-edit diff snippets now render in the normal body-text color instead of muted grey, so edited-file previews are easier to read; added/removed lines are unchanged. -- **Cleaner slash command menu.** The slash command popup now has a blank line separating it from the input row, drops the repetitive `[command]`/`[shell]` tag (keeping the distinguishing `[skill]`/`[flow]` ones), and gains a persistent footer (`Enter to select · ↑/↓ to navigate · Esc to cancel`) set off by its own separator line. When the list scrolls, the footer folds in a `+N more` count instead of silently hiding entries, and the menu height adapts to the terminal. +- **Scratch cleanup on exit.** Sessions that end via an exception now clean up their scratch files instead of orphaning them. +- **Error telemetry is emitted at ERROR severity.** `error`/`crash`/`api_error` events were forwarded to OpenTelemetry logs at INFO, so severity filters and the error saved-views never matched them; they now map to ERROR (`session_load_failed` to WARN) with canonical `error.*` attributes, and a startup crash before the telemetry sink attaches is still flushed. Opt-out telemetry behavior is unchanged. + +Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.43.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest). ## 0.42.0 (2026-06-12) diff --git a/README.md b/README.md index 1f902860..a5e3ee0c 100644 --- a/README.md +++ b/README.md @@ -50,15 +50,15 @@ It speaks the [**Agent Client Protocol (ACP)**](https://github.com/agentclientpr --- -## 🆕 What's New in 0.42.0 +## 🆕 What's New in 0.43.0 -- **Parallel coding agents are truly isolated.** `isolation="worktree"` is now enforced, not just recorded: each background write agent runs in its own git worktree of HEAD and reports its worktree path with a diff summary so changes merge deliberately, while foreground shell commands and relative-path edits resolve against the agent's own work dir. Worktrees with commits ahead of their base are retained instead of orphaned, and worktree add/remove serializes per repo. -- **The agent knows its own permission posture — and stops asking when it shouldn't.** A live permissions-state reminder renders the enforced profile, safe-mode/yolo/auto flags, mutation/network allowances, and shell-gate rules, re-emitted exactly when the posture changes. Provably read-only commands (`ls`, `git status`) no longer interrupt the root agent with an approval dialog, via a fail-closed positive allowlist. -- **Edits recover from whitespace and smart-punctuation drift.** `StrReplaceFile` no longer hard-fails when the only mismatch is trailing whitespace, indentation, or smart quotes/dashes — a graduated line-window ladder relocates the edit, preserves CRLF endings, and names the relaxation it used. Ambiguous fuzzy matches still error rather than silently resolving. -- **MCP servers are controllable.** Per-server `enabledTools`/`disabledTools` arrays in `mcp.json` scope a noisy server down to the tools you want, and a new `mcp.client.startup_timeout_ms` (default 30s) means a hung server can no longer stall every turn — `/mcp` now shows one actionable line per failed server. -- **Quality of life.** `/model` switches now carry the conversation forward via a plain-text summary instead of starting fresh; typo'd config keys warn with their dotted path and source file (`PYTHINKER_STRICT_CONFIG=1` escalates to a startup error); project-scope hooks load only after `/trust`; the in-app updater recovers from Homebrew's untrusted-tap refusal; `/export` redacts secret-named values; inline `/command` references get acted on; and the thinking shimmer no longer animates while a foreground command runs. +- **Silent startup auto-updates, on by default.** Managed and native installs now check for and apply updates in the background at startup, surfacing a restart-to-apply notice instead of a blocking prompt. Opt out with `auto_update = false` or `PYTHINKER_AUTO_UPDATE=0`; the Windows binary-replacement path no longer crashes the shell. +- **Redesigned tracing dashboard.** The visualization dashboard (`pythinker vis`) gets a soft-enterprise refresh: redesigned Statistics and Sessions surfaces, a new Usage page with a usage heatmap and metric cards, and a consistent blue-accent treatment. +- **Robust project-memory tooling.** Capacity rejections now report exact free space (delimiter-aware accounting), the `Memory` tool gains a read-only `list` action, `/memory` shows per-store capacity with a "nearly full" panel at ≥85%, and rule-/value-/file-like writes are gated behind a confirmation that steers corrections toward the authoritative file instead of silently accumulating in memory. +- **Sharper agent guardrails.** Absence claims ("no em-dashes", "matches the source") must be backed by an actual zero-hit scan; a `designer-skill` MCP bridge routes frontend work to connected MCP tools; `best_practices_always` folds `/best-practices` guidance into every session at startup; and `StrReplaceFile` returns precise, actionable errors when a multi-edit batch fails validation. +- **Quality of life.** `/recap on|off` with autosuggest and ``-stripped recaps; a decluttered, spaced-out slash command menu with a persistent footer and `+N more` overflow; diff context lines render in normal text color; `/login` selector polish; scratch files clean up on exception exit; and error/crash telemetry is emitted at ERROR severity so it actually surfaces in dashboards. -Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.42.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest). +Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.43.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest). --- @@ -148,7 +148,7 @@ matches your OS — no Python, Node, or `uv` prerequisite. | Platform | Recommended install | Artifact source | |---|---|---| -| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.42.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) | +| **🪟 Windows** | `irm https://pythinker.com/install.ps1 \| iex` | `PythinkerSetup-0.43.0.exe` from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) | | **macOS / Linux** | `curl -fsSL https://pythinker.com/install.sh \| bash` | native tarball from [Releases](https://github.com/Pythoughts-labs/pythinker-code/releases/latest) | | **macOS — Homebrew** | `brew install Pythoughts-labs/pythinker/pythinker-code` | auto-published Homebrew tap | | **🐳 Docker** | `docker run --rm -it ghcr.io/pythoughts-labs/pythinker-code` | GHCR multi-arch image | @@ -176,7 +176,7 @@ pythinker # start the interactive TUI ### 🪟 Windows — native installer -`PythinkerSetup-0.42.0.exe` is a signed* Inno Setup wizard. Installs per-user +`PythinkerSetup-0.43.0.exe` is a signed* Inno Setup wizard. Installs per-user into `%LOCALAPPDATA%\Programs\Pythinker`, registers `pythinker` on your user PATH (`HKCU\Environment`), broadcasts `WM_SETTINGCHANGE` so new shells see the change. **No UAC prompt.** @@ -187,13 +187,13 @@ irm https://pythinker.com/install.ps1 | iex # Or manually download the installer + checksum from the Releases page, # verify with Get-FileHash, then run: -.\PythinkerSetup-0.42.0.exe +.\PythinkerSetup-0.43.0.exe # Open a fresh PowerShell pythinker --version ``` -**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.42.0.exe /ALLUSERS` +**Per-machine install** (IT-managed boxes): `.\PythinkerSetup-0.43.0.exe /ALLUSERS` installs to `%ProgramFiles%\Pythinker` and writes PATH to HKLM (requires admin). **Upgrade:** `pythinker update` from inside the running app — it downloads @@ -251,26 +251,26 @@ attached to every GitHub Release. ```sh # Debian / Ubuntu (x86_64) -sudo dpkg -i pythinker-code_0.42.0_amd64.deb +sudo dpkg -i pythinker-code_0.43.0_amd64.deb sudo apt-get install -f # only if dpkg reports missing deps # Debian / Ubuntu (ARM64) -sudo dpkg -i pythinker-code_0.42.0_arm64.deb +sudo dpkg -i pythinker-code_0.43.0_arm64.deb # Fedora / RHEL / openSUSE (x86_64) -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code-0.42.0.x86_64.rpm -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code-0.42.0.x86_64.rpm.sha256 -sha256sum -c pythinker-code-0.42.0.x86_64.rpm.sha256 +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm.sha256 +sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256 # Fedora / RHEL: -sudo dnf install ./pythinker-code-0.42.0.x86_64.rpm +sudo dnf install ./pythinker-code-0.43.0.x86_64.rpm # openSUSE: -sudo zypper install ./pythinker-code-0.42.0.x86_64.rpm +sudo zypper install ./pythinker-code-0.43.0.x86_64.rpm # Fedora / RHEL (aarch64) -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code-0.42.0.aarch64.rpm -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code-0.42.0.aarch64.rpm.sha256 -sha256sum -c pythinker-code-0.42.0.aarch64.rpm.sha256 -sudo dnf install ./pythinker-code-0.42.0.aarch64.rpm +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.aarch64.rpm +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.aarch64.rpm.sha256 +sha256sum -c pythinker-code-0.43.0.aarch64.rpm.sha256 +sudo dnf install ./pythinker-code-0.43.0.aarch64.rpm ``` Both packages drop a small `/usr/bin/pythinker` launcher that execs the real @@ -279,8 +279,8 @@ binary under `/usr/lib/pythinker/`, so your `$PATH` stays tidy. **Verify before install:** ```sh -sha256sum -c pythinker-code_0.42.0_amd64.deb.sha256 # Debian/Ubuntu -sha256sum -c pythinker-code-0.42.0.x86_64.rpm.sha256 # Fedora/RHEL +sha256sum -c pythinker-code_0.43.0_amd64.deb.sha256 # Debian/Ubuntu +sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256 # Fedora/RHEL ``` **Upgrade:** download the new `.deb`/`.rpm` from Releases and `dpkg -i` / diff --git a/docs/en/guides/getting-started.md b/docs/en/guides/getting-started.md index 728aeac5..83a1be12 100644 --- a/docs/en/guides/getting-started.md +++ b/docs/en/guides/getting-started.md @@ -31,7 +31,7 @@ Run the native installation script to complete the installation. The canonical e curl -fsSL https://pythinker.com/install.sh | bash # Pin a specific version -curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.42.0 +curl -fsSL https://pythinker.com/install.sh | bash -s -- --version 0.43.0 # Custom prefix (defaults to $HOME/.local) 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 irm https://pythinker.com/install.ps1 | iex ``` -You can also download `PythinkerSetup-0.42.0.exe` manually from the [latest release](https://github.com/Pythoughts-labs/pythinker-code/releases/latest). +You can also download `PythinkerSetup-0.43.0.exe` manually from the [latest release](https://github.com/Pythoughts-labs/pythinker-code/releases/latest). Verify the installation: diff --git a/docs/en/release-notes/breaking-changes.md b/docs/en/release-notes/breaking-changes.md index 444b3181..08b6ccab 100644 --- a/docs/en/release-notes/breaking-changes.md +++ b/docs/en/release-notes/breaking-changes.md @@ -4,6 +4,12 @@ This page documents breaking changes in Pythinker Code releases and provides mig ## Unreleased +## 0.43.0 (2026-06-13) + +No configuration or session-data breaking changes. One behavior change affects update handling: + +- **Startup auto-updates are now on by default.** Managed and native installs check for and apply updates in the background at startup, then show a restart-to-apply notice — replacing the previous blocking prompt. To keep updates manual, set `auto_update = false` in `~/.pythinker/config.toml` or export `PYTHINKER_AUTO_UPDATE=0`. The in-app `pythinker update` command is unchanged. + ## 0.42.0 (2026-06-12) No configuration or session-data breaking changes. Two behavior changes may affect scripted or automated use: diff --git a/docs/en/release-notes/changelog.md b/docs/en/release-notes/changelog.md index 6e8aa310..370c83b0 100644 --- a/docs/en/release-notes/changelog.md +++ b/docs/en/release-notes/changelog.md @@ -17,6 +17,24 @@ GitHub Releases page; `0.8.0` is the new starting line. ## Unreleased +## 0.43.0 (2026-06-13) + +- **Silent startup auto-updates (default on).** Managed and native installs now check for and apply updates in the background at startup, surfacing a restart-to-apply notice instead of a blocking prompt. Opt out with `auto_update = false` in config or `PYTHINKER_AUTO_UPDATE=0` in the environment. The Windows update path that replaces the running binary no longer escapes as an uncaught `SystemExit` and crashes the shell. +- **Tracing dashboard redesign.** The visualization dashboard (`pythinker vis`, the `/reports` UI) gets a soft-enterprise analytics refresh: redesigned Statistics and Sessions surfaces, a new Usage page with a usage heatmap and metric cards, and a consistent blue-accent treatment across the app. +- **Robust project-memory tooling.** Per-store budget accounting is now delimiter-aware, so a capacity rejection reports the exact free space instead of silently miscounting; the `Memory` tool gains a read-only `list` action for mid-session introspection; `/memory` shows per-store capacity with a "nearly full" panel at ≥85%; and writes that look like a rule, a value/limit, or that name a project file are gated behind a confirmation (honoring yolo/auto and "allow for session") that steers corrections toward the authoritative file instead of letting them silently accumulate in memory. Headless runs skip the gated write cleanly rather than erroring, and the routing-flagged debug log no longer records the raw content preview. +- **designer-skill MCP bridge.** Bundled a `designer-skill` stub skill that routes frontend work to the connected designer-skill MCP tools instead of failing ReadSkill; plugin-style names like `designer-skill:designer-skill` resolve correctly, and ReadSkill falls back to a generic MCP bridge (any user-configured server name) when only the MCP server is connected. +- **Always-on best practices.** New `best_practices_always` config option folds the full `/best-practices` engineering guidance into the root session's system prompt at startup, so the guardrails apply to every new session without running the command. Default off. +- **Agent guardrails.** The default system prompt now requires absence claims ("no em-dashes", "no leftover debug", "matches the source") to be backed by an actual zero-hit scan, and to re-ask rather than act on a self-authored reading of a non-responsive clarifying answer. +- **Smarter multi-edit errors.** A `StrReplaceFile` batch that fails schema validation (e.g. edit entries collapsed by a streaming glitch) now returns a precise, actionable error naming the bad entries and steering toward single-edit calls, instead of a wall of validation errors. Valid edits are never partially applied. +- **`/recap on|off`.** Toggle turn recaps from the recap command (mirrors `/settings recap(s)`), with a grey inline autosuggest reflecting the current state. Recaps also strip `` blocks so injected harness context no longer leaks into one-line recaps. +- **Cleaner slash command menu.** The slash command popup now has a blank line separating it from the input row, drops the repetitive `[command]`/`[shell]` tag (keeping the distinguishing `[skill]`/`[flow]` ones), and gains a persistent footer (`Enter to select · ↑/↓ to navigate · Esc to cancel`) set off by its own separator line. When the list scrolls, the footer folds in a `+N more` count instead of silently hiding entries, and the menu height adapts to the terminal. +- **Login selector polish.** Configured `/login` providers render with distinct success/state styling; the background working indicator uses the braille spinner, and working tips wrap with a hanging indent under the verb. +- **Readable diff context.** Unchanged context lines in file-edit diff snippets now render in the normal body-text color instead of muted grey, so edited-file previews are easier to read; added/removed lines are unchanged. +- **Scratch cleanup on exit.** Sessions that end via an exception now clean up their scratch files instead of orphaning them. +- **Error telemetry is emitted at ERROR severity.** `error`/`crash`/`api_error` events were forwarded to OpenTelemetry logs at INFO, so severity filters and the error saved-views never matched them; they now map to ERROR (`session_load_failed` to WARN) with canonical `error.*` attributes, and a startup crash before the telemetry sink attaches is still flushed. Opt-out telemetry behavior is unchanged. + +Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.43.0`, or use the native installer for your platform from the [Releases page](https://github.com/Pythoughts-labs/pythinker-code/releases/latest). + ## 0.42.0 (2026-06-12) - **Adversarial branch review hardening.** A multi-agent review pass confirmed and fixed: committed-but-clean isolation worktrees are now retained (commits ahead of the creation base count as changes — they were previously orphaned on cleanup); foreground shell commands and relative-path file edits now resolve against the agent's work dir, so worktree isolation actually binds them (host exec gained a `cwd` argument); safe mode now also disables the read-only-command prompt elision; locally parallel-safe MCP/tools run in parallel in the same-step gate; worktree add/remove serializes per repo. Behavior notes: same-step tool calls without `supports_parallel` now serialize deterministically (previously fully concurrent), and text-mode error diagnostics moved to stderr — capture `2>&1` or use `--output-format stream-json` if you scraped stdout. diff --git a/packages/linux-installer/README.md b/packages/linux-installer/README.md index 497951d1..d0c16b5e 100644 --- a/packages/linux-installer/README.md +++ b/packages/linux-installer/README.md @@ -8,19 +8,19 @@ End-user install from the current GitHub Release: ```sh # Debian / Ubuntu -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code_0.42.0_amd64.deb -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code_0.42.0_amd64.deb.sha256 -sha256sum -c pythinker-code_0.42.0_amd64.deb.sha256 -sudo dpkg -i pythinker-code_0.42.0_amd64.deb +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code_0.43.0_amd64.deb +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code_0.43.0_amd64.deb.sha256 +sha256sum -c pythinker-code_0.43.0_amd64.deb.sha256 +sudo dpkg -i pythinker-code_0.43.0_amd64.deb sudo apt-get install -f # only needed if dependencies fail to resolve # Fedora / RHEL / openSUSE -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code-0.42.0.x86_64.rpm -curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.42.0/pythinker-code-0.42.0.x86_64.rpm.sha256 -sha256sum -c pythinker-code-0.42.0.x86_64.rpm.sha256 -sudo dnf install ./pythinker-code-0.42.0.x86_64.rpm +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm +curl -LO https://github.com/Pythoughts-labs/pythinker-code/releases/download/v0.43.0/pythinker-code-0.43.0.x86_64.rpm.sha256 +sha256sum -c pythinker-code-0.43.0.x86_64.rpm.sha256 +sudo dnf install ./pythinker-code-0.43.0.x86_64.rpm # or, on openSUSE: -sudo zypper install ./pythinker-code-0.42.0.x86_64.rpm +sudo zypper install ./pythinker-code-0.43.0.x86_64.rpm ``` 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`. ## Build ```sh -bash packages/linux-installer/build.sh 0.42.0 +bash packages/linux-installer/build.sh 0.43.0 ``` Outputs to `dist/`: -- `pythinker-code_0.42.0_amd64.deb` -- `pythinker-code-0.42.0.x86_64.rpm` +- `pythinker-code_0.43.0_amd64.deb` +- `pythinker-code-0.43.0.x86_64.rpm` The portable tarball used by `scripts/install-native.sh` is published by the existing `release-pythinker-cli.yml` workflow under the cargo-dist -target-triple naming (e.g. `pythinker-0.42.0-x86_64-unknown-linux-gnu.tar.gz`). +target-triple naming (e.g. `pythinker-0.43.0-x86_64-unknown-linux-gnu.tar.gz`). ## CI diff --git a/pyproject.toml b/pyproject.toml index 53f05659..649c0a67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pythinker-code" -version = "0.42.0" +version = "0.43.0" description = "Pythinker — an agentic CLI developed by Pythoughts-labs." readme = "README.md" requires-python = ">=3.12" diff --git a/uv.lock b/uv.lock index 0e4b6fc4..38e3682d 100644 --- a/uv.lock +++ b/uv.lock @@ -2515,7 +2515,7 @@ wheels = [ [[package]] name = "pythinker-code" -version = "0.42.0" +version = "0.43.0" source = { editable = "." } dependencies = [ { name = "agent-client-protocol" },