TEI Publisher 11
Version 11 of TEI Publisher puts the focus on numerous bug fixes and workflow improvements across the entire suite of tools and applications. That said, several new features also made the cut.
Despite a major version bump, it can be smoothly updated from TP 10 with Jinks.
Notable Changes
- Search engine optimizations: due to the dynamic nature of TEI Publisher, not all search engine robots would properly index the content. TP 11 now pre-renders the main content fragment of each page on the server. Web components can cope with this and won't load the content twice (client-side hydration). In combination with the sitemap profile, all pages get unique titles and canonical URLs, which should overall result in better search engine rankings (read more).
- DTS 1.0: TP 11 regains support for the Distributed Text Services API, now in the released 1.0 version. This is a complete rewrite of the experimental DTS support available in earlier versions, fully compliant with the specification. See the DTS Demo blueprint for an example of how you can use DTS with TEI Publisher.
- JATS becomes a first class citizen. While TP 10 could already render JATS via ODD, the format is now also supported by the web based annotation editor as well as Jinntap.
- JinnTap got a major facelift, documentation, many bug fixes and general improvements. It now supports XML formats beyond TEI, namely JATS and Docbook.
- New modern theme: to demonstrate how to add your own theme, we created an additional design with a modern, more minimalistic look and feel. See the Serafin correspondence blueprint for a showcase combining the theme with cleaner typography, parchment backgrounds and nice color scheme.
- A set of skills and instructions is now included into every generated application. This helps coding agents like Claude, ChatGPT, Cursor and similar to properly understand the general workflow and – most important – observe best practice recommendations. The skills are mostly of the "don't do this stupid thing, look elsewhere instead" variety. They were extensively tested and should result in a much more pleasant and smoother conversation with your agent of choice – and fewer resources used (read more).
- Powerful command line: the
jinks-clicommand line tool has been extended and now provides all commands and switches to keep the file system copy of your application in sync with the database. Devs (and coding agents) love it (read more). - DOCX output mode:
tei-publisher-libgot a new output mode for generating DOCX files. While Word is obviously not a match for TEI in scholarly work, a DOCX export can be useful, e.g. for editors to do a content review or to pass it on to manual typesetting. - The web-based annotation editor received a lot of bug fixes based on user feedback from various real-world edition projects. Most importantly, a serious problem with disappearing annotations caused by refresh delays was solved.
- Default ODD:
teipublisher.oddwas extented and revised for cross-compatibility with Open Processing Model, and to provide better out-of-the-box experience forepubandweb. - Pre-rendering for faster content load: the Open Processing Model command-line tool can pre-render a static version of your content. TEI Publisher is ready to use it and only falls back to dynamic rendering if no static copy is found (read more).
- ODDity: a new extension for Visual Studio Code-based IDEs (Cursor, Antigravity, Windsurf, Kiro …), providing a graphical editor for ODDs – similar to the web-based editor in TEI Publisher.
Upgrading
Upgrades from TEI Publisher 10 should be smooth: just install the new jinks version via the dashboard. Update related packages first, i.e. tei-publisher-lib, roaster, jinks-templates, exist-jwt or installing jinks may fail.
Before upgrading your own apps, make sure you stored a copy locally (download the .xar if your app is not in git). Then select and update your app by clicking Apply and check if any conflicts are reported that you may need to address.
Note: the presentation of demo apps like Serafin may look weird, which is caused by the base ODDs having changed. Running the Fix ODDs action once should fix this.