Aiden Bai
e6a155763e
feat(plugin): detect Zustand state mutation ( #1410 )
...
* feat(plugin): detect Zustand state mutation
* fix(rule): follow Zustand snapshot branches
* fix(rule): skip imperative Zustand caches
* fix(rule): honor Zustand replacement uncertainty
* fix(rule): scope Zustand snapshot notifiers
* fix(rule): follow conditional Zustand notifiers
* fix(rule): track nested Zustand snapshot paths
* fix(rule): analyze Zustand setState updaters
* fix(rule): preserve Zustand notifier provenance
* fix(rule): respect Zustand rebind branches
* fix(rule): match nested Zustand branches
* fix(rule): close Zustand control-flow gaps
* fix(rule): order Zustand notifiers
* fix(rule): gate conditional Zustand notifiers
* fix(rule): track nested Zustand alias spreads
* fix(rule): connect bound Zustand updater reads
* fix(rule): preserve nested Zustand notifier paths
* fix(rule): gate Immer store updaters
* fix(rule): prove Zustand collection mutations
* fix(rule): order nested Zustand notifications
2026-07-19 23:54:49 -07:00
Aiden Bai
6fcd9c9576
feat(plugin): detect eager Zustand get calls ( #1407 )
...
* feat(plugin): detect eager Zustand get calls
* fix(rule): cover eager async Zustand reads
* fix(rule): model Zustand async suspension paths
* fix(rule): follow eager Zustand helper calls
2026-07-19 23:51:17 -07:00
Aiden Bai
7eca0eebf9
feat(rule): detect whole Zustand store subscriptions ( #1398 )
...
* feat(plugin): detect whole Zustand subscriptions
* fix(rule): cover traditional Zustand stores
* fix(rule): detect imported Zustand store creators
2026-07-19 23:47:57 -07:00
Aiden Bai
8e5ae45dd3
feat(rules): detect unstable Zustand selector results ( #1395 )
...
* feat(rules): detect unstable Zustand selector results
* fix(rules): tighten Zustand selector provenance
* fix(rules): gate fresh Zustand selectors to v5
* fix(rules): harden Zustand selector gating
* fix(rule): respect Zustand v5 equality APIs
* fix(rule): harden Zustand selector analysis
* fix(rule): prove Zustand selector collection shapes
* test(rule): cover split curried Zustand stores
* fix(rule): classify Object collection helpers
2026-07-19 23:44:55 -07:00
Aiden Bai
cc2d1685ee
feat(core): add Zustand rule foundation ( #1399 )
...
* feat(core): detect Zustand version capabilities
* docs(rules): research Zustand rule portfolio
* refactor(plugin): centralize Zustand provenance
* fix(rules): share precise Zustand store shape resolution
* fix(rules): resolve split curried Zustand factories
2026-07-19 23:43:26 -07:00
Aiden Bai
61bf03eedc
feat(rules): add MobX diagnostics foundation ( #1405 )
2026-07-19 21:30:10 -07:00
Aiden Bai
f4aa8214bf
feat(rules): add Remotion correctness checks ( #1400 )
2026-07-19 19:35:47 -07:00
Aiden Bai
5774353907
feat(rules): detect Valtio snapshot reads in callbacks ( #1397 )
...
* feat(rules): detect Valtio snapshot reads in callbacks
* fix(rules): gate Valtio callback checks by dependency
* fix(rules): follow deferred Valtio callback aliases
* fix(rules): require supported Valtio version
2026-07-19 07:01:38 -07:00
Aiden Bai
a4eaeddefe
feat(rules): detect Valtio proxy reads during render ( #1396 )
2026-07-19 06:44:56 -07:00
Aiden Bai
90e794f76b
test: cover ref mutation inline suppression ( #1409 )
2026-07-19 05:25:30 -07:00
Aiden Bai
3598138c7b
Scale eval corpus and tighten diagnostics ( #1403 )
...
* scale eval corpus and tighten diagnostics
* fix review and Windows eval failures
2026-07-19 04:13:13 -07:00
Aiden Bai
88114a2332
Revert "NEW_RULES: Add rule analysis foundation" ( #1401 )
...
Reverts #1338 in full.
2026-07-19 03:16:55 -07:00
Aiden Bai
3018538b7c
NEW_RULES: Add rule analysis foundation ( #1338 )
...
Replace aggregate PR #1000 with the reviewed NEW_RULES stack, including workspace capability aggregation and stable performance regression coverage.
2026-07-19 02:56:31 -07:00
Aiden Bai
7c9dbeda0d
feat(evals): add Daytona corpus parity runner ( #1384 )
2026-07-19 00:21:46 -07:00
Aiden Bai
21221c2d4b
fix(rule): preserve effect cleanup ownership ( #1394 )
2026-07-18 20:55:36 -07:00
Aiden Bai
b4556e31d8
fix(rules): resolve confirmed brain false positives ( #1388 )
...
* fix(rules): resolve brain false positives
* fix(security): bound env template matching
* fix(rules): cover rendering and redirect edge cases
2026-07-18 05:10:48 -07:00
Aiden Bai
a667b45907
fix: preserve external subscription hook provenance ( #1323 )
...
* fix(rule): preserve external hook result provenance
* fix(rule): harden external hook result provenance
* fix(rule): address external hook alias edge cases
* fix(effects): recognize external visibility signals
* fix: align local external store provenance
* fix: preserve external state provenance boundaries
* fix: gate local external store provenance
2026-07-18 03:15:59 -07:00
Aiden Bai
b8529619bd
fix(rule): preserve external location invalidation state ( #1311 )
...
* test(rule): capture external location invalidation
* fix(rule): preserve external location invalidators
* fix(rule): prove external location invalidation
* fix(rule): require definite listener removal
* fix(rule): unwrap location listener options
* fix(rule): avoid caching cyclic mutation misses
* fix(rule): preserve listeners with unknown capture
* fix(rule): preserve listeners across suspension
* fix(rule): harden deferred invalidation provenance
* fix: batch effect location invalidation
2026-07-18 03:06:57 -07:00
Aiden Bai
fe241a9723
fix(no-effect-chain): preserve stable callback precision ( #1322 )
...
* fix(no-effect-chain): follow stable local callbacks
* fix(no-effect-chain): harden stable callback analysis
* fix(no-effect-chain): preserve returned callback chains
* fix(no-effect-chain): unwrap optional cleanup returns
* fix(no-effect-chain): follow concise cleanup returns
* fix(no-effect-chain): preserve stable callback precision
* test(no-effect-chain): avoid wall-clock CI gate
* fix: reject defaulted global namespace aliases
2026-07-18 02:55:07 -07:00
Aiden Bai
82c4a125c5
fix(rule): match legacy media query listener cleanup ( #1327 )
2026-07-18 02:36:55 -07:00
Aiden Bai
26b4a0ceb1
fix(no-effect-chain): recognize lazy DOM ref Maps ( #1325 )
...
* test(no-effect-chain): capture lazy DOM ref maps
* fix(no-effect-chain): prove lazy DOM ref maps
2026-07-18 02:32:49 -07:00
Aiden Bai
a2f9bf42c0
fix(a11y): compose global ARIA role properties ( #1329 )
2026-07-18 02:31:57 -07:00
Aiden Bai
5332cb66cf
fix: match nested listener cleanup ( #1380 )
...
* fix: match nested listener cleanup
* fix: harden projected listener cleanup matching
* fix: distinguish listener capture identities
* fix: require exhaustive replayed cleanup
* fix: preserve additive cleanup collections
* fix: scan cleanup mutations structurally
* fix: accept named projected cleanup
* fix: reject overwritten cleanup entries
* fix: accept projected bulk listener cleanup
2026-07-18 02:22:18 -07:00
Aiden Bai
f5f6a79ba2
fix: make set-state-in-effect advisory ( #1381 )
2026-07-18 02:21:42 -07:00
Aiden Bai
c9f2c4be53
fix: detect imported React 19 context values ( #1379 )
2026-07-18 02:21:16 -07:00
Aiden Bai
d9700556d1
fix(rules): guideline audit — compiler gates, capability fixes, message honesty across 15 rules ( #1369 )
...
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com >
2026-07-18 01:03:13 -07:00
Aiden Bai
1839566481
fix(baseline): match stable diagnostic evidence ( #1376 )
2026-07-18 00:54:04 -07:00
github-actions[bot]
78189225ae
chore: version packages ( #1378 )
2026-07-17 23:39:46 -07:00
Aiden Bai
eb2d687503
fix: preserve production routes in health checks ( #1377 )
2026-07-17 22:32:52 -07:00
github-actions[bot]
c0d9d385cd
chore: version packages ( #1307 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 21:27:09 -07:00
Aiden Bai
2450582318
fix: exclude test diagnostics from production health ( #1326 )
...
* test: define production health scope for test diagnostics
* fix: exclude test diagnostics from production health
* fix: align score projection diagnostic surface
* fix: project only displayed score diagnostics
* docs(config): refresh production health defaults
2026-07-17 21:22:11 -07:00
Aiden Bai
7e6cdf920b
fix(rules): unwrap typed call receivers ( #1375 )
2026-07-17 20:14:07 -07:00
Aiden Bai
ac392cbbc0
fix(hook-use-state): allow concise tuple returns ( #1373 )
2026-07-17 19:08:40 -07:00
Aiden Bai
44d3ad879d
fix(rules): resolve React hook aliases semantically ( #1362 )
...
* fix(rules): resolve React hook aliases semantically
* fix(rules): preserve aliased hook dependency positions
* test(rules): pin userland hook consumption
* fix(rules): preserve effect event polyfills
2026-07-17 18:57:34 -07:00
Aiden Bai
8835214910
fix(no-adjust-state): align the published contract ( #1361 )
...
* fix(no-adjust-state): align the published contract
* test(no-adjust-state): align CLI parity fixtures
* fix(rule): exclude subscription and client effects
* fix(no-adjust-state): ignore unreachable nested work
* test(no-adjust-state): preserve alias ownership
* fix(no-adjust-state): exclude observer effects
* fix(effect-cleanup): preserve computed subscriptions
2026-07-17 18:40:22 -07:00
Aiden Bai
842a55fb6a
fix(git): ignore external diff renderers ( #1372 )
2026-07-17 09:05:37 -07:00
Aiden Bai
c41f271c31
fix(exhaustive-deps): recognize lazy ref registry aliases ( #1352 )
...
* fix(exhaustive-deps): recognize lazy ref registry aliases
* fix(exhaustive-deps): follow wrapped ref receivers
* fix(exhaustive-deps): reject indirect ref writes
2026-07-17 09:04:39 -07:00
Aiden Bai
3c90f14c90
fix(rules): handle FileReader loading lifecycles ( #1351 )
2026-07-17 09:04:15 -07:00
Aiden Bai
4f3848b001
fix(rules): resolve state and effect aliases semantically ( #1358 )
...
* fix(rules): resolve state effect aliases semantically
* fix(rules): tighten setter alias identity
2026-07-17 09:03:50 -07:00
Aiden Bai
9e55e1f83f
fix(effect-needs-cleanup): prove callback-ref replacement ( #1347 )
...
* fix(effect-needs-cleanup): prove callback-ref replacement
* fix(effect-needs-cleanup): prove ref release paths
* fix(effect-needs-cleanup): require direct ref ownership
* fix(effect-needs-cleanup): accept nullish ref guards
* refactor(effect-needs-cleanup): share presence guard proof
* fix(effect-needs-cleanup): preserve ref-origin proof after rebase
* fix(effect-needs-cleanup): follow stable mutable ref aliases
* fix(effect-needs-cleanup): prove callback ref unmount cleanup
* fix(effect-needs-cleanup): follow callback ref node aliases
* fix(effect-needs-cleanup): recognize bare ref properties
2026-07-17 09:03:25 -07:00
Aiden Bai
cc96f47324
fix(effect-needs-cleanup): prove collection cleanup ( #1346 )
...
* fix(effect-needs-cleanup): prove collection cleanup
* fix(effect-needs-cleanup): require exhaustive collection iteration
* fix(effect-needs-cleanup): preserve for-of cleanup
* fix(effect-needs-cleanup): support multiple collection pushes
* fix(effect-needs-cleanup): verify unobserve target
2026-07-17 09:02:56 -07:00
Aiden Bai
cf9acf26c2
fix(no-pass-data-to-parent): preserve external hook state ( #1342 )
...
* fix(no-pass-data-to-parent): preserve external hook state
* fix(no-pass-data-to-parent): retain subscription fallback
* fix(no-pass-data-to-parent): preserve mixed hook provenance
* fix(no-pass-data-to-parent): reject escaped state setters
* refactor(external-state): remove unused helper
2026-07-17 09:02:20 -07:00
Aiden Bai
c245b9d05d
fix(no-flush-sync): recognize imperative DOM handoffs ( #1340 )
...
* fix(no-flush-sync): allow imperative DOM handoffs
* fix(no-flush-sync): harden handoff adjacency
* fix(no-flush-sync): tighten imperative handoffs
2026-07-17 09:01:54 -07:00
Aiden Bai
093619c3d8
fix(effect-needs-cleanup): prove nested ref ownership ( #1368 )
...
* fix(effect-needs-cleanup): prove nested ref ownership
* fix(effect-needs-cleanup): keep promise callers deferred
2026-07-17 07:54:30 -07:00
Aiden Bai
e5a5f73699
fix(effect-needs-cleanup): prove retained disposer refs ( #1360 )
2026-07-17 07:40:23 -07:00
Aiden Bai
a6e4fb5000
test(rule): pin hydration mount-gate true positives ( #1367 )
2026-07-17 07:25:47 -07:00
Aiden Bai
c1e75f06ba
fix(no-jsx-element-type): allow concrete renderer factories ( #1363 )
2026-07-17 07:25:30 -07:00
Aiden Bai
21043e024e
feat: flag React 19-only ref cleanups on React 18 ( #1356 )
...
* feat: flag React 19-only ref cleanups on React 18
* fix: skip unreachable ref callback branches
* fix: resolve declared ref callbacks
2026-07-17 07:24:46 -07:00
Aiden Bai
0fbf728ec1
fix(effect-needs-cleanup): accept self-releasing gesture listeners ( #1355 )
...
* fix(effect-needs-cleanup): accept self-releasing listeners
* fix(effect-needs-cleanup): cover reverse listener order
2026-07-17 07:24:19 -07:00
Aiden Bai
0f11de18bd
fix(exhaustive-deps): recognize render-derived dependencies ( #1354 )
...
* fix(exhaustive-deps): recognize render-derived dependencies
* fix(exhaustive-deps): reject computed derived sources
* fix(exhaustive-deps): preserve destructured source identity
* fix(exhaustive-deps): reject escaped derived locals
2026-07-17 07:23:38 -07:00