diff --git a/.automaker/feature_list.json b/.automaker/feature_list.json index 709b0c05..5aaa0dd3 100644 --- a/.automaker/feature_list.json +++ b/.automaker/feature_list.json @@ -292,5 +292,24 @@ "skipTests": true, "model": "sonnet", "thinkingLevel": "medium" + }, + { + "id": "feature-1765372497502-kxppqqv3k", + "category": "Uncategorized", + "description": "As u can see in our git diff panel on each new file its show modified or untracked if it untracked and that not good for ui / ux what if user / agett change over 40-50 files in one go this wiould be complete mess i would rather do 1 type for each with number and icon", + "steps": [], + "status": "verified", + "startedAt": "2025-12-10T13:15:19.417Z", + "imagePaths": [ + { + "id": "img-1765372428239-jg07w3zxv", + "path": "/Users/shirone/Library/Application Support/automaker/images/1765372428236-6t02kvclp_SCR-20251210-mplr.png", + "filename": "SCR-20251210-mplr.png", + "mimeType": "image/png" + } + ], + "skipTests": false, + "model": "sonnet", + "thinkingLevel": "none" } ] \ No newline at end of file diff --git a/app/src/components/ui/git-diff-panel.tsx b/app/src/components/ui/git-diff-panel.tsx index c24d94ee..ae734a9c 100644 --- a/app/src/components/ui/git-diff-panel.tsx +++ b/app/src/components/ui/git-diff-panel.tsx @@ -82,6 +82,27 @@ const getStatusBadgeColor = (status: string) => { } }; +const getStatusDisplayName = (status: string) => { + switch (status) { + case "A": + return "Added"; + case "?": + return "Untracked"; + case "D": + return "Deleted"; + case "M": + return "Modified"; + case "U": + return "Updated"; + case "R": + return "Renamed"; + case "C": + return "Copied"; + default: + return "Changed"; + } +}; + /** * Parse unified diff format into structured data */ @@ -505,23 +526,41 @@ export function GitDiffPanel({ {/* Summary bar */}
- {files.map((file) => ( -
- {getFileIcon(file.status)} - { + // Group files by status + const statusGroups = files.reduce((acc, file) => { + const status = file.status; + if (!acc[status]) { + acc[status] = { + count: 0, + statusText: getStatusDisplayName(status), + files: [] + }; + } + acc[status].count += 1; + acc[status].files.push(file.path); + return acc; + }, {} as Record); + + return Object.entries(statusGroups).map(([status, group]) => ( +
- {file.statusText} - -
- ))} + {getFileIcon(status)} + + {group.count} {group.statusText} + +
+ )); + })()}