Skip to content

feat(board): PROG-118 settle cards on drop with the shared tween#98

Merged
bryankennedy merged 3 commits into
mainfrom
act/PROG-118-board-settle
Jul 14, 2026
Merged

feat(board): PROG-118 settle cards on drop with the shared tween#98
bryankennedy merged 3 commits into
mainfrom
act/PROG-118-board-settle

Conversation

@exe-dev-github-integration

Copy link
Copy Markdown
Contributor

Follow-up to #96 (owner request): apply the outline's settle-on-drop animation to the board too.

What changed

  • Shared settle tween: DROP_ANIMATION (~180ms default drop tween + ghost side-effects) moves to src/client/dropAnimation.ts and both DragOverlay surfaces — board and outline — use it. The board's dropAnimation={null} is gone: that was PROG-43's workaround for the tween flying the card back to its stale slot, which can't happen on the board (its columns mirror commits synchronously in onDragEnd, PROG-59) nor on the outline (PROG-119). The board's frame-sampling "doesn't flash back" spec passes with the tween on (x-deviation < 40px across release).
  • e2e leak fix: outline-move.spec.ts archived its focuses but left their actions open — archiving a focus doesn't close its actions — so every run leaked open actions onto the shared dev board; isolateColumn herded the growing pile between columns until board-reorder's PROG-59 drag targets slid below the viewport. The spec now cancels its actions before archiving (the 32 already-leaked ones were canceled in the dev DB by hand).
  • Retimed assertion: board-reorder's overlay-clear check ("within 120ms", written against dropAnimation={null}) becomes "within 600ms" — the overlay now legitimately lives ~180ms gliding into the NEW slot; the fly-back regression that bound guarded is covered by the frame-sampling spec.

Tests

bun run test: 180 pass. Board + outline e2e: 15/15 pass (board-done, board-filters, board-reorder ×5 incl. both fly-back regressions, outline-container-reorder ×3, outline-move ×2).

Decision log: appended to docs/decisions/PROG-118.md; REFERENCE board section updated.

(Note: three identical commits were briefly pushed to a recreated act/PROG-118 after #96's squash-merge deleted it; that branch has been removed — this PR is their home.)

Extend the outline's settle-on-drop to the board, per owner request: the
DROP_ANIMATION config moves to src/client/dropAnimation.ts and both
DragOverlay surfaces use it, replacing the board's dropAnimation={null}. That
null was PROG-43's workaround for the default tween flying the card back to
its stale slot — impossible on the board since onDragEnd commits the columns
mirror synchronously (PROG-59), and impossible on the outline since PROG-119;
the frame-sampling 'doesn't flash back' e2e spec passes with the tween on.
…overlay clear

board-reorder's PROG-59 spec was failing for a reason unrelated to the tween:
outline-move.spec.ts archived its focuses but left their actions OPEN —
archiving a focus does not close its actions — so each run leaked open
actions onto the shared dev board, and isolateColumn herded the growing pile
between columns until the drag targets slid below the viewport. The spec now
cancels its actions before archiving (and says why). The 32 already-leaked
actions were canceled in the dev DB by hand.

board-reorder's overlay assertion is retimed for the settle tween: the
overlay now legitimately lives ~180ms gliding to the NEW slot, so 'clears
within 120ms' becomes 'clears within 600ms'; the fly-back regression that
bound guarded is covered by the frame-sampling 'doesn't flash back' spec.
@bryankennedy
bryankennedy merged commit 8a9033b into main Jul 14, 2026
2 checks passed
@bryankennedy
bryankennedy deleted the act/PROG-118-board-settle branch July 14, 2026 19:30
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.

1 participant