feat: add tests and implementation for issue discovery and queue pages

- Implemented `DiscoveryPage` with session management and findings display.
- Added tests for `DiscoveryPage` to ensure proper rendering and functionality.
- Created `QueuePage` for managing issue execution queues with stats and actions.
- Added tests for `QueuePage` to verify UI elements and translations.
- Introduced `useIssues` hooks for fetching and managing issue data.
- Added loading skeletons and error handling for better user experience.
- Created `vite-env.d.ts` for TypeScript support in Vite environment.
This commit is contained in:
catlog22
2026-01-31 21:20:10 +08:00
parent 6d225948d1
commit 1bd082a725
79 changed files with 5870 additions and 449 deletions

View File

@@ -36,12 +36,31 @@ export const workspaceQueryKeys = {
issuesHistory: (projectPath: string) => [...workspaceQueryKeys.issues(projectPath), 'history'] as const,
issueQueue: (projectPath: string) => [...workspaceQueryKeys.issues(projectPath), 'queue'] as const,
// ========== Discoveries ==========
discoveries: (projectPath: string) => ['workspace', projectPath, 'discoveries'] as const,
// ========== Memory ==========
memory: (projectPath: string) => [...workspaceQueryKeys.all(projectPath), 'memory'] as const,
memoryList: (projectPath: string) => [...workspaceQueryKeys.memory(projectPath), 'list'] as const,
memoryDetail: (projectPath: string, memoryId: string) =>
[...workspaceQueryKeys.memory(projectPath), 'detail', memoryId] as const,
// ========== Skills ==========
skills: (projectPath: string) => [...workspaceQueryKeys.all(projectPath), 'skills'] as const,
skillsList: (projectPath: string) => [...workspaceQueryKeys.skills(projectPath), 'list'] as const,
// ========== Commands ==========
commands: (projectPath: string) => [...workspaceQueryKeys.all(projectPath), 'commands'] as const,
commandsList: (projectPath: string) => [...workspaceQueryKeys.commands(projectPath), 'list'] as const,
// ========== Hooks ==========
hooks: (projectPath: string) => [...workspaceQueryKeys.all(projectPath), 'hooks'] as const,
hooksList: (projectPath: string) => [...workspaceQueryKeys.hooks(projectPath), 'list'] as const,
// ========== MCP Servers ==========
mcpServers: (projectPath: string) => [...workspaceQueryKeys.all(projectPath), 'mcpServers'] as const,
mcpServersList: (projectPath: string) => [...workspaceQueryKeys.mcpServers(projectPath), 'list'] as const,
// ========== Project Overview ==========
projectOverview: (projectPath: string) => [...workspaceQueryKeys.all(projectPath), 'projectOverview'] as const,
projectOverviewDetail: (projectPath: string) =>