v2.96.0: dupes ignores imports by default, Impact moves to user dir, VS Code mute fix
Highlights
This release changes two analysis defaults, relocates Fallow Impact history out of your repo, and fixes the VS Code diagnostic-mute toggle.
Changed
fallow dupes ignores import declarations by default
Token-identical sorted import blocks are a structural property of well-formatted code, not copy-paste, so they no longer surface as clone groups. ignoreImports (opt-in since 2.33.0) now defaults to true.
- Opt out with
"ignoreImports": falsein config,--no-ignore-importsonfallow dupes, or--dupes-no-ignore-importson barefallow. The MCPfind_dupes/trace_clonetools acceptignore_imports: false, and the VS Codefallow.duplication.ignoreImportssetting controls both directions. - Scope: ES
importdeclarations only; CommonJSrequire()andexport ... fromre-export blocks are still counted. - Upgraders on a
duplicates.thresholdgate: the measured duplication percentage drops, so re-baseline against the new numbers (or set"ignoreImports": falseto keep the old behavior). Saved duplication baselines should be re-saved; a one-time step-down in duplication trend at the upgrade boundary is expected.
Thanks @danielo515 for the report (#1224).
Fallow Impact history moved to your user config dir
Enabling Impact (or recording a run) no longer creates a .fallow/ directory or edits the repo's .gitignore. The per-project store moved to <config-dir>/fallow/impact/<key>.json (~/Library/Application Support/fallow/ on macOS, $XDG_CONFIG_HOME/fallow/ on Linux, %APPDATA%\fallow\ on Windows). The store is keyed by repo identity, so any subdirectory or git worktree of a repo shares one history, and nothing is written into the working tree. An existing in-repo .fallow/impact.json is imported once on first run. Impact is now explicitly off in CI.
Added
fallow impact default on|offturns Impact on once for every project (a user-global opt-in); a per-projectenable/disablealways wins. The report and theimpactMCP tool gain anenabled_sourcefield (project/user/default).fallow impact reset [--all]deletes stored history for this project, or with--allevery project's history; the user-global default toggle is left untouched.fallow impactnow prints the resolved store path and project key.
Fixed
VS Code: "Toggle Hide All Findings" can be undone again
After the extension moved open-file diagnostics to the LSP 3.17 pull path, toggling a mute updated only the push diagnostic collection, which the language server keeps empty for open files once the editor starts pulling. So hiding took effect only on the next edit, un-hiding did nothing visible, and findings stayed hidden through reinstalls and restarts (the muted state persists per workspace). Three fixes:
- Mute toggles now re-pull open documents, so squiggles and Problems entries hide and show instantly.
- Open-file findings no longer render twice after a toggle (pull results are no longer cached into the separate push collection).
- Unchecking "All Fallow Findings" in the Manage Hidden Findings picker now reveals findings instead of silently re-hiding each category.
Thanks @VariableVince for the report (discussion #287).
Full Changelog: v2.95.0...v2.96.0