-
Notifications
You must be signed in to change notification settings - Fork 50
Comparing changes
Open a pull request
base repository: fallow-rs/fallow
base: v2.63.0
head repository: fallow-rs/fallow
compare: v2.64.0
- 12 commits
- 108 files changed
- 2 contributors
Commits on May 4, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 8f5018f - Browse repository at this point
Copy the full SHA 8f5018fView commit details -
feat(plugins): add tap and tsd test runner support
Adds two new built-in plugins that mark test files as entry points so test-only code is not falsely flagged as unused. - tap: activates from the `tap` dep; treats node-tap default test discovery (`test/`, `tests/`, `__tests__/`, `*.test.*` / `*.spec.*`, top-level `test.*` / `tests.*`) and `.taprc` configs as reachable. - tsd: activates from the `tsd` dep; treats `.test-d.ts(x)` declaration tests as reachable and reads `package.json#tsd.directory` so custom directories like `test/types` stay discoverable. Both plugins ship as test entry points (`EntryPointRole::Test`). Validated against real consumers: - minipass (tap): unused_files 50 -> 16, removes 34 false-positive test file reports - fastify (tsd): unused_files 242 -> 225, removes 16 false-positive `.test-d.ts` reports Bumps the headline plugin count from 91 to 93 across README, npm description, internal positioning copy, npm wrapper README, and the .claude/rules/ surfaces.
Configuration menu - View commit details
-
Copy full SHA for 0478c57 - Browse repository at this point
Copy the full SHA 0478c57View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4839d80 - Browse repository at this point
Copy the full SHA 4839d80View commit details -
Merge pull request #272 from fallow-rs/fix/public-package-members
fix(core): respect public package members
Configuration menu - View commit details
-
Copy full SHA for 82d71ca - Browse repository at this point
Copy the full SHA 82d71caView commit details -
fix(plugins): treat vitest config + storybook conventions as framewor…
…k-used Fixes #271. With --include-entry-exports, fallow flagged vitest.config.* default exports and storybook story / .storybook convention exports as unused. The vitest plugin now contributes used_exports for vitest.config.* and vitest.workspace.* (default), and the storybook plugin contributes a "*" wildcard for **/*.stories.* and .storybook/**. The wildcard required restoring symmetry in is_export_ignored: plugin-supplied used_exports now honor "*" the same way user-config ignoreExports already did. Adds regression fixtures for nested-workspace vitest and storybook with includeEntryExports, and documents usedExports: ["*"] for plugin authors.
Configuration menu - View commit details
-
Copy full SHA for ce5580c - Browse repository at this point
Copy the full SHA ce5580cView commit details -
Configuration menu - View commit details
-
Copy full SHA for f184f5d - Browse repository at this point
Copy the full SHA f184f5dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9152ddb - Browse repository at this point
Copy the full SHA 9152ddbView commit details -
feat(plugins): parse webpack resolve.alias and entry context
Webpack plugin now extracts resolve.alias mappings (parity with Vite/Nuxt/SvelteKit) so aliased imports from webpack.config.js no longer surface as unresolved-import or unused-export. Also normalizes entry paths against the optional context root. Closes #273.
Configuration menu - View commit details
-
Copy full SHA for a5481bf - Browse repository at this point
Copy the full SHA a5481bfView commit details -
fix(plugins): strip leading './' from entry patterns
Webpack/Rollup/Rspack/Rsbuild/Rolldown configs commonly write entry/input as './src/foo.ts'. globset compiles entry patterns with literal_separator(true), so a './'-prefixed pattern would never match the project-relative path 'src/foo.ts' that appears in the file index. Strip the prefix in extend_entry_patterns and push_entry_pattern so descriptor entries without an accompanying 'context:' (and plain string entries like 'entry: "./src/app.js"') resolve end-to-end. Adds a webpack-no-context-project regression fixture and integration test that fail without this change.
Configuration menu - View commit details
-
Copy full SHA for 39758b3 - Browse repository at this point
Copy the full SHA 39758b3View commit details -
fix(extract): credit nested Playwright fixture members
Playwright fixtures with nested object types like `{ pages: { adminPage: AdminPage } }` did not credit POM methods, because the type-binding extractor only walked the top level of the TSTypeLiteral and the use-side pattern extractor only handled a single destructure level. The visitor now passes a dotted path through both sides: - Type traversal recurses through nested TSTypeLiteral / aliased TSTypeReference props, emitting def sentinels keyed by `pages.adminPage` etc. - Object pattern destructuring recurses into nested ObjectPattern values, mapping each leaf local to its full dotted path. - Member access resolves dotted object names against the local map with prefix-matching, so both `pages.adminPage.method()` (chained access on a top-level destructure) and `adminPage.method()` (nested destructure) emit the same use sentinel keyed by `pages.adminPage`. The matched chain is not re-walked, preventing spurious intermediate `(pages, adminPage)` accesses. Bumps CACHE_VERSION since the member_accesses string shape changes for nested-fixture files. Closes #268.Configuration menu - View commit details
-
Copy full SHA for d7e425c - Browse repository at this point
Copy the full SHA d7e425cView commit details -
fix(extract): credit nested Playwright fixtures via named alias
When the inner nested type is referenced by an alias name (the idiomatic shape: `type PageFixtures = { adminPage: AdminPage }; type MyFixtures = { pages: PageFixtures }`), `extract_type_annotation_name` returned the alias's leaf identifier (`PageFixtures`) and the binding was emitted as `(pages, PageFixtures)` instead of expanding the alias under the prefix. Add a guard that recurses through a known alias reference under the current path prefix before falling back to the simple-leaf branch, so `pages.adminPage` and `pages.userPage` are emitted just like the inline literal case. The integration fixture is reshaped to use the alias form, matching what users actually write. Bumps CACHE_VERSION.Configuration menu - View commit details
-
Copy full SHA for 7a10555 - Browse repository at this point
Copy the full SHA 7a10555View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a1cc5c - Browse repository at this point
Copy the full SHA 6a1cc5cView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v2.63.0...v2.64.0