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

@@ -60,5 +60,80 @@
"createdAt": "Created",
"updatedAt": "Updated",
"solutions": "{count, plural, one {solution} other {solutions}}"
},
"queue": {
"title": "Queue",
"pageTitle": "Issue Queue",
"description": "Manage issue execution queue with execution groups",
"stats": {
"totalItems": "Total Items",
"groups": "Groups",
"tasks": "Tasks",
"solutions": "Solutions"
},
"actions": {
"activate": "Activate",
"deactivate": "Deactivate",
"delete": "Delete",
"merge": "Merge",
"confirmDelete": "Are you sure you want to delete this queue?"
},
"executionGroup": "Execution Group",
"parallel": "Parallel",
"sequential": "Sequential",
"emptyState": "No queue data available",
"conflicts": "Conflicts detected in queue",
"noQueueData": "No queue data"
},
"discovery": {
"title": "Discovery",
"pageTitle": "Issue Discovery",
"description": "View and manage issue discovery sessions",
"stats": {
"totalSessions": "Total Sessions",
"completed": "Completed",
"running": "Running",
"findings": "Findings"
},
"session": {
"status": {
"running": "Running",
"completed": "Completed",
"failed": "Failed"
},
"findings": "{count} findings",
"startedAt": "Started"
},
"findings": {
"title": "Findings",
"filters": {
"severity": "Severity",
"type": "Type",
"search": "Search findings..."
},
"severity": {
"all": "All Severities",
"critical": "Critical",
"high": "High",
"medium": "Medium",
"low": "Low"
},
"type": {
"all": "All Types"
},
"noFindings": "No findings found",
"export": "Export"
},
"tabs": {
"findings": "Findings",
"progress": "Progress",
"info": "Session Info"
},
"emptyState": "No discovery sessions found",
"noSessionSelected": "Select a session to view findings",
"actions": {
"export": "Export Findings",
"refresh": "Refresh"
}
}
}

View File

@@ -8,6 +8,8 @@
"orchestrator": "Orchestrator",
"loops": "Loop Monitor",
"issues": "Issues",
"issueQueue": "Issue Queue",
"issueDiscovery": "Issue Discovery",
"skills": "Skills",
"commands": "Commands",
"memory": "Memory",

View File

@@ -1,5 +1,6 @@
{
"title": "Notifications",
"close": "Close notifications",
"empty": "No notifications",
"emptyHint": "Notifications will appear here",
"markAllRead": "Mark Read",
@@ -14,5 +15,38 @@
"daysAgo": "{0}d ago",
"oneMinuteAgo": "1m ago",
"oneHourAgo": "1h ago",
"oneDayAgo": "1d ago"
"oneDayAgo": "1d ago",
"sources": {
"system": "System",
"websocket": "WebSocket",
"cli": "CLI",
"workflow": "Workflow",
"user": "User",
"external": "External"
},
"priorities": {
"low": "Low",
"medium": "Medium",
"high": "High",
"critical": "Critical"
},
"attachments": {
"image": "Image",
"code": "Code",
"file": "File",
"data": "Data",
"download": "Download"
},
"actions": {
"loading": "Loading...",
"success": "Done",
"retry": "Retry"
},
"timestamps": {
"today": "Today",
"yesterday": "Yesterday",
"atTime": "at {0}"
},
"markAsRead": "Mark as read",
"markAsUnread": "Mark as unread"
}

View File

@@ -23,13 +23,19 @@
"card": {
"triggers": "Triggers",
"category": "Category",
"source": "Source",
"author": "Author",
"version": "Version"
},
"filters": {
"all": "All",
"enabled": "Enabled",
"disabled": "Disabled"
"disabled": "Disabled",
"searchPlaceholder": "Search skills...",
"allSources": "All Sources"
},
"stats": {
"totalSkills": "Total Skills"
},
"view": {
"grid": "Grid View",

View File

@@ -6,12 +6,12 @@
"current": "Current",
"browse": "Select Folder...",
"removePath": "Remove from recent",
"ariaLabel": "Workspace selector"
},
"dialog": {
"title": "Select Project Folder",
"placeholder": "Enter project path...",
"help": "The path to your project directory"
"ariaLabel": "Workspace selector",
"dialog": {
"title": "Select Project Folder",
"placeholder": "Enter project path...",
"help": "The path to your project directory"
}
},
"actions": {
"switch": "Switch Workspace",