You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add catalog-wide edits, unsaved-change discards and previewRemovals #448
Catalog-wide edits, including the analysis-keyed writeAnalysisMorphemes and confirmAnalysisMorphemes, and unsaved-change discards, with parity tests; an unsaved-change discard's reply carries hasFreeTranslations beside the ChangeSet; previewRemovals.
Done when: its commands, writeAnalysisMorphemes and confirmAnalysisMorphemes included, pass their parity tests, an unsaved-change discard's reply gives hasFreeTranslations as main computes it, and previewRemovals names the records useGlossClearReclaims and useStaleLocationReclaims do.
Commands by intent (writeGloss, approveAnalysisForToken, createPhrase, ...)
command
session, intent arguments
ChangeSet, plus touched pool buckets
Dispatch plus whole-draft saveDraft
3d to 3i
previewRemovals
query
session, a command by intent with its arguments
Ids of the records the command would remove
useGlossClearReclaims, useStaleLocationReclaims
3i
Cross-book answers
Answer
Today
Planned
Freshness
Issue
Records a write drops
Runs the reducer on a copy of the store
previewRemovals in the host
On demand
3i
hasFreeTranslations
Scans every segment analysis
Returned by openSession, and beside the ChangeSet in an unsaved-change discard's reply; recomputed on New, Open and both unsaved-change discards, as on main
At session open and after an unsaved-change discard
⛏️ Decide whether a host wipe releases a draft book whose stored analysis can't be read. Since #475, a WebView wipe doesn't: the shard stays until New or Open. Parity tests should pin whichever is chosen.
From #486: a wipe through apply keeps the shard of a book whose stored analysis couldn't be read. That book loads as empty, so the wipe has none of its records to delete and apply doesn't refuse it; the shard stays as stored, as on the WebView path since #475. apply can't clear such a book; only a save that starts the draft over (discardUnreadable) can.
changed the title [-][3i] Add catalog-wide edits, wipes and previewRemovals[/-][+]Add catalog-wide edits, unsaved-change discards and previewRemovals[/+]on Oct 27, 2026
Activity
imnasnainaec commentedon Oct 21, 2026
⛏️ Decide whether a host wipe releases a draft book whose stored analysis can't be read. Since #475, a WebView wipe doesn't: the shard stays until New or Open. Parity tests should pin whichever is chosen.
alex-rawlings-yyc commentedon Oct 23, 2026
From #486: a wipe through
applykeeps the shard of a book whose stored analysis couldn't be read. That book loads as empty, so the wipe has none of its records to delete andapplydoesn't refuse it; the shard stays as stored, as on the WebView path since #475.applycan't clear such a book; only a save that starts the draft over (discardUnreadable) can.alex-rawlings-yyc commentedon Oct 26, 2026
Two Phase 3 PRs leave reducers for 3i that this issue doesn't name:
confirmAnalysisMorphemes(keep a stale breakdown), from Add stale-handling commands with parity tests #511. It's keyed by analysis, so it goes with the catalog-wide edits.writeAnalysisMorphemesand the other catalog-wide morpheme reducers, from [claude] Add morpheme commands with parity tests #497.#511 exports
reclaimIfUnlinkedfromtokenCommands.tsfor reuse.I suggest adding both to the scope line and "Done when", so #426's "every reducer ... has a command" stays checkable from here.
[-][3i] Add catalog-wide edits, wipes and previewRemovals[/-][+]Add catalog-wide edits, unsaved-change discards and previewRemovals[/+]Add catalog edits, discards and removal previews (#448)
Add catalog edits, discards and removal previews (#524)