Repository navigation
chore(deps): update fallow - #587
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — Reviewed the Renovate Fallow action bump (v3.31.0 → v3.32.0) in this run.
- Action pin bump —
.github/workflows/pr-check.ymlmovesfallow-rs/fallowto digestaaaec79(# v3.32.0); verified the digest matches the upstreamv3.32.0tag commit, and it aligns with the npmfallow@3.32.0already on main from #582. - No behavior surface — CI-only change running the existing
auditcommand with unchanged inputs; upstream upgrade notes (stricter tooling/@typescredit rules,dupes --cifail-on-clones, group-score/CODEOWNERS shifts) do not apply to this workflow, and the merge-time drift gate covers any new gate findings.
muse-spark-1.3-contributor-free (free) | 𝕏
Contributor
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This PR contains the following updates:
v3.31.0→v3.32.0Release Notes
fallow-rs/fallow (fallow-rs/fallow)
v3.32.0: : grouped health trends, markdown from saved runs, dead-code accuracy fixesCompare Source
Features
fallow dead-code --absent-component-propsreports optional props that callers never pass. The rule reports an optional component prop that no known reachable caller passes. It is off by default. It supports React, Preact, Solid, Qwik, Vue, Svelte, Astro, Angular, Lit and Ember components. Each finding shows the declaration, the callers, the framework and whether a default exists. Fallow gives no finding when it cannot see every caller of the component. Static analysis does not prove that a prop is unreachable at runtime. Review defaults and API intent manually. The rule has no automatic fix.fallow health --group-byselects groups and tracks a trend per group.--group <KEY>keeps only the matching groups. It accepts exact keys, globs and!negations. Each group gets severity and hotspot counts.--save-snapshoton a grouped run stores the group data (snapshot schema v11).--trendor the new--trend-from <PATH>then adds a trend per group. Markdown and the GitHub job summary get a## Health by <mode>table and one findings block per group.--top Nnow applies to each group. The MCPcheck_healthtool acceptsgroupandtrend_from.fallow report --from <file> --format markdownrenders saved JSON output. A saveddead-code,dupes,healthor bare combined run gives the same markdown as the live run with the same flags. You can analyze once and write both a job summary and a markdown report from one JSON file. The saved output of a combined run does not record--group-by, so its markdown is not grouped. A savedaudit,securityorfixrun, and a combined run with type-aware evidence, exit 2 with a reason.fallow dupesmarks symlinked clone instances. A clone instance under a symlink now hasis_symlink: truein JSON,symlink=truein compact output and a(symlink)marker in human output. To report only duplication between real files, setduplicates.ignoreSymlinks: trueor pass--ignore-symlinks.--no-ignore-symlinksoverrides the config value. The MCP tools, the Node API, the LSP and the VS Code settingfallow.duplication.ignoreSymlinksaccept the same option. Thanks @lzear for the report (#2961).fallow agent installadds a native commit gate for Codex. The install writes a PreToolUse handler to.codex/hooks.jsonand the gate script to.codex/hooks/fallow-gate.sh. The handler runs the audit from the nearest install root, also from a subdirectory. The Claude Code handler now also finds the nearest install root. Runfallow agent installagain to get the new handler. Codex runs a hook only after you trust it in/hooks.fallow agent statusshows the gate as its own row, andfallow hooks status --format jsonadds acodex_gateentry. TheAGENTS.mdblock is now routing guidance.fallow hooks install --target agent --agent codex --usernow writes the user gate and no longer writes the projectAGENTS.mdblock.fallow-setupskill tells an agent how to add code-quality tools. The skill is for a JavaScript or TypeScript project. It tells the agent to detect the existing tools, runfallow recommend, install Fallow as a dev dependency and add a CI gate with a baseline. It gives each tool one job, and it removes a tool only after a parity check.fallow agent installwrites it next to thefallowskill.gdp-proof-producerrule-pack kind restricts proof producers. The opt-in rule restricts@gdp-ts/core.defineProofcalls toallowedFiles.proofKindsassigns literal proof labels to owner modules. The analysis follows static imports and unambiguous re-export chains.release-itkeeps each.release-it.*config form and reads thepackage.jsonkey. It does not read the JSON5, YAML and TOML forms. It credits thepluginsandextendspackages.evemakes agent modules entry points.ag-uicredits the hooks of a class that extendsAbstractAgentdirectly.nestjs-trpccredits the methods that the module calls.kibanareadskibana.jsoncplugin manifests and adds their entry points.sectionslists each section that the run computed. With--baseline,summary.baseline_staleness.remaining_findingsgives the number of functions above a threshold that the baseline does not accept.finding_idfor a security finding. The VS Code "Copy Fallow finding id" quick fix now works on a security candidate (#3035).--quiet, outside CI, and when no Fallow plugin or skill is installed. The hint has no effect until the official marketplace lists the Fallow plugin. SetFALLOW_CLAUDE_CODE_HINT=offorFALLOW_SUGGESTIONS=offto suppress it.Changed
Tooling dependencies need evidence of use. Three kinds of devDependency no longer count as used by name alone:
@types/Xpackage.A tool counts as used when a script, a CI workflow or a git hook runs it. It also counts when its config file or its package.json key exists, or when a plugin credits it. Fallow now reads git hooks in
.husky/, lefthook, simple-git-hooks and lint-staged configs. A@types/Xpackage counts as used when the project declares or importsX, or namesXin tsconfigtypes. A short list of global type packages, such as@types/node, always counts.--trace-dependencynames each credit. Production dependencies still count as used by name.Root dependencies follow the nearest manifest. Each import now counts for the nearest manifest that installs the package. Fallow reports a root declaration as unused when each import uses a workspace declaration. The finding has a
declared_and_imported_infield that names those workspaces. Such an entry gets one finding, not a second test-only or type-only finding.export default Namelinks to the local bindingName. Fallow now reports unused members of a class that a file exports this way. WithignoreExportsUsedInFile, such a default export is used when the file usesName.fallow health --group-bycounts a clone in each group that holds an instance. The groupduplicated_linesvalues now sum to the project value. Group scores can drop once after the upgrade.CODEOWNERS matching follows GitHub. A pattern without a trailing
/owns the directory contents.*does not match/,apps/matches anappsdirectory at any depth, and/*owns only the files at the root. Owner groups can change.Gate rows show a count. The
health-findingsanderror-severity-findingsentries ingate_outcomesnow haveobservedandthreshold_label. The PR decision and the PR comment show the count, for example6 at or above error.fallow hooks install --target agentselects Codex from a.codex/directory, not fromAGENTS.mdalone.Bug fixes
Dependencies
postcss.config.*file credits the PostCSS plugins that it names, also without a declaredpostcsspackage.run-pfornpm-run-all2.ts-nodefor a TypeScript Jest config. The Mocha plugin reads.mocharcfiles and themochakey.require.resolveandimport.meta.resolvewith any subpath credit the package.require.resolve('pkg')reports an unlisted package. Thanks @DrJKL for the report (#3213).import {} from 'pkg', a module augmentationdeclare module 'pkg', and anode_modules/.bin/<name>path in source credit the package.jsPluginsinsideoverrides, and packages in StarlightcustomCss.entry.serverno longer reportisbotas unused.--trace-dependencygives the same credits as the dependency report. It names each manifest that the report flags.Entry points and plugins
package.jsonkey and string or objectentryvalues. They also read config arrays, configs in workspace packages and tsdownworkspaceglobs. Thanks @moltar for the report (#3209).defineConfigargument and the statictestDirandtestMatchsettings.node --testscript, the tests of a vitest config that a script passes with--config, a file that a command substitution runs, and a file that a CI step runs with Bun.rootoption moves the default entries. An electron-vite config sets the main and preload entries. Default electron-builder script configs stay used.api/are entry points, and the Vercel plugin also activates onvercel.json. Next.jsinstant,prefetchandunstable_dynamicStaleTimesegment exports are used.<rootDir>resolve, also inprojects.concurrentlyruns count as used.link:orfile:dependency on a local package makes that package a workspace.Exports, types and class members
@importtag keeps the imported module used.constis no longer an unused type. This covers a wrapper call, a type assertion, asatisfiesclause and an inferred factory return. Withprivate-type-leakson, a private type in a wrapper call, an assertion or an inferred return now gives a finding.??or||fallback, a nullable ternary, and aMapvalue.Promise.alldestructure, a local loader function, an assignment to an existing binding, andssrLoadModule.Import resolution
./ButtonreachesButton/index.tsbefore a siblingButton.cssorButton.vue. Thanks @osazemeu for the report and the initial fix (#3201, #3202).unresolved-importfinding. A file URL passed to a filesystem call also gives no such finding.outDir, and a workspace export with a declaration target, resolve to the source file.*in a packageexportstarget matches files in nested directories.package.jsonentry under a missinglib/directory, such as./lib/index.mjs, maps back to the same-stem source file insrc/. A workspace import through anexportstarget underlib/also resolves to the source file. Thanks @moltar for the report (#3208).<script>body is no longer an HTML asset reference.deno.jsonas Deno does. A malformed config in the tsconfigextendschain gives amalformed-tsconfigdiagnostic.Health, duplication, security and CI
fallow health --save-snapshot --trendno longer compares a run with its own snapshot.--scorerun no longer shows group findings that the project section does not show. Job summaries with a baseline give the number of functions above a threshold.type-aware-requireentry now fails when a section fails on type-aware completeness.--fail-on-regressionprints the regression outcome once.fallow dupes --fail-on-issuesand--ciexit 1 when clone groups are found. Thanks @TiagoGranelli for the report (#2984).overrides[].rulesapply to security candidates.fallow securitynow fails on a candidate only when the rule of that candidate iserror. Thanks @TiagoGranelli for the report (#2985).pnpm.overrideson pnpm 11 and later, andpnpm-workspace.yamloverrides where pnpm ignores them, and the newpnpm-workspace-overrides-ignoreddiagnostic says why.catalog:value in a pnpm override counts as a catalog reference.unresolved-catalog-referencesreports an override that names a catalog without that package. Thanks @PrinceD96 for the report (#3078).unused-dependency-overridesreports no findings when the npm or pnpm lockfile does not parse and no other lockfile parses. A workspace diagnostic tells you to resolve the merge conflicts or to run the install again.CLI and editors
fallow watchno longer stops on a change outside a nested.gitignoredirectory.fallow hooks statusandfallow agent statusshow paths with/on Windows.checkandreviewaliases.fallow securityandfallow similar-codereject every--dupes-*override.fallow trace --path,fallow coverage analyze --debug-unmatchedand theignoreDependenciesglobs.Performance
pnpm-lock.yamlparses in 12 ms in place of 21 ms. A plain number in apnpm-workspace.yamloverride keeps its source text. Apnpm-workspace.yamlthat does not parse now reports themalformed-pnpm-workspace-yamldiagnostic.Upgrade notes
The extraction and graph cache versions change, so the first run after the upgrade parses all files again.
These changes can report new unused dependencies:
@types/Xrule.Use
ignoreDependenciesfor a tool that the project runs in a way that Fallow does not see.A CI job that runs
fallow dupes --cinow fails when the project has clone groups. To keep a job that only reports, use--format sarif --quiet, or gate with--threshold.Group scores of
fallow health --group-bycan drop once. CODEOWNERS owner groups can change.The dead-code, audit, review-brief and combined schema versions advance, because the enum of policy rule kinds gains a value.
Full Changelog: fallow-rs/fallow@v3.31.0...v3.32.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.