Conversation
In a derivative book, Bloom generates a sentence on the credits page about the original book's copyright and license, and the user cannot change it. Some publishers need different wording. A padlock in that sentence's hint bubble now hands it over. Clicking it turns the sentence into an ordinary editable field with the caret in it, holding the wording Bloom had generated; from then on Bloom shows what the user typed instead of generating the sentence. The unlock is spent on one rendering. The editable shape exists only in the throwaway page DOM built for the editor, so refreshing, leaving the page, and clicking the open padlock all arrive back at the locked state by the same route, keeping the user's words. Their wording lives in the data div under originalCopyrightAndLicense, and a new meta.json flag, user-edits-original-copyright-notice, says Bloom is no longer generating the sentence. The book remains a derivative in every other way: originalCopyright, originalLicenseUrl and originalLicenseNotes are untouched, so the License tab, publishing and upload behave as before. Hint bubbles gain a general affordance for this: data-link-icon puts an icon in the bubble's top right corner, data-link-target says what clicking it does, and data-link-icon-tooltip gives it a title. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The editing code takes the attribute off as soon as it has placed the cursor, but a page shown with focus suppressed still carries it at save time, and attributes on a bloom-editable are harvested into the data div along with its text. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…pyright A book set to use the original copyright as its own already prints that copyright, so a sentence about the original book prints it twice. Bloom's generated sentence has been suppressed in that case since BL-7381; the user's own wording now is too, and waits in the data div in case they turn the option off again. Found by Devin on #8346 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
| spot.SetAttribute("lang", "*"); | ||
| } | ||
| SetOriginalCopyrightNoticeHint(spot, !string.IsNullOrEmpty(notice)); | ||
| } |
There was a problem hiding this comment.
[Devin] Bug: Empty notice cannot be edited again
If the user unlocks the sentence, deletes all of it, and leaves the page, the line is gone — and so is the padlock, because the bubble only appears where there is a sentence. Bloom no longer generates the sentence for this book, so there is nothing left to click and no way back to it from the credits page.
Deleting the text is a plausible way to say "I don't want this line", so the disappearance may be exactly right. What is missing is a way to change one's mind.
Left open for a decision: keep it as it is (deleting is final for that book), or keep the padlock on the empty spot so an empty notice can be reopened — which needs the bubble to be reachable on a div with no text in it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
[Claude Opus 5 from Hatton's machine during preflight] Consulted Devin on 2026-09-10, most recently at Two bugs across the branch, both non-severe, and no informational flags:
Two later re-reviews, the most recent at the current head, raised nothing new. CI ( |
The sentence about the original book is built by pasting in the original title and copyright holder exactly as the publisher typed them, so a perfectly ordinary "SIL & LASI" makes it not valid XML. Seeding the data div with it went straight to InnerXml and threw the moment the user clicked the padlock. Put it through HtmlDom.SetElementFromUserStringSafely first, which is the same filter the locked sentence already goes through: everything is escaped and only <br> and <cite> stand. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Problem
When a book is a derivative, Bloom generates a sentence on the credits page about the original book's copyright and license, and the user cannot change it. Some publishers need different wording, and until now there was no way to get it.
Fix
A padlock now sits at the top right of that sentence's hint bubble, titled "Unlock to edit". Clicking it turns the sentence into an ordinary editable field, with the caret at the start of it, holding the wording Bloom had generated. From then on Bloom shows what the user typed instead of generating the sentence.
originalCopyright,originalLicenseUrlandoriginalLicenseNotesare untouched, so the License tab, publishing and upload behave exactly as before.originalCopyrightAndLicense, and a new meta.json flag,user-edits-original-copyright-notice, says Bloom is no longer generating the sentence. Seeding replaces the<cite data-book="originalTitle">around the original title with an<em>, so nodata-bookfield ends up nested inside another.data-link-iconputs an icon in a bubble's top right corner,data-link-targetsays what clicking it does, anddata-link-icon-tooltipgives it a title. A bubble containing a link now stays open long enough for the pointer to reach it.Ref: https://issues.bloomlibrary.org/youtrack/issue/BL-16859
Devin review
This change is