Braille Notebook

Editor for transcribing school exercises into Braille: books of exercises, scanned sources, LaTeX maths, PDF/BRF/PEF export, embosser printing and an AI assistant.

Current version: 0.3.0 (2026-09-19)

Open the app online The editor runs in your browser; documents stay on your computer.

Samples

citanka.brn

A book with several pages of a Czech reader – scanned sources, the transcription and the document structure. Open it online, or download it and open it in the app (Open).

Download

Windows x64 – portable

Download and run, no installation. Unlike the online version it can print to a Braille embosser (Index Braille, LPT) and keeps AI assistant keys in the Windows Credential Manager.

Free to use. .brn files are ZIP archives with a book.json and the scanned sources – one book with all its exercises in a single file.

Changelog

0.3.02026-09-19Current

Changed

  • New .brn file format. A book is now a ZIP with book.json and the scanned source images as separate files (smaller than the old base64 JSON and easy to inspect with any ZIP tool). Books saved by older versions open as before and are converted on the next save; a book missing an image opens without it and says so. Files saved by this version do not open in 0.2.0 or older.
0.2.02026-09-19

Added

  • Czech user interface. The app follows the system language (Czech and Slovak systems get Czech, everything else English) and can be switched in View → Settings → Language. Ribbon, panels, dialogs, the import, the assistant, the symbol palette and the symbol tabs (Math, Chemistry, Music, Phonetics, Symbols) are translated; the palette also finds symbols by their English names.
  • Import pages (Home/Book → Import, or drop files on the grid): a full-screen dialog that loads scanned images, PDF pages (page picker, 150–300 DPI), scanner pages (Windows, desktop app) or phone photos, lets you draw, name and order the exercises on each page (rotate 90/180/270°), and creates one document per exercise — or per page — at the end of the book with the crop as its source image.
  • Archetypes: a document can carry how it should be processed. First ones: *Fill-in exercise* (assistant transcribes the exercise, gaps become the full cell ⠿ — also insertable from the symbol palette) and *Plain text (OCR)*. *Run* in the Book tab or Properties panel puts the result in the Assistant panel as a proposal to apply.
  • OCR: Tesseract (desktop, path and language in View → Settings) or the assistant's vision model.
  • Assistant shows what it is doing. While a request runs, a status line reports the phase (waiting for the model, thinking, writing rows or findings) with the elapsed time and a Stop button; the model's reasoning ("thinking"), where the provider exposes it, is shown as a collapsible block during and after the answer. Stop keeps the partial answer and marks it; a request with no reply for 90 s fails with a Retry button.
  • Assistant quick actions and archetypes appear in the conversation as a short label (⚡ *Transcribe image*) instead of the full prompt; the empty conversation offers clickable examples; Enter sends (Shift+Enter is a new line); the context sent with a message (rows, image, outline) is toggled with chips.
  • Assistant settings: one screen with provider, API key and model plus a Test connection button (lists the provider's models); base URL, a separate vision provider and reasoning effort are under *Advanced*. The settings open by themselves the first time the panel is used without a provider.
  • Findings from *Check against image* have a Fix these button that asks the assistant to propose the corrections.
  • Continue for answers cut off by the token limit: the rows that arrived complete are kept as a proposal, and one click applies them and asks the assistant for the rest. Text answers can be continued the same way.
  • The Assistant toolbar shows the tokens used by the conversation so far (sent → received).
  • OpenAI models talk through the Responses API: they now reason *and* propose changes in the same answer (before, reasoning had to be switched off for proposals), and their reasoning summary is shown while they work.
  • Editor rewritten around a native text field. Dead keys (ď, ť, ň, ó…), IME, dictation, paste from the context menu, autocorrect and screen readers now work in every row; the first keystrokes of an edit are never lost; the caret and selection are the browser's own.
  • Enter finishes the row and starts a new one (headings continue as Text); Shift+Enter is a line break inside the row. Escape leaves editing and reverts the row as an undo step (Ctrl+Z brings the text back). Choosing a row type moves straight into its content.
  • Keyboard shortcuts: Ctrl+0/1/2/3 (Text / Heading 1–3), Ctrl+M (Math), Ctrl+R (Raw Braille), Ctrl+Enter (page break), Insert (new row), Delete on selected rows, Ctrl+↑/↓ (move rows), Ctrl+N/O/S/Shift+S (new / open / save / save as), F1 (shortcut help), Ctrl+Space (symbol palette).
  • Symbol palette (Ctrl+Space): one searchable list of every symbol and Braille control, with recently used entries first. The Math tab opens it for Greek letters.
  • Unsaved changes: asterisk in the window title and on the Save button, Save writes to the opened file without a dialog (desktop), Save as…, and a confirmation before New/Open or closing the window.
  • Pages panel (F6): live thumbnails of the printed pages, exactly as the PDF export lays them out (same pagination and drawing code). Thumbnails fit the panel width, show dots, letters or both, follow the editor cursor, and a click jumps to the page's first row. A PDF button exports the Braille PDF without further options.
  • Choice of the ASCII Braille table (Properties → Print & emboss) for BRF files and embossers (Czech, CP1250 — default; North American ASCII). Print dialogs for Index Braille / LPT now take the ibPrint path, the printer name, and an optional embosser coding string, and remember them.
  • Untranslatable characters are shown red in the Braille column, and export or emboss warns about them (with row numbers) before continuing.
  • Properties panel (F4, right dock): document name and archetype (with a *Run* button that says what it does — *Transcribe with assistant*, *Run OCR*), book name, author and Braille translator (language) — now saved with the book, page size, orientation, margins and characters per line (whole book), the ASCII Braille table for BRF/embossers and the NC X-flip — everything that used to be spread over the Project, Page and Export ribbon tabs, now editable next to the document.
  • View ribbon tab: show/hide every side panel, layout presets (*Editing*, *Transcribing* = source image + assistant, *Proofing* = structure + pages) and reset, the Braille column, collapse the ribbon (Ctrl+F1 or double-click a tab), the keyboard shortcuts and the new Settings dialog (OCR engine, language and program path; assistant settings).
  • Home tab: Rows (insert above/below, delete row, move) and Type (Text, H1–H3, Math, and a grouped list of every other row type) groups, plus page break and symbol palette buttons. They act on the row being edited, or on the rows selected with the handle.
  • Print button (Ctrl+P) in the Book tab next to the exports.
  • A new empty document shows where to start: import scanned pages, add a source image, ask the assistant, keyboard shortcuts.
  • The Source and Assistant panels are open on the right on first run (the transcription layout); the Documents panel on the left.
  • Ribbon and panel buttons use one drawn icon set instead of emoji, so they look the same in the browser and in the desktop app.

Fixed

  • The Layout tab's row buttons were greyed out unless rows had been selected with the row handle; row operations now target the current row as well (also Ctrl+↑/↓).
  • After undoing a row type change, the Type column kept showing the old type.
  • Deleting rows from the ribbon left no row focused.
  • Czech Braille table rewritten from the standard (Protocol_IndexBraille.md, liblouis cs-g1): ř, ň, ú, ů, ď, ť, ó, ý, é and the punctuation . ? ( ) " + / ' were wrong or took two cells. New rules: dot 5 between a number and a following a–j letter (1a), number mode kept across a decimal comma/point, ⠰ for words in capitals. Slovak shares the table with its own differences (w, ŕ, ô, ľ, ĺ, ä, full stop, apostrophe, plus).
  • BRF files and embossing send ASCII Braille instead of Unicode cells, which embossers printed as ?. The Rust side no longer carries its own (broken, 63-entry) table.
  • Headings no longer get a ⠠⠠⠠ / ⠠⠠ / ⠠ prefix; the level is visual only.
  • Page numbers in footers had a doubled number sign.
  • Desktop app: the window could not be closed at all (the close request was blocked by a missing Tauri permission); the unsaved-changes question also appeared on a fresh start with nothing typed, and a row still being edited was lost without asking. The window title now shows the book name and the unsaved asterisk; pending autosave is written before the window closes.
  • Assistant proposals survive unrelated edits: a change to other rows no longer invalidates a pending proposal — only editing, moving or deleting a row the proposal targets does, with a message saying which row. New documents proposed by the assistant can be undone with Ctrl+Z.
  • The reasoning-effort setting was never sent to the provider; OpenAI, Gemini and DeepSeek-style models now honour it.
  • Undo/Redo buttons did not update after applying an assistant proposal.
  • Documents created by the assistant can be undone from any document, not only from the one that was open when they were created.
  • Switching between documents no longer marks the book as modified.
  • Desktop scanning and OCR: scanned pages (~25 MB) and OCR input go through temporary files instead of the message channel, so scanning no longer stalls; Tesseract runs in page mode 3, which keeps paragraphs together and copes with a slightly skewed page.
  • With a chat model that cannot read images, a message from a document with a source image failed; the image is now left out (with a note) unless the action needs it.

Changed

  • The letters printed under the Braille cells in the PDF now come from the active Braille table instead of a fixed Czech list.
  • Page-end lines in the editor are computed by the real page layout (the same one the Pages panel and the PDF use) instead of screen row heights.
  • The ribbon has three permanent tabs — Home, Book, View — instead of ten. Home is editing (file, edit, rows, type, insert). Book is everything about the book: documents (new / sub-document / delete / import), processing the source (archetype, Run), export (what to export, Print, PDF, BRF, PEF, HTML, Emboss bundle) and embossers. The Project, Layout, Page and Export tabs are gone (page setup and print options live in the Properties panel). Contextual tabs (Math, Phonetics, Chemistry, Music, and the special module's own name) are listed — highlighted — while a row of that type is active and open automatically only when you start editing such a row; the ribbon returns to Home when the edit ends. Panel toggles live only in View. The ribbon has a fixed height; when it is wider than the window the button labels are hidden first (icons and tooltips stay), then it scrolls with a thin bar.
  • Unsaved changes are shown as a dot on the Save button (the button no longer changes width).
  • The NC X-flip option and the ASCII Braille table are remembered on the device.
  • Ctrl+P prints only the rows (no ribbon or panels).
  • Panel tab strips adapt to their width: long titles are shortened, then inactive tabs shrink to icons (the name stays in the tooltip), and a ▾ menu lists every panel on that side.
  • Clicking the row handle with Shift no longer selects text in the browser; the Braille column can be selected and copied.
0.1.02026-09-17

Added

  • Books with multiple documents: one .brn file holds a tree of exercises, edited in the Documents panel (add, rename, delete, move, sub-documents). Undo/redo is kept per document.
  • Export and embossing scope: whole book, current document or a picked set of documents.
  • Dockable side panels (left/right, tabs, resizing, keyboard access): Documents, Structure (heading outline of the current document), Source (scanned exercise: add, paste, drag & drop, rotate, zoom) and Assistant.
  • AI assistant with OpenAI, Google Gemini, DeepSeek and MiniMax providers: transcribes the scanned exercise into rows, checks the transcription against the scan, fixes typos and converts formulas to LaTeX. Every change is shown as a proposal and applied only on Apply (one undo step). API keys stay in the Windows Credential Manager.
  • Autosave in the browser database (IndexedDB) with per-document granularity; source images are stored once per book.
  • Windows x64 portable build and the online version at https://br.beil.cz/app/.