feat(maestro): stamp activity_since only on state transitions (#104)
The activity pass now sets activity_since only when the decided ActivityState differs from the stored one; foreground/cwd-only diffs and steady-state ticks leave the clock alone, so the sidebar duration counts time in the current state instead of reading zero. Daemon restarts still reset the clock to the restart time (stated in recover()); the daemon cannot know how long a recovered session had already been idle.
This commit is contained in:
@@ -597,6 +597,9 @@ impl SessionManager {
|
||||
status: SessionStatus::Running,
|
||||
created_at: Utc::now(),
|
||||
// Activity is unknown on adoption; the watcher fills it in.
|
||||
// #104: the restart also resets the activity clock to now —
|
||||
// accepted, since the daemon cannot know how long a
|
||||
// recovered session had already been sitting idle.
|
||||
foreground: None,
|
||||
activity: ActivityState::Idle,
|
||||
last_activity_at: Utc::now(),
|
||||
@@ -857,6 +860,12 @@ async fn run_activity_pass(inner: &Arc<Inner>) {
|
||||
{
|
||||
None
|
||||
} else {
|
||||
// #104: stamp only when the state itself changed — never on
|
||||
// foreground/cwd-only diffs, and never every tick, or the
|
||||
// sidebar's duration would reset continuously and read zero.
|
||||
if rec.session.activity != activity {
|
||||
rec.session.activity_since = Utc::now();
|
||||
}
|
||||
rec.session.activity = activity;
|
||||
rec.session.foreground = foreground;
|
||||
rec.session.current_cwd = current_cwd;
|
||||
|
||||
Reference in New Issue
Block a user