Repository navigation
fix: restore live USB views across monitors and clarify bus roots - #2
Merged
Merged
Conversation
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.
Summary
Fixes empty live views when Omarchy loads Dock Doctor widgets on multiple monitors. All widgets share one USB observer, which stops when the last widget is removed. USB root hubs now appear as numbered USB buses with controller icons instead of additional laptops. Bumps the plugin to 1.0.1.
Root cause
Each bar widget started its own observer, but the retained-state lock correctly allowed only one process. A window attached to another widget could show only demo data. Linux also exposes multiple USB root hubs inside one computer; the original laptop pictogram made these look like separate hosts.
Proof
The two-widget native regression failed on 1.0.0 with one view reporting “Observer stopped. Reconnecting…”. It passes with the shared observer. The native gate also verifies continued observations after one widget is removed, fresh observations after it is recreated, shutdown after all widgets are removed, and recovery when both return. Process tracking rejects concurrent observers and verifies every observed process exits. A pidfd-targeted observer crash must disconnect both views and then restore fresh live observations to both.
A separate fail-first regression verifies numbered bus labels, root-hub category, controller icon kind, and preserved reported product metadata.
The following image uses a controlled test fixture to show the corrected root label and icon; it is not a live hardware inventory.
Gates
d8d1527c995978194f4e8b76dab8b8901f06e99f, isolated OptiPlex worktree: 56 backend tests and 20 Qt results passed.5eaa3088b9f003a3b4355272aa7a5ea4fb23103e: native lifecycle gates rerun on OptiPlex.Review rounds
The primary seat remained unavailable after its retry; the permitted substitute supplied the second independent verdict. Missing output is not a pass. Scope findings were resolved against the approved illustrative demo, Linux-only integration, and existing error handling. Accepted findings added observer-crash recovery coverage and an independent recovery timeout. No findings remain.
Needs a human
Marketplace maintainers retain listing approval. The owner has authorized release, installation, and updating the existing submission after checks.
factory: rounds=5 evidence=A,B,D host=optiplex