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

Abierto
#3 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
1
Forks
0
Métricas de merge de PR
Métricas de PR pendientes

Descripción

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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.