Home
Changelog
improved
fixed
✨ Improvements
  • The LSP server can now be configured to run fewer linters in the background.
  • Stopped hiding the --cache flag from --help.
  • Added validation to the lint ignore configuration to ensure both files and linters are specified.
  • Ensured that trunk check --sample=N will give a good error message in the case when the configuration has errors.
🔧 Fixes
  • Trunk will no longer run uncacheable linters in the background.
  • Added extra logic to ensure we never cache a linter run when files have been modified.
  • Fixed a bug in the LSP Server that could lead to a corrupted buffer when the editor submits multiple changes in a single edit notification.
  • Trunk running in GitHub Actions will no longer result in extra newlines in the log.
fixed
🔧 Fixes
  • Fix a segfault in the GitHub Actions integration
The release notes for 1.9.0 are included below:
🎁 New
  • Allow users to use their own plugins to define a common set of enabled linters across all their repos: c.f. the linters we enable for ourselves and how we reference them
  • Implement
    trunk upgrade --apply-to=file
    , to allow upgrading a shared config
  • Improved detection of existing vs new issues has been turned on for everyone by default (
    hold_the_line_mode
    now defaults to
    word
    ; see documentation)
🔌Plugins (new in 0.0.16, since 0.0.14)
  • We now support gokart, trufflehog, and DJLint (our thanks to gejustin and fsargent for the contributions!)
  • Allow specifying a buildifier config, using
    .buildifier.json
    (check out this PR for a usage example; specifically, you'll want
    .trunk/configs/buildifier.json
    and
    .trunk/configs/buildifier-tables.json
    )
  • Teach cspell to correctly respect its sandboxed config
  • Remove a broken
    hadolint
    download for M1 macs
