Tesria

Editing together

A page is stored as a structured document, not as HTML: a list of blocks (paragraphs, headings, tables, panels), each with its text and settings. The editor, built on TipTap and ProseMirror, works on that same structure, so what is saved is exactly what was on screen.

  • One definition of every block. Which blocks exist, and what each may hold, is defined once, in the web app’s editor extensions. The editor, the collaboration service and the exports all use it, so a block cannot mean one thing in the editor and another in a PDF.

  • Every save is a new version. A version is never changed after it is written, which is what makes a page’s history trustworthy and lets any version be brought back.

  • Editing at the same time goes through the collab service, using Yjs, a library that merges changes from several people without conflicts. The app decides who may join: the editor asks it for a short-lived token for that one page, which the collaboration service checks before letting it in. The shared draft is kept in the database, so a restart loses nothing, and choosing Update still saves an ordinary version.

  • Changes from scripts and assistants arrive while people may be editing. They are saved as a version like any other, and anyone with the page open sees them highlighted, to accept or reject. See Changes from assistants and the API.


Applies to

Tesria 0.6 and later

Updated

September 24, 2026

Changes

Revised.