Releases: grafana/flint
Releases · grafana/flint
v0.21.0
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
v0.20.3
Immutable
release. Only release title and notes can be modified.
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
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 --fixreplaceslint: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-headeris a pure-Rust check (reads first N lines, substring-matches configured text). - Fix mode —
flint run --fixruns per-linter fix commands in-place. - Diff mode — without flags, runs only on files changed since merge base with
origin/main.--fullfor full-repo,--from-ref/--to-reffor arbitrary ranges. - Obsolete key detection —
flint updatenon-interactively migratesmise.tomlentries when a linter's upstream key changes (e.g.npm:markdownlint-cli→npm:markdownlint-cli2). - Windows —
.windows_java_jar()registry flag for JAR-backed tools (ktlint);quote_path+shell_wordsfor 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 updatecommand, explicit JAR flag (#146)- native linting mode and version mapping infrastructure (#93)
NATIVEenv 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_dispatchretrigger 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-depsforwardsGITHUB_TOKENasGITHUB_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
.batsfiles 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
v0.9.2
Immutable
release. Only release title and notes can be modified.
v0.9.1
v0.9.0
Immutable
release. Only release title and notes can be modified.
v0.8.0
Immutable
release. Only release title and notes can be modified.
v0.7.1
v0.7.0
Immutable
release. Only release title and notes can be modified.