✨ Improvements
  • Introduce new linter config field
    suggest_if
    to control what conditions we use to auto-recommend linters (example)
  • Introduce new linter config field
    sandbox_type
    to control how we sandbox linter execution (example)
  • Allow individual linter commands to define the applicable
    files
    , instead of requiring them to do so in the top-level linter definition
  • Surface useful errors when a tool has no matching specified download (e.g. if there is no arm64 download for a given linter and we're running on arm64, say so)
  • Support
    trunk check --upload
    with payload sizes of >128MiB
  • Suppress newline spam in GitHub Actions when using
    trunk check --ci --upload
    , and also make
    --ci --upload
    work correctly
  • --verbose
    linter execution reports now include the CLI version
  • Introduce debugging knobs for trunk actions and git hooks
🔧 Fixes
  • Fix a race condition in how
    trunk action
    output is logged
new
improved
fixed
🎁 New
  • Allow users to use their own plugins to define a common set of enabled linters across all their repos: c.f. the linters we enable for ourselves and how we reference them
  • Implement
    trunk upgrade --apply-to=file
    , to allow upgrading a shared config
  • Improved detection of existing vs new issues has been turned on for everyone by default (
    hold_the_line_mode
    now defaults to
    word
    ; see documentation)
🔌Plugins (new in 0.0.16, since 0.0.14)
  • We now support gokart, trufflehog, and DJLint (our thanks to gejustin and fsargent for the contributions!)
  • Allow specifying a buildifier config, using
    .buildifier.json
    (check out this PR for a usage example; specifically, you'll want
    .trunk/configs/buildifier.json
    and
    .trunk/configs/buildifier-tables.json
    )
  • Teach cspell to correctly respect its sandboxed config
  • Remove a broken
    hadolint
    download for M1 macs
✨ Improvements
  • Introduce new linter config field
    suggest_if
    to control what conditions we use to auto-recommend linters (example)
  • Introduce new linter config field
    sandbox_type
    to control how we sandbox linter execution (example)
  • Allow individual linter commands to define the applicable
    files
    , instead of requiring them to do so in the top-level linter definition
  • Surface useful errors when a tool has no matching specified download (e.g. if there is no arm64 download for a given linter and we're running on arm64, say so)
  • Support
    trunk check --upload
    with payload sizes of >128MiB
  • Suppress newline spam in GitHub Actions when using
    trunk check --ci --upload
    , and also make
    --ci --upload
    work correctly
  • --verbose
    linter execution reports now include the CLI version
  • Introduce debugging knobs for trunk actions and git hooks
🔧 Fixes
  • Fix a race condition in how
    trunk action
    output is logged
new
🎁 New
  • Enhanced the
    hold the line
    feature to identify whether issues on modified lines are new or existing. This new mode must currently be turned on in configuration, and will become the default in a future version of trunk. See documentation.
✨ Improvements
  • Added support for Rust nightlies when using a system version of Rust.
  • The
    trunk-ignore
    feature now supports all comment formats specified in configuration.
  • Additional validation logic has been added for custom triggers.
  • Upgraded the minimum required launcher version to 1.2.4, which will be automatically upgraded by Trunk.
  • Improved the
    --verbose
    output to show which configuration files are being used for each linter.
  • Git hooks now prioritize the Trunk launcher in the repository before searching on the system.
  • All fields except
    cli
    and
    plugins
    are now merged from plugins.
  • The LSP server now gracefully handles non-text files such as images.
  • Improved the performance of the LSP server when working with large sets of files.
  • Enhanced the LSP server's ability to update diagnostics for files that are produced indirectly.
🔧 Fixes
  • Resolved a bug where multiple Git hooks that used the same runtime would hang after the first one.
new
improved
fixed
🎁 New
  • Introduced a "negative ignore" feature by prefixing an ignore path glob with
    !
    , ensuring matched paths are not ignored despite other pattern matches.
✨ Improvements
  • Implemented
    ${bazel}
    and
    ${bazel_targets}
    substitution variables for executing commands.
  • Enhanced the Visual Studio Code extension with the capability to separately disregard pre-existing and below-threshold issues.
  • Modified the pull request blocking criteria: any new issue will consistently lead to a block, regardless of the ratio of fixed and new issues.
  • Adjusted Trunk to replace
    external/
    with the Bazel cache external directory when appending arguments to the compiler command line manually.
  • The
    ignores
    and
    environments
    configurations are now merged from plugin repositories.
  • Enhanced
    trunk init
    to display file types corresponding to each identified linter.
🔧 Fixes
  • Improved Trunk's ability to resolve linter relative paths when executed from a pre-push hook, specifically addressing golangci-lint failures.
  • Rectified a regression in the Language Server Protocol (LSP) server for multi-byte UTF characters.
  • Resolved an issue where parser runtimes would occasionally fail to install.
fixed
✨ Fixes
  • The vscode extension will not lint any files while git is in a merge or rebase state.
new
improved
fixed
🎁 New
  • The minimum supported version of the plugins repo is now implicitly loaded if not specified in the configuration.
✨ Improvements
  • Tools using the node runtime will now implicitly find extra packages installed by trunk.
  • The LSP server for vscode no longer clears diagnostics on edit and they will be moved around as appropriate.
  • Trunk actions now support an environments section, the same as linters.
  • trunk upgrade
    and
    trunk upgrade runtimes
    now upgrade runtime versions.
  • Plugin repositories can now specify runtimes. Internal runtime specifications will be moved to the trunk plugins repository soon.
🔧 Fixes
  • When using the system ruby, tools are now isolated from system gems.
fixed
🔧 Fixes
  • Fix a 1-minute delay after
    trunk check
    completes if a network firewall is active.
  • Fix a memory leak.
new
improved
fixed
🎁 New
  • Introducing LUV ❤️ (Linter Upgrade Validation). Trunk now periodically scans for new versions of linters and runs them against a suite of tests. Only when these tests pass will Trunk suggest that users upgrade to that version.
  • Trunk releases can now require a minimum version of the plugins repo to be active. If an older version is active, trunk will automatically use the newer version.
  • New Python linter: Ruff
✨ Improvements
  • SARIF parsing now supports autofixes.
  • Clippy now supports repos with multiple crates.
  • Brakeman now supports apps not in the root of the repo.
  • The LSP server now watches for deleted files and stops showing those lint results in vscode.
  • Bump the default Rust version to 1.67.0
  • Bump the default Go version to 1.19.5
  • Linters can now specify in configuration that they run on files or folders other than the input file itself.
🔧 Fixes
  • Fix various edge cases in matching for globs specified configuration.
  • Fix an edge case where the LSP server would not return results if a repo had no changes.
  • Fix auto-fixes not showing the name of the linter.
  • Ensure that runtimes are installed when used only by an action.
fixed
More bug fixes and responsiveness improvements for vscode.
🔧 Fixes
  • Fix for
    shfmt
    sometimes failing to read standard input.
  • Fix a memory leak in the LSP server.
  • Fix a crash on exit in the LSP server.
  • The LSP server now clears diagnostics and progress for closed files.
  • The LSP server now starts linting files sooner after saving and shows the pending status immediately.
Load More