super-productivity/eslint-local-rules
Johannes Millan 19796204f3
Add hydration guard for selector-based NgRx effects (#6426)
* fix(sync): guard unprotected selector-based effects against sync replay

Add skipWhileApplyingRemoteOps() guards to selector-based effects that
were missing hydration protection, preventing unwanted side effects
during sync/hydration replay:

- tag.effects.ts: cleanupNullTasksForTaskList$ (hidden dispatch via
  tagService.updateTag inside tap)
- reminder-countdown.effects.ts: reminderCountdownBanner$ (banner flash)
- voice-reminder.effects.ts: dominaMode$ (unwanted TTS)
- task-ui.effects.ts: timeEstimateExceeded$ and
  timeEstimateExceededDismissBanner$ (unwanted notifications/banners)

Also enable the existing require-hydration-guard ESLint rule in
eslint.config.js (scoped to *.effects.ts files) to prevent future
regressions. The rule was already written but never wired into the
linting pipeline.

https://claude.ai/code/session_01WcAdr12nsvLdAjubLx1ZLf

* fix: address PR review feedback for selector effects guards

- Fix require-hydration-guard.spec.js for ESLint v9 (parserOptions → languageOptions)
- Upgrade require-hydration-guard severity from warn to error
- Restore require-entity-registry rule (also lost in ESLint v9 migration)
- Remove unrelated package-lock.json noise

https://claude.ai/code/session_01WcAdr12nsvLdAjubLx1ZLf

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-08 15:18:21 +01:00
..
rules Add hydration guard for selector-based NgRx effects (#6426) 2026-02-08 15:18:21 +01:00
index.js refactor(sync): centralize entity configuration in single registry 2025-12-23 16:15:17 +01:00