sillsdev / sillsdev/interlinearizer-extension
Analysis Catalog: multi-select and bulk actions
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 2
- Forks
- 0
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 55
Description
Checkboxes on Analysis Catalog rows (#186), then one action applied to the selection: delete these twelve, merge these five into that one, clear a gloss on all of them.
Blocked by #184 (Undo/Redo). Bulk is not technically hard — because catalog mutations are keyed by analysisId, a bulk action is a loop over ids, or better a single action taking ids[] so it is one transaction and one re-render. The blocker is safety: single-row delete without undo is a sharp edge you can reason about, while bulk delete without undo is forty mistakes at once, possibly with a partial failure halfway through, possibly on rows a filter is hiding.
Note this only works cleanly because mutations are analysis-keyed. Had they stayed token-keyed, a bulk action would have to expand each analysis into its N token refs, and every one of those calls would fork — producing N private copies, the exact opposite of the intent.
Use cases
- Corrections that span rows. One mis-split word is already one row and one edit. But wrongly splitting a prefix such as
un-across forty different words is forty rows, and no amount of shared-payload reuse collapses it — they are genuinely different analyses. - Cleanup. Filter to zero-usage rows, select all, delete.
- Homograph consolidation. Merge several competing rows into one canonical analysis.
Design questions to settle
- Partial failure. If row 17 of 40 throws, what state is the user in? Needs an answer that is not "hope", which is why undo comes first.
- Selection versus filter. Select 40 rows, then change the filter — is the selection preserved? Does the action apply to rows the user can no longer see? This is a reliable bug factory; decide explicitly.
- Blast radius display. A bulk delete needs to state total affected usages, not just row count. Twelve rows can be thousands of verses.
Related
user-questions.md parks a separate bulk-acceptance question ("Suggestion engine: bulk acceptance"). Both are "apply one decision to many things" and probably deserve one interaction model rather than two — worth designing together.
Blocked by: #184. Follow-up to #186.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with #184 (Undo/Redo) and #186 (catalog row checkboxes), then review the catalog mutation path keyed by analysisId. Before implementation, resolve the listed partial-failure, filter-selection, and blast-radius questions. Done means the catalog supports safe multi-selection and bulk actions with the behavior agreed for those cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100