Skip to content

Releases: grafana/flint

v0.21.0

27 Apr 12:36
Immutable release. Only release title and notes can be modified.
feab606

Choose a tag to compare

Added

  • add flint setup preflight migrations (#233)
  • support managed linter configs and aqua-backed tool keys (#228)
  • switch xmloxide to github backend (#229)
  • add taplo formatter check (#224)
  • (init) configure line length during init (#218)

Fixed

  • support renovate v43.136.3 (#223)
  • switch yaml-lint to ryl (#226)
  • (ruff) install via github releases (#227)
  • resolve init rollout regressions (#220)

Other

  • reduce fake-bin fixture coverage (#240)
  • (deps) update dependency npm:renovate to v43.141.1 (#221)
  • guard fixture case groups (#238)
  • (deps) update dependency grafana/flint to v0.20.4 (#235)
  • (deps) lock file maintenance (#237)
  • (deps) update dependency mise to v2026.4.19 (#236)
  • (deps) update rust crate json5 to v1 (#232)
  • (deps) update taiki-e/install-action digest to 787505c (#219)
  • (deps) update dependency grafana/flint to v0.20.3 (#225)

v0.20.4

23 Apr 15:55
Immutable release. Only release title and notes can be modified.
e1e6345

Choose a tag to compare

Added

  • group linter renovate updates (#209)

Fixed

  • expand baseline guards for config and flint changes (#215)
  • remove stale exclude_paths init placeholder (#211)
  • baseline lint coverage changes (#214)
  • align biome init and formatter ownership (#205)

Other

  • (deps) update dependency npm:renovate to v43.133.0 (#216)
  • (deps) update dependency npm:renovate to v43.132.2 (#212)
  • (deps) update taiki-e/install-action digest to 5f57d6c (#204)
  • clarify that flint init works with existing mise.toml (#208)
  • guard against overlapping fixer ownership (#206)

v0.20.3

21 Apr 09:52
Immutable release. Only release title and notes can be modified.
9de186b

Choose a tag to compare

Added

  • (registry) switch shfmt to aqua backend (#175)

Fixed

  • treat cargo-clippy as a partial fixer (#197)
  • (registry) add --tests to cargo-clippy, add test coverage (#176)

Other

  • (deps) update taiki-e/install-action digest to 055f5df (#180)
  • (deps) update dependency npm:@biomejs/biome to v2.4.12 (#191)
  • (deps) update rust crate clap to v4.6.1 (#196)
  • (deps) update rust crate tokio to v1.52.1 (#192)
  • (deps) update dependency pipx:ruff to v0.15.11 (#198)
  • (deps) update node.js to v24.15.0 (#194)
  • (deps) update dependency npm:prettier to v3.8.3 (#193)
  • exclude mise install dir from Windows Defender (#188)
  • (deps) update dependency npm:renovate to v43.129.0 (#200)
  • restructure README/docs and split registry module (#187)
  • (deps) update dependency mise to v2026.4.15 (#199)

v0.20.2

17 Apr 07:18
eded4cd

Choose a tag to compare

flint v2 — first binary release

Full rewrite from bash scripts wrapping super-linter to a native Rust binary orchestrating mise-installed tools directly. Last v1 release was v0.9.2; this is the first working v2 binary release.

Why

  • Speed: no container pull, no full-repo scan — diff-aware by default (--from-ref / --to-ref), parallel check execution across files.
  • Native tools: each linter installed via mise from its upstream source (github:, ubi:, npm:, cargo:) — no bundled versions, transparent to Renovate.
  • One entry point: flint run / flint run --fix replaces lint:super-linter, lint:links, lint:renovate-deps, setup:native-lint-tools.
  • Cross-platform: Linux x86_64/arm64, macOS x86_64/arm64, Windows x86_64 binaries.

Install

# mise.toml
[tools]
"github:grafana/flint" = "0.20.2"

[env]
FLINT_CONFIG_DIR = ".github/config"

[tasks.lint]
run = "flint run"

[tasks."lint:fix"]
run = "flint run --fix"

Bootstrap a repo with flint init (interactive config scaffold).
Install a pre-commit hook with flint hook install.

Linters supported

Category Linters
Shell shellcheck, shfmt
Config / docs editorconfig-checker, actionlint, prettier, markdownlint-cli2, codespell
Links lychee (GitHub anchor remap, fragment support, rate-limit resilience)
Renovate renovate-deps (tracks indirect deps pinned in .github/ workflows)
Rust cargo-fmt, cargo-clippy
Go gofmt
Java / Kotlin google-java-format, ktlint, license-header
JS / TS biome, prettier
Python ruff, ruff-format
.NET dotnet-format
Docker hadolint
XML xmllint (via xmloxide, pure-Rust)

Highlights

  • Formatter category — formatters marked with .formatter() are automatically excluded from editorconfig-checker, preventing double-reporting.
  • Special checks — link checking and renovate-deps are first-class, not shell-outs. license-header is a pure-Rust check (reads first N lines, substring-matches configured text).
  • Fix modeflint run --fix runs per-linter fix commands in-place.
  • Diff mode — without flags, runs only on files changed since merge base with origin/main. --full for full-repo, --from-ref/--to-ref for arbitrary ranges.
  • Obsolete key detectionflint update non-interactively migrates mise.toml entries when a linter's upstream key changes (e.g. npm:markdownlint-clinpm:markdownlint-cli2).
  • Windows.windows_java_jar() registry flag for JAR-backed tools (ktlint); quote_path + shell_words for double-quote path handling.

Documentation

  • README.md — getting started, configuration reference
  • AGENTS-V2.md — architecture and contribution guide

Consumer rollout

Open migration PRs replacing super-linter: grafana/mox, grafana/oats, grafana/otel-checker, grafana/grafana-opentelemetry-java, grafana/docker-otel-lgtm, prometheus/client_java, open-telemetry/opentelemetry-java-instrumentation.


Changelog (aggregated v0.9.2..v0.20.2)

Added

  • flint v2 Rust binary (#139)
  • flint update command, explicit JAR flag (#146)
  • native linting mode and version mapping infrastructure (#93)
  • NATIVE env var for container-free linting (#107)
  • Renovate shareable preset for consuming repos (#17)
  • consolidated link checking and autofix flags (#7)
  • line-number anchors and issue-comment handling in link checks (#56)
  • GitHub URL remaps for line-number and fragment anchors (#28)
  • auto-remap base-branch GitHub URLs to PR branch (#18)
  • SHA-pinned URL support in Renovate preset (#21)
  • slim super-linter image default (#24)
  • migrate from release-please to release-plz (#171)

Fixed

  • release-pr runs after release to avoid changelog race (#184)
  • workflow_dispatch retrigger for existing tags (#167)
  • suppress component prefix in release tags (#166)
  • correct template variable in pr_body (#178)
  • activate mise environment in native lint mode (#123)
  • include staged files in native lint file list (#135)
  • native lint in worktrees, trust toml, use ec binary, drop isort (#134)
  • fail native lint when enabled tools are missing (#111)
  • decouple version mapping generation from pinned super-linter version (#112)
  • renovate-deps forwards GITHUB_TOKEN as GITHUB_COM_TOKEN (#132)
  • improve link checker reliability against GitHub rate limiting (#95)
  • strip Scroll-to-Text-Fragment anchors (#86)
  • remap same-repo GitHub URLs to local file paths (#100)
  • exclude GitHub compare links from lychee (#10)
  • use remap instead of exclude for issue-comment anchors (#58)
  • 'mise run fix' hint on lint failure (#90)
  • regex anchors in remap patterns (#19)
  • run shellcheck on .bats files in native mode (#137)
  • tighten markdownlint config for native mode (#106)
  • replace broken release-please PR comment with docs (#12)
  • release-please footer on release PRs (#40)

Dependencies

  • move icon to assets/ to fix release-plz (#177)
  • npm:renovate → v43.102.11 (security) (#174)
  • similar → v3.1.0 (#173)
  • github:mvdan/sh → v3.13.1 (#163)
  • crossterm → 0.29 (#156)
  • similar → v3 (#160)
  • toml → v1 (#161)
  • toml_edit → 0.25 (#158)

v0.9.2

01 Apr 07:45
Immutable release. Only release title and notes can be modified.
df7b637

Choose a tag to compare

0.9.2 (2026-03-31)

Bug Fixes

  • include staged files in native lint file list (#135) (34412d6)
  • native lint in worktrees, trust toml, use ec binary, drop isort (#134) (8594bba)
  • renovate-deps: forward GITHUB_TOKEN as GITHUB_COM_TOKEN (#132) (4d6510b)

v0.9.1

19 Mar 15:05
Immutable release. Only release title and notes can be modified.
8a39d96

Choose a tag to compare

0.9.1 (2026-03-19)

Bug Fixes

  • activate mise environment in native lint mode (#123) (d0fec45)

v0.9.0

19 Mar 13:18
Immutable release. Only release title and notes can be modified.
b8108b9

Choose a tag to compare

0.9.0 (2026-03-19)

Features

  • support NATIVE env var for container-free linting (#107) (0a8193d)

Bug Fixes

  • decouple version mapping generation from pinned super-linter version (#112) (5370e77)
  • fail native lint when enabled tools are missing (#111) (163bb6b)
  • tighten markdownlint config for native mode (#106) (6ef25b2)

v0.8.0

11 Mar 12:31
Immutable release. Only release title and notes can be modified.
84e2d76

Choose a tag to compare

0.8.0 (2026-03-11)

Features

  • add native linting mode and version mapping infrastructure (#93) (24b06da)

Bug Fixes

  • add 'mise run fix' hint to lint failure output (#90) (5b4ad5d)
  • improve link checker reliability against GitHub rate limiting (#95) (7a5282d)
  • remap same-repo GitHub URLs to local file paths (#100) (b4feadd)

v0.7.1

02 Mar 18:16
Immutable release. Only release title and notes can be modified.
0ac131d

Choose a tag to compare

0.7.1 (2026-03-02)

Bug Fixes

  • strip Scroll to Text Fragment anchors in link checks (#86) (b630cdf)

v0.7.0

23 Feb 11:48
Immutable release. Only release title and notes can be modified.
8822bdc

Choose a tag to compare

0.7.0 (2026-02-23)

Features

  • handle line-number anchors and issue comments globally (#56) (cf751df)

Bug Fixes

  • release-please: fix footer not appearing on release PRs (#40) (d7a55e4)
  • use remap instead of exclude for issue comment anchors (#58) (656f355)