Files
SubTracker/apps/web/tests/unit/utils
SmileQWQ ace3ca992a perf: streamline worker page data loading
Sync the settings-form deep-clone fix and AI loading copy improvements from main, then continue reducing page-entry latency on the worker branch.

Included fixes:
- restore editability for nested notification and AI settings fields by cloning settings query data before binding forms
- refine AI recognition loading copy layout to avoid awkward line wraps
- align calendar summary wording with the updated main-branch labels

Data-loading optimizations:
- add shared Vue Query composables for exchange-rate snapshot, tags, notification webhook, statistics overview, budget statistics, and calendar events
- move SettingsPage snapshot and webhook loading onto shared query caches instead of always issuing separate onMounted requests
- move Dashboard, Statistics, and Budget pages onto shared overview and budget query composables
- query-ize the subscriptions main list so list refreshes reuse cache/invalidation instead of repeated page-local fetches
- reuse cached exchange-rate snapshot and tag data on the subscriptions page
- remove over-aggressive query behavior that could cause stale or inconsistent UI states by:
  - updating settings query cache immediately after save operations
  - avoiding duplicate subscriptions refetches when filters already change the query key
  - keeping calendar month switches query-driven without showing mismatched stale month labels

Validation:
- npm run test -w apps/web passed
- npm run lint -w apps/web passed
- npm run build -w packages/shared passed
- npm run build -w apps/web passed
2026-04-23 09:56:16 +08:00
..