Skip to content

fix: resolve 7 GitHub issues (catalog resolution, file ignoring, CLI, RN, Next.js, offline, monorepo)#108

Draft
aidenybai wants to merge 8 commits intomainfrom
cursor/github-issues-resolution-e644
Draft

fix: resolve 7 GitHub issues (catalog resolution, file ignoring, CLI, RN, Next.js, offline, monorepo)#108
aidenybai wants to merge 8 commits intomainfrom
cursor/github-issues-resolution-e644

Conversation

@aidenybai
Copy link
Copy Markdown
Member

Summary

Fixes 7 open GitHub issues across CLI usability, dependency detection, linting accuracy, and monorepo support.

Issues Fixed

#86 — File ignore patterns don't work with absolute paths

filterIgnoredDiagnostics now accepts rootDirectory and converts absolute diagnostic file paths to relative paths before matching against glob patterns. Previously, patterns like /resources/js/components/ui/** never matched because diagnostic paths included the full disk path.

#101, #105, #87 — pnpm/Bun catalog version resolution

Adds support for resolving catalog: and catalog:name version references from:

  • pnpm default catalogs defined in pnpm-workspace.yaml
  • pnpm named catalogs (e.g., catalog:react_v19_current)
  • Bun workspace catalogs (workspaces.catalog in package.json)
  • Catalog resolution from monorepo root when scanning a sub-package

#106 — Full scan in automated environments

When --yes or CI environment is detected, resolveDiffMode now defaults to full scan instead of diff-only scan. Users can still explicitly request diff mode with --diff. This allows agents and CI to reliably get a complete project scan.

#100 — False positive raw text in custom components

Components ending with Title, Label, Heading, Caption, or Subtitle are now treated as text-handling components in the rn-no-raw-text rule. This prevents false positives for components like Stack.Screen.Title and NativeTabs.Trigger.Label.

#83 — Misleading nextjs-no-client-side-redirect message

The diagnostic message now distinguishes between router.push(), router.replace(), window.location, and location.href instead of using the generic "Client-side redirect" label.

#89 — Offline score message

Updated OFFLINE_MESSAGE from "could not calculate score" to "Score calculated locally (offline mode)" since the score IS computed locally via calculateScoreLocally when --offline is used.

#73 — Monorepo root not listed as scannable project

listWorkspacePackages now includes the root directory in the project list when it has React dependencies, alongside its workspace packages.

Testing

  • All 139 tests pass (7 new tests added)
  • pnpm test
  • pnpm lint
  • pnpm typecheck
  • pnpm format
Open in Web Open in Cursor 

cursoragent and others added 8 commits March 23, 2026 03:13
filterIgnoredDiagnostics now accepts rootDirectory and converts absolute
diagnostic file paths to relative paths before matching against glob
patterns. This fixes the issue where ignore.files patterns like
'/resources/js/components/ui/**' would never match because diagnostic
paths included the full disk path.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
…, #105, #87)

Adds support for:
- pnpm default catalogs defined in pnpm-workspace.yaml
- pnpm named catalogs (catalog:name syntax, e.g. catalog:react_v19_current)
- Bun workspace catalogs (workspaces.catalog in package.json)
- Catalog resolution from monorepo root when scanning a sub-package

Includes test fixtures and tests for all three catalog formats.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
When --yes or CI environment is detected, resolveDiffMode now defaults
to full scan instead of diff-only scan. Users can still explicitly
request diff mode with --diff. This allows agents and CI to reliably
get a complete project scan with 'npx react-doctor . --yes'.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
…ves (#100)

Components ending with Title, Label, Heading, Caption, or Subtitle are
now treated as text-handling components in the rn-no-raw-text rule.
This prevents false positives for components like Stack.Screen.Title,
NativeTabs.Trigger.Label, and other UI library components that
correctly handle text rendering internally.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
… detected (#83)

The diagnostic message now distinguishes between router.push(),
router.replace(), window.location, and location.href assignments,
making it clear what the rule actually found instead of using the
generic 'Client-side redirect' label.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
…ly (#89)

The OFFLINE_MESSAGE previously said 'could not calculate score' but
the score IS computed locally via calculateScoreLocally when --offline
is used. Updated to 'Score calculated locally (offline mode).'.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
listWorkspacePackages now includes the root directory in the project
list when it has React dependencies, alongside its workspace packages.
This fixes the issue where the root folder of a monorepo that is itself
a React project was not listed for scanning.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
react-doctor-website Ready Ready Preview, Comment Mar 23, 2026 3:22am

@gerardosabetta
Copy link
Copy Markdown

hey aiden, I'm so waiting for catalog version resolution to use the github action in our CI, any ETAs on when you're releasing this one? no rush, just curious

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants