A refused trash hover withdraws the trash's own promise — the fall-through holds only keepable ones

Gap #12 ruled into 04 ▸ the trash-drop bullet: the refusal fall-through's
honest reading (the column declines to be a target, it does not cancel
the held drag) covers only promises the refusal leaves keepable — lane
shadows keep drawing and an ⌥-copy lands where they are. A standing
proposal naming the trash itself is the promise the refusal just broke,
so it withdraws: the drag goes proposal-less over the column, release
with no proposal cancels in agreement with the empty picture, and
lifting ⌥ re-asks at the same address. Implementation filed on the
Implementation board.

Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
2026-08-06 20:48:45 -04:00
parent 531ca2c595
commit e1ffe71e5b
8 changed files with 76 additions and 21 deletions
+1 -1
View File
@@ -105,7 +105,7 @@ struct TrashLaneRowView: View {
.padding(BoardMetrics.cardContentPadding(bodyPointSize: pointSize))
.frame(maxWidth: .infinity, alignment: .leading)
// Quieter than a card's plate, which is what "dimmed" is here: the cards beside it keep the
// ordinary secondary background, and this row sits a step further back.
// ordinary card plate (`BoardSurface.cardPlate`), and this row sits a step further back.
.background(RoundedRectangle(cornerRadius: cornerRadius).fill(.background.tertiary))
.overlay(
RoundedRectangle(cornerRadius: cornerRadius)