- Fix 33 anchor-is-valid issues by adding href="#" to non-navigating <a>
- Fix 7 click-events-have-key-events by adding keyboard handlers
- Fix stale closure in setState by using functional updates
- Add queryClient.invalidateQueries to all useMutation calls
- Replace flushSync with startTransition for non-urgent updates
- Hoist static JSX (extra, Action) to module scope
- Extract render functions to proper components (ChartCard, Settings, Center)
- Use useRef for resize handler to avoid re-subscription
- Use isOnlineRef + forceUpdate pattern in OfflineBanner
- Lower z-index from 999 to 10 in OfflineBanner
- Use .toSorted() instead of spread + .sort()
- Use size-10 Tailwind shorthand, zinc-500 instead of gray-500
- Move Map tooltip styles to antd-style createStyles
- Add title prop to Trend component instead of typeof children check
- Batch DOM style assignments with Object.assign
- Remove unused type/export declarations (knip fixes)
- Remove duplicate named+default exports
- Update react-doctor config: failOn "error", ignore Umi convention files
- Update CI workflow: remove continue-on-error, add Node 22 setup
- Add .umi-undefined to .gitignore
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>