🎁 New

New linter and formatter: psscriptanalyzer. Thanks @natescherer for the contribution!

  • New tool: kubectl

  • New tool: pwsh

✨ Improvements

  • Update trunk-toolbox definition

  • Simplify trunk-check-pre-push-always to use native invocation

✨ Improvements

  • Inline annotation settings changes are now applied dynamically.

  • The extension provides better information to the user if the LSP server fails to launch.

🎁 New

  • Add support for Ruff formatting.

  • Add support for commitizen. Thanks @natescherer for the contribution!

  • Add support for cmake-format. Thanks @tmpsantos for the contribution!

✨ Improvements

  • Eslint and prettier now operate on .mjs files.

  • Trunk now auto-detects all stylelint config file names.

  • Golangci-lint is now exposed as a tool.

🎁 New

  • Trunk actions now support the ${target} substitution in their run command. This will be replaced with all targets that triggered the actions.

  • Trunk actions now support the ${pwd} substitution in their run_from specification. This will be replaced with the user's current working directory.

  • File ignores can now specify the session type for when it should apply.

✨ Improvements

  • During trunk init, the tool will now provide a summary of all issues that currently exist in your repo.

  • trunk init now supports the --allow-existing flag, to gracefully handle the case where a repository was already initialized.

🔧 Fixes

  • LSP Server optimizations.

  • Trunk will now automatically keep you logged in as you use the tool.

  • Fix a bug where batch bisection would not kick in when a linter was killed by a signal.

🎁 New

  • New linter: biome

  • Parse prettier failure messages into issues

✨ Improvements

  • Add support for python@3.11.6

  • Limit default clang-tidy concurrency

  • Enable batching for more linters

  • Add testing for Trunk Actions

🔧 Fixes

  • Fix run_from for include-what-you-use

  • Disable caching for rustfmt

🎁 New

  • Rewrite linters now have the ability to emit diagnostics.

✨ Improvements

  • Git hooks are less noisy when there is nothing to do.

🔧 Fixes

  • Fix for include-what-you-use not running from the correct working directory.

  • When running sub-proccesses at a low priority, trunk will now ensure the priority is never raised.

  • Ensure environment variables for temporary folders are set for Windows sub-processes.

  • Fix for Windows when your repository is not on the C: drive.

  • Shell hooks fix for paths with special characters.

✨ Improvements

  • File items are auto-expanded in the tree view as soon as they have diagnostics

  • The Actions pane is no longer displayed when a repo is not open

🔧 Fixes

  • Fix a crash if the trunk logs directory is deleted.

  • Fix logic for watching for trunk initialization on the command line under certain circumstances

🎁 New

✨ Improvements

  • Improve checkov error handling to account for python issues

🔧 Fixes

  • Fix yarn download version gating

  • Fix codespell command definition to include name

✨ Improvements

  • Trunk will now respect .netrc when downloading files.

  • When a batched linter execution fails, trunk will now bisect the batch, and only tell the user about the file(s) that failed.

🔧 Fixes

  • Fix a bug where concurrent go installs could conflict with each other.

  • Fix a bug where the trunk-announce action would fail when creating a git worktree.

  • Fix a rare bug where trunk could consume a CPU core for an indefinite amount of time.

✨ Improvements

  • The notification to add trunk.yaml to git state is shown less frequently.

  • The Trunk launcher is now added to PATH on windows.

🔧 Fixes

  • Fixed issues where the extension attempted to auto-init within git submodules, even though the CLI does not allow this.

🎁 New

  • New tool: GitKraken

✨ Improvements

  • Allow black to format python interface files

  • Update mypy run_from to respect nested setups

  • Support graphite@>=1.0.0

🔧 Fixes

  • Support non-utf8 filepaths for checkov

  • Fix how tflint runs on newer version, and add docs for how to use global config

🎁 New

  • Announcing Trunk shell-hooks: Watches your current working directory to ensure that Trunk-managed tools, linters, and runtimes are available in PATH.

