Skip to content

v1.5.6

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Aug 20:47

First release since v1.5.4. v1.5.5 was never tagged, so this one carries
everything merged since then.

Plain Text Mode: source paragraphs left in the output (#253)

Plain Text Mode maps a segment's answer back to the source paragraph indices it
covered, positionally. When the model returned fewer paragraphs than the
segment held, the reconciliation padded the tail with empty slots, and those
slots fell back to source text: a run of untranslated paragraphs sitting under
a translation that was otherwise complete and correct. Nothing on that path
logged anything, so a run could report every chunk successful, zero fallbacks
and zero failures while carrying hundreds of source-language paragraphs.

The reported trigger is front matter. A chapter that opens with a disclaimer
and an author's note gets that block folded away as if it were metadata, the
whole chapter slides up by that many paragraphs, and the same number of source
paragraphs reappears at the end of the segment. On a 12-chapter test book built
from that pattern, every affected chapter had front matter and no chapter
without it was ever affected.

Three layers, each useful on its own:

  • Observe. A wrong paragraph count is counted, logged, and any block that
    ends up carrying its source text is marked class="plain-text-untranslated".
  • Prevent. The prompt states the paragraph contract explicitly, and the
    Text Cleanup section no longer tells the model to "merge incorrectly split
    paragraphs" in Plain Text Mode, which is the one thing this path cannot
    absorb.
  • Repair. A mismatched segment is re-translated once as a whole, with the
    exact expected paragraph count stated in the prompt. If that comes back
    aligned, the segment is fixed for one extra LLM call. If not, it falls back
    to re-translating one paragraph per call, which makes the alignment exact by
    construction.

On the test book: 4 of 12 chapters affected before, 0 after, with 5 of 5
mismatched segments recovered by the single retry rather than the
paragraph-by-paragraph path.

The alignment counters — paragraph_count_mismatches,
paragraph_retry_recovered and paragraph_repair_failed — now reach the stats
payload, survive a pause and resume, and are reported on the completion card.

Plain Text Mode: <hr> scene separators (#254)

Plain Text Mode rebuilds an EPUB body exclusively from the flat list of blocks
it collected, and <hr> was in none of the tag sets driving that collection:
the reporter measured 416 <hr> in the source and 0 in the output, with no
textual substitute. Every scene break in the book was gone.

<hr> is now a void block: collected with an empty string, it keeps its own
slot in the paragraph list and is re-emitted at its original position. It never
reaches the LLM, so this costs zero extra calls and cannot shift alignment.

Glossary: inflected target languages (#255)

A glossary entry gave the model a single surface form, which it then reused
verbatim in positions that require a different case or number. The prompt now
distinguishes the two: the morphology is the model's to adapt, the rendering is
not.


Downloads below: Windows executable, macOS builds for Apple Silicon and Intel.
The Docker image is published for this tag as well.


Downloads

Platform File
Windows 10/11 (64-bit) TranslateBook-Windows.zip
macOS 11+, Apple Silicon TranslateBook-macOS-AppleSilicon.zip
macOS 11+, Intel TranslateBook-macOS-Intel.zip
Docker image published for this tag

Each executable is self-contained: no Python installation required,
configuration is generated on first run, and .txt, .epub, .srt and
.docx are supported.

Install Ollama for local models, or set an API key for a
cloud provider (OpenAI, Gemini, OpenRouter, Mistral, DeepSeek, Poe, NVIDIA
NIM). Then open http://localhost:5000.

Windows

  1. Download and extract TranslateBook-Windows.zip
  2. Run TranslateBook.exe
  3. Open http://localhost:5000

macOS

  1. Download and extract the build for your Mac
  2. In Terminal, run ./TranslateBook
  3. Open http://localhost:5000

First launch: macOS blocks the app. Double-click TranslateBook, then open
System Settings > Privacy & Security and click "Open Anyway" next to
the TranslateBook message. This is only needed once.