792 Commits

Author SHA1 Message Date
Ray Arayilakath 8057497508 fix(action): resolve PR changed-file paths against the scanned directory (#858) (#860)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
v2.1.1
2026-06-17 21:17:42 -04:00
Ray Arayilakath 17389ba4fe fix(cli): show the source code frame in why <file>:<line> (#857)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:30:00 -04:00
Aiden Bai 7d9e676e0b fix 2026-06-17 15:50:01 -07:00
Ray Arayilakath 1e260c5d21 fix(cli): show CI + install pitches once per repo, not every scan (#851)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 21:48:29 -04:00
Ray Arayilakath 0053a0283e Revert "feat(rules): add 10 motion, accessibility, and design lint rules (#825)" (#849) 2026-06-16 20:26:21 -04:00
Ray Arayilakath 424d8f9f91 fix(agent-tool-capability-risk): ignore capability keywords in string literals (#838) (#847)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 19:17:25 -04:00
Ray Arayilakath 431e515260 fix(scan): degrade gracefully when react-hooks-js plugin fails to load (#848)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 19:16:59 -04:00
Ray Arayilakath 6b8e756c40 fix(server-sequential-independent-await): count nested-destructuring bindings as a dependency (#839) (#846)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 19:08:22 -04:00
Ray Arayilakath 81bbfcc39a fix(artifact-baas-authority-surface): stop flagging next-sanity studio bundles (#840) (#845)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:58:05 -04:00
Ray Arayilakath 5b742fa28c fix(url-prefilled-privileged-action): recognize validators wrapping reads behind a receiver chain (#837) (#843)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:46:08 -04:00
Ray Arayilakath eafac9d4f1 fix(cli): recommend --scope changed instead of deprecated --diff (#834) (#844)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:45:02 -04:00
Aiden Bai 09dde181c7 feat(rules): add 10 motion, accessibility, and design lint rules (#825)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com>
2026-06-16 17:21:21 -04:00
Aiden Bai 451beeb284 feat(rules): add 3 mined platform/correctness rules (batch 2) (#828)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com>
2026-06-16 00:06:34 -04:00
Ray Arayilakath 0a7edbd3d3 chore(skills): add rde-eval runbook for testing rules against the corpus (#836)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 21:07:46 -04:00
devin-ai-integration[bot] b08ca1c919 chore(deps): upgrade oxc-parser to 0.135.0 (#835)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-15 16:35:03 -07:00
Aiden Bai 03301fcdf4 fix(server-auth-actions): recognize custom auth guards by naming convention (#829) (#831) 2026-06-15 15:52:01 -07:00
devin-ai-integration[bot] f45cb297ef fix(dead-code): keep ignore.files files in deslop graph (#830) (#832) 2026-06-15 15:07:56 -07:00
Aiden Bai 8908f98d02 feat(rules): add 8 mined correctness, performance, a11y, and security rules (#826)
* feat(rules): add 8 mined correctness, performance, a11y, and security rules

Mined from a 12-cluster pass over the design/engineering brain and
synthesized into docs/rule-candidates-backlog.md. Ships the highest-signal,
lowest-noise batch, each with adversarial + FP-regression tests:

- no-call-component-as-function (Bugs)
- no-create-ref-in-function-component (Bugs)
- no-async-effect-callback (Bugs)
- no-json-parse-stringify-clone (Performance)
- img-missing-dimensions (Performance)
- no-img-lazy-with-high-fetchpriority (Performance)
- dialog-has-accessible-name (Accessibility)
- auth-token-in-web-storage (Security)

Adds the shared has-jsx-spread-attribute util and registers the three
in-house ported-bucket rules in RULES_NOT_PORTED_FROM_EXTERNAL.

* fix(rules): drop img-missing-dimensions; make component rules shadow-safe

- Drop `img-missing-dimensions`: width/height attributes are only one of
  several valid ways to reserve space (CSS aspect-ratio, container sizing),
  and the authoritative signal lives in stylesheets a static linter can't
  see. This is a runtime check (Lighthouse `unsized-images`), so a syntax
  rule would false-positive on any CSS-sized image.
- `no-call-component-as-function`: resolve the callee through its scope
  symbol instead of by name, so a parameter/local shadowing a component
  name is no longer flagged. The component signal is the binding's
  declaration (same-file component returning JSX) or an imported binding
  also rendered as JSX.
- `no-create-ref-in-function-component`: skip a shadowing local `createRef`
  (only flag React's import / `React.createRef`).
- Adds shadow-safety regression tests for both.

* fix(rules): tag no-call-component-as-function test-noise (eval finding)

An OSS eval sweep (react-use, radix primitives, excalidraw, mantine;
~2.8k diagnostics) showed every real-world hit of this rule was a test
render-helper (`render(Wrapper({...}))` in `.test.tsx`/`.story.tsx`) —
harmless for hookless wrappers and the dominant firing surface. Tag it
`test-noise` so it skips test/story/playground files and only nags
shipped code. The sweep also confirmed dialog-has-accessible-name (2 real
a11y bugs in excalidraw) and no-create-ref-in-function-component (1 real
bug in a mantine story) as true positives with zero false positives.
2026-06-15 05:13:44 -07:00
github-actions[bot] 15238de701 chore: version packages (#821) react-doctor@0.5.6 oxlint-plugin-react-doctor@0.5.6 eslint-plugin-react-doctor@0.5.6 2026-06-15 04:01:19 -07:00
Aiden Bai cf9e05be8e fix(scan): show full file count when handing off to dead-code analysis (#815) (#824) 2026-06-15 02:25:50 -07:00
Aiden Bai ea3b827899 feat(security-scan): add 6 BaaS and CWE rules from security research (#812) 2026-06-15 00:50:47 -07:00
Ray Arayilakath bac7c82950 fix(supply-chain): skip dist-tags and wildcards instead of crashing (#807) (#823)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-14 19:09:50 -04:00
Aiden Bai 5fc0e270c9 fix(security-scan): resolve reported false positives (#813, #814, #816, #817, #818) (#819) 2026-06-14 15:37:53 -07:00
github-actions[bot] daf0579d19 chore: version packages (#810) react-doctor@0.5.5 oxlint-plugin-react-doctor@0.5.5 eslint-plugin-react-doctor@0.5.5 2026-06-13 21:36:52 -07:00
devin-ai-integration[bot] e90eb7acbf fix(tanstack-start): recognize current .validator() server-fn method (#808) (#809)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-13 17:36:42 -07:00
github-actions[bot] f229c75d4b chore: version packages (#806) react-doctor@0.5.4 oxlint-plugin-react-doctor@0.5.4 eslint-plugin-react-doctor@0.5.4 2026-06-13 04:00:14 -07:00
Aiden Bai eacdcf2e65 Add project-level security scan rules (#744)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com>
2026-06-13 03:57:25 -07:00
github-actions[bot] 0b30023ac6 chore: version packages (#805) react-doctor@0.5.3 oxlint-plugin-react-doctor@0.5.3 eslint-plugin-react-doctor@0.5.3 2026-06-13 03:22:47 -07:00
Nisarg Patel 022790bf9e feat: name Socket alerts and give axis-aware help in supply-chain diagnostics (#804)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-13 03:21:42 -07:00
github-actions[bot] 094d470d13 chore: version packages (#764) react-doctor@0.5.2 oxlint-plugin-react-doctor@0.5.2 eslint-plugin-react-doctor@0.5.2 2026-06-12 20:24:27 -07:00
devin-ai-integration[bot] 3de910612d fix: resolve react-doctor/api imports in doctor.config.ts without local node_modules (#800)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 19:58:18 -07:00
devin-ai-integration[bot] 0f91fa36b8 feat: rn-no-metro-babel-runtime-version — flag RN babel preset missing enableBabelRuntime (#801)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
Co-authored-by: D N <4661784+retyui@users.noreply.github.com>
2026-06-12 19:29:04 -07:00
devin-ai-integration[bot] 0a9d583109 chore: bump deslop-js to ^0.0.24 (#802)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 19:17:45 -07:00
devin-ai-integration[bot] 9cc655591e feat: carry the React Compiler bail-out reason in the primary diagnostic message (#793)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 15:41:40 -07:00
devin-ai-integration[bot] 04e72a4d56 feat: label test/story file context on diagnostic sites (#795)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 03:50:35 -07:00
devin-ai-integration[bot] 7c8816575a fix: rules-of-hooks FP on forwardRef/memo callbacks under non-PascalCase bindings (#794)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 01:29:56 -07:00
devin-ai-integration[bot] fee3fc436e fix(no-barrel-import): framework-aware wording for React Native targets (#796)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 00:28:34 -07:00
devin-ai-integration[bot] 19d99eee1e fix: title react-hooks-js/todo diagnostics as unsupported syntax (#792)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-12 00:17:14 -07:00
devin-ai-integration[bot] d48e7f1695 feat: per-module scoring via diagnose({ projects }), CLI --project paths, and config projects (#771)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com>
2026-06-11 21:55:48 -07:00
devin-ai-integration[bot] f52bd07375 fix: rn-no-raw-text false positives for nested-Text wrappers and test files (#790)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-11 21:05:01 -07:00
Ray Arayilakath 22268f70ac fix: cap oxlint below 1.67 to stop duplicate Vitest instances in pnpm repos (#791)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 23:33:38 -04:00
devin-ai-integration[bot] a48fb06ffb feat: add --output-dir flag for the full diagnostics dump (#783)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com>
2026-06-11 00:36:56 -07:00
devin-ai-integration[bot] f63ed9dd11 chore: bump deslop-js to ^0.0.23 (#785)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-10 19:28:55 -07:00
Ray Arayilakath 038aaf78c1 fix(nextjs-missing-metadata): stop flagging pages that inherit layout metadata (#784)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 18:20:32 -04:00
Ray Arayilakath c4f0e607b6 fix(only-export-components): skip framework route/special files (#776) (#782)
* fix(only-export-components): skip framework route/special files (#776)

Recognize the route/special files of every file-routing framework
react-doctor covers (Next.js, Expo Router, TanStack Router, Remix /
React Router) via a single `isFrameworkRouteOrSpecialFilename` helper,
so the documented "co-export config/metadata next to the default
component" shape no longer triggers false-positive non-component-export
warnings. Fixes the `alt` / `size` / `contentType` / `revalidate`
exports in `opengraph-image.tsx`.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: change variable name

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: update usages as well

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-06-10 18:14:37 -04:00
Ray Arayilakath f5f539a1a3 fix: gate the Socket supply-chain check on security axes, not the overall score (#780)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 17:46:34 -04:00
Ray Arayilakath 2f26228e36 feat: consolidate scan scope into one --scope flag (#769)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 02:51:42 -04:00
Ray Arayilakath a64093c8a1 fix: resolve the repo's default branch for CI onboarding instead of assuming main (#768)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 00:56:01 -04:00
Ray Arayilakath 486c68f655 feat(action): default the blocking gate to advisory (#767)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 23:58:17 -04:00
devin-ai-integration[bot] 94f9f4fe98 fix: bump engines.node to ^20.19.0 || >=22.13.0 (#766) 2026-06-09 20:14:30 -07:00