Home
Changelog
improved
fixed
More bug fixes and stability improvements. Keep an eye on the plugins repo for a big new release coming soon!
✨ Improvements
  • When the computer is waking from sleep, don't schedule redundant time-based actions.
  • Ensure that the trunk daemon inherits no file descriptors from calling processes.
  • The
    trunk-fmt-pre-commit
    is now run in non-interactive contexts, such as vscode commit.
🔧 Fixes
  • Fix some trunk commands hanging when firewalls are active.
  • Increased stability of the LSP server.
  • Support parsing all issue levels in pylint.
  • Correctly call out how many new and existing issues have auto-fixes.
  • Support linter versions with pre-release semver tags.
  • Wait for filesystem events to settle down before checking for
    trunk.yaml
    deletion, which triggers daemon shutdown.
  • Fix a regression in spacebar skipping of checks in git hooks.
  • Fix bug where sometimes issues below the defined threshold were counted as blocking.
improved
fixed
Big emphasis on stability and bugfixes for this one!
✨ Improvements
  • Use JDKs instead of JREs for the Java 11 and Java 17 runtimes
  • Add support for
    trunk-ignore
    in SQL files
  • Return lint results in VSCode more responsively
🔧 Fixes
  • Add debug handling when a custom parser errors out
  • Teach
    trunk fmt
    to run
    svgo
  • Fix
    trunk-ignore-end
    parsing bug
  • Fix bug that would cause us to occasionally hang on shutdown
  • Fix
    ansible-lint
    integration starting from
    ansible-lint@5.4.0
  • Stop showing duplicate notices when running
    trunk check
  • Use linter configs from the appropriate commit, not the workspace, when running as a git hook
  • Fix
    trunk init -–lock
  • Make
    trunk check enable
    more resilient
new
fixed
🎁 New
  • Add support for
    clang-tidy@15.0.6
    and
    clang-format@15.0.6
🔧 Fixes
  • Fix internal handling of lint session completion
new
improved
fixed
🎁 New
  • New linter:
    kube-linter
    .
  • Cargo runtime support.
✨ Improvements
  • MacOS release binaries are now signed and notarized.
  • Action run commands now run in a bash shell by default.
  • Improved CLI display of multi-line linter messages.
  • trunk check enable
    now sets up default config files if the user does not already have one.
  • Linter definitions in plugin repositories can now specify default config files for users who don't already have one.
🔧 Fixes
  • Fix shebang scanning to allow arguments to the executable.
  • Fix for plugins finding
    packages_file
    relative to its definition path.
  • svgo now supports svgo.config.{js,mjs,cjs} instead of just .js.
  • Fix an empty file path header when an error occurs when running via a GitHub action.
new
improved
fixed
🎁 New
  • New command
    trunk deinit
    : Remove all traces of trunk from a repo.
  • Ability to save GitHub annotations to file for later uploading. This unlocks posting annotations from GitHub forks.
  • New command
    trunk check list
    : Lets the user know all available linters and how they apply to the current repo.
  • Integrate the Rome tool for formatting and linting.
✨ Improvements
  • If the user passed
    --no-fix
    , don't show auto-fix prompts at all.
  • Add a note to CLI output if there are any failures letting users know they can look at the details files.
  • Auto-fix prompts now have the
    all
    or
    none
    options.
  • trunk check
    now tells the user know how many issues have auto-fixes.
  • trunk check
    now tells the user know how many files were scanned.
  • Improved onboarding flow for enabling git hooks during init.
  • Make it clearer that formatting issues apply to the whole file.
  • Show the number of files each tool applies to on init and upgrade.
  • When a task failure contains a suggestion, show that to the user at the end of check output.
  • Give detailed error messages when trunk cannot determine your upstream git reference automatically.
  • Help text improvements.
  • Plugins will overwrite definitions instead of merging them, including previous plugins.
  • When using
    @SYSTEM
    Ruby, consider rbenv-installed Ruby versions with the highest priority.
  • Add support for additional versions of Python runtimes.
🔧 Fixes
  • Make daemon restarts more resilient.
  • Fix bug where
    trunk fmt
    would error when passed an absolute path outside the repository.
  • When linting C++, allow include scanning to fail for the upstream check.
  • Ensure we always shut down the daemon when trunk.yaml is deleted.
