You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New turns start their own clock instead of inheriting a start time from days earlier and showing thousands of minutes.
Completed turns use their saved start and end times, so their duration stays fixed when you reopen or switch conversations. A stale active clock no longer overrides a valid completed window.
When reliable timing is missing or the timestamps are reversed, only the status is shown without an invented duration or whole-turn speed estimate.
Implementation
Native turn.started resets the active start in both renderer state and main/headless persistence, including single events, batches and multi-thread batches.
Snapshot recovery and turn completion no longer use the thread's updatedAt as a turn start. Reopening an active GUI turn preserves its fresh native start.
Completed durations require valid, ordered and frozen timestamps. The whole-turn fallback for output speed uses the same timing window.
Verification
200 related tests, full pnpm typecheck and pnpm lint passed.
Six targeted checks passed in an isolated Electron app, covering renderer reload recovery, conversation switching, a fresh turn clock, frozen completion and invalid timestamps.
All changed-scope mock smoke checks passed with zero console/runtime errors. Real provider turns, the full functional inventory and a full app process restart were not tested.
Complete but already incorrect historical timestamp pairs cannot be precisely rebuilt without reliable source records. This patch does not guess their timing or cap valid long-running turns.