From aef86a193476ad7684953ddd33b305d9e88ca0b8 Mon Sep 17 00:00:00 2001 From: tegwick Date: Wed, 11 Mar 2026 22:06:13 +0100 Subject: [PATCH] fix(dashboard): reverse-chronological sort within decision status groups Within resolved/superseded: most recently decided_at first. Within open/escalated: soonest deadline first, then most recently created_at (previously had no created_at fallback). Co-Authored-By: Claude Sonnet 4.6 --- dashboard/src/decisions.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dashboard/src/decisions.md b/dashboard/src/decisions.md index 77ad493..643ff6e 100644 --- a/dashboard/src/decisions.md +++ b/dashboard/src/decisions.md @@ -30,8 +30,16 @@ const decState = (async function*() { const rank = {escalated: 0, open: 1, resolved: 2, superseded: 3}; const dr = (rank[a.status] ?? 9) - (rank[b.status] ?? 9); if (dr !== 0) return dr; + // Resolved / superseded: most recently decided first + if (a.decided_at || b.decided_at) { + if (a.decided_at && b.decided_at) return b.decided_at.localeCompare(a.decided_at); + return a.decided_at ? -1 : 1; + } + // Open / escalated: soonest deadline first, then most recently created if (a.deadline && b.deadline) return a.deadline.localeCompare(b.deadline); - return a.deadline ? -1 : b.deadline ? 1 : 0; + if (a.deadline) return -1; + if (b.deadline) return 1; + return b.created_at.localeCompare(a.created_at); }); } } catch {}