Skip to content

Complete the moved-window discovery and record the fullscreen follow-up - #206

Open
lamdor wants to merge 4 commits into
apphane-dev:plansfrom
lamdor:la/discovery-moved-window-parked-offscreen
Open

Complete the moved-window discovery and record the fullscreen follow-up#206
lamdor wants to merge 4 commits into
apphane-dev:plansfrom
lamdor:la/discovery-moved-window-parked-offscreen

Conversation

@lamdor

@lamdor lamdor commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

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 to completed/… and record follow-up work as a new discovery").

Three commits:

  1. Add the discovery — the original write-up, made while the root cause was still unidentified.
  2. Record the confirmed root cause and fix — 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. The ax_focus_confirm_reveal_skipped trace 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.
  3. Move it to 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 main as 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.mdtoggleFullscreen sets a persistent sizingMode that nothing clears except re-toggling (both sites assigning .normal are 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 main at f097f35a. 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.

  • Records the confirmed cause of an offscreen workspace-transfer failure, the proposed fix, reporter verification, and eight eliminated mechanisms.
  • Documents persistent fullscreen sizing state and a possible discrepancy between viewport geometry and rendered fullscreen width, while separating confirmed source observations from unresolved product semantics and runtime behavior.

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

Filename Overview
completed/20260819-moved-window-parked-offscreen-on-workspace-transfer.md Documents the confirmed workspace-transfer root cause, fix status, supporting geometry, and eliminated alternatives with explicit commit anchoring and ship-state caveats.
discovery/20260820-nehir-fullscreen-sizing-mode-never-cleared-on-focus-change.md Records the fullscreen-state and viewport-width investigation while clearly labeling unresolved runtime effects and the pending product decision.

Reviews (1): Last reviewed commit: "Add discovery for Nehir-fullscreen sizin..." | Re-trigger Greptile

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.
@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 22bc6a91-5a34-4a41-bbf6-0836de7f6303

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Guria

Guria commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Thanks for all this activity and contributions. I'm going to take a closer week during this weekend, I hope.

lamdor added 3 commits August 20, 2026 11:14
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.
@lamdor lamdor changed the title Add discovery for moved window parked offscreen on workspace transfer Complete the moved-window discovery and record the fullscreen follow-up Aug 20, 2026
@lamdor
lamdor marked this pull request as ready for review August 20, 2026 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants