Repository navigation
Conversation
There was a problem hiding this comment.
All reported issues were addressed
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
There was a problem hiding this comment.
7 issues found across 15 files
Requires human review: Auto-approval blocked because this review re-detected 3 unresolved issues already reported by Cubic.
View guided diff | Turn on auto-fix | Re-trigger cubic
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".agents/skills/verify-defi/features/window-drag.md">
<violation number="1" location=".agents/skills/verify-defi/features/window-drag.md:21">
P3: This describes a stronger fixture guarantee than the harness provides. Say “empty workspace,” or make `drag_check.py` filter for `kind == 'trailing'` before documenting it as trailing.</violation>
</file>
<file name="Sources/DefiRuntime/MouseReordering.swift">
<violation number="1" location="Sources/DefiRuntime/MouseReordering.swift:477">
P2: A valid drop next to a native-fullscreen-only column loses the accent preview because the gap has no finite X coordinate. Keep hidden columns out of target-gap geometry or provide a visible fallback X so every committable target has a preview.</violation>
</file>
<file name="Sources/DefiMacOS/NativeFullscreenPlaceholder.swift">
<violation number="1" location="Sources/DefiMacOS/NativeFullscreenPlaceholder.swift:183">
P3: `appKitRect(for:)` duplicates the identical conversion still defined in `WindowBorderOverlayPanel`. Remove the private copy and use one shared helper so coordinate conversion changes cannot diverge.</violation>
</file>
<file name="Sources/DefiMacOS/DropPreviewOverlay.swift">
<violation number="1" location="Sources/DefiMacOS/DropPreviewOverlay.swift:47">
P2: The preview is ordered below the window being dragged, so the dragged window can cover the destination bar while it follows the pointer. Order this click-through panel in front of the dragged window, such as with `panel.orderFront(nil)`, so the insertion indicator remains visible.</violation>
</file>
<file name=".agents/skills/verify-defi/drag_check.py">
<violation number="1" location=".agents/skills/verify-defi/drag_check.py:43">
P2: `converge` reports success after its timeout whenever membership matches, even if native frames never settle; fail the check when settlement is still false so `results.json` cannot claim a false PASS.</violation>
<violation number="2" location=".agents/skills/verify-defi/drag_check.py:83">
P3: The probe can attach to another user's daemon because this `pgrep` is unscoped; restrict it to the current UID like `desktop_session.daemon_count()` does.</violation>
<violation number="3" location=".agents/skills/verify-defi/drag_check.py:86">
P2: A fixture-construction failure leaks any processes created earlier in this comprehension because `fixtures` is assigned only after it finishes; append each fixture before constructing the next one.</violation>
</file>
There was a problem hiding this comment.
All reported issues were addressed across 11 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
ApprovabilityVerdict: Needs Human Approval Macroscope's review found this PR requires human approval — This PR adds cross-display tiled-window drop placement and changes the existing drag preview/commit path, including workspace movement and focus-state updates. Because it is a substantial user-facing runtime capability rather than a small isolated adjustment, human review is warranted. Notes:
No code changes detected at You can add or adjust custom eligibility rules. Learn more. |
62623e4 to
7b225ea
Compare
7b225ea to
3e3f510
Compare
3e3f510 to
5e7e246
Compare
5e7e246 to
f8887e7
Compare
f8887e7 to
5467aa1
Compare
A drag whose pointer leaves its display now targets the gap under the pointer in the other display's active workspace. Release inserts the window there instead of where the native cross-display move puts it. The drop revalidates the destination and changes nothing when that workspace is no longer active or the gap is out of range. A 24 pt hysteresis keeps a pointer resting on a target boundary from flipping the target, so the overlay preview does not restart its springs. The daemon traces each preview change for the drag harness.
5467aa1 to
5b648da
Compare
Closes #95
Stacked on #150. Review this diff against
feat/window-proxy-ribbon.Why
#150 already moves single windows by drag. Its overlay previews the drop and commits it on release. That covers extraction from a stack, column moves and stacking. Two gaps remain from the first version of this PR:
What changed
MouseDropTargetgains.display(MonitorID, workspaceID:gap:). When the pointer is on another display,mouseDropTargetreturns the gap under the pointer in that display's active workspace. The gap counts the columns whose center is left of the pointer.applyMouseDrophandles.display. It revalidates the target first: the window is still tiled, the destination workspace is still active, and the gap is in range. Otherwise it changes nothing. The move reusesmoveFocusedSelection, so transient windows and width conversion behave as for keyboard moves. The gap is anchored to the column after it, so transient columns that move along do not shift it.mouseDropTargettakes the previous target. It keeps that target while the pointer is within 24 pt of it.mouse-drop-preview window=<id> target=<target>.verify-defijourney:.agents/skills/verify-defi/drag_check.pyandfeatures/window-drag.md. They drive real title-bar drags withcliclick, check column membership before, during and after, and read the previewed target fromdefi trace.Scope
animation.window_proxies = true, the default). The live reorder forwindow_proxies = falseis untouched.Tradeoffs
Blast Radius
Sources/DefiRuntime/MouseReordering.swift: the new target case, the hysteresis and the cross-display drop. Pure and covered byMouseReorderingTests.Sources/DefiDaemon/DaemonDesktopSynchronization.swift: argument changes in the overlay drop branch, one trace line, and the cross-display bookkeeping moved after both drop branches. No new Accessibility writes. No per-frame main-thread work. The preview is still computed only when the target changes.Verification
python3 script/verify.py localon the final head: passed (build, non-desktop Swift tests, workflow tests). One earlier staged run failed inFrameGeometryReadTests(a DefiMacOS timing test this branch does not touch). It passed alone, then the full staged run passed.MouseReorderingTests: 44 tests passed.verify.py desktop, fullDesktopE2ETests, Accessibility available, one display): 42 of 50 passed, 5 skipped, 3 failed. The failures weretestManagedResizeAnimationConvergesWithAdaptiveSizeWrites,testOverviewNavigationRenderBudgetandtestPointerTransitionsUseWindowUnderPointerAndWarpDoesNotLoop. Other agents were sharing the desktop at the time. The first two passed when rerun alone. The pointer test skipped twice when rerun alone ("Focused on-screen managed window required"). It passed alone on the previous head of this branch, which had the same drop path. Session restoration passed.drag_check.pypassed all four cases. They are a short drag inside its own column, extracting the bottom of a 2-stack to the right, moving a single column left across two, and dragging out and back to the origin. Membership did not change while the button was held. The trace showed the expected previewed target for both real moves. Onedefi-daemonremained.Note
Add cross-display tiled-window drag drop targets and 24-point preview hysteresis
mouseDisplayDropTargetin MouseReordering.swiftMacroscope summarized 5b648da.