Skip to content

chore(deps): update ⬆️ mise-packages - #1002

Merged
renovate[bot] merged 2 commits into
mainfrom
renovate/mise-packages
Aug 3, 2026
Merged

chore(deps): update ⬆️ mise-packages#1002
renovate[bot] merged 2 commits into
mainfrom
renovate/mise-packages

Conversation

@renovate

@renovate renovate Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change Pending Age Adoption Passing Confidence
aqua:astral-sh/uv tools minor 0.11.320.12.0 0.12.1 age adoption passing confidence
aqua:atuinsh/atuin tools minor 18.17.118.18.1 age adoption passing confidence
aqua:dagger/dagger tools patch 0.21.70.21.8 age adoption passing confidence
aqua:earendil-works/pi tools minor 0.82.10.83.0 age adoption passing confidence
aqua:mvdan/gofumpt tools minor 0.10.00.11.0 age adoption passing confidence
aqua:openai/codex tools minor rust-v0.145.0rust-v0.146.0 age adoption passing confidence
aqua:snyk/cli tools patch 1.1306.11.1306.2 age adoption passing confidence
aqua:sst/opencode tools patch 1.18.51.18.10 1.18.11 age adoption passing confidence
aqua:suzuki-shunsuke/ghtkn tools patch 0.3.30.3.4 0.3.5 age adoption passing confidence
aqua:suzuki-shunsuke/pinact tools patch 4.1.04.1.1 age adoption passing confidence
aqua:vercel-labs/agent-browser tools patch 0.33.00.33.1 0.33.2 age adoption passing confidence
aqua:walles/moor tools minor 2.15.12.16.1 2.16.2 age adoption passing confidence
cargo:cargo-audit (source) tools patch 0.22.00.22.2 age adoption passing confidence
cargo:cargo-deny tools patch 0.20.00.20.2 age adoption passing confidence
github:aquaproj/aqua tools patch v2.62.1v2.62.2 v2.62.3 age adoption passing confidence
github:backnotprop/plannotator tools patch v0.25.0v0.25.1 age adoption passing confidence
github:janosmiko/lfk tools patch v0.15.14v0.15.15 v0.15.16 age adoption passing confidence
github:max-sixty/worktrunk tools minor v0.69.2v0.70.0 v0.71.0 age adoption passing confidence
github:modem-dev/hunk tools patch v0.17.6v0.17.7 age adoption passing confidence
github:nolabs-ai/nono tools minor 0.69.0v0.70.0 v0.71.0 age adoption passing confidence
node (source) tools patch 24.18.024.18.1 v24.19.0 age adoption passing confidence
npm:socket tools patch 1.1.1461.1.147 age adoption passing confidence
pipx:semgrep (changelog) tools minor 1.171.01.172.0 age adoption passing confidence
usage tools minor 4.0.04.1.0 age adoption passing confidence

Release notes are maintained in a PR comment by the renovate-release-notes-comment workflow.


Configuration

📅 Schedule: (in timezone America/Los_Angeles)

  • Branch creation
    • Between 03:00 AM and 05:59 AM (* 3-5 * * *)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from scottames as a code owner August 3, 2026 15:19
@renovate renovate Bot added the dependencies label Aug 3, 2026
@renovate
renovate Bot enabled auto-merge (squash) August 3, 2026 15:19
@scottames-github-bot

Copy link
Copy Markdown
Contributor

Renovate Release Notes

Generated from Renovate's update table by the renovate-release-notes-comment workflow.

Packages that cannot be summarized from GitHub releases are listed explicitly below.

astral-sh/uv (aqua:astral-sh/uv)

0.12.0: 0.12.0

Compare Source

Release Notes

Released on 2026-07-28.

Since we released uv 0.11.0 in March, we've accumulated changes that improve correctness, safety, and compatibility with specifications, but could break some workflows. This release contains those changes; many have been marked as breaking out of an abundance of caution.

We expect most users to be able to upgrade without making changes.

There are no breaking changes to the configuration of the uv build backend. If your [build-system] table includes an upper bound on uv_build, update it to allow uv_build 0.12, e.g., uv_build>=0.11.32,<0.13.

