Skip to content

Show a notice for stale analyses in the loaded book (#375) - #398

Merged
alex-rawlings-yyc merged 6 commits into
mainfrom
feat/375-stale-notice
Oct 7, 2026
Merged

alex-rawlings-yyc merged 6 commits into
mainfrom
feat/375-stale-notice

Conversation

@alex-rawlings-yyc

@alex-rawlings-yyc alex-rawlings-yyc commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Closes #375. Closes #349.

While the loaded book has stale glosses or free translations the reader hasn't dismissed, a banner under the lost-boundaries one counts them, naming only the kinds present ("3 glosses and 2 free translations in this book no longer match the text."). Review glosses opens the catalog filtered to Stale + this book, clearing the search and every other filter. With a book filter on, Stale now keeps only rows stale in a selected book, so a row stale only in EXO no longer passes Stale + GEN, whether the filter was set by Review glosses or by hand. Next free translation goes to the next segment showing one after the focused word (or the active verse), wrapping round, and turns the free translation line on if it's off.

Dismissal names the records it covered, as the lost-boundaries banner's does: a newly stale gloss or translation raises the banner again reporting only itself, one that stops being stale drops out of the dismissal, and replacing the draft clears it. That logic moved out of the lost-boundaries hook into a shared useRecordDismissal, unchanged. The counts and Next cover only undismissed records; Review glosses lists every stale gloss in the book, since the catalog's Stale filter knows nothing of dismissal.

The analysis store remounts when the draft is replaced, so the dismissal lives in the loader, fed by a renderless reporter inside the store that passes the loaded book's stale records up only when they change.

Checked in the running app.

Screenshots

Glosses and free translations
01-both-kinds

Review glosses (before / after)
02-review-glosses-before
03-review-glosses-after

Next free translation from verse 6 with the line off (before / after)
04-next-before
05-next-after

Glosses only, after discarding the stale translations
06-glosses-only

Raised again for a translation staled after dismissal
07-reraised-after-dismissal


This change is Reviewable

@alex-rawlings-yyc alex-rawlings-yyc self-assigned this Oct 6, 2026
@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c49498b0-eb12-401b-9427-c09409cafa48
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@alex-rawlings-yyc
alex-rawlings-yyc marked this pull request as ready for review October 7, 2026 15:19

@jasonleenaylor jasonleenaylor left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Nice extraction of the shared dismissal hook, and the description's edge cases match the code. A few questions inline.

This review was assisted by Claude Opus 5.5.

Comment thread contributions/localizedStrings.json
Comment thread src/components/InterlinearizerLoader.tsx
Comment thread src/__tests__/hooks/useRecordDismissal.test.ts
Comment thread src/__tests__/components/AnalysisCatalogPanel.test.tsx

@alex-rawlings-yyc alex-rawlings-yyc left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alex-rawlings-yyc made 4 comments.
Reviewable status: 0 of 26 files reviewed, all discussions resolved (waiting on alex-rawlings-yyc).

Comment thread src/__tests__/hooks/useRecordDismissal.test.ts
Comment thread src/components/InterlinearizerLoader.tsx

@jasonleenaylor jasonleenaylor left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, handling singular and plural later is fine. There should honestly be an i18n library way of doing it surfaced through paranext-core.

This review was assisted by Claude Opus 5.5.

@jasonleenaylor jasonleenaylor left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jasonleenaylor reviewed 26 files and all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on alex-rawlings-yyc).

@alex-rawlings-yyc
alex-rawlings-yyc merged commit 9a4249b into main Oct 7, 2026
10 checks passed
@alex-rawlings-yyc
alex-rawlings-yyc deleted the feat/375-stale-notice branch October 7, 2026 22:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Notice for stale analyses in the loaded book Staled analyses have no recovery surface

2 participants