Single source of truth for tunnel state between GUI and service #24

Closed
opened 2026-08-17 16:57:01 -04:00 by mysticalsoap · 0 comments
Owner

The service holds tunnel state as instance attributes set via signals
(set_tun, set_dns, aqomui_service.py:213-222) and the GUI pulls it back
afterwards with return_tun_device (aqomui_gui.py:2338-2361). State lives in
two processes with no reconciliation after a service restart -- the service even
reasons about GUI/service version skew (check_version, aqomui_service.py:92).

Values are addressed by string concatenation throughout
(getattr(self, "tun{}".format(add))), which is how the DNS-to-the-wrong-
variable bug happened.

Target: one typed state object owned by the service, pushed to the GUI via a
single signal. This rides naturally on the management-interface work rather than
preceding it.

The service holds tunnel state as instance attributes set via signals (`set_tun`, `set_dns`, `aqomui_service.py:213-222`) and the GUI pulls it back afterwards with `return_tun_device` (`aqomui_gui.py:2338-2361`). State lives in two processes with no reconciliation after a service restart -- the service even reasons about GUI/service version skew (`check_version`, `aqomui_service.py:92`). Values are addressed by string concatenation throughout (`getattr(self, "tun{}".format(add))`), which is how the DNS-to-the-wrong- variable bug happened. Target: one typed state object owned by the service, pushed to the GUI via a single signal. This rides naturally on the management-interface work rather than preceding it.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mysticalsoap/aqomui#24
No description provided.