Claude: changes for issue #150 #151

Merged
Grandiras merged 1 commit from claude/issue-150 into main 2026-08-23 14:55:38 +00:00
Collaborator

Closes #150.

Closes #150.
On a phone, a card is picked up by a press rather than by a touch
All checks were successful
CI / build (pull_request) Successful in 39s
eab5c18a64
SortableJS starts a drag on the first move after a finger lands, in any
direction. That is survivable while a column is short — the gaps between
the cards and the strip under the last one still scroll it — but a column
holding more cards than fit on the screen has no such strip, and on a
phone `.column-cards` is the only thing that scrolls vertically. So the
fuller a column got, the less of it could be reached, and a full one
could not be scrolled at all.

`delay: 200` + `delayOnTouchOnly: true` + `touchStartThreshold: 6`. The
delay separates the two meanings a touch can have, and nothing calls
preventDefault while it runs, so the browser scrolls the column with its
own gesture handling. The threshold abandons a pick-up that travels more
than 6px before the timer fires — under the browser's own ~8px of slop,
over the jitter of a finger holding still — so a flick scrolls at once
rather than after a stall. `delayOnTouchOnly` keeps a mouse instant,
which is the point: a pointer has no ambiguity to resolve.

`.card-chosen` gains a 1.03 lift, because it is now feedback rather than
decoration: it lands when the press completes, before the card has moved
a pixel, and on a finger it is the only thing that says the card is in
hand. Excluded from `.card-ghost`, which keeps the class — the hole left
behind must not be wider than the card that will fill it.

mobile.spec.js drives all three gestures over CDP in the existing
touch-drag fixture: a tap still opens the card, a flick scrolls the
column and picks nothing up, and a press picks up and then autoscrolls at
the column edge. board.spec.js reads the options back off every column.
Author
Collaborator

🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 Reviewing this PR — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/377); the reply will link the full session transcript. <!-- claude-run:pr_review --> 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-151/run-377.md) — updating every ~5 minutes while the task runs.
claude-reviewer left a comment

Verdict: approve — no blocking issues found.

This adds delay: 200 + delayOnTouchOnly: true + touchStartThreshold: 6 to the column Sortable instances so a touch on a full column is read as a scroll until it's been held, fixing the bug where a full column had no touchable point that would scroll it. I verified the options exist in the vendored sortable.min.js (1.15.7), and the .card-chosen styling change is consistent with the existing convention of standalone rotate/scale properties (.card-dragging already uses rotate: 2.5deg) rather than transform, which correctly avoids clobbering .card:hover/.card:active's transform: translateY(...).

The :not(.card-ghost) exclusion is well-reasoned: SortableJS applies chosenClass to the original element which becomes the ghost placeholder left in the list, so without the exclusion the placeholder would also scale up, widening the gap under the drop. The mobile.spec.js fixture is thorough — it exercises a short tap (dialog still opens), a fast flick (scrolls, nothing picked up), and a held press (picks up, .card-chosen appears, then drags/autoscrolls) all in one gesture sequence, which matches the three-way ambiguity the feature is resolving. board.spec.js's added assertion correctly checks the press options survive a column rebind. Changelog entries (both locales) and docs/frontend.md are updated per the repo conventions, and the reasoning in the code comments checks out against the actual .card/.card-chosen/.card-dragging CSS.

One minor, non-blocking note: chosenClass is unaffected by delayOnTouchOnly for mouse drags (delay stays 0 on desktop), so the new scale: 1.03 on .card-chosen will now also apply immediately on desktop mouse drags, not just touch — the comments and changelog frame this purely as a phone-only affordance. Not a bug, just worth confirming that's the intended visual on desktop too.

No correctness or security issues found.


⏱ 1m 29s · 14 turns · tokens: 33.6k in / 6.9k out (+591.8k cache-read)
📜 Full session transcript

✅ **Verdict: approve** — no blocking issues found. This adds `delay: 200` + `delayOnTouchOnly: true` + `touchStartThreshold: 6` to the column Sortable instances so a touch on a full column is read as a scroll until it's been held, fixing the bug where a full column had no touchable point that would scroll it. I verified the options exist in the vendored `sortable.min.js` (1.15.7), and the `.card-chosen` styling change is consistent with the existing convention of standalone `rotate`/`scale` properties (`.card-dragging` already uses `rotate: 2.5deg`) rather than `transform`, which correctly avoids clobbering `.card:hover`/`.card:active`'s `transform: translateY(...)`. The `:not(.card-ghost)` exclusion is well-reasoned: SortableJS applies `chosenClass` to the original element which becomes the ghost placeholder left in the list, so without the exclusion the placeholder would also scale up, widening the gap under the drop. The mobile.spec.js fixture is thorough — it exercises a short tap (dialog still opens), a fast flick (scrolls, nothing picked up), and a held press (picks up, `.card-chosen` appears, then drags/autoscrolls) all in one gesture sequence, which matches the three-way ambiguity the feature is resolving. board.spec.js's added assertion correctly checks the press options survive a column rebind. Changelog entries (both locales) and docs/frontend.md are updated per the repo conventions, and the reasoning in the code comments checks out against the actual `.card`/`.card-chosen`/`.card-dragging` CSS. One minor, non-blocking note: `chosenClass` is unaffected by `delayOnTouchOnly` for mouse drags (delay stays 0 on desktop), so the new `scale: 1.03` on `.card-chosen` will now also apply immediately on desktop mouse drags, not just touch — the comments and changelog frame this purely as a phone-only affordance. Not a bug, just worth confirming that's the intended visual on desktop too. No correctness or security issues found. --- ⏱ 1m 29s · 14 turns · tokens: 33.6k in / 6.9k out (+591.8k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-151/run-377.md) <!-- claude-verdict:approve --> <!-- claude-reviewed-head:eab5c18a64080d5ca74706e2643b0c884856b89d -->
Grandiras deleted branch claude/issue-150 2026-08-23 14:55:38 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/Ponente!151
No description provided.