Repository navigation
Add row groups to item scanning - #1020
Merged
Merged
Conversation
A third Item scanning choice, Rows, groups, then items, splits any row of seven or more items into two to four balanced groups, as Android's Group Scan does, so scanning goes row, then group, then item. Panels highlight the whole group and offer Back to groups after its last item. Row groups are saved as a separate rowGroups value beside the pattern, so versions without them still read the pattern and keep every other scan setting. Closes #1019. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Synced documents must round-trip exactly, so the new rowGroups keys broke sync with version 2 documents in both directions. Version 2 documents now upgrade with row groups off and areas following the shared choice, and older builds ask to be updated instead of reporting invalid settings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #1019.
Summary
RowGroupingPolicy) does: a row of 7 or more items becomes round(√n) groups, between 2 and 4, with at least 2 items each, sized evenly with larger groups first. For example, 10 keys split 4, 3, 3. Shorter rows scan as before. Android's gap-aware cut is left out because panel keys have no gaps.scan_treegroups, so their highlight survives the keyboard replacing its rows.Settings compatibility
Local settings file. The choice is stored as
pattern: "grouped"plus a newrowGroupsboolean, not a newpatternvalue. Versions rc.17 to rc.23 only drop unknown values ofpanelSize,nextScanandstartFrom. An unknown pattern would make them reset every scan preference to defaults.rowGroupsand read the pattern as Groups, then items.rowGroupsdefaults to off. An area with its ownpatternsaved withoutrowGroupshas no row groups.patternorrowGroupsvalues are now dropped on their own when settings are read; the other scan settings are kept.Settings sync. Synced documents must round-trip exactly, so
portable_settings::SCHEMA_VERSIONgoes from 2 to 3.upgrade_v2reads version 2 documents withrowGroups: falseand every area following the shared choice. Version 1 documents upgrade through both steps.Validation
npm run prediction-model,npm run lint,npm test(294 passed),npm run buildcargo fmt --check,cargo clippy --all-targets -D warnings,cargo test(746 passed)scan_items: split sizes for lengths 0 to 60, row→group→item traversal, Back to groups and Back to rows, reverse direction, no splitting in linear or plain grouped scanning, highlight survivingreplace_rows.scan_preferences: saving, reading and inheritance, and older-version and unknown-value compatibility.portable_settings:rowGroups, and rejecting a version 3 document that lacks it.scanPreferenceskey set is pinned.settings_sync: updating from version 1 or 2 uploads nothing until something changes.scan_keyboard: QWERTY statuses and highlighted tile counts.PointScan.test.tsx: the three-way choice, per-area override, Use default, and card summaries.🤖 Generated with Claude Code