Skip to content

v2.88.0: lowercase -v, combined-mode dupes minOccurrences, public/ HTML assets

Choose a tag to compare

@BartWaardenburg BartWaardenburg released this 03 Jun 13:06
· 255 commits to main since this release
v2.88.0
9a3dc7d

Features

  • Lowercase -v now prints the version. fallow -v, fallow -V, and fallow --version all print the version string. Lowercase -v is what the TS/JS toolchain uses for the version (node, npm, pnpm, yarn, bun, tsc), so it is now the primary short form, with -V kept for back-compat. Thanks @rbalet for the report. (#916)
  • The duplication minOccurrences threshold is reachable from the bare fallow command and the VS Code extension. A new global --dupes-min-occurrences N flag applies in combined mode (validated >= 2, falling back to the config value), and the extension gains a fallow.duplication.minOccurrences setting. The neighbouring fallow.duplication.threshold setting was also mislabeled: it is a duplication-percentage failure cap where 0 means no limit, and its default is now aligned to 0 to match the CLI. Thanks @rbalet for the report. (#894)

Bug fixes

  • Root-relative HTML assets under public/ no longer report as unresolved or unused. When a real HTML entry references browser-root assets such as /js/key.pressed.js or /style/index.css, resolution tries the existing document-root candidates first, then falls back to <root>/public/... for HTML importers only. JS/TS root-relative imports keep their existing behavior, and genuinely missing public assets still report. Thanks @cope for the report. (#915)
  • The VS Code extension now backfills its managed fallow CLI binary. First-run acquisition targets the GitHub release tag matching the extension version, downloads both fallow-lsp and fallow when needed, and downloads only the missing CLI if an LSP binary already exists. Failed downloads offer retry, settings, and output-channel actions. Thanks @rbalet for the report. (#917)
  • Angular external templates now credit service members reached through untyped inject() component fields. Component classes carry instance bindings for properties initialized with inject(Service) (or an alias such as inject as ngInject), so templates like {{ exampleService.onValueChange() }} mark the target service member as used. Same-named inject functions from non-Angular modules stay ignored. Thanks @OmerGronich for the report. (#911)
  • Bare pnpm <binary> script invocations now credit declared dependencies. Commands such as pnpm envinfo --system mark the matching declared package as used, while local script shorthands (pnpm build) and pnpm built-ins (pnpm install, pnpm add, pnpm test, ...) remain ignored. Thanks @cope for the report. (#914)
  • Class members used through local structurally typed function parameters are no longer reported as unused. When a concrete class instance is passed directly as new Class() or via a constructor-bound local into a same-file function whose typed parameter reads specific members, fallow credits only those concrete members. Unrelated members still report. Thanks @palisarbaro for the report. (#910)

Full Changelog: v2.87.0...v2.88.0