github-actions[bot]
96b5bb4e5b
chore: version packages ( #827 )
react-doctor@0.5.7
oxlint-plugin-react-doctor@0.5.7
eslint-plugin-react-doctor@0.5.7
2026-06-19 00:26:04 -04:00
Rayhan Noufal Arayilakath
66133f883c
chore(changeset): downgrade fix-group root-cause grouping to a patch bump
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 21:17:03 -07:00
Ray Arayilakath
869f220d97
feat(cli): warn before mass-fixing a migration-scale bucket ( #884 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-19 00:15:38 -04:00
Ray Arayilakath
a9d27134c4
feat(cli): group findings a single fix resolves into one root-cause task ( #882 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 23:54:18 -04:00
Ray Arayilakath
44db3e0546
fix: bare-name disable handling + server-fetch mutating-method false positive ( #859 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 23:30:07 -04:00
Ray Arayilakath
4e06b2ac90
chore(changeset): downgrade clickable-locations to a patch bump ( #883 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 23:27:13 -04:00
Ray Arayilakath
740211cf20
feat(action): skip the PR comment + mark the status "skipped" when no React files change ( #863 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
v2.2.0
2026-06-18 23:20:34 -04:00
Ray Arayilakath
50999f4a09
feat(cli): add --debug to surface the run's Sentry trace id ( #881 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 21:34:12 -04:00
Aiden Bai
5d1347e08f
refactor: Effect v4 elegance pass — shared helpers, DRY, magic-number cleanup ( #867 )
2026-06-18 00:21:59 -07:00
Ray Arayilakath
ed0258caa2
test(oxlint-plugin): green the rule suite and run it in CI ( #866 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 00:18:55 -04:00
Aiden Bai
93b796d416
refactor: elegance pass — remove dead code, dead branches, and redundant abstractions ( #852 )
2026-06-17 20:21:41 -07:00
Ray Arayilakath
3f7d0e7ddb
fix(no-danger): ship default-off so it stops blanket-flagging safe dangerouslySetInnerHTML ( #865 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 23:07:09 -04:00
Ray Arayilakath
b8170f814c
fix(jsx-key): don't flag element collections passed to non-children props ( #862 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 22:33:08 -04:00
Ray Arayilakath
937a7ca8a1
fix(no-inline-exhaustive-style): skip Satori OG image components ( #861 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 22:15:43 -04:00
Ray Arayilakath
b317164e3e
feat(cli): clickable OSC-8 file locations + terminalKind telemetry ( #864 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 22:15:11 -04:00
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