Repository navigation
feat: simplify USB topology around the detected computer - #4
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
Shows one detected computer at the top of the live USB tree, using that installation’s system name and hardware model. The default view hides root buses and folds unbranched hub chains; Show USB paths restores the full topology. Updates Dock Doctor to 1.0.3.
Root cause
Exposing USB root hubs as separate top-level nodes omitted the physical computer and made its internal routing look like separate machines. The owner requested computer → docks/devices by default, expandable USB details, and automatic machine naming for every installation.
Proof
Fail-first tests cover automatic metadata discovery and the missing computer grouping. New tests verify DMI and device-tree models, configured machine names, bounded reads, inaccessible metadata, symlink rejection, unchanged USB inventories, folded paths, restored detail, and unchanged source relationships.
These are controlled test fixtures, not readings from the pictured hardware.
Expanded USB path fixture
Gates
Final revision
58b3f8apassed all 67 backend tests, 22 Qt results, native lifecycle, observer crash recovery, and both cold-loaded bar badge windows on OptiPlex. Python compilation, manifest validation, and diff checks passed. Hosted Linux x64, arm64, and Qt checks passed.The native process-count investigation captured an event-monitor child carrying its parent's Python command line before exec. The harness now distinguishes direct shell observers from descendant monitors and samples tracked lifetimes together. Fail-first regressions cover inherited command lines, sequential handoffs, real duplicate observers, and cleanup exit races. Five repeated native restart trials supplement the full gate.
Review rounds
The primary seat remained unavailable after its retry; the permitted substitute is shown explicitly. Unsupported-platform findings were rejected against the Linux-only project contract and CI matrix. Disclosure and harness cleanup findings were fixed. Round 5 reviewed
a8d30b5. The final test-only child-process classification correction at58b3f8awas self-reviewed and regression-tested after the five-round cap; it did not receive a sixth external round. Production code was unchanged after round 2.Needs a human
The owner selected the simpler default and requested automatic names for all installations. Release, local update, and marketplace submission updates are authorized. Listing approval remains with marketplace maintainers.
factory: rounds=5 evidence=A,B,D host=optiplex