You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.3 KiB
1.3 KiB
| title | status | type | priority | created_at | updated_at | parent |
|---|---|---|---|---|---|---|
| Duration shows 0ms — RawEntry.duration_ms field name mismatch (durationMs vs duration_ms) | todo | bug | high | 2026-03-30T04:44:06Z | 2026-03-30T04:44:06Z | claudbg-8vpb |
Problem
sessions transcribe shows Duration: 0ms even for long sessions.
Root cause
The JSONL file uses camelCase durationMs at the entry level:
{"type": "system", "durationMs": 3446227, ...}
But RawEntry declares the field as duration_ms: Option<u64> with no serde rename:
// src/models/session.rs:33
pub duration_ms: Option<u64>,
Serde looks for duration_ms (snake_case), finds nothing, and the value falls into the extra catch-all map instead. compute_stats then sums zeros.
Fix
Add #[serde(rename = "durationMs")] to the field:
#[serde(rename = "durationMs")]
pub duration_ms: Option<u64>,
Alternatively use #[serde(alias = "durationMs")] to accept both forms.
Confirmed by
Running against session 21fae0a8: grep '"durationMs":[0-9]' finds entries like {"type":"system","durationMs":3446227,...} confirming the field name is camelCase.
Relevant files
src/models/session.rs—RawEntry,duration_msfield (line 33)src/models/stats.rs—compute_stats, accumulatesentry.duration_ms