diff --git a/apps/tui-go/internal/app/render_matrix_test.go b/apps/tui-go/internal/app/render_matrix_test.go index 5b17ed7d..9bb00896 100644 --- a/apps/tui-go/internal/app/render_matrix_test.go +++ b/apps/tui-go/internal/app/render_matrix_test.go @@ -45,9 +45,9 @@ const ( surfaceStatusBar // top status bar (renderStatus) ) -// fixedNow is a deterministic timestamp used for every event carrying OccurredAt, so -// formatTime output is stable across runs/machines. (Events that fall back to -// nowMillis() are asserted only on their type/detail text, never the clock.) +// fixedNow is a deterministic timestamp used for every event carrying OccurredAt. The +// matrix asserts only event type/detail text, never the rendered clock — formatTime is +// local (machine-TZ dependent), so the time string is intentionally not part of any golden. const fixedNow int64 = 1_700_000_000_000 // matrixCase is one event/entry kind in the matrix. diff --git a/apps/tui-go/internal/app/server.go b/apps/tui-go/internal/app/server.go index 7be87790..7d76d259 100644 --- a/apps/tui-go/internal/app/server.go +++ b/apps/tui-go/internal/app/server.go @@ -22,8 +22,11 @@ func containsFold(haystack, needle string) bool { return strings.Contains(strings.ToLower(haystack), strings.ToLower(needle)) } +// formatTime renders an event/activity instant as a local wall-clock time, matching the +// operator's clock (and the local date shown in the session list). It was previously forced +// to UTC, so every event timestamp read hours off the user's actual time. func formatTime(epochMillis int64) string { - return time.UnixMilli(epochMillis).UTC().Format("15:04:05") + return time.UnixMilli(epochMillis).Format("15:04:05") } // inferCategory maps an event type string to a display category, matching the