- —
Manual update check + settings polish. New Updates section in Settings → App: shows the installed version and a «Check for updates» button (handy to verify right away, without waiting for the silent check at startup; it also says «you're up to date», which the automatic check rightly stays quiet about). The «Reset tab» button now appears only in the AI and Editor tabs, and its confirmation no longer shows «PressWork» twice.
- —
Automatic update actually works now. The «new version available» popup never appeared in the entire 3.7.x series: in Tauri v2 the updater plugin is passive and the config's active/dialog keys (leftovers from Tauri v1) do nothing — nobody ever called the check. The app now checks for updates a few seconds after startup: if there's a new version it asks (Update / Later), downloads, installs and restarts; with no network it stays silent. Anyone on a 3.7.x install will need to download 4.0 manually (their binary doesn't check) — from here on updates arrive by themselves.
- —
FDX: no more unwanted metadata wizard. Selecting or exporting FDX automatically opened the export wizard (title/author/ISBN/cover), meant for ePub: for FDX it was useless, since the title-page metadata has its own «Final Draft options» panel. Now the wizard opens automatically only for ePub (where metadata is mandatory); it stays reachable for every format via the «Export with wizard» button.
- —
FDX: transitions and dual dialogue fixed. A transition ending with a period (FADE TO BLACK., DISSOLVE TO.) was mistaken for a character with a line, also inflating the breakdown count; it's now recognized as a Transition (an all-caps line ending with : or with . after a transition keyword). Also, the Fountain ^ marker for simultaneous dialogue ended up as line text (a lone ^): it's now removed and the two characters stay as consecutive normal Characters, the structure Final Draft uses to place lines side by side. Fountain syntax > to force a transition and >text< for centered text is also supported. Extensions (MARTA (V.O.), (O.S.), (CONT'D)) stay on the character line as Final Draft does, instead of being split into a parenthetical — and in the breakdown «MARTA (V.O.)» and «MARTA» count as the same person.
- —
FDX: real scene numbers. With «Number scenes» on, the number was pasted into the heading text (1. INT. BAR): opening in Final Draft, its automatic numbering doubled it (1 1. INT. BAR) and the numbers weren't editable as real scene numbers. They now travel in the element's Number=«N» attribute, the way Final Draft itself writes them: clean, editable numbering.
- —
Linux: compatible with not-so-recent distros too. The package was built on an Ubuntu 24.04 base and required too new a glibc: on Mint 21.x, Ubuntu 22.04 and similar it installed but didn't start (GLIBC_2.39 not found). The build is now made on an Ubuntu 22.04 base: it works on every distro from 2022 onward.
- —
Colored-stripe graphics on older GPUs. On old video cards (e.g. 2013 iMac) the header and the modules menu showed purple/red stripe artifacts: caused by backdrop-filter effects applied over already-opaque backgrounds (so invisible, but expensive). Removed: same look, no artifacts, and a bit more lightness for everyone.
- —
Plan choice no longer disappeared on small screens. Below 1400px wide the Free/Premium badge at the top was hidden — and with it the only access to changing plan. There's now an Interface plan section in Settings → App, always reachable (and the badge, where visible, stays clickable).
- —
Older Windows: internal communication allowed on old WebView2 too. Older runtime versions use http:// instead of https:// for the internal app↔backend channel, and the security policy blocked it, filling the console with errors: now both forms are allowed.
- —
Built-in local AI: more patient startup and cleaner messages. On slow machines or with a mechanical disk, loading the model could exceed the 60-second timeout: the first question stayed stuck on «warming up» until you cancelled and retried. The maximum startup time is now 3 minutes. Plus the chat no longer shows the technical URL 127.0.0.1:… when using the built-in AI: it simply says it's the app's local AI.
- —
Refined KDP menu. The export status changed color inconsistently (two update paths wrote different styles): it's now a uniform label, styled like the nearby buttons. The empty «ghost card» under the templates is gone (it was the message container, always visible even when empty), and the «5x8 Self-help» template is now called Personal growth 5x8.
- —
View menu: no more orphan button. The last menu item wrapped onto its own line because of a rigid grid: the row of actions now flows fluidly at any width.
- —
ICML export: front matter and duplicate title. The YAML block escaped cleanup if it wasn't the very first element of the file (blank line, BOM or a # title before the ---): the delimiters vanished but the keys (title:, author:…) ended up as a text paragraph in InDesign. Now the block is recognized even after the title, and a safety net discards any initial paragraph made only of known metadata keys anyway. The title also appeared twice (Title paragraph from the template + first heading in the body): now the first heading, when it's the source of the title, is shown only as Title.
- —
«Save as Template» that didn't respond. The button in the Data Hub ran everything but the save dialog never appeared: a safety CSS rule kept it hidden with !important and the open code didn't unlock it. While we were at it, the dialog was redesigned in the app's modal style and translated into 9 languages (it was Italian-only).
- —
Local AI that replied in Arabic. With any model, the local AI sometimes started in Arabic until you ordered it to switch language. Two causes on our side: language detection triggered on a single Arabic/Hebrew/Russian/Chinese character in the text (now it needs a meaningful presence) and the language instruction was a two-letter code that small models misread (now the language is named in full, with an explicit ban on using others).
- —
Windows: no more black window when the local AI starts. llama-server was launched without the flag that hides the console.
- —
The License panel no longer stays under Settings.
- —
Linux AppImage: exports work. A long-standing AppImage bug (present forever, never diagnosed): the environment the AppImage injects into child processes (bundled libraries and fonts instead of the system ones) silently killed Typst and the other export engines. The app now cleans the environment before launching external binaries. Plus the Typst binary is compiled in CI (upstream static builds crash on recent Linux kernels with high memory protections) and verified before being packaged.
- —
Simple mode: pro formats really disappear. In the export format menu, PDF/X, FDX, ICML and the other professional formats were «hidden» with a property that native Linux and macOS dropdowns ignore: they stayed visible and selectable. Now the entries are physically removed and restored when you return to Pro mode.
- —
Conversion to .pwk: images no longer vanish. Converting a .md into a PressWork document (or saving as .pwk, or promoting a branch to a document), images with a relative path stayed in the source folder and references broke: they're now copied into the bundle, preserving the folder structure.
- —
«Generate with Assets» truly portable. Images from disk weren't copied into the .assets folder (only web ones were saved) and references in the exported markdown stayed broken: now the folder contains every image and the file references them with correct relative paths. The editor preview also recognizes images with a trailing {width=…} attribute.
- —
Translated confirmation messages for batch exports. Export Multiple, Convert Folder, book-project export and find & replace showed the raw technical response ({«key»:…}) instead of the message in the app's language.
- —
«Advanced options» that closed the export panel. The «menus close when you pick an action» fix also treated the configuration buttons inside Import/Export as menu actions: clicking «Advanced options» (or the Excel profiles, the ICML template import…) made everything disappear. The panel now stays open and closes only with its own ×.
- —
Tables menu: removed the duplicate entry. «Import as template» did exactly the same thing as «Open Tables sheet» (with a misleading name): removed.
- —
Outline mode: chapter reordering. Drag & drop of chapters in the sidebar didn't work in the app (HTML5 drop intercepted by the system, as with Synopsis and text drag): rewritten with mouse events — anti-click threshold, visual indicator, working with the status filter too.
- —
Truthful writing stats. Tracking measured word deltas but never re-anchored the baseline: opening a larger document counted the difference as «words written today» (days with hundreds of thousands of words in the history), and restores/branches/collab syncs contaminated the counts. Now every document change or replacement re-anchors the baseline. The day is the local one (writing after midnight no longer lands on the previous day), value labels are readable in dark theme too, and the new 🗑 Reset button clears the contaminated history (with a prompt to export the CSV first).
- —
Daily goal that reset every morning. On date change the daily goal was cleared (type and target lost): now the target survives and the count restarts from the new day's document.
- —
Header menu that stayed open. Choosing an action from File & Project (or the other menus) didn't close the menu, which stayed on top of the panels just opened: now any action closes it (checkboxes and inner fields don't).
- —
PDF/PDF-X cover on Windows. The cover image path ended up in \includegraphics with Windows backslashes (C:\Users\…), which LaTeX reads as commands → export failed. The temp copy now uses a safe filename (pw_cover.png) and the path travels with forward slashes. Also fixed cover insertion into the document (KDP menu), which inserted nothing under CM6, and Editorial-panel buttons silenced by an over-aggressive guard.
- —
Automatic PDF/PDF-X targets: text with backslashes. Escaping of \letter sequences (regex \s, Windows paths \Users) happened only in the manual export path (frontend): bundle output targets and printing, which go through the backend only, failed with «Undefined control sequence». Escaping now lives in the shared Rust pipeline.
- —
PDF/PDF-X export with tables. A table without a caption made compilation fail with «No counter 'none' defined»: pandoc 3.5+ marks these tables with \LTcaptype{none} and longtable requires the counter to exist. Added \newcounter{none} to all LaTeX templates (PDF A4/A5/Letter and PDF/X-1a/X-4).
- —
LaTeX export: regex-like text or Windows paths (\s, \w, \Users) no longer break PDF/X generation. (Also shipped on 3.7.x.)
- —
Underline now renders correctly in the PDF.
- —
Selecting a full line/heading: the closing marker (**, </u>) stays on the right line, no longer wraps.
- —
Images in large documents: removed the limits that hid them.
- —
Windows: blob fallback when the asset protocol fails to load images.
- —
Import: Ghostscript fallback for PDF and a temp copy for DOCX on OneDrive.
- —
Import → save: after importing a PDF/DOCX the document is treated as new and unsaved: «Save» no longer writes over the source file, and the suggested name in the dialog is preselected.
- —
Collaboration: images between peers. Images never reached collaborators: the payloads exceeded the message limit of WebRTC data channels (and the WebSocket relay) and vanished without errors. They now travel as resized previews (max 1200px), split into 40KB parts sent at a controlled pace and reassembled on arrival — any size, on any transport. Peers who join an ongoing session receive the images via an automatic request.
- —
Collaboration: end of the «Accept version» spam. Every automatic checkpoint (~10s of writing) was broadcast to peers as a version to accept, flooding everyone with requests. Sharing is now intentional (📸 button in the chat dock) and «Accept» actually applies the content to the editor. Also silenced the «document changed externally» banner during sessions (it was the echo of remote-sync autosave).
- —
Collaboration: real presence. Anyone who closes the app or loses the network is now flagged within ~35 seconds (toast + «(offline?)» in the participant list); on return, a reconnection notice. Before, nothing was signaled.
- —
Collaboration: discoverable inline comments. The comment anchored to the editor line existed but was invisible (only Ctrl+Shift+M, never documented): new 💬📍 button in the chat dock.
- —
Collaboration: remote edits and Track Changes. With change tracking on, syncs coming from peers were interpreted as local edits to mark: now they're recognized and left intact. The «suggestions» flow works: the collaborator writes with Track Changes ON and the author accepts/rejects each marked change.
- —
macOS: visible image source. After inserting an image the source markdown stayed visible too: on WebKit the theme's -webkit-text-fill-color property beat the color: transparent hiding.
- —
[[wikilink]] autocomplete: fixed the error that fired on every keystroke.
- —
Correct ICML export for InDesign. Paragraphs were nested inside a <Content> instead of being direct siblings under <Story> (valid XML but the wrong ICML structure → InDesign could open empty or ignore styles). Now every paragraph is a <ParagraphStyleRange> direct child of <Story>; the content is also cleaned of YAML front matter and leftover \newpage commands.
- —
KDP «book format» template no longer deletes text without warning. Templates replace the editor: now, if there's already content, they ask for confirmation before overwriting it.
- —
KDP preflight: false alarms fixed.- ·Pure black: the check read the on-screen theme color (not the PDF). In export the body text is pure black (K100): no more false warning.
- ·Color profile: export already embeds FOGRA39 by default; the check now recognizes it.
- ·Spot color: «no spot color» is now reported as correct (KDP doesn't support spot colors in the interior), no longer as an action to take.