Compare commits

..

No commits in common. "f31b07caa767768c453346efe29725c5859c42ad" and "d850e00c4e969e8cae8b7bc34f518d65e5070f1a" have entirely different histories.

2 changed files with 5 additions and 31 deletions

View File

@ -50,17 +50,11 @@ function createLogFile(): string {
return `${logsDir}/${timestamp}_${releaseSha}.jsonl`
}
function extractTimestamp(filename: string): string {
const stem = filename.replace(".jsonl", "")
// New format: timestamp_sha, Old format: sha_timestamp
if (/^\d{4}-/.test(stem)) return stem.split("_").slice(0, -1).join("_")
return stem.split("_").pop() || ""
}
export function listLogFiles(): string[] {
return readdirSync(logsDir)
.filter((f) => f.endsWith(".jsonl"))
.sort((a, b) => extractTimestamp(b).localeCompare(extractTimestamp(a)))
.sort()
.reverse()
.slice(0, 20)
}

View File

@ -108,32 +108,11 @@ function EventRow({ event, index }: { event: StoredLogEvent; index: number }) {
)
}
function parseLogFilename(file: string): { sha: string; isoStr: string } {
const stem = file.replace(".jsonl", "")
// New format: timestamp_sha (e.g. 2026-03-10T18-06-23-561Z_cb10121)
// Old format: sha_timestamp (e.g. cb10121_2026-03-10T18-06-23-561Z)
const isNewFormat = /^\d{4}-/.test(stem)
const parts = stem.split("_")
let sha: string
let rawTimestamp: string
if (isNewFormat) {
sha = parts.pop() || "unknown"
rawTimestamp = parts.join("_")
} else {
rawTimestamp = parts.pop() || ""
sha = parts.join("_") || "unknown"
}
const isoStr = rawTimestamp.replace(/T(\d{2})-(\d{2})-(\d{2})-(\d+)Z/, "T$1:$2:$3.$4Z")
return { sha, isoStr }
}
function Sidebar({ files, selectedFile }: { files: string[]; selectedFile?: string }) {
// Group files by sha, sorted by most recent file in each group
const grouped: Record<string, string[]> = {}
for (const file of files) {
const { sha } = parseLogFilename(file)
const sha = file.replace(".jsonl", "").split("_").pop() || "unknown"
const list = grouped[sha] || (grouped[sha] = [])
list.push(file)
}
@ -151,7 +130,8 @@ function Sidebar({ files, selectedFile }: { files: string[]; selectedFile?: stri
<div style="padding: 4px 16px; color: #6b7280; font-size: 11px; font-family: monospace">{sha}</div>
{shaFiles.map((file) => {
const isSelected = file === selectedFile
const { isoStr } = parseLogFilename(file)
// 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 (
<a