Ray Arayilakath
928f21cd68
MIL-1559: no-giant-component flags non-React TypeScript modules ( #525 )
...
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com >
2026-05-27 17:34:25 -07:00
Aiden Bai
849b25dd91
feat(jotai): add three Jotai rules + register jotai bucket ( #531 )
2026-05-27 17:33:52 -07:00
Ray Arayilakath
07dcb0882c
MIL-1560: Fix false positives in control-has-associated-label ( #528 )
...
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com >
2026-05-27 17:13:20 -07:00
Aiden Bai
f6938f93b8
feat(react-native): add three Pressable / list / ScrollView perf rules ( #529 )
2026-05-27 16:55:27 -07:00
Aiden Bai
a1be777904
feat(state-and-effects): add activity-wraps-effect-heavy-subtree ( #532 )
2026-05-27 16:55:14 -07:00
Aiden Bai
0ece9c4e08
feat(js-performance): add js-async-reduce-without-awaited-acc ( #530 )
2026-05-27 16:04:17 -07:00
Aiden Bai
dc5f2f0972
feat(rn): add rn-no-renderitem-key rule ( #526 )
2026-05-27 14:40:01 -07:00
Ray Arayilakath
8244f1f28f
docs: consolidate fragmented rule skills ( #522 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-27 04:46:10 -04:00
Rayhan Noufal Arayilakath
27e684c1dd
chore: format the damn code gng 🥀
2026-05-27 01:25:32 -07:00
Aiden Bai
ef47202cbd
fix: remove registry-url and upgrade npm for OIDC trusted publishing
...
setup-node's registry-url writes an .npmrc with _authToken placeholder
that short-circuits the OIDC exchange. Also need npm 11.5.1+ for
trusted publishing support.
eslint-plugin-react-doctor@0.2.9
oxlint-plugin-react-doctor@0.2.9
react-doctor@0.2.9
2026-05-27 01:03:10 -07:00
github-actions[bot]
4c02514ab8
chore: version packages ( #521 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-27 00:57:15 -07:00
Aiden Bai
6531454b95
fix: use pnpm run version in publish workflow
2026-05-27 00:54:37 -07:00
Aiden Bai
30afe81c4a
chore: add changeset to test trusted publishing
2026-05-27 00:53:44 -07:00
Aiden Bai
d9a6d68509
chore: add trusted publishing workflow via OIDC
2026-05-27 00:53:19 -07:00
Aiden Bai
1b325b8678
fix(test): bump surface-filter test timeout to 60s for Windows CI
...
The test calls inspect() twice, which exceeds the 30s default on
Windows runners.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-27 00:29:18 -07:00
Aiden Bai
94af28784f
feat(oxlint-plugin): harden React Native list performance rules ( #514 )
2026-05-27 00:16:42 -07:00
Aiden Bai
71242ad73c
feat(oxlint-plugin): add rn-no-falsy-and-render rule ( #518 )
2026-05-26 23:47:13 -07:00
Aiden Bai
7fa53326e2
feat(oxlint-plugin): improve animation and gesture detection rules ( #516 )
2026-05-26 23:43:48 -07:00
Aiden Bai
14bad8fad5
feat(oxlint-plugin): expand deprecated package and import detection ( #515 )
2026-05-26 23:43:22 -07:00
Aiden Bai
fc32204674
feat(oxlint-plugin): expand shadow, style, and scroll rules ( #517 )
2026-05-26 23:41:33 -07:00
Ray Arayilakath
444fbeb760
feat: add skills and docs for writing new rules ( #495 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-27 02:41:23 -04:00
Ray Arayilakath
4e3fa6e10c
fix: caution agents on hook dependency fixes ( #511 )
...
* fix: caution agents on hook dependency fixes
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix: keep hook dependency guidance scoped
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix: simplify exhaustive deps guidance
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix: add exhaustive deps guidance example
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix: expand exhaustive deps example guidance
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-27 01:58:02 -04:00
Ray Arayilakath
68e7b80053
feat: animate perfect score terminal header ( #506 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-26 23:55:09 -04:00
Aiden Bai
e3fd765051
feat(oxlint-plugin): error on manual memoization when React Compiler is enabled ( #504 )
2026-05-26 20:01:04 -07:00
Ray Arayilakath
bfe1b8ed13
[MIL-1555] False positive for tanstack-start-missing-head-content ( #487 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-26 22:09:37 -04:00
Aiden Bai
1fc25d1afe
fix
2026-05-26 18:31:56 -07:00
Aiden Bai
07b8a6c3e0
fix: cross-platform spawn errors ( #498 , #501 ) and add Windows/macOS CI ( #502 )
2026-05-26 18:19:41 -07:00
Ray Arayilakath
910645f4c2
[MIL-1547] Recognize subscription.remove() as effect cleanup ( #471 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Ray Arayilakath <me@rayhanadev.com >
2026-05-26 21:12:58 -04:00
Ray Arayilakath
86928b4cdd
feat: run formatter pre-commit ( #503 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-26 20:57:17 -04:00
Ray Arayilakath
27ed9a72ef
[MIL-1550] fix navigation and Expo image false positives ( #481 )
2026-05-26 17:47:29 -07:00
Ray Arayilakath
b4d7928200
[MIL-1549] Gate expo-image recommendation for bare React Native ( #482 )
2026-05-26 17:47:03 -07:00
Ray Arayilakath
397b1d7828
[MIL-1548] Fix bottom sheet React Native false positive ( #480 )
2026-05-26 17:45:31 -07:00
Rayhan Noufal Arayilakath
9e0f96944e
chore: run the formatter lol
2026-05-26 17:17:50 -07:00
Aiden Bai
e332310146
refactor(api): rename diagnoseModules → diagnoseProjects, clean up API shape
...
- Single object arg (`DiagnoseProjectsInput`) instead of two positional args
- "Projects" vocabulary matching the rest of the codebase
- Per-project scan options (`deadCode`, `lint`, etc.) flat on the entry
instead of nested in `config.deadCode`
- `config` on a project entry means `ReactDoctorConfig` directly
- Discriminated union `ProjectResult` (`ok: true | false`) instead of
separate `modules` + `errors` arrays
2026-05-26 16:23:04 -07:00
Nisarg Patel
87eb13a4ac
fix: harden
2026-05-26 16:15:27 -07:00
Aiden Bai
a7b72e19a1
feat(api): add diagnoseModules() for native per-module scoring ( #499 )
2026-05-26 16:13:03 -07:00
Aiden Bai
5690704080
schema
2026-05-26 05:13:34 -07:00
Aiden Bai
28da2ae32a
0.2.7
2026-05-26 05:08:47 -07:00
Aiden Bai
eb5157e806
fix: bundle eslint-plugin-react-hooks as a direct dependency
...
The React Compiler rules (`react-hooks-js/*`) were silently missing in
published builds because `resolveReactHooksJsPlugin` resolved
`eslint-plugin-react-hooks` via `createRequire(import.meta.url)` — which
found the package in the monorepo's devDependencies but not in the
npm-installed package where it was only an optional peer dep.
Move `eslint-plugin-react-hooks` from optional peerDependencies +
devDependencies to a real dependency in both `@react-doctor/core` and
`react-doctor` so the compiler rules fire automatically for any project
with `babel-plugin-react-compiler` detected.
2026-05-26 04:52:11 -07:00
Aiden Bai
81fce1e205
fix
2026-05-26 03:52:45 -07:00
Aiden Bai
3cd81605a6
feat: agent install hint, concurrent lint+dead-code, remove setup delay ( #493 )
2026-05-26 03:50:15 -07:00
Nisarg Patel
e5139e4c5a
fix: downgrade react-doctor skill version
2026-05-25 22:54:15 -07:00
Nisarg Patel
8b994b9ac0
chore(skill): bump version to 1.1.1 and refine playbook description
...
Updated the version of the react-doctor skill from 1.1.0 to 1.1.1. The playbook description has been refined for clarity, emphasizing its role as the single source of truth in the triage process. No functional changes were made to the skill's operation.
2026-05-25 22:54:14 -07:00
Nisarg Patel
61ea050907
feat(skill): add /doctor full-triage workflow that fetches the canonical playbook
...
The skill body now points the agent at https://www.react.doctor/prompts/react-doctor-agent.md
when the user types `/doctor` or asks for a full triage. The remote playbook is the
single source of truth (same scan -> filter -> triage -> fix -> validate loop as the
daily GitHub Actions bot, adapted for local use), so prompt edits propagate to every
installed agent on the next invocation without re-publishing the skill.
Bumps SKILL.md version 1.0.0 -> 1.1.0.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-25 22:38:06 -07:00
Ray Arayilakath
098a966098
fix(cli): suppress CI and agent interactivity ( #492 )
...
* fix(cli): suppress CI and agent interactivity
Use a shared CI-or-agent environment check to skip core progress spinners and optional setup prompts in automated React Doctor runs.
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(tests): isolate setup prompt CI env
Clear the same CI and coding-agent environment signals used by the prompt guard so setup prompt tests remain deterministic in CI.
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-26 01:36:55 -04:00
Ray Arayilakath
4b5d40e831
feat: implement no-mutating-reducer-state rule ( #491 )
...
* implement no-mutating-reducer-state rule
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix reducer mutation switch fallthrough
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix reducer mutation review findings
Co-authored-by: Cursor <cursoragent@cursor.com >
* format reducer mutation rule
Co-authored-by: Cursor <cursoragent@cursor.com >
* cleaning up comments
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix: remove unnecessary run wrapper
* clean up Object.assign return check
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix static member method detection
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-26 01:17:34 -04:00
Ray Arayilakath
5da342b1bf
[MIL-1552] Animate the React Doctor score progress bar ( #485 )
...
* Animate score bar in CLI results
Co-authored-by: Cursor <cursoragent@cursor.com >
* Format score header helper
Co-authored-by: Cursor <cursoragent@cursor.com >
* Respect silent mode for score animation
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-26 00:17:01 -04:00
Ray Arayilakath
e93e9afcd6
feat: create a utility to detect CI or coding agent and skip animations ( #483 )
...
* detect coding agent environments
Co-authored-by: Cursor <cursoragent@cursor.com >
* consolidate environment detection helpers
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix prompt env test cleanup
Co-authored-by: Cursor <cursoragent@cursor.com >
* centralize environment test signals
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix environment helper formatting
Co-authored-by: Cursor <cursoragent@cursor.com >
* Fix case-sensitive AGENT matching, swap eval order, add missing test coverage
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com >
2026-05-25 23:35:25 -04:00
Ray Arayilakath
d87318df46
feat: skip prefilled project question outside monorepos ( #484 )
...
* fix(cli): skip project selection outside monorepos
Co-authored-by: Cursor <cursoragent@cursor.com >
* Mock cliLogger directly, move cleanup into describe, add monorepo discovery test
Co-authored-by: Cursor <cursoragent@cursor.com >
* Fix formatting in select-projects test
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com >
2026-05-25 23:35:13 -04:00
Ray Arayilakath
4e23e5dd34
fix(ci): point smoke test at core fixture ( #486 )
...
* fix(ci): point smoke test at core fixture
Co-authored-by: Ray Arayilakath <me@rayhanadev.com >
* style: format JSON smoke fixture path
Co-authored-by: Ray Arayilakath <me@rayhanadev.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
2026-05-25 16:37:29 -04:00