Repository navigation
Refuse a sort whose range reaches a live block (#235) - #238
Merged
Merged
Conversation
A sort that covered a live block moved its rows and said it was done; the next refresh wrote the block back in the source's order while the columns typed beside it stayed sorted, so notes landed on other products' rows without a word. sortSelection now runs the same refusedWrite check #232 added, over the detected sort range, before anything moves: the sort is refused whole and the note under the cursor names the live cells. A range that does not reach the block sorts as before. Adds store/liveSortRefused.test.ts (3, two red on the old store) and an e2e flow that sorts next to the sample live source and waits out a refresh (4 checks red on the old store). Recounted to 2010 tests; picture 27 retaken in both languages and the social card rebuilt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013pmWZsbmugfpqtYazrzfjj
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Owner
Author
|
PO review — merged at Verify (local, full): green — 2021 tests, mutants 32/32, a11y 121, e2e 60. CI 17/17 green on the same head. Tried as a user on a production build, the exact repro from #235 (live sales block A1:G6, notes typed in H2:H6, D2 selected, "เรียงจากมากไปน้อย"):
Generated by Claude Code |
7 tasks done
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Closes #235. Next in the sprint-final queue: #219 → #59.
The bug: a sort whose range covered a live block moved the block's rows along with everything else and was announced as done. The next refresh wrote the block back in the source's order, while the columns the person had typed beside it stayed sorted. Notes ended up on another product's row, with no message.
The fix:
sortSelectionruns the check [area:live-data] Pasting over a live-data cell is accepted and announced, then the next refresh wipes it without a word #232 added,refusedWrite, over the detected sort range before anything moves. If the range reaches a live cell, nothing is sorted. The same note goes under the cursor's cell and names the live cells, for example "A2:G6 is live data, so nothing was changed — press "Remove" first to edit it yourself". The sort is not announced.Reproduced on
mainfirstSteps, from the issue:
mainHow it was verified
npm run verify(all ten gates): all ten gates green on6cacf97. The current head5f12e3acarries that tree unchanged; it only adds the merge ofmainb8837a9(Make cut and paste a move: references follow the moved cells (#51) #236).New e2e flow "sorting next to a live block is refused whole and said, and every note stays on its product ([area:live-data] Sorting a range that includes a live block: the next refresh puts the live columns back, and the columns typed beside them end up on the wrong rows #235)". It runs on a production build. It places the sample source through the real form, types a note per row in H, sorts from D2 with the toolbar button, and waits past the 5-second refresh. With
main'ssheetStore.ts, 4 of its 5 checks fail: there is no note, "sorted" is announced, the rows move, and after the refresh all 5 notes are on another product.store/liveSortRefused.test.ts(new, 3):The first two fail on
main's store.READMEs and AGENTS.md, both languages:
Recounted: 2010 tests in 145 files. Picture 27 retaken in both languages and checked by eye, blessed after the retake. Social card rebuilt and checked by eye.
For PO
The branch
This is the session's branch
claude/new-session-m6mehm. The work was written on a local branch on top of #51 (a314bbd), withmainb8837a9(#236) merged in.🤖 Generated with Claude Code
https://claude.ai/code/session_013pmWZsbmugfpqtYazrzfjj
Generated by Claude Code