Complete the moved-window discovery and record the fullscreen follow-up - #206
Complete the moved-window discovery and record the fullscreen follow-up#206lamdor wants to merge 4 commits into
Conversation
A window moved to an adjacent workspace can land selected in a column outside the destination viewport: parked offscreen, given no frame write, yet holding keyboard focus. The user sees a different window than the one they moved while keystrokes go to the moved window. Records the mechanically confirmed failure state with inlined values, the arithmetic showing the view-neutral rebase produces that offset by design, and evidence that the reveal step which should scroll the viewport works both in isolation (five CI-passing tests) and at runtime on the same path. Root cause is not identified. Six candidate mechanisms were tested against runtime evidence and eliminated: fullscreen occlusion, the missing z-order raise for transferred windows, the prepareMovedWindowTargetViewport guards, the stale-selection guard in applySessionPatch, display-scoped stopScrollAnimation, and dropStaleFrames. Each row in the table carries the evidence that eliminated it so the work is not repeated. The defect is timing-dependent and did not reproduce under runtime trace capture, so the document also records reproduction guidance and the single most diagnostic datum for a future attempt.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thanks for all this activity and contributions. I'm going to take a closer week during this weekend, I hope. |
The AX focus-confirmation path skipped the reveal because it decided the moved window was the same window being re-focused in place, comparing only focus tokens and not the workspace the focus was confirmed in. Its own ax_focus_confirm_reveal_skipped trace event names the decision; that event is inlined. Adds the two further candidates eliminated after the document was written: the plan-build recalc gate's blindness to a spring-scheduled scroll, which is real but downstream of the cause, and a first attempt at the fix that was inert because the recorded workspace did not survive the reconcile cycle. Replaces the open-questions and reproduction-guidance sections with the root cause and the fix, and updates the status to record the reporter's confirmation plus the three follow-ups this investigation leaves open.
The root cause is identified and the fix is confirmed by the reporter, so the document moves out of discovery per the branch lifecycle. Retitled Completed, and the banner now records that the fix is open as Nehir PR apphane-dev#209 — ready for review and green in CI — but not yet merged to main, so a later reader does not assume it has landed. Provenance wording now names main at f097f35 as the pre-fix state and warns that the fix itself changes the focus-confirmation lines the document cites.
Recorded as follow-up work from the completed moved-window investigation, where this was candidate 1 and was eliminated as a cause of that bug. It is a real separate defect, reported as issue apphane-dev#69. toggleFullscreen sets a persistent per-window sizingMode and nothing clears it except pressing the hotkey again: both sites that assign .normal are guarded on .maximized, so neither can exit .fullscreen. Also records a separate inconsistency where a fullscreen column reports its ordinary cachedWidth to the viewport model while rendering over the whole working frame. Blocked on a product decision before it can become a plan: niri's own fullscreen is per-window and persists across focus changes, so if Nehir intends to match niri then issue apphane-dev#69 is partly a documentation matter and the viewport-width inconsistency is the real defect.
What
Housekeeping for the moved-window-parked-offscreen investigation, following the lifecycle in this branch's
AGENTS.md(step 5: "once shipped or superseded, move the plan/discovery tocompleted/… and record follow-up work as a new discovery").Three commits:
ax_focus_confirm_reveal_skippedtrace event that names the decision is inlined. Adds candidates 7 and 8 to the eliminated table, including a first attempt at the fix that was inert because the recorded workspace did not survive the reconcile cycle.completed/and retitle, plus a new discovery for the fullscreen follow-up.Why this lands rather than closes
The document records eight candidate mechanisms investigated and eliminated, each with the evidence that killed it — fullscreen occlusion, the z-order raise gap, the reveal guards, the stale-selection guard, display-scoped
stopScrollAnimation,dropStaleFrames, the recalc gate's blindness to a spring-scheduled scroll, and the inert first fix. That table is the part worth keeping: it is what stops the next person re-running this investigation.Ship state, stated in the document
The fix is Nehir PR #209 — ready for review and green in CI, not yet merged to
mainas of 2026-08-20. The banner says so explicitly so a later reader does not assume it landed.Follow-up recorded
discovery/20260820-nehir-fullscreen-sizing-mode-never-cleared-on-focus-change.md—toggleFullscreensets a persistentsizingModethat nothing clears except re-toggling (both sites assigning.normalare guarded on.maximized). Relates to issue #69. Explicitly blocked on a product decision: niri's own fullscreen persists across focus changes, so if Nehir intends to match niri then #69 is partly a documentation matter and the viewport-width inconsistency is the real defect.The other two follow-ups (the z-order gap, the recalc gate) are open as #203 and #207, each commented to say its path was never observed to execute.
Verification
All code citations verified against
mainatf097f35a. Audited against the branch's durable-doc rules: no trace log filenames, no machine-specific paths, no bare upstream issue references, and status words held to the evidence.Greptile Summary
The PR adds durable investigation records for two window-management defects.
Confidence Score: 5/5
The documentation-only PR appears safe to merge, with no concrete incorrect or misleading changed-code behavior identified.
Both documents distinguish confirmed evidence from unresolved questions, anchor source citations to a specific revision, and clearly disclose that the workspace-transfer fix has not yet landed.
Important Files Changed
Reviews (1): Last reviewed commit: "Add discovery for Nehir-fullscreen sizin..." | Re-trigger Greptile