Displays misrepresents the live mirrored eDP-1 and DVI-I-2 layout #50
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Report and evidence
Found during user acceptance testing on 2026-10-04. Local screenshot: /tmp/codex-clipboard-ZbePn6.png. The user states that eDP-1 and DVI-I-2 are currently mirrored. The arrangement diagram instead shows DVI-I-1, eDP-1 and DVI-I-2 as three separate adjacent screens, and the visible mirror control says Use as a separate display.
Confidence: high, based on the user's statement of their actual layout and the supplied screenshot. The underlying live compositor response has not been captured, so the cause remains unverified.
Expected outcome
Read actual live monitor positions, rotations, scales and mirror relationships. Represent eDP-1 and DVI-I-2 as a mirrored group, with controls reflecting the current source/target relationship, rather than inventing an independent extended desktop. Preserve existing mirroring when adjusting unrelated outputs. Refresh after external compositor changes and after applying settings.
Verify this exact three-output setup, extended layouts, and transitions between mirrored and separate displays. Related to BSET-43 and the display safety follow-up.
Tracking only; the user explicitly requested no implementation.
Review of PR #67 (#67), exact head
7a55f598d6, base14d13158(unchanged). Verdict: PASS, not merged (reviewer has no Forgejo write or merge tools; awaiting merge by the coordinator).Checks I ran independently in a detached scratch worktree at that SHA: frontend npm ci, npm run check (0 errors, 0 warnings), npm test, npm run build all pass. src: cargo fmt --check clean, cargo clippy --locked --all-targets -D warnings clean, cargo test --locked 168 passed. Forgejo CI "check / check (push)" is success on the exact head (run 141). PR is mergeable, no reviews or change requests exist.
BSET-62: hyprland.rs dedupe_keep_order in parse_monitors plus uniqueBy in Display.svelte; test duplicate_modes_are_removed_keeping_order asserts 25 unique for both DVI outputs from the fixture. Every keyed each in Display.svelte and Breadpaper.svelte is over static lists or names that are now unique. Pass.
BSET-49: resolve_mirror maps the numeric mirrorOf id to a name (fixture: DVI-I-1 mirrors eDP-1); groupMonitors draws the group; withMirror and the guard tests show unrelated changes keep the mirror and restore replays it. Pass.
BSET-48: display_guard.rs snapshots, validates, applies, reads back, reverts on failure, timeout, unplug, explicit Revert and exit; only keep persists. Validation refuses no-enabled-display, self-mirror and missing, off or mirroring sources. Frontend routes resolution, scale, rotation, vrr, drag and mirror through apply_display_layout.
28a6bfarevert_on_signal (SIGTERM/SIGINT/SIGHUP) is wired in lib.rs setup and is idempotent with the RunEvent::Exit hook. Pass, backed by mock-compositor tests plus the coordinator's live VM evidence (not reproduced by me).Residual, out of scope: SIGKILL/crash (BSET-67), login include order (BSET-68).
Verified on integrated main
a7b3e8b(merge3407152, PR #67): cargo test 179 passed incl. resolve_mirror on the real monitors-all fixture (DVI-I-1 mirrors eDP-1) and guard tests that preserve/replay mirrors; displayLayout grouping test in npm test. Not checked on real multi-monitor hardware; login include order follow-up is BSET-68.