Deferred (non-blocking) findings from the #59 code review. Neither blocks shipping v2.10.2.
R4 (Suggest) - Duplicated outside-click logic. The Escape-key + outside-click useEffect is now reimplemented in three components: DeadlinePopover, TaskCard, and FilterPanel. Extract a useClickOutside(ref, onClose) hook (e.g. frontend/src/hooks/useClickOutside.ts) and refactor all three to use it. A bug fix in Escape/touch handling currently has to be made in three places.
R3 (Suggest) - Poll-pause scope. TasksClient pauses background polling while the desktop deadline popover is open (deadlinePopoverId === null in the pollEnabled condition). The popover holds no unsaved state, so the pause is broader than necessary. Consider dropping deadlinePopoverId from the pause condition so the list keeps refreshing during a read-only deadline selection. Low value; verify it doesn't cause the popover's task row to re-render out from under it before changing.
Source: code review on branch feature/update-task-and-edit-modal-#59. Tracking issue #59.
Deferred (non-blocking) findings from the #59 code review. Neither blocks shipping v2.10.2.
R4 (Suggest) - Duplicated outside-click logic. The Escape-key + outside-click
useEffectis now reimplemented in three components:DeadlinePopover,TaskCard, andFilterPanel. Extract auseClickOutside(ref, onClose)hook (e.g.frontend/src/hooks/useClickOutside.ts) and refactor all three to use it. A bug fix in Escape/touch handling currently has to be made in three places.R3 (Suggest) - Poll-pause scope.
TasksClientpauses background polling while the desktop deadline popover is open (deadlinePopoverId === nullin the pollEnabled condition). The popover holds no unsaved state, so the pause is broader than necessary. Consider droppingdeadlinePopoverIdfrom the pause condition so the list keeps refreshing during a read-only deadline selection. Low value; verify it doesn't cause the popover's task row to re-render out from under it before changing.Source: code review on branch
feature/update-task-and-edit-modal-#59. Tracking issue #59.