Session 2026-05-29: tasks page redesign, projects sidebar, invoicing fix

- Tasks page: tabs (All/To Do/In Progress/In Review/Completed) in header, removed grid view, 70/30 split with projects card
- Projects card: sortable table, dynamic height fills viewport
- Removed Projects page and nav links; redirects → /tasks
- Invoice dedup: prevent double-charge when multiple submissions per revision version
- Dashboard table style applied to tasks table (10px headers, 5px cell padding, transparent cells)
- stat cards: removed "Tasks" header, moved Total Tasks to far right

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Krao Hasanee
2026-05-29 22:40:10 -04:00
parent 8d0a461e7a
commit 6fe7ab1059
5 changed files with 786 additions and 398 deletions
+7 -1
View File
@@ -117,7 +117,13 @@ export default function CreateInvoice() {
return { ...t, service_type: initial?.service_type || t.title };
});
setUninvoicedTasks(tasksWithService);
setUninvoicedRevisions(revisions || []);
// Deduplicate by (task_id, version_number) — multiple submission rows per version (e.g. "Add Files") must not produce multiple invoice charges
const revMap = new Map();
for (const rev of (revisions || [])) {
const key = `${rev.task_id}:${rev.version_number}`;
if (!revMap.has(key)) revMap.set(key, rev);
}
setUninvoicedRevisions([...revMap.values()]);
} else {
setUninvoicedTasks([]);
setUninvoicedRevisions([]);