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
- 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.