From d7a5b5ba1df068f93e3a5b956d17f4e97764efdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gjermund=20H=C3=B8s=C3=B8ien=20Wiggen?= Date: Tue, 9 Jun 2026 22:06:12 +0200 Subject: [PATCH] fix: use CSS table layout for column alignment Replaced flex containers with display: table/table-row/table-cell. This guarantees column widths are shared between header and all rows, fixing the misalignment. Subject column gets remaining width, all others use fixed pixel widths. Resize handles on header cells still work. Co-Authored-By: Claude Opus 4.8 --- web/src/app/page.tsx | 253 ++++++++++++++++++++++--------------------- 1 file changed, 132 insertions(+), 121 deletions(-) diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index eb539e5..8264733 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -882,132 +882,143 @@ function TicketWorkbenchContent() { ) : ( <> - {/* Column header */} -
-
- {availableColumns.filter((c) => c.visible).map((col) => ( -
- - {col.label} - - {/* Resize handle */} + {/* Table layout for consistent column alignment */} +
+ {/* Column header */} +
+
+ {availableColumns.filter((c) => c.visible).map((col) => (
handleColumnResize(col.key, e)} - /> -
- ))} -
-
- - {filteredTickets.map((ticket) => { - const selected = ticket.id === selectedId; - const ownerName = ticket.owner_id - ? users.find((u) => u.id === ticket.owner_id)?.username ?? "assigned" - : null; - - return ( - - ); - })} + {density === "comfortable" && ( + + {ownerName ?? "Unassigned"} + + Created {relativeTime(ticket.created_at)} + + )} +
+ ); + case "status": + return ( +
+ +
+ ); + case "queue": + return ( +
+ {queueName(queues, ticket.queue_id)} +
+ ); + case "owner": + return ( +
+ {ownerName ?? "—"} +
+ ); + case "created": + return ( +
+ {relativeTime(ticket.created_at)} +
+ ); + case "updated": + return ( +
+ {relativeTime(ticket.updated_at)} +
+ ); + default: + return
; + } + })} +
+ +
+
+ ); + })} +
)}