new
improved
fixed
🎁 New
  • trunk config print
    Prints the current merged configuration.
  • trunk config hide
    Hides trunk configuration from git, for users who wish to use trunk but not check the configuration into the repo.
  • trunk config share
    Unhides trunk configuration from git.
  • Add download support for
    .gz
    downloads which are not also tarred.
✨ Improvements
  • Trunk launcher no longer prompts to download the latest version.
  • Text styling improvements in the CLI.
  • Running
    trunk init
    while in single-player mode will ask to put trunk in shared mode.
  • Failures running linters are now shown at the end of CLI output.
  • Auto-detect bazel vs compile_commands.json.
  • Auto-load all compile_commands.json in the
    build/
    directory.
  • Auto-load any compile_commands.json in any parent directory of a file to be linted.
  • When a git hook fails, trunk now communicates the action that was the source of the failure.
🔧 Fixes
  • The
    trunk-check-pre-push
    action now correctly loads compile commands.
  • When trunk creates new configs during init in single-player mode, trunk now ensures they are formatted properly according to the repos configuration.
  • Fix edge case where vscode would not receive updated diagnostics from trunk.
  • Fix edge case where LLVM output paths would not be parsed correctly.
new
🎁 New:
  • Trunk single player mode:
    trunk init --invisible
    will add
    .trunk
    to your local git ignores (.git/info/exclude) so you can use trunk with commiting anything to your repository.
  • trunk init share
    will remove
    .trunk
    from your local git ignores if it exists.
  • trunk init hide
    will add
    .trunk
    to your local git ignores if it doesn't exist.
  • When checking for the latest version of tools, trunk now uses its own caching service to avoid GitHub api limits.
  • New default action: trunk-share-with-everyone, creates a notification to unignore .trunk when it is found in
    .git/info/exclude
    .
  • Swift support (macOS only):
    stringslint
    ,
    swiftlint
    ,
    swiftformat
✨ Improved:
  • Trunk will now watch
    trunk.yaml
    and turn on git hook management automatically when enabling git hooks.
  • Trunk will now stop managing git hooks when the last git hook is disabled.
  • When trunk configuration is invalid, the errors are now presented as diagnostics instead of an error message.
  • Trunk now respects the environment variable
    XDG_CACHE_HOME
    when downloading and installing tools.
  • You can now
    trunk init
    outside a git repo by passing
    --force
    .
  • Trunk now merges all
    plugin.yaml
    found in plugins, allowing self-contained linter directories.
🔧 Fix:
  • Local plugin development ....
  • --jobs
    now works properly with
    --ci
  • TFLint
    configuration now correctly allows exit code 1, without causing errors in Trunk.
new
🔧 Fix:
  • Fixes rare crash when interrupting
    trunk check
new
🎁 New:
  • --output-file
    writes JSON to a file instead of
    stdout
    .
  • Trunk now allows storing any linter configuration file in
    .trunk/config
    instead of at the root of the repo, to hide the mess.
✨ Improved:
  • Arbitrary flags can now be appended to compile commands for C++ linters.
  • trunk-fmt-pre-commit
    action now only formats files that are modified in the index.
  • trunk init
    now writes runtime versions to trunk.yaml.
  • trunk upgrade
    now upgrades trunk, linters, and plugin sources instead of just trunk.
  • trunk init
    now asks the user if they want trunk to manage their git hooks. and if so asks to enable some useful git hooks.
  • trunk init
    now enables some useful default actions.
🔧 Fix:
  • trunk upgrade <linter>
    will no longer enable new linters.
  • Fix where action notifications sometimes would not go away.
  • Fix
    packages_file
    support in Plugins.
  • trunk upgrade --no-progress
    now works.
new
🎁 New:
  • New linter: include-what-you-use
  • Added more file type definitions.
✨ Improved:
  • Semgrep now runs on more file types
  • Trunk now handles inotify overflows in a more robust way!
  • Trunk will not lint files over 4MB (configurable).
  • Changed
    user_trunk.yaml
    to
    user.yaml
  • Trunk will now warn when it can't download for that platform.
  • Plugin repositories can now specify a minimum version of trunk required.
  • Linters using system version may now omit
    @SYSTEM
🔧 Fix:
  • Pylint caching bug fix.
  • Workaround for gitleaks bug on empty files.
  • Trunk pre-commit hook bug fix when used with
    git commit -a
  • Terraform now works in sub-directories
Load More