Breaking changes

  • Define build systems by default with uv init (#19197)

    Projects created with uv init now declare a build system and are packaged by default. This was the default project layout all the way back in v0.3, but we found that the use of the hatchling build system was confusing to newcomers and consequently dropped use of a build system by default in v0.4. Since then, we've created our own build system (uv_build) with tight integration with uv and are excited to restore the default to a best-practice project layout.

    Previously, uv init example created an unpackaged layout containing main.py and a pyproject.toml without a build system. The project could declare dependencies but was not itself installed into its virtual environment.

    Now, uv init example defines a [build-system] using uv_build, places application source code in src/example, and includes a [project.scripts] entry named example. Defining a build system allows the project to be imported from tests or other code, installed as a dependency, and run as a command:

    $ uv init example
    $ cd example
    $ uv run example
    Hello from example!

    Existing projects are unaffected. Use uv init --no-package example to create the previous unpackaged layout without a build system.

    See the project creation documentation for more details.

    This stabilizes the packaged-init preview feature.

  • Reject unsupported source distribution and wheel archive formats (#18927)

    PEP 625 requires source distributions to use .tar.gz archives. Previously, uv also accepted legacy formats such as .tar.bz2 and .tar.xz. Those formats are now rejected, including when referenced by an existing lockfile. Legacy .zip source distributions remain supported for backwards compatibility.

    Wheels and other ZIP archives can no longer contain entries compressed with bzip2, LZMA, or XZ. Entries must use the stored, DEFLATE, or zstd compression methods.

    Removing support for uncommon compression methods reduces uv's compression dependencies and the attack surface exposed when processing untrusted packages.

    You cannot opt out of this behavior. If you depend on a legacy source distribution that uses an unsupported format, we recommend rebuilding it as a .tar.gz archive and regenerating any lockfile containing references to the legacy archive.

  • Reject wheel files that could replace the Python interpreter (#20748, #20749)

    uv already rejected wheel entry points named python, but case variants such as Python were still accepted. On case-insensitive filesystems, including common macOS and Windows setups, these entry points could overwrite the virtual environment's interpreter.

    Wheels could also place interpreter files in their .data/scripts directory or in paths such as .data/data/bin/python, bypassing the entry-point check and replacing the interpreter during installation.

    uv now rejects case-insensitive variants of reserved interpreter names and wheel data files that would be installed over an interpreter. This includes names such as Python, python.py, and Python.exe, along with other reserved interpreter names and their versioned variants.

    You cannot opt out of these checks. Rename conflicting entry points or wheel data files and rebuild the affected wheel.

  • Prefer stable releases before falling back to pre-releases (#19993)

    A dependency can introduce a pre-release requirement after resolution starts. uv previously required each package's pre-release eligibility to be known before resolution began: the default if-necessary-or-explicit mode allowed them for direct requirements that explicitly requested a pre-release, or for packages that only published pre-releases.

    This meant that a pre-release requirement discovered in a dependency's metadata, e.g., example>=2.0.0b1, would fail to resolve even when a compatible pre-release existed. To resolve it, you had to add that dependency as a direct requirement or allow pre-releases across your entire dependency graph.

    The default mode is now if-necessary. uv tries stable candidates first and falls back to pre-releases when no stable candidate satisfies the active constraints. Like pip, uv now supports pre-release requirements discovered transitively, but can select different versions than previous uv releases when both stable and pre-release candidates are available.

    You can opt out of automatic pre-release selection with --prerelease disallow. Alternatively, --prerelease allow considers pre-releases without first preferring stable releases, and --prerelease explicit only allows them for direct requirements that mention a pre-release.

    The old if-necessary-or-explicit mode distinguished between explicitly requested pre-releases and packages with no stable releases. That distinction is unnecessary now that if-necessary handles both cases, including transitive requirements. The old name remains available as an alias but is deprecated and will be removed in a future release.

  • Respect --require-hashes directives in requirements.txt (#19336)

    Previously, uv pip install and uv pip sync warned about --require-hashes inside a requirements.txt file but still installed dependencies without checking their hashes. Now, the directive enables hash-checking mode, just as if --require-hashes had been passed on the command line.

    For example, this requirements file is no longer accepted because the requirement is neither pinned nor hashed:

    --require-hashes
    anyio
    

    You cannot opt out while the directive is present. Pin every requirement with == and provide its hash, or remove --require-hashes if hash checking is not intended.

  • Reject MD5-only hashes in hash-checking mode (#20758)

    Previously, uv pip install --require-hashes and uv pip sync --require-hashes accepted requirements whose only available digest used MD5. MD5 is not collision-resistant, so relying on it undermined installations that require hash verification and differed from pip's behavior.

    Hash-checking mode now requires at least one secure digest for every requirement. For example, the following requirement is rejected unless a secure hash, such as SHA-256, is also supplied:

    anyio==4.0.0 --hash=md5:420d85e19168705cdf0223621b18831a
    

    A secure hash can be supplied directly on the requirement or in a matching constraints file. Ordinary hash verification without --require-hashes continues to support MD5.

    You cannot opt out while hash checking is required. Regenerate affected hashes with SHA-256 or another supported secure hash.

  • Reject invalid pylock.toml files and artifacts (#20402, #20440, #20443)

    uv now validates additional requirements from the pylock.toml specification:

    • The packages array must be present. Previously, uv interpreted a missing array as an empty lockfile, so uv pip sync could uninstall an environment instead of rejecting malformed input. An explicitly empty packages = [] array remains valid.
    • Lockfile filenames must be pylock.toml or a single-name variant such as pylock.dev.toml. Names such as pylock..toml and pylock.foo.bar.toml are rejected.
    • If a wheel, source distribution, or other artifact declares a size, the downloaded or cached artifact must match. Previously, an incorrect size was accepted when the hash was correct. Sizes reported by package indexes remain advisory.

    You cannot opt out of these checks. Regenerate malformed lockfiles, rename invalid filenames, and either correct or remove an incorrect optional size value.

  • Honor explicit certificate overrides even when no certificates can be loaded (#20741, #20767)

    Previously, uv ignored SSL_CERT_FILE or SSL_CERT_DIR values that pointed to missing or inaccessible paths, empty files or directories, or sources without valid certificates. Instead, it fell back to its default trust roots, potentially allowing HTTPS connections that the configured override was intended to reject.

    Now, any non-empty SSL_CERT_FILE or SSL_CERT_DIR value replaces uv's default certificate roots, even when no valid certificates can be loaded. In that case, HTTPS requests fail because no certificates are trusted. This applies to package downloads and remote scripts, including GitHub Gists.

    Fix or unset the certificate override. Unsetting it restores the default trust store; empty environment-variable values continue to be ignored.

  • Support pip-compatible --cert handling in uv pip (#20418)

    The uv pip interface now accepts --cert <path>, e.g.:

    $ uv pip install --cert ./company-ca.pem example

    As in pip, the provided PEM bundle replaces all other certificate sources for that invocation, including system certificates and SSL_CERT_FILE or SSL_CERT_DIR. This change has no effect unless you pass --cert. Include the necessary certificate authorities in the bundle.

    --cert is only supported by uv pip commands; other uv commands continue to use their existing certificate configuration.

  • Discover projects relative to the script passed to uv run (#20225)

    Previously, uv run project/script.py discovered its project from the current directory, even when the script belonged to another project. uv now starts project and workspace discovery from the script's directory instead.

    For example, running uv run other-project/script.py now uses other-project and its dependencies. This fixes scripts that previously failed because their own dependencies were not installed, but can select a different environment than before.

    You can opt out of script-relative discovery by selecting a project explicitly, e.g., uv run --project . other-project/script.py.

    This stabilizes the target-workspace-discovery preview feature.

  • Require --force before clearing a directory that is not a virtual environment (#20225)

    uv venv --clear previously removed any existing target directory, even if it was not a virtual environment. uv emitted a warning but still deleted the directory and its contents. Now, uv refuses to clear directories that do not contain a virtual environment.

    You can opt out of this safety check by explicitly passing --force, e.g., uv venv --clear --force ./not-a-virtualenv.

    This stabilizes the venv-safe-clear preview feature.

  • Reject --project when initializing a project (#20225)

    --project selects an existing project, so it is not meaningful when initializing a new one. Previously, uv init --project example warned and initialized example anyway; if a positional path was also provided, --project was ignored.

    This usage is now an error. Use uv init example to initialize a project at the requested path, or uv init --directory example to change the working directory first.

    This stabilizes the init-project-flag preview feature.

  • Reject missing or invalid --project paths (#20225)

    uv previously warned when --project referred to a missing directory or a file other than pyproject.toml, but then attempted to continue. This could produce confusing errors later or run against an unintended project.

    Now, uv run --project missing python fails immediately instead of continuing. You cannot opt out of this behavior. Create the directory first or select an existing project. Passing --project path/to/pyproject.toml remains supported and selects the file's parent directory.

    This stabilizes the project-directory-must-exist preview feature.

  • Skip distributions with non-normalized filenames when publishing (#20225)

    Distribution filenames must use normalized package names and versions. For example, a wheel for version 1.01.0 should be named example-1.1.0-py3-none-any.whl, not example-1.01.0-py3-none-any.whl.

    Previously, uv publish warned about non-normalized filenames but still attempted to upload them. It now skips the affected wheels and source distributions instead.

    You cannot opt out of this behavior. Rebuild distributions with normalized filenames before publishing.

    This stabilizes the publish-require-normalized preview feature.

  • Classify Conda environments named base and root by their paths (#20225)

    Conda environments named base or root were previously assumed to be the base Conda environment, even when they were ordinary child environments. uv now recognizes child Conda environments named base or root based on their paths, as it already does for other names.

    You can opt out of automatic interpreter selection by requesting an interpreter explicitly with --python /path/to/python.

    This stabilizes the special-conda-env-names preview feature.

  • Reject broken .venv symlinks during environment discovery (#20433)

    Previously, uv could ignore a broken .venv symlink and continue searching parent directories for another virtual environment. As a result, commands such as uv pip install could unexpectedly modify an unrelated ancestor environment.

    uv now stops at a broken .venv symlink and reports its exact path. Errors encountered while reading virtual environment metadata, including permission failures, are also reported immediately instead of being ignored.

    You cannot opt out of this behavior. Repair or remove the broken .venv symlink and correct any permissions that prevent uv from inspecting the environment.

  • Reinstall matching installed Python patch versions instead of upgrading implicitly (#20659)

    Before Python upgrades were supported, uv python install 3.12 --reinstall doubled as a way to install the latest Python 3.12 patch release. Now that --upgrade is available, --reinstall reinstalls the matching patch releases that are already present.

    For example, if Python 3.12.6 and 3.12.7 are installed, uv python install 3.12 --reinstall reinstalls both versions instead of installing the latest available 3.12 release.

    You can recover the previous upgrade behavior with uv python install 3.12 --upgrade. Combine --upgrade --reinstall to reinstall only the latest patch.

  • Require --upgrade-group to name an existing dependency group (#18957)

    Previously, uv lock --upgrade-group docs silently succeeded even if no docs dependency group existed. uv now validates the requested group against the project, its workspace members, and workspace-level dependency groups.

    You cannot opt out of this behavior. Correct the group name or add it to [dependency-groups]. Legacy tool.uv.dev-dependencies still satisfies --upgrade-group dev.

  • Resolve relative indexes and find-links against --directory (#20740)

    The --directory option changes the directory in which uv operates. Previously, relative index and find-links paths supplied on the command line were still resolved against the original working directory.

    uv now resolves --index, --default-index, --index-url, --extra-index-url, and --find-links relative to the directory selected by --directory. For example:

    $ uv add --directory project --index ./packages example

    This now uses project/packages instead of ./packages in the original working directory. Absolute paths and indexes loaded from configuration files are unaffected.

    To preserve the previous target, pass an absolute path or adjust the relative path, e.g., --index ../packages.

  • Preserve absolute paths provided to uv add (#18402)

    uv add previously converted every local dependency into a project-relative path, even when the original request used an absolute path or a literal file:// URL. It now preserves the form of the request in pyproject.toml and uv.lock:

    $ uv add ../library             # remains relative
    $ uv add /projects/library      # remains absolute

    Absolute paths make a project less portable. Use a relative path to avoid recording an absolute path. URLs containing expanded variables retain their existing relative-path behavior.

  • Remove older PyPy distributions that are only available as bzip2 archives (#20423)

    Older PyPy patch releases that are only distributed as .tar.bz2 archives are no longer available through uv python install. These releases require unsupported bzip2 archives.

    The latest PyPy release for each supported Python minor version is available as a gzip-compressed archive and remains supported. For example, uv python list 3.10 --all-versions still includes the latest PyPy 3.10 release, but older bzip2-only patch releases are omitted.

    You cannot opt out of this behavior. Request a newer PyPy patch release instead.

  • Omit excluded-package comments when annotations are disabled (#20085)

    uv pip compile --no-annotate suppresses comments describing the generated requirements file. Previously, a footer listing packages excluded with --unsafe-package was still included, even though annotations were disabled. That footer is now omitted.

    You can recover the footer by removing --no-annotate.

Stabilizations

  • TOML 1.0-compatible source distributions (#20225)

    uv_build now writes a TOML 1.0-compatible pyproject.toml when building source distributions, allowing older Python build frontends to consume projects that use newer TOML syntax. The original project file remains available in the archive as pyproject.toml.orig.

    This stabilizes the toml-backwards-compatibility preview feature.

  • Automatic open-file limit adjustment on Unix (#20225)

    On Linux and macOS, uv now attempts to raise the soft open-file limit at startup toward the hard limit, capped at 1,048,576 descriptors. The new limit also applies to subprocesses and reduces failures caused by running out of file descriptors. If the limit cannot be raised, uv continues running with the existing limit.

    This stabilizes the adjust-ulimit preview feature.

Preview features

  • Allow uv upgrade to target multiple packages, upgrade all production dependencies, and exclude selected dependencies (#20338)

Bug fixes

  • Include extras activated by dependency groups when evaluating conflicts (#20237)

Install uv 0.12.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.0/uv-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.0/uv-installer.ps1 | iex"

Download uv 0.12.0

File Platform Checksum
uv-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
uv-x86_64-apple-darwin.tar.gz Intel macOS checksum
uv-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
uv-i686-pc-windows-msvc.zip x86 Windows checksum
uv-x86_64-pc-windows-msvc.zip x64 Windows checksum
uv-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
uv-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
uv-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
uv-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
uv-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
uv-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
uv-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
uv-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
uv-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
uv-riscv64gc-unknown-linux-musl.tar.gz RISCV MUSL Linux checksum
uv-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
uv-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
uv-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.11.33: 0.11.33

Compare Source

Release Notes

Released on 2026-07-28.

Enhancements

  • Abort panics in release builds for smaller uv binaries (#20271)
  • Use .tar.gz archives for Pyodide installs (#20667)

Preview features

  • Avoid checking any scripts in uv check unless --script is passed (#20676)
  • Check locked tools for malware before cache reuse (#20301)
  • Write and read package.metadata-free lockfiles (#20688, #20691, #20685, #20695)

Bug fixes

  • Correctly split dependencies into production and optional markers (#20671)
  • Fix discrepancies in argument parsing of exclude-newer (#20679)
  • Cleanup managed Python temporary directory on error (#20752)

Install uv 0.11.33

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.11.33/uv-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.11.33/uv-installer.ps1 | iex"

Download uv 0.11.33

File Platform Checksum
uv-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
uv-x86_64-apple-darwin.tar.gz Intel macOS checksum
uv-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
uv-i686-pc-windows-msvc.zip x86 Windows checksum
uv-x86_64-pc-windows-msvc.zip x64 Windows checksum
uv-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
uv-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
uv-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
uv-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
uv-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
uv-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
uv-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
uv-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
uv-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
uv-riscv64gc-unknown-linux-musl.tar.gz RISCV MUSL Linux checksum
uv-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
uv-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
uv-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
atuinsh/atuin (aqua:atuinsh/atuin)

v18.18.1: 18.18.1

Compare Source

Release Notes

Bug Fixes

  • (crates.io) Fix installation from crates.io (#3764)

Refactor

  • (daemon) Drop fs4, use std::fs file locking (#3753)

atuin 18.18.1

Install atuin 18.18.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/atuinsh/atuin/releases/download/v18.18.1/atuin-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/atuinsh/atuin/releases/download/v18.18.1/atuin-installer.ps1 | iex"

Download atuin 18.18.1

File Platform Checksum
atuin-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
atuin-x86_64-apple-darwin.tar.gz Intel macOS checksum
atuin-x86_64-pc-windows-msvc.zip x64 Windows checksum
atuin-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
atuin-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
atuin-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
atuin-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo atuinsh/atuin

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

atuin-server 18.18.1

Install atuin-server 18.18.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/atuinsh/atuin/releases/download/v18.18.1/atuin-server-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/atuinsh/atuin/releases/download/v18.18.1/atuin-server-installer.ps1 | iex"

Download atuin-server 18.18.1

File Platform Checksum
atuin-server-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
atuin-server-x86_64-apple-darwin.tar.gz Intel macOS checksum
atuin-server-x86_64-pc-windows-msvc.zip x64 Windows checksum
atuin-server-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
atuin-server-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
atuin-server-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
atuin-server-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo atuinsh/atuin

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

v18.18.0: 18.18.0

Compare Source

Release Notes

Bug Fixes

  • (daemon) Index synced history directly instead of malformed SQL (#3627) (#3641)
  • (deps) Update unsound/vulnerable dependencies in Cargo.lock (#3632)
  • (docs) Repair every stale link in the repo (#3727)
  • (docs) Make the incorrect-decrypt-key error actionable (#3609)
  • (hook) Drop agent commands containing NUL bytes via NonNulStr (#3589) (#3660)
  • (import) Survive corrupt entries instead of aborting the import (#3721)
  • (init) Fix include guard in Bash init script; chore(init): improve inclusion of shell init scripts in Rust (#3645)
  • (install) Make /dev/tty authoritative for interactivity detection (#3691)
  • (search) Add DbSearchMode; correctly fall back to "fuzzy" in non-interactive searches (#3744)
  • (ui) Calculate preview height based on command display width instead of byte count (#3678)
  • (win32) Cargo-binstall package metadata (#3673)
  • Search functionality to respect character offsets and non-ASCII (#3659)
  • Quote argument-hint YAML values so Copilot CLI ≥1.0.65 loads all skills (#3613) (#3614)
  • Correct grammar in 'history last' help text (#3430)
  • Work around rust nightly warning on eyre bail (#3680)
  • Improve non-interactive TTY detection in install.sh (#3315)
  • Add /model hint to status bar (#3687)
  • Set correct umask for pty-proxy (#3700)
  • Atuin AI not erasing the input box before closing (#3715)
  • Show server status next to AI progress indicator (#3723)
  • Show full command when using AtuinOutput tool (#3725)

Documentation

  • (ai) Add self hosting + slash command docs (#3623)
  • (config) Standardize TOML examples for config options (#3441)
  • Advise users to pass --locked when installing from Cargo (#3630)
  • Add docs for store_failed and default for enter_accept (#2696)
  • Serve docs.atuin.sh from this repo; remove Desktop docs (#3684)
  • Version docs.atuin.sh with mike (per-release + main) (#3688)
  • Hotfix bad path (#3690)
  • Document built-in bash-preexec (#3651)
  • Retheme docs.atuin.sh to the Atuin brand (#3701)
  • Bundle of improvements (#3716)
  • Remove ugly cards on landing page (#3724)
  • Fix broken README links (#3696)
  • Lint prose with Vale and gate it in CI (#3726)
  • Slightly nicer default config.toml order (#2485)
  • Kubernetes self-hosting documentation (#3238)
  • Add canonical Supported platforms page (#3736)
  • Add friendly hover tips for new terms (#3740)
  • Clarify how to uninstall shell integration (#3741)

Features

  • (ai) Up/down to scroll through previously sent messages (#3720)
  • (bash) Bundle bash-preexec with Atuin; automatically load if no other preexec backend is loaded (#3650)
  • (search) Add --shell option to atuin search to filter results by shell (#3658)
  • (search) Syntax highlight commands in interactive search (#3704)
  • (search) Filter by shell in interactive search (#3692)
  • (string) EllipsizeExt -- General-purpose utility for adding ellipses to strings (#3639)
  • Add 'yolo' setting to Atuin AI options (#3637)
  • Add shell field to history entries (#3636)
  • Add hickory-dns resolver for musl target to improve DNS resolution (#3647)
  • Add atuin stats --filter-mode (#1737)
  • More aggressive optimizations for dist release (#3683)
  • Capture zsh comments as history (#3699)
  • Allow injecting extra HTTP headers on sync server requests (#3718)

Miscellaneous Tasks

  • (atuin-common) Add ellipsize_or_pad for unicode pad (#3663)
  • (ci) Bump GitHub Actions to latest versions (#3689)
  • (ci) Lint tests & docs in CI (#3746)
  • (clap) Simplify clap field types and fix help message formatting (#3640)
  • (logging) Refactor logging (#3622)
  • (release-skill) Time label-gated PR merges around the release (#3654)
  • Remove fossier (#3629)
  • Trigger docs repo deploy (#3631)
  • Remove redundant test (#3635)
  • Add .editorconfig and .nvim.lua (#3648)
  • Clean up WordJumper in atuin/src/command/client/search/cursor.rs (#3662)
  • Don't panic if clipboard cannot be accessed (#2648)
  • Update some dependency versions (#3666)
  • Update sqlx to v9 (#3668)
  • Follow-up on #1737 (#3649)
  • Update Atuin AI to eye-declare v0.6.1 (#3686)
  • Remove docs-dispatch (#3694)
  • Docker healtcheck (#2451)
  • Run windows jobs on depot-windows-2025-16 (#3711)
  • Hotfix script (#3714)
  • Update flake.nix (#3509)
  • Add Timezone and restart policy for postgres backup docker (#3083)
  • Add riscv64 to release targets (#3339)
  • Build x86_64-apple-darwin on Depot M4 macs; move all macOS CI to Depot (#3742)

Performance

  • Do not block counting history (#3729)
  • Actually delete history rows, and index active history (#3730)
  • Index filtered history search, record store tags, and cache inspector stats (#3731)

Refactor

  • (hook) Typed protocol for agent hook events (#3638)
  • (render) Slightly nicer and more correct non-printable escaping (#3633)
  • (sync) Remove deprecated V1 sync protocol (#3634)
  • Use typed Url instead of hand-built string URLs (#3644)
  • Extract shared vt100 logic into atuin-common (#3664)

Styling

  • Improve Atuin AI TUI styles (#3710)

Testing

  • Parametrize tests with rstest across 8 crates (#3653)

Bug

  • Fix enter_accept default (#3717)
  • Abort install.sh on cURL fails (#2911)

atuin 18.18.0

Install atuin 18.18.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/atuinsh/atuin/releases/download/v18.18.0/atuin-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/atuinsh/atuin/releases/download/v18.18.0/atuin-installer.ps1 | iex"

Download atuin 18.18.0

File Platform Checksum
atuin-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
atuin-x86_64-apple-darwin.tar.gz Intel macOS checksum
atuin-x86_64-pc-windows-msvc.zip x64 Windows checksum
atuin-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
atuin-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
atuin-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
atuin-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo atuinsh/atuin

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

atuin-server 18.18.0

Install atuin-server 18.18.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/atuinsh/atuin/releases/download/v18.18.0/atuin-server-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/atuinsh/atuin/releases/download/v18.18.0/atuin-server-installer.ps1 | iex"

Download atuin-server 18.18.0

File Platform Checksum
atuin-server-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
atuin-server-x86_64-apple-darwin.tar.gz Intel macOS checksum
atuin-server-x86_64-pc-windows-msvc.zip x64 Windows checksum
atuin-server-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
atuin-server-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
atuin-server-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
atuin-server-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo atuinsh/atuin

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
dagger/dagger (aqua:dagger/dagger)

v0.21.8: v0.21.8

Compare Source

v0.21.8 - 2026-07-29

Changed

Fixed

What to do next?

@scottames-github-bot

Copy link
Copy Markdown
Contributor
earendil-works/pi (aqua:earendil-works/pi)

v0.83.0: v0.83.0

Compare Source

New Features

  • Credential export for external clientspi auth print-api-key and pi auth print-bearer-token export configured credentials with automatic OAuth refresh and minimum-validity enforcement.
  • Headless OpenRouter sign-in — Complete /login over SSH by pasting the redirect URL or authorization code when the loopback callback is unavailable. See OpenRouter.
  • Claude Opus 5 on GitHub Copilot — Use Claude Opus 5 through GitHub Copilot with adaptive thinking and a 1M context window. See GitHub Copilot.

Breaking Changes

  • Upgraded bundled TypeBox aliases to 1.3.7, removing deprecated APIs including Type.Base, Type.Awaited, Type.Promise, Type.AsyncIterator, Type.Iterator, Type.Options, and Value.Mutate, while fixing compiled validation of nullable array tool arguments. Extensions using removed APIs must migrate to supported TypeBox APIs. See Package Dependencies (#7243 by @​petrroll).

Added

  • Added pi auth print-api-key and pi auth print-bearer-token commands for exporting configured credentials to external clients, including automatic OAuth refresh and configurable minimum token validity (#7168).
  • Exposed the session's resolved model scope as ctx.scopedModels to extensions. See Extension Context (#7191 by @​pungggi, #7215).
  • Added inherited per-request fetch injection for supported text and image provider transports.
  • Added the inherited "pending" stop reason for partial streaming messages. See Custom Provider Stream Pattern (#7151 by @​lucasmeijer).
  • Added inherited raw provider stop reasons across Google, Anthropic, Amazon Bedrock, Mistral, and OpenAI streams; unmapped terminal reasons now surface as provider errors instead of successful stops (#7272).
  • Added manual redirect URL and authorization-code entry to OpenRouter login for remote and headless environments. See OpenRouter (#7114 by @​rgarcia).
  • Added inherited Claude Opus 5 support for GitHub Copilot with adaptive thinking and a 1M context window. See GitHub Copilot (#7158 by @​jay-aye-see-kay).

Changed

  • Changed inherited OAuth credential resolution to refresh tokens with less than five minutes of validity remaining instead of waiting until expiration (#7168).

Fixed

  • Added a status line when the tool output expansion is toggled (#7180).
  • Fixed file-backed SYSTEM.md and APPEND_SYSTEM.md prompts being omitted from the interactive startup context listing. See System Prompt Files (#7096).
  • Fixed context files loading twice when a linked Git worktree is nested under its main repository. See Context Files (#7221 by @​arajkumar).
  • Fixed llama.cpp streamed responses reporting zero token usage and leaving session context accounting empty. See llama.cpp (#7258 by @​SteveImmanuel).
  • Fixed session replacement and committed tree navigation during an active response to abort and persist the outgoing turn instead of leaving dangling tool calls. See Sessions (#7022 by @​tmustier).
  • Fixed failed Git package installs leaving partial directories that blocked clean retries. See Install and Manage (#7210 by @​haoqixu).
  • Fixed the /model selector retaining a stale selection while filtering instead of highlighting the top match (#7211 by @​christianbasch).
  • Fixed direct RPC bash commands bypassing extension user_bash handlers. See User Bash Events (#7214).
  • Fixed skills, prompts, and themes losing package source metadata after extensions reload resources. See Resource Events (#6968).
  • Fixed cancellation of concurrently running user bash commands so every active command is aborted (#7103 by @​yzhg1983).
  • Fixed duplicate messages appearing when extensions switch sessions during interactive startup (#7110 by @​yzhg1983).
  • Fixed inherited Qwen Token Plan reasoning models to send their service-specific thinking controls and supported reasoning-effort levels (#6951, #6998).
  • Fixed inherited Z.AI output limits being sent through an unsupported parameter. See Providers (#7174 by @​HyeokjaeLee).
  • Fixed explicitly configured Amazon Bedrock profiles being overridden by ambient AWS access keys. See Amazon Bedrock (#7176 by @​christianbasch).
  • Fixed inherited image fallback paths overflowing narrow terminals, shortened home-directory paths, and made absolute paths clickable when terminal hyperlinks are available (#7262).
  • Fixed inherited OpenAI-compatible tool calls losing their function arguments when malformed deltas also contain an empty custom object (#7288 by @​sunnyyoung).
mvdan/gofumpt (aqua:mvdan/gofumpt)

v0.11.0

Compare Source

Like v0.10.0, this release is based on Go 1.26's gofmt, and requires Go 1.25 or later.

The multi-line function call rule introduced in v0.10.0 proved controversial, so it is now the extra rule balance_calls, disabled by default. It is also narrowed to only place the closing parenthesis on its own line when the opening parenthesis ends a line. See #74.

Avoid crashing when compiled with tinygo for Wasm, which lacks recover support, by detecting commented-out code without the parser's bailout panic. See #230.

Produce stable output in a single pass when a lone var declaration is adjacent to a single-element var group, which previously required a second run. See #355.

Keep the parentheses around an expression which begins with a composite literal of the form T{...}, such as (s{}.Foo()), as they are required when the expression starts an if, for, or switch clause. See #356.

Consider becoming a sponsor if you benefit from the work that went into this release!

Binaries built on go version go1.26.5 linux/amd64 with:

CGO_ENABLED=0 go build -trimpath -ldflags="-w -s"
openai/codex (aqua:openai/codex)

rust-v0.146.0: 0.146.0

Compare Source

New Features

  • Name new sessions with /new or /clear, pin important threads, and switch between side conversations without closing them. (#34605, #34840, #35011)
  • Support Agent Plugins manifests, workspace plugin publishing, and additional plugin marketplaces for Amazon Bedrock and Claude Code. (#35105, #35254, #34931, #34979)
  • Fork threads with paginated history, including temporary forks that do not appear in thread listings. (#35220, #35251)
  • Connect app-server to remote Code Mode hosts over WebSocket. (#35078, #35098)
  • Enable standalone web search for compatible custom model providers. (#34846)
  • Discover executor-provided skills and securely read their associated resources, including explicitly selected skills. (#35184, #35198)

Bug Fixes

  • Honor configured proxies across authentication, plugin downloads, MCP authorization, remote execution, WebSockets, redirects, and LM Studio connections. (#34479, #34509, #34655, #34678, #35023, #35056, #35239)
  • Keep MCP connections and Apps tools current when authentication or configuration changes, reconnecting closed servers without restarting healthy connections. (#34952, #34957, #35028, #35144, #35146, #35151)
  • Preserve submitted messages, final responses, failed-turn errors, imported timestamps, and approval settings across interruptions, replay, imports, and forks. (#34839, #34777, #35524, #34989, #34664)
  • Improve terminal responsiveness and rendering, including nonblocking interrupts, keyboard handling, narrow layouts, hyperlinks, and refreshed mention results. (#35000, #35021, #34775, #34778, #35365, #35375)
  • Fix Windows navigation keys, reliably terminate sandboxed process trees, and preserve proxy settings during security reviews. (#34625, #34624, #35036)
  • Retain more available skills under tight context budgets and warn when skill catalogs must be truncated. (#34732, #34738, #34997)

Documentation

  • Document shared HTTP-client usage, proxy-aware connection pooling, and safe outbound request handling. (#34669)
  • Clarify Windows drive-letter canonicalization for PathUri values. (#34667)

Chores

  • Publish release artifacts, channel metadata, and installer aliases through OpenAI-hosted release infrastructure, with GitHub fallback. (#34505, #34508, #34729, #34910)
  • Sign and notarize bundled macOS helper executables before packaging. (#35264)
  • Reduce app-server serialization overhead and unnecessary request-building allocations. (#34761, #34766, #34825)
  • Add enterprise-plan recognition and administrator controls for in-app updates. (#35238, #35537)

Changelog

Full Changelog: openai/codex@rust-v0.145.0...rust-v0.146.0

  • #34447 Add a route-aware HTTP client pool @​copyberry
  • #34449 Make external session detection limits configurable @​copyberry
  • #34451 Attribute external agent imports by provider @​copyberry
  • #34463 Support alpha hotfix release versions @​copyberry
  • #34469 Preserve thread settings for goal-first and forked threads @​copyberry
  • #34476 Separate HTTP execution from request logging @​copyberry
  • #34478 Honor CARGO_HTTP_CAINFO in managed proxy environments @​copyberry
  • #34479 Re-resolve system proxy routes across redirects @​copyberry
  • #34481 Add route-aware redirect test coverage @​copyberry
  • #34483 Expand route-aware proxy redirect coverage @​copyberry
  • #34490 Route backend requests through the HTTP client factory @​copyberry
  • #34491 Route cloud environment discovery through the HTTP client pool @​copyberry
  • #34495 Honor system proxy settings in the daemon updater @​copyberry
  • #34497 Preserve custom arg0 for sandboxed exec-server processes @​copyberry
  • #34505 Mirror Rust release artifacts to Cloudflare R2 @​copyberry
  • #34506 Respect system proxies during plugin startup sync @​copyberry
  • #34508 Publish release metadata to R2 channels @​copyberry
  • #34509 Honor system proxy settings for remote plugins @​copyberry
  • #34514 Add an optional releases.openai.com installer source @​copyberry
  • #34516 Allow numer in codespell checks @​copyberry
  • #34517 Pass empty inherited FDs in the Wine PTY test @​copyberry
  • #34522 Split MCP connection manager into focused modules @​copyberry
  • #34525 Add step-scoped data to extension contributors @​copyberry
  • #34533 Centralize compacted rollout item construction @​copyberry
  • #34540 Detach Git metadata commands from stdin @​copyberry
  • #34544 Size Noise handshake buffers to their messages @​copyberry
  • #34547 Add reciprocal rank fusion skill selection @​copyberry
  • #34550 Test thread-scoped MCP refresh behavior @​copyberry
  • #34551 Simplify TUI restoration for the external editor @​copyberry
  • #34552 Remove unused RtOptions setters @​copyberry
  • #34553 Remove the unused TUI shutdown app command @​copyberry
  • #34558 Remove obsolete ignored tests @​copyberry
  • #34559 Add backend client support for Codex user settings @​copyberry
  • #34561 Extract MCP binding clients from the connection manager @​copyberry
  • #34562 Record rollout boundaries for materialized turns @​copyberry
  • #34563 Page through inherited thread history @​copyberry
  • #34566 Protect fork history references during rollout cleanup @​copyberry
  • #34570 Highlight CUDA files as C++ in the TUI @​copyberry
  • #34573 Accept forceRefetch in plugin list requests @​copyberry
  • #34578 Gate the TUI suspend restore helper on Unix @​copyberry
  • #34581 Add routing-card lexical skill selection @​copyberry
  • #34588 Bind MCP calls to captured catalog revisions @​copyberry
  • #34590 Add keyed shell environment policy filters @​copyberry
  • #34597 Enforce exact values from managed config requirements @​copyberry
  • #34598 Skip missing paths in filesystem sandbox entries @​copyberry
  • #34601 Sanitize skill names in injection metrics @​copyberry
  • #34603 Allow explicitly permitted loopback proxy targets @​copyberry
  • #34605 Allow naming sessions with /new and /clear @​copyberry
  • #34611 Add compatibility policies for skill catalog rendering @​copyberry
  • #34612 Detach non-interactive subprocesses from stdin @​copyberry
  • #34613 Route Windows sandbox proxy traffic by restricting SID @​copyberry
  • #34615 Initialize missing-path behavior in exec-server sandbox test @​copyberry
  • #34620 Add exec-server network policy callback types @​copyberry
  • #34621 Load paginated model context across rollout lineages @​copyberry
  • #34622 Increase the auto-review model override test timeout @​copyberry
  • #34624 Terminate Windows process trees with job objects @​copyberry
  • #34625 Fix Windows TUI navigation key handling @​copyberry
  • #34626 Scale skill metadata budgets with model context windows @​copyberry
  • #34629 Harden Windows elevated sandbox startup @​copyberry
  • #34630 Add a policy-aware HTTP client builder @​copyberry
  • #34631 Migrate agent identity to the shared HTTP client @​copyberry
  • #34636 Keep the TUI open when starting a turn fails @​copyberry
  • #34637 Attribute review findings to repository rules @​copyberry
  • #34640 Update Windows process-tree tests for inherited FDs @​copyberry
  • #34641 Harden managed proxy setup for sandboxed executions @​copyberry
  • #34643 Migrate login HTTP construction to HttpClient @​copyberry
  • #34644 Verify Git plugin SHA checkouts @​copyberry
  • #34645 Always assign response item IDs @​copyberry
  • #34649 Propagate resolved proxy policy through auth routing @​copyberry
  • #34650 Require auth managers to receive routing configuration @​copyberry
  • #34651 Migrate core test support to the shared HTTP client @​copyberry
  • #34654 Render turn diffs for foreign environment paths @​copyberry
  • #34655 Honor configured proxy routes for auth refreshes @​copyberry
  • #34664 Preserve approvals reviewer when forking threads @​copyberry
  • #34667 Document PathUri drive letter canonicalization @​copyberry
  • #34669 Expand codex-http-client usage guidance @​copyberry
  • #34678 Route LM Studio requests through the shared HTTP client @​copyberry
  • #34681 Add session headers to realtime conversation starts @​copyberry
  • #34687 Configure Codex Auto Review model metadata @​copyberry
  • #34708 Rename the MCP connection manager to McpConnectionSet @​copyberry
  • #34713 Order unified exec lifecycle events reliably @​copyberry
  • #34728 Skip Git enrichment for prewarm and Guardian turns @​copyberry
  • #34729 Publish stable installer aliases to R2 @​copyberry
  • #34732 Preserve skill catalog entries under metadata pressure @​copyberry
  • #34733 Make MCP resource clients follow the latest runtime @​copyberry
  • #34734 Remove step-scoped data from extension contributors @​copyberry
  • #34738 Drop skill descriptions before omitting catalog entries @​copyberry
  • #34744 Update skills budget tests for extension API changes @​copyberry
  • #34746 Match core skill ordering in extension catalogs @​copyberry
  • #34747 Register the MCP 2026-07-28 feature flag @​copyberry
  • #34761 Reduce app-server JSON serialization overhead @​copyberry
  • #34763 Retry websocket requests when the previous response is missing @​copyberry
  • #34766 Reduce typed app-server request serialization overhead @​copyberry
  • #34769 Add the git attribution extension @​copyberry
  • #34770 Enable exec-server network policy callbacks @​copyberry
  • #34771 Size unified mention popups to visible results @​copyberry
  • #34772 Normalize whitespace-only lines in agent messages @​copyberry
  • #34775 Clamp session headers to narrow terminal widths @​copyberry
  • #34777 Include the final agent message in turn completion summaries @​copyberry
  • #34778 Coalesce wrapped OSC 8 hyperlinks in the TUI terminal @​copyberry
  • #34779 Use the live parent history mode when forking agents @​copyberry
  • #34781 Upgrade Bazel Rust and LLVM dependencies @​copyberry
  • #34784 Reject dynamic environments named local @​copyberry
  • #34785 Report skill catalog truncation during rendering @​copyberry
  • #34786 Simplify app-server integration test setup @​copyberry
  • #34789 Avoid unnecessary post-sampling token estimates @​copyberry
  • #34795 Remove obsolete step store from git attribution tests @​copyberry
  • #34796 Skip syntax highlighting for lines over 4 KiB @​copyberry
  • #34797 Suppress omission notices in core-compatible skill catalogs @​copyberry
  • #34806 Use path URIs in shell approval keys @​copyberry
  • #34808 Centralize SQLite connection configuration @​copyberry
  • #34811 Fix network access rendering in sandbox prompts @​copyberry
  • #34814 Consolidate thread startup around StartThreadOptions @​copyberry
  • #34816 Support configurable realtime BEM channel prefixes @​copyberry
  • #34819 Enable git attribution across Codex entry points @​copyberry
  • #34823 Run code-mode tests in non-Windows Bazel CI @​copyberry
  • #34824 Normalize Guardian review cwd reuse keys @​copyberry
  • #34825 Reduce cloning when building Responses requests @​copyberry
  • #34827 Remove Windows Bazel lint toolchain overrides @​copyberry
  • #34831 Flush analytics before in-process app server shutdown @​copyberry
  • #34835 Track compaction time in turn profiles @​copyberry
  • #34839 Preserve user input when MCP startup is interrupted @​copyberry
  • #34840 Add persisted thread pinning to the app server @​copyberry
  • #34844 Remove first-party type from app metadata @​copyberry
  • #34845 Track multi-agent mode in world state @​copyberry
  • #34846 Allow custom providers to opt into standalone web search @​copyberry
  • #34847 Use Guardian model limits for review sessions @​copyberry
  • #34849 Cache remote plugin catalogs by scope @​copyberry
  • #34850 Disable image generation for Free-plan accounts @​copyberry
  • #34851 Use batch metadata for plugin app summaries @​copyberry
  • #34852 Wake sleeping threads for queued agent mail @​copyberry
  • #34877 Wait for local plugin cache refreshes in plugin/list @​copyberry
  • #34883 Set a default user agent for MCP HTTP requests @​copyberry
  • #34887 Allow disabling the multi-agent wait tool @​copyberry
  • #34910 Prefer releases.openai.com in standalone installers @​copyberry
  • #34930 Centralize thread MCP state in McpRuntime @​copyberry
  • #34931 Use the API plugin marketplace for Amazon Bedrock @​copyberry
  • #34940 Keep session defaults static during config batch writes @​copyberry
  • #34952 Reuse MCP connections across runtime refreshes @​copyberry
  • #34957 Replace closed MCP connections during reconciliation @​copyberry
  • #34959 Handle @​ in local marketplace paths @​copyberry
  • #34962 Move MCP connection helpers into the test module @​copyberry
  • #34969 Keep the sleep tool outside code mode @​copyberry
  • #34978 Honor disabled redirects in route-aware HTTP clients @​copyberry
  • #34979 Infer the bundled Claude Code plugin marketplace @​copyberry
  • #34981 Record externally completed agent config imports @​copyberry
  • #34986 Enforce single-writer ownership for paginated threads @​copyberry
  • #34989 Preserve timestamps when importing external agent sessions @​copyberry
  • #34991 Allow omitting MCP tool prefixes per server @​copyberry
  • #34994 Honor the configured SQLite home across state consumers @​copyberry
  • #34995 Initialize execution environments with the final HTTP policy @​copyberry
  • #34996 Separate Codex error details from retry metadata @​copyberry
  • #34997 Warn when skill catalogs exceed their context budget @​copyberry
  • #35000 Make TUI turn interrupts nonblocking @​copyberry
  • #35011 Keep side conversations open when switching threads @​copyberry
  • #35012 Expose remote skill icon URLs through app server @​copyberry
  • #35013 Support incremental replay of updated thread items @​copyberry
  • #35015 Align installed app duration metrics with the legacy baseline @​copyberry
  • #35016 Add trusted plugin script attribution @​copyberry
  • #35020 Attribute command executions to trusted plugin scripts @​copyberry
  • #35021 Adapt keyboard event reporting to the terminal @​copyberry
  • #35023 Route exec-server HTTP through configured proxy policy @​copyberry
  • #35028 Preserve refreshed Apps tools across MCP runtime updates @​copyberry
  • #35029 Preserve plugin attribution across command approvals @​copyberry
  • #35031 Enforce writer ownership for thread archive and deletion @​copyberry
  • #35033 Expose Browser Use requirements through the app server @​copyberry
  • #35034 Route environment registry requests through the shared HTTP client @​copyberry
  • #35036 Preserve Windows sandbox proxy settings in guardian sessions @​copyberry
  • #35048 Track app/read request duration @​copyberry
  • #35049 Register the Guardian V2 feature flag @​copyberry
  • #35054 Allow disabling the update_plan tool @​copyberry
  • #35056 Route exec-server WebSockets through configured proxies @​copyberry
  • #35059 Decouple exec-server HTTP from reqwest types @​copyberry
  • #35063 Track deferred tool namespaces in world state @​copyberry
  • #35065 Avoid duplicating deferred sources in tool search @​copyberry
  • #35067 Fix Bazel test configuration for platform-specific data @​copyberry
  • #35078 Add WebSocket transport to the code-mode host @​copyberry
  • #35098 Support remote code-mode hosts in app-server @​copyberry
  • #35105 Support Agent Plugins manifests @​copyberry
  • #35106 Allow hosts to customize wait_for_environment descriptions @​copyberry
  • #35144 Prewarm MCP runtime updates in the background @​copyberry
  • #35146 Refresh MCP runtimes when session auth changes @​copyberry
  • #35151 Reconnect MCP servers on explicit refresh @​copyberry
  • #35164 Encapsulate MCP refresh coordination @​copyberry
  • #35168 Route extension warnings to app-server threads @​copyberry
  • #35172 Compact host skill paths under metadata pressure @​copyberry
  • #35175 Wait for reloaded worker completion in the resume test @​copyberry
  • #35184 Expose executor skills through skill tools @​copyberry
  • #35194 Preserve output from hooks that exit before reading stdin @​copyberry
  • #35196 Make the Apps recovery exposure test deterministic @​copyberry
  • #35198 Enable resource reads for explicit executor skills @​copyberry
  • #35204 Refresh MCP runtimes across thread startup @​copyberry
  • #35205 Use current MCP authority for elicitation reviews @​copyberry
  • #35213 Refresh managed MCP requirements for active threads @​copyberry
  • #35216 Refresh MCP config independently across threads @​copyberry
  • #35220 Support paginated thread forks @​copyberry
  • #35221 Avoid persisting non-local threads for hook transcripts @​copyberry
  • #35238 Support the ent26 enterprise plan @​copyberry
  • #35239 Route MCP auth discovery through runtime HTTP clients @​copyberry
  • #35251 Support ephemeral forks of paginated threads @​copyberry
  • #35254 Expose workspace plugin publish capability @​copyberry
  • #35261 Propagate remote plugin IDs to skill metadata @​copyberry
  • #35262 Track remote plugin IDs in skill invocation analytics @​copyberry
  • #35264 Sign bundled macOS helper binaries @​copyberry
  • #35266 Allow disabling the in-process code-mode host fallback @​copyberry
  • #35267 Harden network approval cancellation and concurrency @​copyberry
  • #35271 Include code-mode tool names in Responses Lite metadata @​copyberry
  • #35275 Trace remote exec-server connection setup @​copyberry
  • #35280 Skip plugin MCP filtering when no allowlists are configured @​copyberry
  • #35359 Handle exec-server network policy requests in the client @​copyberry
  • #35363 Include item start times in completion events @​copyberry
  • #35364 Bound Code Mode metadata compatibility headers @​copyberry
  • #35365 Keep unified mention results fresh @​copyberry
  • #35375 Make the keymap action menu responsive @​copyberry
  • #35408 Ignore generated system skills in the skills watcher @​copyberry
  • #35414 Raise the MCP server recursion limit @​copyberry
  • #35523 Shut down the in-process outbound router explicitly @​copyberry
  • #35524 Preserve terminal turn errors in replayed history @​copyberry
  • #35525 Skip inactive TUI threads without pending user interaction @​copyberry
  • #35530 Track model and personality in world state @​copyberry
  • #35537 Add managed policy for in-app updates @​copyberry
snyk/cli (aqua:snyk/cli)

v1.1306.2: v1.1306.2

Compare Source

1.1306.2 (2026-07-27)

The Snyk CLI is being deployed to different deployment channels, users can select the stability level according to their
needs. For details please see this documentation

Bug Fixes

  • language-server: Improved authentication handling in the Snyk Language Server, which powers Snyk's IDE integrations. (3afb07a)
  • deps: Updates dependencies to fix vulnerabilities:
    • SNYK-GOLANG-GOOGLEGOLANGORGGRPCINTERNALXDSRBAC-18172577 (11d1660)
sst/opencode (aqua:sst/opencode)

v1.18.10: v1.18.10

Compare Source

Core

  • Discover available Modal models automatically. (@​devennavani)

Desktop

Improvements

  • Prevent adding the same attachment more than once.
  • Always show the new session button.
  • Improve toast notifications with better stacking, dismissal, and mobile layout.
  • Refine tab hover, active, and overflow states.

Bugfixes

  • Repair malformed saved tabs so broken tab state no longer persists across launches. (@​OpeOginni)
  • Hide the model variant selector until model data finishes loading.
  • Preserve the custom agent picker for existing users.

Thank you to 3 community contributors:

  • @​lakshyaag-tavily:
    • docs(ecosystem): add opencode-tavily plugin (#38709)
  • @​devennavani:
    • feat: discover Modal models (#39066)
  • @​OpeOginni:
    • fix(app): repair malformed persisted tabs (#39645)

v1.18.9: v1.18.9

Compare Source

Core

Bugfixes

  • Restored compatibility with legacy MCP SDK clients.

Desktop

Bugfixes

  • Fixed a Solid cleanup crash that could break navigation in the desktop app.
  • Fixed home session loading so the session list can update without suspending the whole page.

Improvements

  • Removed the extra vertical borders from the V2 home projects view.
  • Added an opt-in V2 desktop sidecar backed by the bundled CLI service.
  • Added collapsible model provider sections in V2 settings.

Thank you to 1 community contributor:

  • @​roborew:
    • fix(desktop): patch @​dnd-kit/solid to preserve core scroll plugins (#38119)

v1.18.8: v1.18.8

Compare Source

Core

Improvements

  • Improved compatibility with newer MCP servers and OAuth flows.

Bugfixes

  • Reconnects MCP servers after expired SDK sessions, including concurrent requests.
  • Honors configured MCP OAuth callback ports in mcp debug.
  • Stops sending deprecated sampling defaults to newer Gemini models.

Desktop

Improvements

  • Added a shortcut to open the project selector in new sessions.

Bugfixes

  • Tab keyboard navigation now follows the visible tab order.
  • Opening files now expands Windows folders with trailing separators.
  • Server status uses blue when an integration needs attention.
  • Provider connection state now refreshes immediately after changes.
  • Linux packages now install AppStream metadata. (@​develop7)
  • Local desktop runs now use the channel database.
  • Prevents freezes when closing projects from the home view.
  • Prevents the right panel from freezing the session view while loading.

Thank you to 2 community contributors:

  • @​OpeOginni:
    • fix(core): correct MCP environment field in built-in skill (#39175)
  • @​develop7:
    • fix(desktop): install AppStream metainfo in Linux packages (#36872)

v1.18.7: v1.18.7

Compare Source

Desktop

Bugfixes

  • Remove the extra titlebar inset in fullscreen on macOS.
  • Keep command palette entries from reappearing incorrectly when shadowed commands are removed.
  • Add scrolling to the project selector dropdown when the list is long. (@​david1gp)

Thank you to 2 community contributors:

  • @​ProdigyRahul:
    • fix(ui): keep mutable selects open (#39027)
  • @​david1gp:
    • fix(app): add scroll to project selector dropdown (#39016)

v1.18.6: v1.18.6

Compare Source

Core

Bugfixes

  • Fixed branch-specific repository caches so refreshing one reference no longer moves another branch checkout.

Desktop

Improvements

  • Improved compatibility with the newer client API across directory, project, session, and terminal flows.

Bugfixes

  • Fixed legacy MCP state refreshing when opening a V1 workspace.
  • Fixed provider lists not refreshing after connecting a provider or finishing provider OAuth on V1 servers.
suzuki-shunsuke/ghtkn (aqua:suzuki-shunsuke/ghtkn)

v0.3.4: v0.3.4

Compare Source

suzuki-shunsuke/ghtkn@v0.3.3...v0.3.4

This is arguably the most innovative release so far.
Here are the highlights picked from the many updates.
Please refer to the documentation for details.

  1. Action Required: Fix Renovate Configuration #508 Support automatic access token renewal with refresh tokens.
  2. Action Required: Fix Renovate Configuration #508 The agent's architecture was revisited, and the device flow now runs on the agent side instead of the client. This makes it possible to confine refresh tokens to the agent, and it also shrinks the client's responsibilities, making it easier to run in a sandboxed environment.
    1. A protocol version between the agent and the client was defined as well
  3. The information the ghtkn info command outputs was expanded, making it more useful for troubleshooting. As described below, this also helps coding agents solve problems autonomously
  4. ghtkn became more AI friendly. We aim for a state where coding agents can understand ghtkn autonomously, troubleshoot it, and answer users' questions
  5. chore(main): release 0.29.0 #526 Fixed a bug where the git-credential command failed on the store and erase actions

Refreshing access tokens

Authenticating every 8 hours is no longer necessary.
This feature is designed with great care for security, and to keep it secure it comes with certain restrictions, such as being supported only on the agent backend on Linux and macOS.
The agent backend was originally intended for environments where the keyring backend does not work, but on Linux and macOS the agent backend may become the mainstream choice going forward.
If a similar tool supports the same kind of automatic renewal without restrictions like ghtkn's, chances are ghtkn is the one paying more attention to security.

AI friendly

ghtkn became more AI friendly.
We aim for a state where coding agents can understand ghtkn autonomously, troubleshoot it, and answer users' questions.

  1. chore: upgrade trunk #493 Added the ghtkn docs list and ghtkn docs show commands, which output the list and the contents of the documentation for coding agents.
    1. The content is the same as the Agent SKILL, but unlike a skill, an agent can read it as long as ghtkn is installed, without the user installing the skill.
    2. Because the human-facing documentation and the skill are unified and embedded at build time, the two never drift apart
  2. Adding the ghtkn docs command is meaningless if agents never notice the command exists. Added pointers to the ghtkn docs command in README.md, ghtkn -v, the help and info commands, and error messages, so that coding agents notice the ghtkn docs command and use it autonomously
  3. chore(deps): update ⬆️ gomod patching to 8b4c13b #539 Added a warning to the documentation to prevent incidents where a coding agent mistakenly prints an access token and leaks it. Agents read this warning through the docs command, which contributes to actually preventing accidental leaks
  4. Created guides for running ghtkn inside the Claude Code and Codex sandboxes (claude, codex)

💡 Please Update tools using ghtkn-go-sdk

If you're using these tools which are using ghtkn-go-sdk, please update them.

suzuki-shunsuke/pinact (aqua:suzuki-shunsuke/pinact)

v4.1.1: v4.1.1

Compare Source

suzuki-shunsuke/pinact@v4.1.0...v4.1.1

Dependency Updates

#1634 Update Go to v1.26.5

#1659 Update module github.com/suzuki-shunsuke/ghtkn-go-sdk to v0.5.0
#1622 Update module github.com/urfave/cli/v3 to v3.10.1
#1633 Update module github.com/google/go-github/v88 to v89

#1646 Update dependency sigstore/cosign to v3.1.2
#1653 Update dependency anchore/syft to v1.49.0
#1657 Update dependency goreleaser/goreleaser to v2.17.1

vercel-labs/agent-browser (aqua:vercel-labs/agent-browser)

v0.33.1: v0.33.1

Compare Source

Behavior Changes

  • The daemon now ships a default idle timeout of 1 hour: after an hour with no commands or dashboard input it saves configured restore state, closes the browser, and exits, so integrations that die without calling close no longer leak the daemon and its Chrome tree indefinitely. Sessions without --restore or another restore key discard transient browser state and open tabs when they shut down. Set AGENT_BROWSER_IDLE_TIMEOUT_MS=0 to restore the old always-persist behavior, or any other value to tune it. Dashboard mouse, keyboard, and touch input reset the timer. The default never closes headed browsers, including Safari and iOS WebDriver sessions, or user-attached browsers that may be in direct human use. Provider-owned cloud browsers remain eligible for cleanup, and an explicitly configured timeout applies to all browsers, as before (#1605)

Bug Fixes

  • Fixed tab recovery and selection to avoid daemon hangs on Memory Saver-discarded tabs by selecting a live renderer on CDP connect, reviving tabs on switch or after close, treating dialog-blocked tabs as live, preserving refs on rejected operations, and surfacing recovery state across CLI, JSON, and MCP output (#1543)
  • Fixed a11y selector errors to report invalid CSS selectors cleanly instead of exposing raw browser evaluation stack traces in text and JSON output (#1604)

Contributors

  • @​ctate
  • @​Railly
  • @​joelhooks
  • @​jadenfix
walles/moor (aqua:walles/moor)

v2.16.1: v2.16.1: Fix freeze when searching huge lines with many hits

Compare Source

Before this release, searching a huge line (hundreds of MB long) for a
common character could take ten seconds of full CPU before hits got
highlighted, and pay that same cost again on every redraw.

With this release, that same search is close to instant.

v2.16.0: v2.16.0: Stop moor from freezing on huge lines

Compare Source

Before this release, opening a file containing a huge line would take
enormous amounts of time to read that line, and never get further into
the stream.

With this release, moor can now read a file with a 250MB line in about
a second.

Also in this release:

v2.15.2: v2.15.2: Handle hostile terminal environments

Compare Source

Some programs put the terminal into a mode of their own choosing while
moor is still running.

Known culprits are cmd.exe on Windows, and Node.js on all platforms when
piping its output into moor.

Before this release, that could make moor miss arrow keys and sometimes
print garbage to the console.

With this release, moor sets the terminal mode it needs as it goes, so
navigation keys keep working regardless. This also covers coming back
from an editor launched with "v", which on Windows could ignore
navigation keys for many seconds afterwards.

On Windows this also fixes moor sometimes leaving the terminal in a
broken state after exiting.

Also in this release:

  • Support for the Unicode 17.0.0 tables in the upcoming Go 1.27, through
    an updated charlievieth/strcase dependency
EmbarkStudios/cargo-deny (cargo:cargo-deny)

0.20.2

Compare Source

Changed

  • PR#881 refactored the CLI, moving some duplicated options/flags into the root and removing several deprecated options/flags/values. See the PR for a full list of changes.

Added

  • PR#879 resolved #873 by adding a new bans.std-replacements lint which checks the graph for crates.io sourced crates that have been partially or fully replaced in std and/or core.

Fixed

  • PR#880 resolved #765 by respecting non-default build script paths in manifests.
  • PR#881 resolved #874 by cleaning up the CLI, deduplicating some options/flags that caused the bug in the list subcommand.
aquaproj/aqua (github:aquaproj/aqua)

v2.62.2: v2.62.2

Compare Source

aquaproj/aqua@v2.62.1...v2.62.2

Features

#5085 Update github.com/suzuki-shunsuke/ghtkn-go-sdk v0.4.1 to v0.5.0

https://github.com/suzuki-shunsuke/ghtkn-go-sdk/releases/tag/v0.5.0

@scottames-github-bot

Copy link
Copy Markdown
Contributor
backnotprop/plannotator (github:backnotprop/plannotator)

v0.25.1: v0.25.1

Compare Source

Follow @​plannotator on X for updates


Missed recent releases?
Release Highlights
v0.25.0 Vim keyboard controls, Approve with Notes, scriptable annotate gates, persistent Guided Reviews, memory and file-watching hardening
v0.24.2 Annotate YAML/JSON/TOML config files, XDG data directory support, Codex model catalog update, Cursor sandbox escape hatch
v0.24.1 Annotate accepts parent-relative ../ file paths
v0.24.0 PR/MR artifact gallery, GitButler review support, port ranges, expanded comment editor, OpenCode + Pi fixes
v0.23.1 Startup no longer hangs on large or slow directory trees, Ask AI input stays visible after long responses
v0.23.0 Plan approval fix for Claude Code 2.1.199+, annotate mode version diff, binary-only --minimal install, reviews post without attribution
v0.22.0 Git-status "All changes" default review view, Commits panel with per-commit diffs, Guided Review, Pi + GitHub Copilot CLI review engines
v0.21.4 Markdown math rendering, PR Overview panel with annotatable description and comments, agent instructions in code review, media parsing fixes
v0.21.3 File comments in code review, unified click-to-highlight comments, VS Code clipboard/keyboard bridge, Codex Ask AI on app-server transport, CLI subcommand help
v0.21.2 Custom reviews as Agent Skills, Cursor + OpenCode review engines, whole-file/general findings, deleted-annotation fix, Codex Ask AI outside git repos
v0.21.1 Annotate-last blank-page fix on multi-message sessions

What's New in v0.25.1

Eight pull requests landed since v0.25.0, six of them from community members, and four authors made their first contribution. The release stops code review from launching Codex when you never asked for it, teaches plannotator last which conversation you are actually in, adds Claude Opus 5 to the model pickers, and mirrors approved plan checklists into editable pi-todos. Two fixes came out of pre-release QA rather than a report.

Opening a review no longer launches Codex

Constructing the AI runtime ran Codex model discovery immediately, which meant that simply opening a code review spawned a codex app-server process. Users who had Codex installed but never intended to use it got a stray process, and on macOS the launch could raise a Gatekeeper prompt in front of a review they were trying to read.

Discovery is now deferred until a Codex session actually starts, or until you explicitly select Codex in the provider picker. Selecting Codex activates it and refreshes the model list on that gesture, so the real catalog and per-model reasoning-effort options still appear before you pick anything. Saved model preferences are left alone rather than being overwritten by a placeholder.

plannotator last follows the live conversation

Two separate bugs made plannotator last annotate the wrong message.

In Claude Code, /rewind does not remove anything from the session transcript. It re-parents the next message to an earlier point and leaves everything after that orphaned in the file forever. Reading the file bottom-up therefore offered messages that were no longer part of the conversation. The message picker now walks the conversation tree from the newest entry back to the root, so rewound branches stay out. On a linear session the result is identical to before, and a transcript whose structure cannot be trusted falls back to the previous behavior rather than returning nothing.

In GitHub Copilot CLI, plannotator last picked a session by file order and would silently annotate a stale transcript instead of the live one. Copilot CLI exposes no environment fingerprint, so the fix walks the process ancestry and matches it against Copilot's own session lock files, which identifies the live session deterministically even with several sessions open in the same directory.

  • Transcript tree walk by @​BrandonNoad in #1141
  • Copilot session routing by @​mararn1618 in #1150, closing #1149

Approved plan checklists mirror into pi-todos

Under Pi, an approved plan's checklist lived only in the plan and the progress widget. If you also use pi-todos, your todos and your plan were two separate lists.

On plan approval, Plannotator now detects pi-todos and mirrors the approved checklist into it, closing each todo as the agent completes the corresponding step. Sync is one-way, so reordering or rewording a todo can never desync plan execution. The mirror is additive: the existing progress widget stays exactly as it was, because pi-todos renders its list on demand rather than continuously, and replacing a live display with files behind a keystroke would be a downgrade. It is inert when no provider is present, and PLANNOTATOR_TODO_PROVIDER=off turns it off entirely.

  • Authored by @​jms830 in #1139, implementing the one-way half of #484

Abandoned annotate gates stop waiting forever

A structured annotate gate (--gate --json) blocks until the reviewer decides. If every review surface was closed without a decision, nothing ever settled and the calling script waited indefinitely.

Each open review surface now holds a lease over a heartbeat stream. Once at least one client has connected, closing the last one starts a 30-second reconnect window; reconnecting inside that window continues the same review, and expiry resolves the gate as the same dismissed decision an explicit Close produces. The saved annotation draft is deliberately kept, so an abandoned review can still be recovered. Page lifecycle events are not used for this, because reload and navigation fire the same events as abandonment and cannot be told apart. A session that never receives a client never auto-dismisses, so browser-launch failures still need a timeout on the caller's side, and remote sessions keep the behavior off because a tunnel disconnect would read as an abandoned review.

Claude Opus 5

Claude Opus 5 is available in the Ask AI model picker and in the review-agent model list that Review Agents, Code Tour, and Guided Review launch from. Launched review jobs now default to Opus 5 instead of Opus 4.7. Existing saved model preferences are untouched: this changes the default for anyone who has not chosen a model.

  • Authored by @​backnotprop in #1151

Approving with notes now reaches Amp and Droid

Approve with Notes shipped in v0.25.0, but the Amp and Droid adapters dropped the feedback field on approved decisions. Approving with annotations sent a bare "Approved." and the notes were lost. Both adapters now surface the notes, using the same wording the other runtimes already emit.

  • Authored by @​Souptik96 in #1146, closing #1137

Additional Changes

  • Reopening search selects the existing query. Pressing Cmd/Ctrl+F in code review with text already in the search box now focuses the input and selects its contents, so typing replaces the old query instead of appending to it. Matches how browser find behaves. By @​omederos in #1152
  • Pi no longer crashes after plan approval in headless sessions. Pi 0.69 and later invalidate an extension's session context on teardown, and every call on a stale context throws. The post-approval continuation timer polled that context, so a session ending underneath it (headless plan runs, or /new immediately after approving) killed the whole Pi process. The continuation now cancels instead, and the fire-and-forget browser open no longer crashes Pi through an unhandled rejection when a launcher fails. Closing #1140
  • The pi-todos mirror stays inside the project. Found in pre-release QA: a repository shipping .pi/todos as a symlink pointing elsewhere had the plan checklist written to the symlink target. The implicit <cwd>/.pi/todos path must now resolve inside the project or the provider reads as absent. An explicitly configured PI_TODO_PATH is still honored anywhere, since that is the user's own choice.
  • The abandoned-gate fix now covers OpenCode. Also found in pre-release QA: three of the four places that start an annotate server were wired for lease-based dismissal, and OpenCode's /plannotator-last bridge was missed, so it still hung on abandonment. It is wired now, with a test that checks every call site so the next one cannot be missed the same way.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@&#8203;plannotator

Then in opencode.json:

{
  "plugin": ["@&#8203;plannotator/opencode@&#8203;latest"]
}

Pi: Install or update the extension:

pi install npm:@&#8203;plannotator/pi-extension

What's Changed

  • feat(pi): mirror plan checklist to pi-todos by @​jms830 in #1139
  • feat(ai): add Claude Opus 5 across providers and review agents by @​backnotprop in #1151
  • fix(hook): read annotate-last from Claude Code's transcript tree, not file order by @​BrandonNoad in #1141
  • fix(amp,droid): surface Approve-with-Notes feedback instead of dropping it by @​Souptik96 in #1146
  • fix(hook): route annotate-last to the live Copilot CLI session by @​mararn1618 in #1150
  • feat(annotate): dismiss abandoned gate sessions by @​rNoz in #1143
  • fix(ui): focus and select existing review search text by @​omederos in #1152
  • fix(ai): defer Codex model discovery until a Codex session starts by @​rNoz in #1145

New Contributors

  • @​jms830 made their first contribution in #1139
  • @​Souptik96 made their first contribution in #1146
  • @​mararn1618 made their first contribution in #1150
  • @​omederos made their first contribution in #1152

Contributors

@​rNoz filed and fixed both of this release's runtime problems on the Pi and Codex side. #1144 identified that Codex discovery ran during AI runtime construction, which is what made opening any review launch Codex, and #1142 identified that structured annotate gates never settled once every client disconnected. Both PRs arrived tested, and the lease design in #1143 is careful work: it infers presence from a connection rather than from page lifecycle events, which is what makes reload and navigation distinguishable from abandonment.

@​BrandonNoad diagnosed the /rewind behavior in Claude Code transcripts, wrote it up clearly enough that the fix was easy to reason about, and helped settle the compaction edge case during review.

@​mararn1618 reported the Copilot CLI staleness in #1149 and had the fix open within the day, including the lock-file approach that makes live-session detection deterministic rather than a guess.

@​jms830 implemented the pi-todos mirror as a first contribution, including a TodoProvider interface that leaves room for other providers, and traced pi-todos and oh-my-pi carefully enough to argue for an additive mirror instead of replacing the progress widget. The reasoning was recorded in the code rather than lost in the thread.

@​Souptik96 fixed the Amp and Droid approve-with-notes gap, matching the wording the other runtimes already use rather than inventing a new shape for those two adapters.

@​omederos fixed the review search field so reopening it selects the existing query, which is how browser find has always worked.

@​JayGhiya asked for pi-todos interoperability in #484 and described why it mattered: todos in pi-todos are editable, which makes them good for steering. That request is what #1139 implements.

Full Changelog: backnotprop/plannotator@v0.25.0...v0.25.1

janosmiko/lfk (github:janosmiko/lfk)

v0.15.15: v0.15.15

Compare Source

0.15.15 (2026-07-27)

Features

  • taints: add a picker for widely used taints (#565) (1e3b7f1)

Bug Fixes

  • actions: target the correct API group when two kinds collide (#566) (5eddf5f), closes #562
  • details preview without labels and fast terminal scrolling buttons (#568) (57b33da)
  • sort: derive Status order from the shared severity classifier (#563) (4a46cf6)
  • taints: keep the effect field visible in the add-row (#564) (a12df04)
max-sixty/worktrunk (github:max-sixty/worktrunk)

v0.70.0: 0.70.0

Compare Source

Release Notes

Improved

  • wt step prune removes worktrees far faster: Each removal ran a serial chain of ~17 git subprocesses under the scan write lock, re-preparing a plan the scan had already computed and re-stating the worktree right after the fsmonitor daemon stop. The chain is now one check per guarantee, reusing the scan-time plan, and removals run concurrently on the scan lock's read side — the write side is kept for the candidates that need it (hook-bearing, --foreground, metadata-pruning, and the current worktree). The documented rust-scale live prune of 24 candidates goes from ~12 s to ~0.6 s wall, and the prune_e2e/live benchmark from ~620 ms to ~400 ms. (#3617, #3631)

  • wt step prune --format=json is ordered, and a failed removal aborts the rest: Live JSON output is now sorted by scan index, matching --dry-run, with the current worktree last. The first failing removal drains the remaining queue unexecuted, matching the serial loop it replaced; in-flight removals complete. (#3631)

  • A worktree can be named by its path wherever a branch is accepted: Every argument that takes a branch now also accepts the worktree's own path, resolved after the branch so a directory never shadows a branch sharing its name. A path names what a branch cannot — a detached worktree, or one of two checkouts of the same branch. Relative paths resolve against -C and a leading ~ against the home directory, so a path worktrunk printed can be pasted back. Docs (#3607)

  • wt list flags a branch checked out in more than one worktree: Such a branch resolves to whichever worktree git lists first, so every worktree on it now carries worktree.state "duplicate_branch" in schema 1, a worktree.duplicate_branch boolean in schema 2. The flag makes the ambiguity visible in the listing; resolving such a branch from any command warns separately and names a duplicate to drop. (#3480, #3606)

  • wt switch --execute computes only the template variables its command names: The switch path built every variable the template context could hold before rendering; it now resolves just the ones the command references. On a clone with no origin/HEAD and no cached default branch, that removes a git ls-remote the command never asked for — 13 subprocesses and one remote query down to 8 and none. (#3628)

Fixed

  • A branch checked out in a second worktree is retained on removal, -D included: wt remove and wt step prune now act on the worktree named rather than the branch's first checkout, and all three of wt remove, wt step prune, and wt merge keep the branch while another worktree still has it out — deleting the ref would leave that worktree unable to resolve HEAD, which is why git branch -d refuses the same delete. The retention is reported and names the surviving checkout rather than passing silently. (#3533)

  • Removal reports what it took, not what it selected: A removal's summary and JSON described the plan, so a worktree candidate whose branch was retained still counted as ✓ Pruned 1 branch, and wt remove --format=json reported "branch_deleted": true beside a stderr line saying the branch was kept. Execution now returns the branch's fate; wt step prune counts executed outcomes (--dry-run included), both JSON payloads gained branch_deleted, and a declined orphan deletion drops out of the removed list rather than being reported as removed. (#3633, #3637)

  • Hook previews expand every variable except vars.*: One vars. token disabled expansion for the whole command, so wt hook show --expanded and wt hook <type> --dry-run printed {{ branch }} and {{ repo }} raw in a listing whose job is to show the expansion. A preview now substitutes a stand-in that renders each vars.* reference back as itself, nested access included, while every other variable expands — and no longer spawns the git read that resolving vars required. The listing is also derived from the execution path itself, so a context key added there reaches the preview with no second edit. wt config alias dry-run shares the renderer, so its help text — which still described the all-or-nothing behavior — was corrected to match. (#3635, #3638, #3639)

  • wt hook show no longer prints a bare heading for an empty command list: A hook type declared as post-switch = [] has a config entry but no commands, and the section decided it had printed something from the entry rather than from the rows — so it emitted its heading and stopped, and the (none configured) line never appeared. Both the user and project sections carried the bug, since the loop and the fallback were duplicated; they now share one renderer that reports whether it wrote any rows. The execution path was already correct: an empty list announces nothing and is omitted from JSON. (#3641)

  • wt config shell install reclaims its own legacy wrapper paths: Fish sources conf.d at startup, so a stale conf.d/{cmd}.fish was already loaded by the time fish would autoload the functions/{cmd}.fish the install had just written — the old definition won and the new wrapper never loaded. Install decided ownership by reading the file, and left anything unrecognized in place. Ownership now comes from the path: conf.d/{cmd}.fish and the stranded nushell {cmd}.nu candidates are paths worktrunk computes for the command being installed, so it takes them back whole, unread. Only that exact filename is touched — a neighbour under another name is not worktrunk's — and each removal is reported. wt config shell uninstall still reads the header, because it takes no --cmd and so cannot know the name; it prompts and previews every file first. (Breaking: install now removes a file at those exact paths regardless of its contents.) (#3602)

  • Command timeouts actually bound wall-clock, and a default branch guessed while the remote was unreachable isn't cached: A timeout killed only the direct child, so a surviving grandchild held the output pipe open and the call ran on regardless — a 3 s bound measured at 120 s. A timed command now runs in its own process group and the whole tree is torn down on expiry, which fixes every existing bound including the fsmonitor and reap probes. On top of that, nothing in git bounds git ls-remote (an unreachable host costs ~127 s per address on Linux), so default-branch detection abandons the query after 10 s and falls back to local inference — without caching the result, so an outage can't make an inferred default branch permanent. (Breaking: because a timed command gets its own process group, Ctrl-C no longer reaches it; the command waits out the remaining bound.) (#3603)

  • wt step relocate no longer strands a worktree in its staging directory: When worktree A's target was held by worktree B, and B was itself blocked by a non-worktree path without --clobber, the dependency loop read the stall as a cycle, temp-moved A into .git/wt/staging/relocate/, then failed moving it into the still-occupied target — leaving A at neither its original nor its expected path. A worktree blocked by an immovable occupant is now skipped. (#3530)

  • Forge CLI failures are classified by response shape, not by the tool's prose: tea api copies the response body to stdout and exits 0, so an HTTP error never tripped the exit-code gate — a Gitea APIError body deserialized into {state: "", total_count: 0}, indistinguishable from a commit with no CI statuses, while the PR-list path blamed an API change for what was an API error. Failures from gh, glab, and tea are now keyed on the response envelope, and a non-zero exit keeps meaning the tool itself failed; the CLI's own error text is forwarded rather than reworded, so a bad token surfaces as gh: Bad credentials (HTTP 401) instead of a suggestion to re-authenticate. wt config show --full reports the Azure DevOps CLI extension alongside the other forge tools. (#3595, #3597, #3605)

  • wt config plugins claude install-statusline no longer mistakes another tool's statusline for its own: The check for an existing worktrunk statusline matched the bare substring wt , which an unrelated command like newt status satisfies — so wt config show reported a foreign statusline as worktrunk's, and the installer early-returned "already configured" and refused to install. It now matches the adjacent list statusline token pair, so it works whether the binary is wt, git-wt, or an absolute path. (#3595)

  • [list] task-timeout-ms is removed: The per-command bound is gone; [list] timeout-ms bounds the whole collect phase. A config that still sets it warns, and wt config update strips the key — in the top-level, project-scoped, and inline-table forms. (Breaking: the setting no longer has any effect. It was also, until this release, ignored for a command that carried its own bound.) (#3613, #3615)

Documentation

  • wt remove documents what retention protects: The branch-cleanup section's six conditions all ask whether deleting loses work; a branch checked out in a second worktree fails a different test, and the page now says so, alongside a new "Naming a worktree" section on wt switch. The FAQ's advice to git worktree lock a worktree holding precious ignored data now says what the lock actually buys — it blocks removal, and nothing else; wt merge and wt step push will still overwrite an ignored file the incoming commits track. (#3533, #3601, #3607)

  • Default-branch detection documents the remote-query bound: The detection ladder records that the git ls-remote step is abandoned after 10 s, that local inference covers the abandoned case, and that this is the one result not cached. (#3603)

  • wt step push records that destination-worktree safety matches git: Pushing overwrites an ignored file in the destination whose path the incoming commits track, exactly as a git merge run there would; the spec now says the match is deliberate. (#3614)

Internal

  • skim is back on a current release: The picker was held at skim 5.1.0 because 5.3.1 regressed the legacy Windows console — every picker PTY test failed on the keyboard progressive-enhancement path. 5.5.0 guards it, so the pin moves forward. (#3626)

  • Coverage uploads on every main commit: The coverage job shared one concurrency group with a sampled job that held it for ~2 h, so a queued coverage run was usually cancelled by the next merge — 29 of the last 40 main commits uploaded no report, which left later PRs comparing codecov/patch against a stale base. CI is now split by cadence into three workflows (ci every commit, coverage every commit keyed per-sha, affected sampled), so a merge train can't cancel a queued upload. (#3608)

  • /wt-switch-create creates the worktree by name and cleans up an untouched one: The shipped Claude skill now creates through EnterWorktree({name}) for the common case, falling back to a path, which avoids a confirmation prompt on recent Claude Code versions. A worktree created that way and never touched — no changed files, no commits — is removed when the session ends, branch included; anything written into it keeps it, and a worktree entered by path always stays. (#3636)

Install worktrunk 0.70.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.70.0/worktrunk-installer.sh | sh && wt config shell install

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.70.0/worktrunk-installer.ps1 | iex"; git-wt config shell install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download worktrunk 0.70.0

File Platform Checksum
worktrunk-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
worktrunk-x86_64-apple-darwin.tar.xz Intel macOS checksum
worktrunk-x86_64-pc-windows-msvc.zip x64 Windows checksum
worktrunk-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
worktrunk-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Install via Cargo

cargo install worktrunk && wt config shell install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install
modem-dev/hunk (github:modem-dev/hunk)

v0.17.7: v0.17.7

Compare Source

What's Changed

Full Changelog: modem-dev/hunk@v0.17.6...v0.17.7

nolabs-ai/nono (github:nolabs-ai/nono)

v0.70.0: v0.70.0

Compare Source

What's Changed

New Contributors

Full Changelog: nolabs-ai/nono@v0.68.0...v0.70.0

SocketDev/socket-cli (npm:socket)

v1.1.147: v1.1.147

Compare Source

What's Changed

Full Changelog: SocketDev/socket-cli@v1.1.146...v1.1.147

semgrep/semgrep (pipx:semgrep)

v1.172.0: Release v1.172.0

Compare Source

1.172.0 - 2026-07-28

### Added

  • Added support for the OpenTofu .tofu file extension. Because OpenTofu uses the same HCL grammar as Terraform, .tofu files are now automatically detected and scanned as Terraform, so they are picked up by recursive scans and Terraform rulesets (e.g. p/terraform) with no extra configuration. (ENGINE-2884)

### Changed

  • Updated the Ruby parser to tree-sitter-ruby v0.23.1, improving support for !=, case/when expressions with line breaks, and element references that take a block. (LANG-206)
  • The window for collecting git contributor information during semgrep ci has been extended from the last 30 days to the last 90 days, to match the updated usage policy. (contributor-window-90-days)

### Fixed

  • Semgrep will now print richer error messages on segfaults when --debug is NOT passed, matching the segfault error output when --debug is passed (engine-segv)
  • Fixed a source of rare, nondeterministic crashes and incorrect results caused
    by an OCaml compiler bug. Semgrep now builds against a compiler fork that
    backports the upstream fix. (ocaml_codegen_fix)
  • Fixed excessive heap growth after explicit major garbage collections. Semgrep
    now builds against an OCaml compiler that improves garbage collection duty
    cycle pacing. (ocaml_gc_pacing_fix)
  • Improved the Scan Status output when no code rules will run (e.g. a
    Secrets-only or Supply-Chain-only scan). The summary line no longer reports a
    confusing "0 Code rules", and the "Code Rules" section now states explicitly
    either that code scanning is not enabled or that there are no code rules to run,
    instead of printing an empty table. (ENGINE-2878)
  • Fixed lockfileless Gradle dependency resolution failing with "Parsing
    dependency output failed (Resolve_gradle.gradle_resolved_dependency)". The
    github-dependency-graph-gradle-plugin used during resolution was fetched
    unpinned, and its 1.4.2 release renamed keys in its JSON output. The plugin is
    now pinned to 1.4.1. (sc-3738)
jdx/usage (usage)

v4.1.0: v4.1.0: MCP server, repository metadata, and self-declared effects

Compare Source

Puts the effect= work from 4.0 to use: a new usage mcp server lets agents read command effects locally over stdio, the CLI declares effects for its own commands, and specs gain a repository field so consumers away from the checkout can find the source.

Added

  • usage mcp — serve a spec to an agent over stdio (#746 by @​jdx). A local Model Context Protocol server that speaks JSON-RPC 2.0 over newline-delimited stdio, so an agent can ask what a command does before running it. Load a spec with -f or -s (stdin is the transport, so --file - is rejected):

    usage mcp -f mycli.usage.kdl
    

    Two tools:

    • list_commands — the command tree, each entry tagged with its effect
    • describe_command — one command's help, flags, arguments, and the effect of each

    Effect is reported as an attribute alongside help and aliases; an unset effect stays null rather than defaulting to something reassuring, and the server instructions tell the client that a missing effect means ask. Hidden commands are excluded from listings by default, with include_hidden to opt back in. This is the first consumer of the effect= metadata now declared across roughly 385 commands in mise, hk, pitchfork, aube, and communique.

  • repository field on the spec (#747 by @​jdx). A plain top-level URL, mirroring what Cargo.toml, package.json, or pyproject.toml carry — declared as a repository "..." node at the top of a spec. Distinct from source_code_link_template (which is a per-command deep link with a {{path}} placeholder). Anything reading a spec away from its checkout — usage.sh, a registry, an agent handed a .usage.kdl — previously had no way back to the project it described. Round-trips through parse, merge, serialize, and template rendering.

  • usage CLI declares its own effects (#751 by @​jdx). Every command is now classified: most generate subcommands are read, with --out-file / --out-dir raising them to write; generate sdk is write at the command level (its output flag is required). Script runners (bash, fish, zsh, powershell, exec) are deliberately unclassified — their effect is whatever the user's script does — and a test asserts every unclassified command has an entry in UNCLASSIFIED with a reason. Also emits min_usage_version "4.0" so an older usage doesn't silently drop the annotation.

  • clap_usage::spec() (#743 by @​jdx). Returns the Spec derived from a clap::Command (with bin already set), so callers can annotate it before rendering:

    let mut spec = clap_usage::spec(&mut cmd, "mycli");
    spec.cmd.subcommands.get_mut("rm").unwrap().effect = Some(SpecCommandEffect::Destructive);
    println!("{spec}");

    generate() now delegates to spec() plus two writeln!s; a test asserts its output is byte-identical.

  • usage::available_flags is public (#746 by @​jdx), so consumers can enumerate flags the same way the parser does — respecting global merge and re-declaration rules.

Fixed

  • Re-declared globals keep their aliases on one flag (#752 by @​jdx). A global like flag "-y --yes" global=#true re-declared non-globally by a subcommand (optionally adding a third alias, e.g. -y --yes --assume-yes) could leave -y and --yes pointing at two different Arc<SpecFlag> objects, with the -y view missing the new alias. The collision guard now compares flag origins rather than Arc identity, and rebinds every existing alias for the global to the merged flag on first merge.

  • Completions for repeated variadic args (#753 by @​Jai-JAP). complete-word counted parsed positional entries to pick which arg to complete next, but variadic values all collapse into one entry — so after the first value, completion fell through to files. It now checks the parsed value per positional and keeps using the variadic arg's completer until var_max is reached.

Changed

  • clap_usage republished as 4.0.0 (#743 by @​jdx). crates.io still shipped clap_usage 2.0.3, pinned to usage-lib ^2.0.3, because its source hadn't changed since — blocking downstream crates from adopting effect=. It now tracks usage-lib's major, and the spec() addition means dependents no longer have to inline generate() and depend on usage-lib directly.

New Contributors

  • @​Jai-JAP made their first contribution in #753

Full Changelog: jdx/usage@v4.0.0...v4.1.0

💚 Sponsor usage

usage is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including mise, aube, hk, and more. Work on usage is funded by sponsorships.

If usage powers CLI specs, docs, or completions for a tool you maintain or use, please consider sponsoring at jdx.dev. Every sponsorship helps the project stay independent and moving.

Skipped Packages

Non-GitHub Sources

@renovate
renovate Bot merged commit fa80d45 into main Aug 3, 2026
6 checks passed
@renovate
renovate Bot deleted the renovate/mise-packages branch August 3, 2026 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants