-
由 Will Chen 提交于
Introduce a type-safe, centralized query key system following TanStack Query best practices: - Add src/lib/queryKeys.ts with hierarchical factory functions - Use `as const` assertions for full type inference - Group keys by feature (apps, chats, versions, etc.) - Support prefix-based invalidation via parent keys Update all 30+ hooks and components to use the new queryKeys: - Replace inline string arrays with factory calls - Replace scattered exports (CHATS_QUERY_KEY, TOKEN_COUNT_QUERY_KEY, etc.) - Consistent pattern: queryKeys.<feature>.<operation>(params) Benefits: - Single source of truth for all query keys - Full autocomplete/IntelliSense support - Type-safe invalidation (catches typos at compile time) - Easier refactoring and key discovery <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Centralized React Query keys behind a typed queryKeys factory and updated 30+ hooks/components to use it. This improves type-safety, enables autocomplete, and makes invalidation and refactors simpler. - **Refactors** - Added src/lib/queryKeys.ts with hierarchical factory functions (as const) grouped by feature. - Replaced inline arrays and scattered constants (e.g., CHATS_QUERY_KEY, TOKEN_COUNT_QUERY_KEY, APP_THEME_QUERY_KEY, SUPABASE_QUERY_KEYS). - Standardized invalidate/remove calls to use parent keys (e.g., queryKeys.chats.all, queryKeys.versions.list({ appId })). - Structured MCP keys (mcp.toolsByServer.all and mcp.toolsByServer.list({ serverIds })) and updated Supabase branches to include organizationSlug. - No behavior changes; safer invalidation and consistent keys across the app. - **Migration** - Use queryKeys.<feature>.<operation>(params object) for all queryKey definitions. - Invalidate broadly via parent keys when needed (e.g., queryKeys.chats.all). - Update Supabase branches calls to pass organizationSlug: queryKeys.supabase.branches({ projectId, organizationSlug }). - Do not add or export per-hook key constants; rely on queryKeys. <sup>Written for commit 2b80e408f077b8ea3141369ca21f62e514852cfd. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Introduces a centralized, typed React Query key factory and applies it across the app for consistency and safer invalidation. > > - Adds `src/lib/queryKeys.ts` with hierarchical, `as const` key factories (e.g., `queryKeys.apps.detail`, `queryKeys.versions.list`) > - Refactors 30+ hooks/components to use factory keys in `useQuery`/`useMutation` and `invalidateQueries`/`removeQueries` > - Replaces scattered constants (e.g., `CHATS_QUERY_KEY`, `TOKEN_COUNT_QUERY_KEY`, `APP_THEME_QUERY_KEY`, Supabase/MCP keys) with `queryKeys` > - Updates IPC-driven UI pieces (`AppUpgrades`, `CapacitorControls`, `ModelPicker`, `ChatInput`, preview panels, Neon, MCP, Supabase, Vercel, etc.) to the new keys > - Documentation: `AGENTS.md` adds an Architecture section with usage guidelines and changes format script to `npm run fmt` > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2b80e408f077b8ea3141369ca21f62e514852cfd. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by:Claude <noreply@anthropic.com>