Repository navigation
Collection Settings in React: Languages page (BL-16739) - #8502
andrew-polk wants to merge 1 commit into
Conversation
|
[Medium impact] The PR appears safe to merge; no new blocking issues were found.
|
|
[Claude Opus 5.5 during preflight] @greptile-apps review |
|
[Claude Opus 5.5 during preflight] Consulted Devin on 2026-10-23 18:06 UTC up to commit e5fbca0. It raised three findings, each with its own thread: the props type (fixed in e5fbca0), the uncancelled fetches (not an issue; replied), and the QR badge preview using the saved language (left open for a decision). No Investigate flags. The later commit e084157 only changes the plan document. |
|
[Claude Opus 5.5 during preflight] @greptile-apps review |
|
[Claude Opus 5.5 during preflight] Consulted Devin on 2026-10-23 18:44 UTC up to commit 1186b23. Nothing new: it now marks the QR badge preview finding resolved (fixed in 1186b23) along with the props type; the uncancelled-fetch finding is a repeat, already answered on its thread. No Investigate flags. |
1186b23 to
576fe22
Compare
|
[Claude Opus 5.5 during preflight] @greptile-apps review |
|
[Claude Opus 5.5 during preflight] Consulted Devin on 2026-10-23 21:29 UTC up to commit 576fe22 (the branch squashed onto the rewritten stack). It reviewed the four conflict-resolved files and raised one new finding, the default caption's translation in the badge preview (thread left open for Andrew's decision). Its earlier findings stay closed. No Investigate flags. |
|
[Claude Opus 5.5 during preflight] Consulted Devin on 2026-10-23 22:09 UTC up to commit c25469c (adds the e2e test only). Nothing new; the default-caption thread stays open for Andrew's decision. No Investigate flags. |
f9135d1 to
330705a
Compare
|
[Claude Opus 5.5 during preflight] Consulted Devin up to e4d6a05 (the merge of BL-16735 with BL-16733's one-GET Front & Back Matter page): no new findings. The four it still lists come from earlier commits, and their threads here are already settled; the default-caption comment moved with the code to DefaultQrcodeCaption in the settings GET. |
c8b803b to
109515f
Compare
|
[Claude Opus 5.5 during preflight] Consulted Devin up to c8b803b (the restack on BL-16735 8dd7cb3 and the simplifications). One new finding, NumberSelect showing no value for a line spacing or tool font size outside its list: answered and resolved (same as the old dialog; only a hand-edited file can hold one). Its other four findings are from earlier commits and were already settled. 109515f after it only restores a missing XML summary tag. |
109515f to
132be44
Compare
The new dialog's Languages page: Language 1, 2, 3 and the Sign Language, each with the existing language chooser opened as a nested dialog (Set and Remove for the optional ones), a Default Font picker, and a More sub-page with the tool font size, line spacing, Asian word breaking and right-to-left. Language 1's More page also edits the reader tools' alphabet and sentence punctuation, written into ReaderToolsSettings-<L1>.json without touching its stages and levels; locked while Language 1 is being changed or when that file is damaged. Page Numbering Style moves to this page (only in the dialog's JSON). An e2e test saves a language's font, line spacing and alphabet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
132be44 to
abcf4ef
Compare
Problem
The new React Collection Settings dialog still shows a placeholder on its Languages page. Collection languages, their fonts and their script settings can only be changed in the old WinForms dialog, spread over its Languages tab, the Book Making tab and the Special Script Settings dialog. The alphabet and sentence punctuation for the reader tools can only be changed in Reader Setup.
Fix
settingsPages/LanguagesPage.tsx) has a group each for Language 1, 2, 3 and the Sign Language. Each shows its language with Change…, which opens the existing language chooser as a nested React dialog. Language 3 and the Sign Language also offer Set… and Remove. Each written language has its Default Font (the font picker, with suitability warnings) and a More sub-page, which uses Config-R's sub-pages. More holds the tool font size, line spacing, Asian word breaking and right-to-left. A missing Language 3 shows only its language row.ReaderToolsSettings-<L1 tag>.jsonin the collection folder and keeps the stages and levels; it writes nothing if they didn't change. The two fields are disabled while Language 1 itself is being changed, because the file is named for Language 1. An edited alphabet is cleaned the way Reader Setup cleans it. If the reader tools file is damaged, those two fields are disabled with an explanation, so the rest of the settings still save and the file is never written over.frontBackMattertolanguages; the collection file is unchanged. Its choices come in the dialog's own settings GET, not from the old dialog'ssettings/numberingStyle, so that endpoint can go with the old dialog.defaultFontNamefor a newly added Language 3, and the page numbering styles.LanguageChooserDialogcan hand its pick to a callback, and gets its WinForms frame's size when it has no frame.cleanSpaceDelimitedListmoved where both callers can use them, unchanged.ScriptSettingsDialogand the Book Making font controls stay until the old dialog is removed at cutover.The More pages need Config-R 1.0.0-alpha.31 or later (sillsdev/config-r#31); BL-16733 brings in alpha.33. Before it, any edit on a More page threw the user back to the Languages page, because Config-R reset the focused page whenever the dialog re-rendered, and this dialog re-renders on every edit.
Screenshots
The Languages page:
Language 1's More page, with the reader tools' fields:
Change… opens the language chooser over the dialog:
Risk Evaluation
ReadersApinow builds the reader tools' default settings through the shared method; the JSON is the same.Ecosystem Impact
PageNumberStyleis stored as before.translate="no"strings. The labels are inBloom.xlfand the descriptions inBloomMediumPriority.xlf; existing translated strings were reused wherever the text fit.Automated Tests
collection-settings-languages.spec.ts(e2e, new): the journey through the Languages page described below.LanguagesPage.test.ts(new): what a language picked in the chooser becomes in the collection's settings.CollectionSettingsDialog.test.tsx: the Languages page's rows, Set/Remove, the More pages, the locked reader-tools fields, the restart check, and the badge request for a sign language added in the dialog.CollectionSettingsUpdaterTests.cs: the reader tools' alphabet and punctuation written into their file keeping the rest, a file made from the defaults, and a damaged file left alone;CollectionSettingsApiTests.cschecks that Page Numbering Style and the alphabet are among the values whose change restarts Bloom.Test of the change:
collection-settings-languages.spec.ts, with the Languages-page tests inCollectionSettingsDialog.test.tsx,LanguagesPage.test.tsandCollectionSettingsUpdaterTests.csE2E Coverage
collection-settings-languages.spec.ts, a journey through the real dialog: Language 1's Default Font, then on its More page a line spacing and a new alphabet; Restart; then the collection file, the reader tools' settings (stages kept) and the reopened dialog. It fails with Config-R alpha.30 at its first edit on a More page; that is how the Config-R bug was found.collection-settings-front-back-matter.spec.tspasses on this branch.Notion Test Suite
Preflight report: https://bloombooks.github.io/dev-process-artifacts/deciders/bloomdesktop-bl-16739-languages-page.html
Ref: https://issues.bloomlibrary.org/youtrack/issue/BL-16739
🤖 Generated with Claude Code
Devin review
This change is