Repository navigation
v2.66.0 - Prisma generators end-to-end + 82% faster plugin discovery
·
3954 commits
to main
since this release
Highlights
Prisma generator-provider crediting end-to-end (canonical layouts AND custom prisma.config.ts schema paths), an 82% speedup on the plugin-discovery stage for large monorepos, and fallow dupes now actually honors duplicates.* settings from .fallowrc.jsonc.
Performance
| Surface | Before | After | Delta |
|---|---|---|---|
| Plugin discovery (Next.js, 21,033 files) | 7378 ms | 1362 ms | -82% |
Bare fallow (Next.js, 21,033 files) |
9.7 s | 3.3 s | -66% |
fallow audit --gate all (Next.js, 21,033 files) |
11.7 s | 5.4 s | -54% |
audit also caches base-branch snapshots and runs HEAD analyses concurrently with base-snapshot computation, and combined-mode fallow now runs check + dupes in parallel via rayon::join.
Added
- Prisma generator providers credited from
schema.prisma. Custom-generator npm packages declared ingenerator <name> { provider = "<pkg>" }blocks (e.g.prisma-json-types-generator,prisma-erd-generator) are now credited as referenced dependencies instead of surfacing underunused-dependency. Coversprisma/schema.prisma, rootschema.prisma, and the multi-fileprisma/schema/*.prismalayout. Datasource providers, shell-command form, relative-path form, and commented-out generators are all handled correctly. (Closes #288) - Custom Prisma schema paths from
prisma.config.tsare honored. The plugin reads the staticschemafield fromprisma.config.{ts,mts,cts,js,mjs,cjs}and the new.config/prisma.{ts,...}Prisma 6 alternate location, resolves it against the project root, marks the configured schema file or folder as always-used, and recursively scans it for generator providers. Layouts where the schema sits outside the canonicalprisma/directory (e.g.db/schema/) are now covered withoutignoreDependencies. Thanks @M-Hassan-Raza for the patch. (#291) - VS Code: client-side diagnostic mute and dynamic issue types. Mute diagnostics from the editor without round-tripping through
.fallowrc.jsonc; the issue-type list in the LSP filter is populated dynamically from the language server so newly-added kinds appear without an extension release. Thanks @FunctionDJ for the report. (#287)
Changed
- Plugin discovery skips the FS walk for source-extension config patterns. Patterns like
webpack.config.{ts,js,mjs,cjs}describe source files already in the file index, so re-stat'ing them once per plugin duringdiscover_config_fileswas redundant. Root-anchored patterns whose extensions are all inSOURCE_EXTENSIONSnow match against the in-memory file set instead. Production mode preserves the FS fallback to keep correctness on*.config.*-excluded source walks. See the table above for measured impact. fallow auditcaches base-branch snapshots and parallelizes HEAD work. Repeat audit runs reuse cached dead-code + dupes snapshots; the worktree analysis runs concurrently with base snapshot rebuild.- Combined
fallowruns check + dupes viarayon::join. Independent analysis trees now share wall-clock instead of stacking sequentially.
Fixed
fallow dupeshonorsduplicates.{minLines, minTokens, threshold, mode, skipLocal}from.fallowrc.jsonc. Standalonefallow dupespreviously stomped these config values with the clap defaults (minLines=5,minTokens=50, etc.) because the CLI args were typed asusize/f64withdefault_value, so "flag omitted" was indistinguishable from "user passed the default". The CLI scalars are nowOption<T>, an absent flag falls through to the toml value, andskipLocaladopts the OR-merge already used forcrossLanguage/ignoreImports. The failure threshold for the gate now sources from the merged config too, so an omitted--thresholdno longer disables a config-declared gate.audit,combined, and the programmatic API are unaffected. Thanks @ryota-murakami for the patch. (#290)fallow dupes --performanceactually emits the duplication performance panel. The flag was parsed by clap but never plumbed intoDupesOptions, so it was silently a no-op. Combined-modefallow --performancealready printed a duplication stage; the standalone command now does the same on stderr (human / compact / markdown only; structured formats stay clean).
Full Changelog: v2.65.0...v2.66.0