Skip to content

Bump the app version to 0.4.0 - #400

Merged
chadek merged 1 commit into
nextcloud:masterfrom
chadek:release/v0.4.0
Sep 16, 2026
Merged

chadek merged 1 commit into
nextcloud:masterfrom
chadek:release/v0.4.0

Conversation

@chadek

@chadek chadek commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

Moves appinfo/info.xml to 0.4.0, for the release that swaps the bundled document server from ONLYOFFICE DocumentServer to Euro-Office.

The version has to move for the two migrations added since v0.3.3 to run at all, and for the repair step that hands an install configured before #387 the format matrix a fresh one is seeded with — Nextcloud only replays either when the declared version increases.


Release notes for v0.4.0, everything merged since v0.3.3:

v0.4.0

Document server

  • bundle Euro-Office (v9.3.4-hotfix.1) instead of ONLYOFFICE DocumentServer; the Makefile resolves the release asset through the GitHub API, so make ds_repo=ONLYOFFICE/DocumentServer ds_version=v9.4.0 still builds the upstream tree
  • serve sdkjs/common/device_scale.js, which 404'd on every document open

Saving

Editing

  • the settings chosen in the ONLYOFFICE admin page take effect: format and default-opener choices are no longer reverted on the next page load, a fresh install is seeded from the format matrix the bundled server actually ships (29 editable formats where it seeded a stale 12), and an install configured before this is repaired on upgrade — closes Opening PDF fails: The "documentType" parameter for the config object is invalid. Please correct it. #331
  • the editor's Save button ("Keep intermediate versions when editing") works: forceSaveStart is answered with the two-part reply the editor accepts, throttled so a client cannot turn every keystroke into a converter run, refused to read-only sessions, and it snapshots rather than flushing
  • the editor's chat panel works — messages both ways, and a late joiner reads the backlog
  • a participant dropped to view mode (asc_coAuthoringDisconnect) no longer ends the document for everybody else — with the live-broadcast fix from v0.3.3, co-authoring now shows other people's typing for the whole session — closes No real coediting #302, closes onlyoffice co editing #288
  • a batch of changes that collides on change_index is retried instead of leaving the connection in a dead transaction, where every later query in the request failed with SAVEPOINT DOCTRINE_n does not exist
  • the memcache IPC backend no longer loses an in-flight message, which swallowed or reordered co-authoring broadcasts on instances with memcache.distributed set

Conversion and fonts

  • PDF export is no longer blank. font_selection.bin shipped an absolute path to every bundled font as it was on the machine that built the package; when one did not resolve, x2t wrote a PDF with no glyphs and exited 0, so nothing downstream could tell a blank conversion from a good one. The paths are pinned relative at build time now, the same way AllFonts.js already was — closes Major: PDFs exports are BLANK! #371, closes PDF prints are blank - Document Server cant print any fonts #251, closes Open pdf file blank or failed #287
  • a font rebuild that does not rebuild fails loudly: the old check accepted a stale AllFonts.js left over from the build, so a rebuild that wrote nothing reported success, and it never looked at font_selection.bin at all. It now verifies this run wrote both files, that the write succeeded, and that every pinned path resolves — and refuses up front, naming the file and the user, when it cannot write (the shape of Exception: sh: ../../tools/allfontsgen: not found #145 and Segmentation fault while rebuilding fonts #278)
  • x2t's stdout is scanned for Can't load fontfile and logged, rather than discarding the one stream that mentioned it
  • occ documentserver:fonts returned 1 on success and 0 on failure, so anything scripting it was told the opposite of what happened

Security

  • images imported through imgurls are fetched with Nextcloud's HTTP client instead of fopen(): file://, loopback, link-local and redirect-to-private are all refused (SSRF / local file read)
  • the document server package's sha256 is verified before it is unpacked, and the extracted tree is no longer chmod 777 — it holds the x2t binary the web server executes
  • a stored chat message is capped at the editor's own maximum, the close beacon is rate limited, and an api.js that was never rendered answers 404 instead of an empty 200

Internals

  • four database indexes that duplicate a wider one are dropped, and the change index's unique constraint is reordered so MAX(change_index) WHERE document_id = ? is a lookup rather than a scan — Potentially redundant indices #353
  • command handlers are resolved through the app container instead of the deprecated service locator
  • Change::$changeIndex is declared and populated — getChangeIndex() returned null from an int-typed method, plus a dynamic property deprecation on PHP 8.4
  • the memcache IPC miss counters expire
  • the browser test rig lives in the repository and runs in CI on pull requests and weekly

The whole rig suite is green on this branch — formats, smoke, flush-live, autosave, leave, twotab, coedit, coedit-xlsx, forcesave, chat, pdf — on Nextcloud 34 with ONLYOFFICE connector 10.1 and bundled Euro-Office 9.3.4. Each issue listed above has a comment on it with the test output that covers it.

Not fixed in this release, so the saving section above is not read as more than it is: #401 reports that on 0.3.4 a spreadsheet's file on disk can lag behind what the editor shows, and can even go backwards — an edit missing from one write reappearing in a later one. It is open and under investigation; the write path this release adds is what that report is against.

🤖 Generated with Claude Code

The bundled document server is Euro-Office rather than ONLYOFFICE
DocumentServer as of nextcloud#386, which is a change of what the app ships rather
than a fix to how it ships it, so the minor moves.

It also carries the two migrations added since v0.3.3 - Nextcloud only
replays those when the declared version increases - and the repair step
that hands an install configured before nextcloud#387 the format matrix a fresh one
is seeded with.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Fabrice Meyer <meyer.fabrice@gmx.fr>
@chadek

chadek commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator Author

Re-verified after rebasing onto 8fea4eb (#402), since pinning the font paths changes files the converter reads on every run — AllFonts.js is what spreadsheet change replay measures text with, so a mistake there would show up in coedit-xlsx rather than in pdf.

Full suite on Nextcloud 34, ONLYOFFICE connector 10.1, bundled Euro-Office 9.3.4:

   PASS  formats         56s
   PASS  smoke          212s
   PASS  flush-live     158s
   PASS  autosave       186s
   PASS  leave          287s
   PASS  twotab         272s
   PASS  coedit         199s
   PASS  coedit-xlsx    144s
   PASS  forcesave      219s
   PASS  chat           190s
   PASS  pdf              5s
   SUITE: all green

@chadek
chadek merged commit 1c55530 into nextcloud:master Sep 16, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment