Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: fallow-rs/fallow
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.59.0
Choose a base ref
...
head repository: fallow-rs/fallow
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.60.0
Choose a head ref
  • 8 commits
  • 61 files changed
  • 1 contributor

Commits on May 1, 2026

  1. Configuration menu
    Copy the full SHA
    bb2e785 View commit details
    Browse the repository at this point in the history
  2. ci(release): continue-on-error on vsce + ovsx publish steps

    Lets a future transient registry failure be retried via 'gh run rerun --failed' without re-tripping the already-succeeded sibling step. Without this, a 502 from openvsx.org blocks Open VSX permanently because vsce publish then fails with version-exists on rerun.
    BartWaardenburg committed May 1, 2026
    Configuration menu
    Copy the full SHA
    2bb686e View commit details
    Browse the repository at this point in the history
  3. docs(changelog): credit @OmerGronich for v2.59.0 perf + stack fix

    The v2.59.0 release shipped fixes for #243 (focused-mode --changed-since,
    IntervalIndex coalescing, default-ignore generated framework output) and
    #247 (16 MiB rayon worker stack pin) but neither issue nor reporter was
    credited. Add a Fixed section for #247 and a thanks line + Closes #243
    on the --changed-since perf bullet.
    BartWaardenburg committed May 1, 2026
    Configuration menu
    Copy the full SHA
    5709686 View commit details
    Browse the repository at this point in the history
  4. feat(config): support includeEntryExports + promote --include-entry-e…

    …xports to global flag
    
    Closes #249.
    
    Two changes addressing the issue from @filipw01:
    
    1. Bug fix: `fallow --include-entry-exports` (combined mode, no subcommand)
       previously failed with `error: unexpected argument` because the flag was
       only defined on the `dead-code` subcommand. The flag is now global on the
       Cli struct and accepted on combined mode, dead-code, audit, and watch.
    
    2. Enhancement: add `includeEntryExports: bool` to FallowConfig (camelCase),
       default false, propagated through FallowConfig::resolve into ResolvedConfig.
       The CLI flag ORs with the config value; the existing override in
       check/mod.rs remains. Watch mode also applies the override after every
       config (re)load so the CLI flag takes effect under watch.
    
    Plumbing:
    - CombinedOptions, AuditOptions, and WatchOptions all gain
      `include_entry_exports`, wired from cli.include_entry_exports in main.rs.
    - All explicit FallowConfig struct literals across the workspace updated.
    
    Tests:
    - 4 unit tests in crates/config (camelCase JSON+TOML deserialize,
      default=false, propagate-through-resolve).
    - 1 integration test covering the config-driven path via new fixture
      tests/fixtures/entry-export-validation-config/.
    - 2 CLI integration tests (combined-mode CLI flag, combined-mode
      config-driven).
    - 1 watch-mode unit test asserting the CLI override applies after reload.
    
    Companion docs (committed separately in fallow-docs / fallow-skills) document
    the new global flag and the includeEntryExports config option; the bundled
    npm/fallow/skills/ vendored copy is in sync. action.yml input description
    loosened to drop the "(dead-code command)" qualifier.
    BartWaardenburg committed May 1, 2026
    Configuration menu
    Copy the full SHA
    75e54bb View commit details
    Browse the repository at this point in the history
  5. feat(mcp): expose include_entry_exports on audit tool + add stable-AP…

    …I listings
    
    Follow-up to #249. /fallow-review surfaced two gaps:
    
    1. MCP audit tool: now that `--include-entry-exports` is a global CLI flag
       accepted on `fallow audit`, the corresponding `audit` MCP tool should
       surface it as a param too (sibling-tool parity with `analyze` /
       `check_changed`). Add `include_entry_exports: Option<bool>` to
       `AuditParams`, forward it to `--include-entry-exports` in
       `build_audit_args`, update the tool description in `server/mod.rs`,
       add 2 unit tests pinning the emit / no-emit paths, and refresh
       `.claude/rules/mcp-server.md` audit row.
    
    2. docs/backwards-compatibility.md: list `--include-entry-exports` under
       stable global flags AND `includeEntryExports` under documented config
       fields, since both are part of the stability promise once shipped.
    
    Also mirrored the audit-row update into the bundled
    `npm/fallow/skills/fallow/SKILL.md`. The fallow-docs MCP page and
    fallow-skills SKILL audit row were updated and committed separately.
    BartWaardenburg committed May 1, 2026
    Configuration menu
    Copy the full SHA
    ae7207b View commit details
    Browse the repository at this point in the history
  6. fix(graph): SCSS imports no longer resolve to sibling .tsx files

    Closes #245.
    
    When a `.scss` / `.sass` file does `@use 'Widget'` (extensionless) and
    both `Widget.scss` and `Widget.tsx` exist as siblings, fallow now resolves
    the import to `Widget.scss` per Sass's actual resolution algorithm. The
    standard `oxc_resolver` extension list contains `.tsx` / `.ts` before
    `.scss`, so without this guard a bare specifier from a stylesheet was
    silently picking the JS/TS sibling, creating phantom circular
    dependencies in standard CSS-modules / Angular `styleUrls` patterns:
    
      Helper.scss -> Widget.tsx -> Helper.tsx -> Helper.scss
    
    (Helper.scss meant to share Sass variables with Widget.scss but
    mis-resolved to Widget.tsx instead.)
    
    Implementation: in `resolve_specifier`, after the standard resolver
    returns a hit, reject any path whose extension is a JS/TS-family
    extension (.tsx, .ts, .mts, .cts, .js, .jsx, .mjs, .cjs) when the
    importer is `.scss` / `.sass`, and re-route through the SCSS-aware
    fallback chain (CSS-extension probe, `_filename` partial convention,
    framework include paths, `node_modules` walk-up). When those also fail,
    the import is reported as unresolved instead of falling through to
    JS/TS extensions. SFC `<style>` block imports (`from_style = true`)
    keep their existing behaviour because their importer extension is
    `.vue` / `.svelte` rather than `.scss`.
    
    Tests: new fixture `scss-bare-import-tsx-collision` exactly mirrors the
    issue's reproduction (Widget.tsx + Widget.scss siblings, Helper.scss
    with `@use 'Widget'`, Helper.tsx imports `./Helper.scss`). Integration
    test asserts zero circular dependencies, zero unresolved imports, and
    that Widget.scss is reachable. The OLD binary built via `git stash` of
    the diff produces the exact 3-file phantom cycle the issue documents;
    the FIXED binary produces zero. The other 9 SCSS integration tests
    (partial convention, include paths, node_modules resolution, external
    package SCSS subpaths, SFC `<style>` blocks, Vite preprocessor
    additionalData) continue to pass.
    BartWaardenburg committed May 1, 2026
    Configuration menu
    Copy the full SHA
    a0944ea View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    5702be9 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    c215170 View commit details
    Browse the repository at this point in the history
Loading