Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
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 |
|
Hey Aiden, I will bribe you with a Wooly Pig if this gets merged :) |
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>
1d22551 to
bc5c668
Compare
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1ea9414. Configure here.
| const rootPackageJson = readPackageJson(monorepoPackageJsonPath); | ||
| reactVersion = resolveCatalogVersion(rootPackageJson, "react", monorepoRoot); | ||
| } | ||
| } |
There was a problem hiding this comment.
Named catalog reference lost during monorepo root resolution
Medium Severity
When a sub-package uses a named catalog reference like catalog:react_v19, resolveCatalogVersion correctly extracts the catalog name from the sub-package's dependencies on line 257. However, the pnpm-workspace.yaml isn't in the sub-package directory, so resolution fails. In the fallback on line 556, resolveCatalogVersion is called with the root's packageJson, which doesn't list react in its dependencies — so catalogName becomes null. resolveCatalogVersionFromCollection then iterates all named catalogs in arbitrary insertion order, potentially returning the wrong version when multiple named catalogs define the same package at different versions.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 1ea9414. Configure here.
| } | ||
|
|
||
| if (currentSection === "named-catalog" && indentLevel > 0) { | ||
| if (indentLevel <= 2 && trimmed.endsWith(":") && !trimmed.includes(" ")) { |
There was a problem hiding this comment.
Hard-coded indent breaks multi-catalog YAML parsing
Low Severity
The indentLevel <= 2 check in parsePnpmWorkspaceCatalogs hard-codes 2-space indentation for detecting sibling named catalog headers. With 4-space (or any >2) YAML indentation, the second and subsequent catalog names under catalogs: won't be recognized as new catalog sections — they'll be treated as key-value entries with empty values and silently skipped, causing their contents to be lost or misattributed to the previous catalog.
Reviewed by Cursor Bugbot for commit 1ea9414. Configure here.


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
filterIgnoredDiagnosticsnow acceptsrootDirectoryand 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:andcatalog:nameversion references from:pnpm-workspace.yamlcatalog:react_v19_current)workspaces.cataloginpackage.json)#106 — Full scan in automated environments
When
--yesor CI environment is detected,resolveDiffModenow 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, orSubtitleare now treated as text-handling components in thern-no-raw-textrule. This prevents false positives for components likeStack.Screen.TitleandNativeTabs.Trigger.Label.#83 — Misleading nextjs-no-client-side-redirect message
The diagnostic message now distinguishes between
router.push(),router.replace(),window.location, andlocation.hrefinstead of using the generic "Client-side redirect" label.#89 — Offline score message
Updated
OFFLINE_MESSAGEfrom "could not calculate score" to "Score calculated locally (offline mode)" since the score IS computed locally viacalculateScoreLocallywhen--offlineis used.#73 — Monorepo root not listed as scannable project
listWorkspacePackagesnow includes the root directory in the project list when it has React dependencies, alongside its workspace packages.Testing
pnpm test✅pnpm lint✅pnpm typecheck✅pnpm format✅