Skip to content

3.4 RC4 Release Notes

Frédéric Clavert edited this page Jul 26, 2026 · 2 revisions

v1.0.0-rc.4 — Release Notes

Tag: v1.0.0-rc.4

RC4 is a stabilisation candidate. Where RC3 added a new editor and turned books into real manuscripts, RC4 makes sure that what you already had tells you the truth.

Three audits — security, code robustness, design — were run over everything that changed since RC3, then their reports were worked through end to end. Almost nothing they found was a crash. The pattern was worse than that: the application produced wrong results without saying so, and the documentation described things the code did not do.

If you write books, read section 1 first. Two of those defects silently removed text from an exported manuscript.


1. What you were seeing that was wrong

  • Every PDF title page was corrupted as soon as a name contained &. Metadata was escaped for LaTeX before being handed to pandoc — which escapes it too. Dupont & Fils printed as Dupont \textbackslash& Fils. Ten characters were affected (\ & % $ # _ { } ~ ^), so an abstract became unreadable from its first ampersand.

  • A footnote placed inside an HTML block disappeared from the book. If you use a <div> for a boxed aside and put a note in it, the note's text was lost on export and [^1] printed literally. The parser treats an HTML block as opaque; pandoc does not. Chapter-prefixing therefore renamed the definition without touching the call, and both ended up orphaned.

  • Exporting an article could produce the wrong document. The export took whatever file was open in the editor — and the project panel invites you to open abstract.md and context.md. Exporting while your abstract was open produced a PDF containing the abstract, under the article's title, with no warning.

  • The "Sources" panel no longer showed the source's own text. The context compressor rewrites excerpts, and the panel displays the result. Markdown tables were shredded and recomposed into rows that never existed; sentences taken from far apart were joined with no ellipsis, reading as a continuous quotation found nowhere in the document; and a fallback returned them in score order, rewriting the text's chronology. Tables and code blocks now pass through whole, cuts are marked […], and document order is kept.

  • Manual OCR reported success without checking. The write could fail and the card still showed a tick. Worse, the transcription never reached the search index: the re-indexing function carried a TODO and — more seriously — deleted the extracts without regenerating them.

  • Two book export paths failed outright. A recipe exporting a book with endnotes stopped on a LaTeX error and produced no PDF at all; and the native Word export printed \mainmatter as a paragraph at the top of the document.


2. What you could lose

  • Cmd+Q just after typing lost the text. Quitting stopped background services but never asked the editor to save, and there was no beforeunload guard. With auto-save off, the loss was unbounded. The app now flushes the editor before exiting — waiting at most four seconds, so a stuck window can never stop you quitting.

  • A chapter could vanish permanently from the manuscript index. Its fingerprint was written before its content, so a failure part-way left a valid fingerprint with nothing behind it, and every later pass skipped that chapter as "unchanged". Writing is now all-or-nothing.

  • The renumber/export lock only worked one way. Exports refused to start during a renumbering, but nothing stopped you renumbering during an export — whose assembly reads chapters for several seconds. That is the exact scenario the RC3 fix claimed to close.


3. Security

  • The main window can no longer leave the application. Only pop-ups were blocked; a link clicked inside an assistant reply could navigate the window away, and the preload — with its ~184 IPC channels, including file read and write — was re-injected into the remote page. Web links now open in your system browser; everything else is refused.

  • MCP servers declared in a project no longer start without your agreement. The safeguard existed but was only wired to manual additions: opening a project shared by a colleague ran whatever command its config.json contained. Approvals are remembered per command fingerprint, outside the workspace — so a hostile project cannot approve itself.

  • context.md is now inspected. It is injected as a system message, above the application's own instructions, and it lives at the root of your project — it travels with a shared folder. It now goes through the same source inspector as RAG excerpts and MCP results.

  • Cloud consent applies to one named provider, not to "the cloud" in general; and ticking use this provider for embeddings now asks first, because it sends your entire corpus — PDFs, transcriptions, notes, manuscript — on every indexing pass.


4. Things that finally have an interface

RC3 shipped several features whose settings existed only in project.json or nowhere at all. RC4 gives them controls.

  • Book settings — footnotes or endnotes, continuous or per-chapter numbering, one bibliography or one per chapter, chapter numbering. RC3's notes admitted none of these had a UI; they now do, and they drive the Word export as well as the PDF one (see the limitation below on endnotes).

  • The manuscript corpus — RC3 indexed your own text as a fourth corpus, but two defects meant it never actually reached the assistant, and nothing in the interface showed it existed. Both are fixed: excerpts now compete on a comparable score with reserved places, and Settings → Manuscript corpus shows the index state, the date of the last indexing pass, a re-index button, and the on/off switch.

  • Research journal purge, with a double confirmation naming exactly what disappears.

  • Drafts panel — send a Brainstorm reply to the Writing mode.

  • Embeddings section in Settings — provider and embedded model.

  • Manual OCR button per primary source.

  • Collection filter wired into Similarities and Tropy.

  • Flagged-source badge in the chat.

  • Prose fonts in the editor font picker, and an interface density setting (comfortable or compact) whose stylesheet existed but could not be switched on.


5. Every language, everywhere

The interface is now fully translatable into French, English and German.

The previous check compared the three translation files with each other, so it could not see a string that was missing from all three — which is how the OCR settings dialog stayed English in every language, and how a whole transcription-import dialog did the same. A new check confronts the code with the translation files instead.

A language-blind scan then found 181 hard-coded strings where looking for French alone had found 27 — the bibliography statistics, the Zotero sync preview, the RAG settings panel, and much of the Settings screen were English literals that no translation could reach.

One case is worth naming because nobody would think to look there: the insertion templates write into your manuscript, not into the interface. "texte en gras", "Titre de la slide" and "Notes du présentateur" arrived in French inside a German speaker's own document.


6. Under the hood

  • The test suite is at 1 397 tests, all running on the ABI where the SQLite suites actually execute.
  • Five structural guards were added, each verified by deliberately breaking the code to check the test fails: i18n keys confronted with the code, no hard-coded visible strings, a z-index scale that cannot be bypassed, focus traps actually wired, and the manuscript corpus quota.
  • Two tests that tested nothing were repaired. One copied the function it claimed to verify; the other stubbed exactly the mechanism the bug it should have caught depended on.

Upgrading

Nothing to do — existing projects open as they are.

Two things you may notice:

  • If you use cloud embeddings, the setting now asks for confirmation the next time you tick it. Existing configurations are untouched.
  • If a project declares MCP servers, the first launch after upgrading asks you to approve each one. The answer is remembered.

Known limitations

  • The Word export still does not honour endnote style (footnotes vs endnotes remains PDF/LaTeX only). Chapter numbering and document structure are now honoured in Word.
  • No index (\index{}) or typed cross-references yet.
  • A footnote defined in one chapter but called from another becomes two orphans — a consequence of per-chapter isolation.
  • Headings with the same title in different chapters produce duplicate anchors, so manual cross-links may point at the first one.
  • The manuscript corpus panel reads its state when you open Settings; the figures do not refresh if you leave Settings open while writing.
  • Tab can still leave a few side panels (it is trapped in dialogs).
  • pdfjs-dist stays at 3.11.174. npm audit flags a CVE against it, but it is not reachable here — the vulnerable code is in canvas rendering, which ClioDeck never calls; extraction is text-only, in an isolated child process. Upgrading means rewriting the PDF ingestion bootstrap, which was not a sensible thing to do during a release candidate. Tracked in issue #77.
  • The source inspector is detection-only by default. Nothing is ever discarded unless you raise the mode. This is deliberate: a primary source — correspondence, a speech, a leaflet — legitimately contains imperatives that look like injection patterns, and truncating a genuine testimony would be worse than the risk avoided. Use audit for corpora of third-party origin.
  • Code signing is still not in place: macOS Gatekeeper warns on first launch (right-click → Open), and managed institutional machines may block the app (issue #75).
  • Tested on macOS and Linux. No Windows build is published; the code should work there but has not been tested — reports welcome.

See also

Clone this wiki locally