fix(card-sorting): correct suffix card detection in auto-arrange

The suffix detection logic in the auto-arrange effect was using
incorrect index calculation, causing suffix cards not to be
recognized and positioned properly.

Fixed by comparing from the end of both sequences working backwards:
- inferredSequence[length-1-offset] vs correctOrder[length-1-offset]

This matches the logic already used in isCardLocked() and the
rendering code, ensuring consistent suffix detection across all
three locations.

Now suffix cards correctly:
- Get auto-arranged to bottom-right grid
- Become locked and non-draggable
- Scale down and fade when in correct position

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Thomas Hallock 2025-10-23 22:25:37 -05:00
parent 47189cb6e7
commit d02ab5922c
1 changed files with 7 additions and 5 deletions

View File

@ -1263,12 +1263,14 @@ export function PlayingPhaseDrag() {
prefixCards.push(inferredSequence[i])
}
// Find suffix cards (cards at positions ...n-2, n-1, n that are all correct)
// Find suffix cards (cards at the END of correctOrder that are all correct)
// Start from the end of both sequences and work backwards
const suffixCards: SortingCard[] = []
for (let i = inferredSequence.length - 1; i >= 0; i--) {
const correctIdx = state.correctOrder.length - 1 - (inferredSequence.length - 1 - i)
if (inferredSequence[i]?.id !== state.correctOrder[correctIdx]?.id) break
suffixCards.unshift(inferredSequence[i])
for (let offset = 0; offset < inferredSequence.length; offset++) {
const inferredIdx = inferredSequence.length - 1 - offset
const correctIdx = state.correctOrder.length - 1 - offset
if (inferredSequence[inferredIdx]?.id !== state.correctOrder[correctIdx]?.id) break
suffixCards.unshift(inferredSequence[inferredIdx])
}
// Check if prefix and suffix overlap (all cards are correct)