✨ Improvements

  • Trunk check will now hide pre-existing issues by default. The new --show-existing command-line flag can be used to show them.

  • Trunk check will now omit prompts if not running with an interactive terminal.

  • Trunk tools can now list extra packages to be installed.

  • Runtime-based tools (ie, python) must now be explicitly enabled.

🔧 Fixes

  • Several Windows fixes.

  • Fixes for Emacs-based LSP clients.

  • The LSP server will now limit the number of retries for linting files that are modified mid-run.

  • Miscellaneous fixes.

🎁 New

  • Added inline annotations in trunk.yaml to guide a user towards tracking their trunk.yaml in git.

🔧 Fixes

  • Fixed a bug where the extension attempted to initialize trunk when the workspace is not rooted in a git repository.

Trunk Merge now offers two modes for creating merge queues: "Single" and "Parallel". The Single mode operates as a standard first-in, first-out merge queue, where pull requests (PRs) are added and merged in the order they arrive. In Parallel mode, Trunk Merge can create multiple queues.

When a PR is added in Parallel mode, it checks if the changes in the PR impact the same areas as other PRs in the queue. Depending on this, the PR is either placed in an existing queue or a new one is created for it. This method allows PRs that don't interfere with each other to be tested and merged simultaneously, improving efficiency while ensuring accurate testing.

Excited to try out parallel mode? Some benefits you can expect are:

  • Parallel PR Testing/Merging: Dynamic queues allow simultaneous merging of related PRs across different code areas, avoiding delays from unrelated PRs.

  • Lower CI Burn: Only PRs affecting the same code areas are retested if a PR in the Merge Queue fails or is removed, lowering CI strain.

  • Scalable Merging: Parallel queues manage any number of PRs regardless of team size by focusing on interdependent PRs.

Getting Started:


  • This update aims to enhance productivity and reduce bottlenecks in the merge process, particularly for teams experiencing growth and increased PR volume.

  • Continuous integration and code quality remain a top priority, with the new system designed to uphold these standards while increasing efficiency.

🎁 New

  • The install flow is streamlined to guide users to a welcome page, or to open their trunk config, depending on their workbench state.

🔧 Fixes

  • Fixed issues for users with spaces in their install paths.

  • Fixed issues for detecting whether the user can init trunk in their current workspace state.

  • The extension now only opens trunk.yaml automatically on first time use after install.

🎁 New

  • New tools: gulptailwindcsstscwebpack.

  • New formatter: dotnet-format (MacOS support coming soon).

✨ Improvements

  • Change trufflehog to use --only-verified by default, reducing false positives.

  • Find line/col information from markdown-link-check.

  • Support running sourcery with open source license (currently incompatible on Windows).

  • Gate linter upgrade validation to also include Windows tests.

  • Add fix command for standardrb.

🔧 Fixes

  • Fix trufflehog line number errors.

  • Remove trunk install from codespaces setup.

  • Fix osv-scanner execution env.

🎁 New

  • The extension helps guide users towards committing their trunk.yaml.

🔧 Fixes

  • Fixed some telemetry issues

  • Fixed some additional issues with initialization in Windows.

🎁 New

  • Single-player mode will now auto-upgrade all linters periodically.

  • Linters now have a maximum concurrency setting. Trunk will never run a linter more than this number of times simultaneously.

✨ Improvements

  • Trunk now gives an error message when you include a version specifier in a disabled entry.

  • Added the --only-detected-formatters and --only-detected-linters flags

  • LSP Server de-deuplicates code actions.

🔧 Fixes

  • Fixed a memory leak in the daemon process.

🎁 New

  • The extension now streams logs to ${workspace}/.trunk/logs/vscode.log.

  • Made minor changes to verbiage in the UI.

🔧 Fixes

  • trunk.addToolsToPath now defaults to false.

  • Fixed an issue with some Windows users where install paths with spaces were not handled correctly.

  • Fixed a bug where the extension occasionally sent incorrect file contents on init.