ActivityWatch / ActivityWatch/aw-watcher-checkin

Unanswered check-in dialogs go stale: self-clear on the next boundary, keep a small unlabeled backlog, add a non-GUI label path

Offen
#3 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
1
Forks
0
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Observed 2026-09-09 on Bob's agent desktop (DISPLAY :1): at 10:39 the dialog still asked *"What were you doing from 07:51–07:57 (6.2 minutes)?"* — a boundary from three hours earlier, never answered. Reading `core.py`: the dialog is bound to the AFK gap that just ended and is modal with no expiry; `has_event` suppresses duplicates of the same gap, so an unanswered dialog simply persists. Design question Erik raised: when the user doesn't answer, what should happen on the next return/context switch — extend, show all unlabeled periods, or focus on the immediate one?

## Proposal

1. **A dialog belongs to a boundary.** On the next boundary (return from AFK, context switch, long-block tick), an unanswered dialog is **replaced**, not stacked. The old period is persisted as an `afktask` event with an empty message and `unlabeled: true`, so nothing is lost and "N unlabeled periods today" is queryable from the bucket.
2. **Ask about the immediate period; show the backlog compactly.** The new dialog asks only about the period that just ended (memory decays fast; that is the one the user can answer). Below it, one collapsed line: *"3 earlier periods unlabeled (2.4 h) — label / skip"*, expanding to a list where one text can be applied to a selection. No silent extension: merging the old gap into the new one conflates different activities.
3. **Decay.** Unlabeled periods older than the current day (or 24 h) are never re-asked; they stay in the bucket as unlabeled. Ask-fatigue kills this feature faster than missing labels do.
4. **Non-GUI path + timeout, for agent desktops.** `--dialog-timeout N` auto-dismisses as unlabeled after N minutes (no human is at an agent's display), and a CLI/API to label a period without the dialog (`aw-watcher-checkin label --start … --end … --message …`), so an agent can label its own periods from its session log. On Bob's desktop the 07:51–07:57 "activity" was a script pressing keys in Firefox; the right answer there is programmatic, not a popup.

Happy to send a PR for (1)+(4) if the shape is agreed; (2) touches `dialog.py` more and deserves a sketch first.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.