Description
icm recall --format detail and icm tui show timestamps in UTC instead of the user's local timezone. icm list and icm stats are correct — they use the format_local() helper that was added to fix #119.
Reproduction
# Log a memory at 14:23 CEST
icm store -t test -c "hello world"
icm recall --format detail
Observe: created: 12:23 (UTC-0) instead of created: 14:23 (CEST).
Root cause
Issue #119 introduced format_local() in icm_core::time_fmt to convert UTC timestamps at the display boundary, but the fix was only applied to a subset of display paths. Two code paths still call .format() directly on DateTime<Utc>:
1. crates/icm-cli/src/recall_format.rs lines 99-108 (render_detail)
m.created_at.format(...) instead of format_local(&m.created_at, ...)
m.last_accessed.format(...) instead of format_local(&m.last_accessed, ...)
This is the path used by icm recall --format detail.
2. crates/icm-cli/src/tui.rs — 9 instances
Lines 742, 747 (StoreStats oldest/newest), 989 (TopicHealth.last_accessed), 1345, 1349, 1353 (TopicHealth detail), 1433, 1437, 1441 (memory detail view).
Fix
Replace .format(...) with format_local(&dt, ...) in both files. The helper is re-exported as icm_core::format_local.
Affected paths (correct for reference)
main.rs:5786,5790 — print_memory_detail() ✅
main.rs:3183,3186 — cmd_stats() ✅
icm-mcp/src/tools.rs:1415,1421 — MCP stats ✅
Description
icm recall --format detailandicm tuishow timestamps in UTC instead of the user's local timezone.icm listandicm statsare correct — they use theformat_local()helper that was added to fix #119.Reproduction
Observe:
created: 12:23(UTC-0) instead ofcreated: 14:23(CEST).Root cause
Issue #119 introduced
format_local()inicm_core::time_fmtto convert UTC timestamps at the display boundary, but the fix was only applied to a subset of display paths. Two code paths still call.format()directly onDateTime<Utc>:1.
crates/icm-cli/src/recall_format.rslines 99-108 (render_detail)m.created_at.format(...)instead offormat_local(&m.created_at, ...)m.last_accessed.format(...)instead offormat_local(&m.last_accessed, ...)This is the path used by
icm recall --format detail.2.
crates/icm-cli/src/tui.rs— 9 instancesLines 742, 747 (StoreStats oldest/newest), 989 (TopicHealth.last_accessed), 1345, 1349, 1353 (TopicHealth detail), 1433, 1437, 1441 (memory detail view).
Fix
Replace
.format(...)withformat_local(&dt, ...)in both files. The helper is re-exported asicm_core::format_local.Affected paths (correct for reference)
main.rs:5786,5790—print_memory_detail()✅main.rs:3183,3186—cmd_stats()✅icm-mcp/src/tools.rs:1415,1421— MCP stats ✅