Redraw a copy's originals at the source — the resting layout follows the operation
The modifier flip (⌥ copy / ⌘ move) now reflows the source board once: a copy re-admits the dragged originals into the resting layout, standing dimmed in place, and a move lifts them out as before. This retires DRAG-REORDER.md's operation-blind carve-out and makes 04-interactions.md's "originals stay" true in flight, not just at echo. The one seam is DragSession.hiddenMembers reading the observed operation. Consequences carried honestly: copyCards now takes its index in the lane's full rendered space (the zones counted the originals, so the geometry's number is the writer's number — the old neighbour remap is deleted); resolveOperation freezes under the committed hold exactly as propose does, fixing a real bug where a settled within-board ⌥-copy drew the move arrangement until the echo and visibly re-shuffled. Stationary flips still wait for the next dropUpdated (their own Backlog card). Claude-Session: https://claude.ai/code/session_01CqjXB7ASoWtbyoGod68k97
This commit is contained in:
@@ -859,11 +859,13 @@ struct LaneView: View {
|
||||
/// `lane.cards` and the trash column renders it instead. The tombstone era's ancestor walk and
|
||||
/// effective-liveness predicate are retired with the flag they read.
|
||||
///
|
||||
/// **A dragged card renders nowhere either, for as long as the session lasts.** It is lifted out
|
||||
/// of the resting layout at pickup and stays out until release *whatever the effective operation
|
||||
/// is* — a ⌥-copy's originals really do stay, but ⌥ can be pressed and released mid-drag, and a
|
||||
/// layout that re-admitted them on every flip would flap the board under the cursor
|
||||
/// (DRAG-REORDER.md § Resting-layout zones). The copy's originals reappear when the write lands.
|
||||
/// **A card being dragged *as a move* renders nowhere, for as long as the session lasts.** It is
|
||||
/// lifted out of the resting layout at pickup and stays out until release. A card being dragged
|
||||
/// as a **copy** stays exactly where it is and dims (`CardFaceView`), because that is what the
|
||||
/// copy will leave behind — so flipping ⌥ or ⌘ mid-drag reflows this lane once, which is the
|
||||
/// feedback the modifier is asking for (DRAG-REORDER.md § Resting-layout zones, ruled
|
||||
/// 2026-08-01). Either way the drop's index is counted in the layout on screen, which is why
|
||||
/// `copyCards` and `moveCards` take their index in different spaces.
|
||||
///
|
||||
/// **A card the live search filter hides renders nowhere either** (04-interactions.md § Search):
|
||||
/// "cards whose title *and* body both miss the query animate out". This is the one collection
|
||||
|
||||
Reference in New Issue
Block a user