Repository navigation
fix(focus): keep the focus watcher alive through query errors - #179
Merged
Merged
Conversation
A daemon started at login before the GNOME extension owned org.deckd.Focus got ServiceUnknown on its first poll; the exception escaped watch_active_app, ended the focus task, and pinned every client to the Home deck until restart. started_ok stayed true, so /diag hid it and systemd never restarted the process. - watch_active_app logs the first failure of a streak, retries each poll, and logs recovery - /diag focus block gains healthy (backend started, task alive, last poll ok) and query_error (current failure)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Context-aware deck switching silently stopped: every client stayed on the Home deck even with Firefox focused.
The daemon started at login before the GNOME extension owned
org.deckd.Focus. Its first poll gotServiceUnknown: The name is not activatable, the exception escapedPlatformBackend.watch_active_app, and the focus watcher task ended. The process stayed up and/diagstill reportedstarted_ok: true, so neither systemd nor diagnostics flagged it.Fix
watch_active_appcatches query errors. It logs the first failure of a streak, retries on every poll, and logs when it recovers. Any transient error (gdbus timeout, gnome-shell restart, extension reload) is now survivable./diagfocus block gains:healthy: backend started, watcher task alive, and the last poll succeeded.nullwhen focus is disabled.query_error: the current failure./diagrow.Tests
test_watch_active_app_survives_transient_backend_errors: a regression test that reproduces the not-activatable startup race. It failed before the fix and passes after./diagfocus-health cases: dead task, failing queries, backend start failure, healthy, and disabled.Verified live: after deploying, Firefox focus switches decks again.