From 96aedc82399ee206276e0c49a2f5e72ec5c3a47b Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 10 Mar 2026 11:33:53 -0700 Subject: [PATCH] Fix log file sorting by using timestamp-first filename format Filenames are now timestamp_sha.jsonl instead of sha_timestamp.jsonl. This makes alphabetical sort equal to chronological sort, eliminating fragile string parsing and ensuring commit SHAs are ordered by their most recent log file timestamp. Co-Authored-By: Claude Haiku 4.5 --- packages/spike/src/log.ts | 2 +- packages/spike/src/server/logs.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/spike/src/log.ts b/packages/spike/src/log.ts index a0ed52a..3647924 100644 --- a/packages/spike/src/log.ts +++ b/packages/spike/src/log.ts @@ -47,7 +47,7 @@ mkdirSync(logsDir, { recursive: true }) function createLogFile(): string { const timestamp = new Date().toISOString().replace(/[:.]/g, "-") - return `${logsDir}/${releaseSha}_${timestamp}.jsonl` + return `${logsDir}/${timestamp}_${releaseSha}.jsonl` } export function listLogFiles(): string[] { diff --git a/packages/spike/src/server/logs.tsx b/packages/spike/src/server/logs.tsx index bf6861b..f66289a 100644 --- a/packages/spike/src/server/logs.tsx +++ b/packages/spike/src/server/logs.tsx @@ -112,7 +112,7 @@ function Sidebar({ files, selectedFile }: { files: string[]; selectedFile?: stri // Group files by sha, sorted by most recent file in each group const grouped: Record = {} for (const file of files) { - const sha = file.split("_")[0] || "unknown" + const sha = file.replace(".jsonl", "").split("_").pop() || "unknown" const list = grouped[sha] || (grouped[sha] = []) list.push(file) } @@ -130,8 +130,8 @@ function Sidebar({ files, selectedFile }: { files: string[]; selectedFile?: stri
{sha}
{shaFiles.map((file) => { const isSelected = file === selectedFile - // Parse ISO timestamp back from filename: sha_2026-03-10T02-56-59-938Z.jsonl - const isoStr = file.replace(/^[^_]+_/, "").replace(".jsonl", "").replace(/T(\d{2})-(\d{2})-(\d{2})-(\d+)Z/, "T$1:$2:$3.$4Z") + // Parse ISO timestamp back from filename: 2026-03-10T02-56-59-938Z_sha.jsonl + const isoStr = file.replace(/_[^_]+\.jsonl$/, "").replace(/T(\d{2})-(\d{2})-(\d{2})-(\d+)Z/, "T$1:$2:$3.$4Z") const bg = isSelected ? "#2a2a2a" : "transparent" return (