Commit Graph

689 Commits

Author SHA1 Message Date
github-actions[bot] f75ec7a1e7 chore: version packages (#682) react-doctor@0.4.0 oxlint-plugin-react-doctor@0.4.0 eslint-plugin-react-doctor@0.4.0 2026-06-04 21:21:42 -04:00
Ray Arayilakath 75932719d1 feat(action): add scope input to opt into full-project scans on PRs (#656)
* feat(action): add scope input to opt into full-project scans on PRs

On pull_request events the action scopes the scan to the PR's changed files
(baseline/diff mode), with no way to scan the whole project. A PR that only
adds config/workflow files therefore reports 0 issues even when the project
has obvious problems in untouched files.

Add a 'scope' input: 'changed' (default, unchanged baseline/diff behavior) or
'full'. When full, skip the pr-files and base steps and pass '--diff false' —
the documented full-scan escape hatch, which disables baseline/diff and
overrides any diff value in the project config. The scope value is lowercased
before the bash test so it matches the case-insensitive comparison the GHA
'inputs.scope != full' expressions use.

Co-authored-by: Ray Arayilakath <me@rayhanadev.com>

* style(action): simplify the --diff false comment to plain language

Co-authored-by: Ray Arayilakath <me@rayhanadev.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
v2.0.1
2026-06-04 18:10:02 -04:00
Ray Arayilakath 9a8ad6e40d feat(ci): blocking gate, PR-introduced-issues baseline, inline review comments + CLI flag cleanup (#663)
Co-authored-by: Cursor <cursoragent@cursor.com>
v2.0.0
2026-06-04 17:56:22 -04:00
Ray Arayilakath 915745ef7b feat(language-server): editor language server behind react-doctor experimental-lsp (#681)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 17:43:53 -04:00
github-actions[bot] 6130583376 chore: version packages (#646) eslint-plugin-react-doctor@0.3.0 react-doctor@0.3.0 oxlint-plugin-react-doctor@0.3.0 2026-06-04 04:21:10 -07:00
Aiden Bai cbdff6203d feat(cli): "Add to CI" handoff option + default CI setup in install (#658)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
Co-authored-by: Nisarg Patel <awesomenisarg@gmail.com>
2026-06-04 04:15:05 -07:00
devin-ai-integration[bot] 67be206087 chore: bump deslop-js to ^0.0.19 (#679)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-04 03:49:32 -07:00
devin-ai-integration[bot] d4cc99b2a8 fix: require useState binding proof for setter-pattern rules (#678)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-04 03:39:59 -07:00
Aiden Bai eba20ae9a7 feat(rules): demote 19 low-signal rules to opt-in (#644) 2026-06-04 02:50:01 -07:00
devin-ai-integration[bot] abbb04202e Retire rn-animate-layout-property rule (#677) 2026-06-04 01:00:26 -07:00
devin-ai-integration[bot] 08e1d55da4 fix(cli): allow combining --yes and --full (#676)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-06-04 00:40:44 -07:00
Aiden Bai 6851a786e5 chore: bump deslop-js to 0.0.17 (#674) 2026-06-03 17:13:50 -07:00
Aiden Bai 5d7b36bc31 Fix Reanimated layout animation false positive (#666) 2026-06-03 17:12:43 -07:00
Aiden Bai 68a0befa1a fix(rules): stop no-wide-letter-spacing flagging uppercase wrapper-prop labels (#673) 2026-06-03 16:33:53 -07:00
Aiden Bai 8e7fb3366f fix(rules): disable prefer-module-scope-static-value under React Compiler (#672) 2026-06-03 16:31:56 -07:00
Aiden Bai 3c05fc4d63 chore: bump deslop-js (#668) 2026-06-03 03:10:32 -07:00
Aiden Bai 4dc48d7bc5 Fix React Compiler context provider value false positive #664 (#667) 2026-06-03 02:19:50 -07:00
Aiden Bai 87440abac8 Fix React Native rule false positives (#662) 2026-06-03 01:41:06 -07:00
Ray Arayilakath e3b106e191 feat(telemetry): emit a per-scan wide event for CI + usage analysis (#660)
Enrich the per-scan Sentry run span with the full run/CI/project/outcome
context (scan mode, score, diagnostics by severity/category, top rule,
lint/dead-code state, and in CI the GitHub event, official-action marker,
forwarded action inputs, and the pull-request gate) so usage and CI behavior
are queryable as spans instead of pre-aggregated counters.

Mint a random per-run runId on the Sentry run context (never a tag or metric
dimension) to correlate the spans of a single run; a workspace invocation's
project scans share one id and per-project span attributes disambiguate. The
wide event's wouldBlock/outcome/exitCode mirror the CLI's real fail-on gate
(ciFailure surface, and no gate in score-only mode). The official GitHub
Action forwards its inputs so action configuration is visible in telemetry.
Telemetry stays anonymized — no repo, owner, username, branch, or path is
sent to Sentry — and --no-score / --no-telemetry opts out.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-03 00:31:48 -04:00
Nisarg Patel 86911770da fix(cli): refine warning display in diagnostics to improve clarity and focus 2026-06-02 17:51:11 -07:00
Aiden Bai 19b39c0e0d chore: bump deslop-js to 0.0.15 (#659)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-02 17:23:01 -07:00
Ray Arayilakath d594f69f26 fix(cli): treat an unreadable --changed-files-from file as a clean error (#655)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 18:19:09 -04:00
Ray Arayilakath eab6dc2747 fix(core): skip un-enumerable directories during subproject discovery (#654)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 18:18:57 -04:00
Ray Arayilakath f375dbb24f chore(skills): add /ship release pipeline skill (#651)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 15:47:18 -04:00
Ray Arayilakath 3cc997108b fix(cli): exit cleanly on terminal hangup (read EIO) during interactive prompts (#650)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 15:40:14 -04:00
Rayhan Noufal Arayilakath 0a36216c12 style(readme): apply formatter to CI Action SHA-pin snippet
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 12:27:44 -07:00
Rayhan Noufal Arayilakath caf46a775a docs(agents): document GitHub Action versioning scheme
The composite Action is versioned independently from the npm packages via
v-prefixed semver tags (vX.Y.Z) plus a floating major (vN), distinct from
the Changesets `<pkg>@X.Y.Z` tags. Documents the bump rules, the signed-tag
gotcha, and the release/floating-major commands.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 12:20:38 -07:00
Rayhan Noufal Arayilakath 5c49fa2b8e docs(readme): pin CI Action example to @v1 + SHA-pin guidance (issue #299)
Replace the mutable `millionco/react-doctor@main` reference in the GitHub
Actions example with the `@v1` floating release tag, and add a note on
pinning to a full commit SHA for hardened CI (the example grants
`pull-requests: write`). Avoids running whatever `main` points at runtime.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 12:20:37 -07:00
github-actions[bot] 8d13ba3f84 chore: version packages (#641) 2026-06-01 23:19:09 -07:00
Aiden Bai 4aadaabfd4 fix(react-native): stop false-positives on Expo Universal UI (@expo/ui) (#645) 2026-06-01 23:18:56 -07:00
Ray Arayilakath 0c8b797d18 fix(cli): degrade git current-branch read when git is unavailable (#643)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 20:32:01 -04:00
Ray Arayilakath 2aa96f39b5 fix(cli): treat expected user/CLI errors as clean errors, not Sentry crashes (#642)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 20:09:07 -04:00
github-actions[bot] 5614b3220b chore: version packages (#639) 2026-06-01 15:21:39 -07:00
Aiden Bai b336f54d66 feat(cli): reveal category breakdown one issue at a time (#640) 2026-06-01 15:21:26 -07:00
Aiden Bai ec5d58cf83 fix(cli): never animate the score header / onboarding inside git hooks
`canAnimateOnboarding` only excluded CI, so a git hook invoked by an
interactive `git commit` (real inherited TTY, `GIT_DIR` set) would play
the score-bar count-up and onboarding pacing, emitting cursor escapes
into hook output (issue #293). Add `isGitHookEnvironment()` and gate it
out, while keeping the deliberate coding-agent real-TTY animation.
2026-06-01 14:25:50 -07:00
Aiden Bai 114893e07d New onboarding 2 ray backup (#638)
Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com>
2026-06-01 14:20:43 -07:00
github-actions[bot] 2d1ab245f0 chore: version packages (#632) eslint-plugin-react-doctor@0.2.16 oxlint-plugin-react-doctor@0.2.16 react-doctor@0.2.16 2026-06-01 10:44:31 -07:00
Aiden Bai 8162bfb7ca feat(cli): redesign scan summary, footer, and verbose warnings (#637) 2026-06-01 10:26:17 -07:00
Aiden Bai bf4c21e45d Update README.md 2026-06-01 09:31:36 -07:00
Ray Arayilakath bd8298d6cf feat(cli): lint in parallel by default, with serial fallback (#635)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 11:50:59 -04:00
Ray Arayilakath 520b0a9235 fix(cli): accept commit ranges in --diff; render bad values as clean errors (#633)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 09:23:44 -04:00
Ray Arayilakath 17e722ee07 feat(cli): add anonymized Sentry usage metrics (counters + distributions) (#634)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 09:23:12 -04:00
Rayhan Noufal Arayilakath 3fae9ddd88 Revert "fix(cli): accept commit ranges in --diff; render bad values as clean errors"
This reverts commit 01ec05c06e.
2026-06-01 05:45:02 -07:00
Rayhan Noufal Arayilakath 01ec05c06e fix(cli): accept commit ranges in --diff; render bad values as clean errors
`--diff` now accepts git's own range syntax: two-dot `A..B` (diff A
directly against B) and three-dot `A...B` (diff from the merge-base of A
and B to B). Each endpoint is individually validated against the
anti-injection guard, so a range can't smuggle a `--upload-pack=`-style
option past it, and an empty endpoint defaults to HEAD (`main..` means
`main..HEAD`).

An invalid `--diff` value (a malformed ref/range, or a base branch that
hasn't been fetched) is now rendered as a clean, single-line message and
exits non-zero. It no longer prints the generic "Something went wrong,
open a prefilled issue" block or reports the expected user error to
Sentry: getDiffInfo now propagates the tagged ReactDoctorError so the CLI
dispatches on reason._tag via the new isUserInputError classifier.

Fixes REACT-DOCTOR-9

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 05:42:22 -07:00
github-actions[bot] 66f9d649e7 chore: version packages (#603)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
react-doctor@0.2.15 oxlint-plugin-react-doctor@0.2.15 eslint-plugin-react-doctor@0.2.15
2026-06-01 04:44:15 -07:00
Ray Arayilakath 05d7bba5c4 docs(readme): update readme (#631)
* docs(readme): update readme

* use "taste"
2026-06-01 07:33:01 -04:00
Rayhan Noufal Arayilakath 89215753d3 fix: remove unnecessary docs 2026-06-01 04:24:39 -07:00
Ray Arayilakath bdb9e36b0e feat: add 10 React Native & Expo diagnostic rules (#625)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 07:23:41 -04:00
Ray Arayilakath 75c1f99e06 fix(oxlint-plugin-react-doctor): declare oxc-parser as a runtime dependency (#630)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 07:02:17 -04:00
Ray Arayilakath e9e71bbc2f feat(cli): deepen sentry observability -- source maps, tracing, anonymization, crash refs (#628)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 06:19:25 -04:00