Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 06:55
v0.3.0
1621e61

Added

  • Native-toolchain formatter backends — opt-in backends that invoke a
    language's canonical first-party CLI when it is present on the host: Java,
    Kotlin, R, Swift, Dart, and Gleam. Off by default (enabled per-tool in config);
    when the tool is absent the language falls through to the tier-2 tree-sitter
    formatter, so the zero-dependency guarantee is intact for anyone who has not
    opted in.
  • C# tier-2 support — a Language::CSharp variant so .cs files route to the
    tree-sitter generic formatter (deterministic, zero system dependency) instead of
    being skipped. Maps the c# / csharp catalog names and the .cs extension.
  • Elixir do…end reindent in the tier-2 formatter. Elixir's blocks are
    keyword-delimited (do…end), so they matched neither the brace-counting path nor
    a language-pack indents query (tree-sitter-elixir ships none) and were left at
    column 0. A new built-in-indents-query dispatch slot plus a minimal Elixir query
    produces mix format's 2-space nesting; idempotent, with heredocs/strings
    preserved.

Changed

  • poly fmt honors // swift-format-ignore-file — a Swift file carrying the
    directive is left byte-for-byte untouched (the same whole-file skip marker
    swift-format respects), mirroring the generated-lock-file skip. Protects files a
    project opted out of formatting and machine-generated swift-bridge glue.
  • Bumped fs-err, serde-saphyr, and sqruff to their latest releases.

Fixed

  • poly hooks now enforces the commit-msg stage. Lowered hooks kept
    Stage::default() (pre-commit), so the runner dispatched the poly commit
    (Conventional Commits) builtin in file-input mode, matched no files, and silently
    skipped it — the git commit-msg hook never enforced anything. Every lowered hook
    is now stamped with the stage it was lowered for; latent for any non-pre-commit
    builtin, only poly-commit surfaced it.
  • Rust files named like dockerfile.rs are no longer misdetected as
    Dockerfiles.
    Language detection now lets a known file extension (.rs → Rust)
    win over the Dockerfile filename match, so engines/dockerfile.rs and similar no
    longer produce spurious Dockerfile parse errors.