Developer Blog

Keep track of the latest changes to the code! 

Export vector formats in background image to pdf

(related patch https://gerrit.libreoffice.org/c/core/+/201925) When exporting a document to pdf, if the document has inserted images in a vector format (svg or pdf itself) the file was embedded in the exported pdf for maximum quality. Now with this changes we’ve reused the code that embeds inserted images to also work with...

Ensure scrolling has smooth animation

Related issue: https://github.com/CollaboraOnline/online/issues/14257 In the browser we have limited control on how the rendering is scheduled. To be sure our code is not causing long hangs or jitter in the animation we should be smart about how we process incoming events and present them on the screen. In the past...

Add PDF export functionality back to the new Collabora Office

At some stage the possibility to export PDF documents from the new Collabora Office unintentionally went away. That was during the final frantic work before the initial release, when parts of the UI were radically improved, and thus it did not get fixed right away because things were a “moving...

Open Source in Action: Week #1 of Collabora Office Development

Collabora Office isn’t new — it’s been powering productive work for years. But this week marks something different: the development infrastructure now lives under its own roof. A new Gerrit instance, a migrated CI, a fresh renamed main branch, and a new Technical Committee making decisions in the open. The...

TDF ejects its core developers

Update: 2026-04-07 Update: 2026-04-11 Let’s kick the developers out! In the ongoing saga of The Document Foundation (TDF), their Membership Committee has decided to eject from membership all Collabora staff and partners. That includes over thirty people who have contributed faithfully to LibreOffice for many years. It is interesting to...

Start of automated testing of the new Collabora Office on Windows (CODA-W)

It is useful to check that basic functionality in CODA-W is not broken accidentally by commits to other parts of the code. We have lots of existing tests for COOL functionality in general that use Cypress. That technology is not usable for testing CODA, as its JavaScript part does not...

New MetricSpinButton implementation

A “metric” spinbutton is a spinbutton that has an associated unit: cm/inch, points and percentage are common units used. The previous implementation used the standard...

Log anonymization

One of the features of Collabora Online has been a way to ensure that log files (of reasonable verbosity) don’t include any personally identifying information....

Document Property based Fields MSO Behaviour

Basics: Office documents like ODF (odt, …) and OOXML (docx, …) can have so called Fields embedded in the text. Fields can automatically update the...

Keep Overriden Colors in the Slide Layouts

Related commit: pptx: export overrideClrMapping in slide layouts In presentations saved as PPTX file format there is a possibility to map some theme colors differently...

Fixing a layout bug in Writer

A problem was reported about Writer, and we investigated. In a document with a lot of content, on certain editing operations, an entire table would...

Highlighting in Document Comparison

I worked with Gokay on a new document compare view for COOL Writer. Part of that feature is to be able to highlight the matching...

Various Papercuts

These developments were made in February, 2026. Available in 26.04 only. Collabora Online can be built against musl libc musl libc is an alternative implementation...

Accordion bits in sidebar

Among a host of other accessibility enhancements, we have implemented the W3C Accordion Pattern for our expanders, as used in the sidebar and dialogs, where...

Pointer in range

Mostly for historical reasons, LibreOffice has its own `SvMemoryStream` class (for, you guessed it, writing in-memory streams). For quite a while now, code in the...

1800 timezone files !?

Collabora Online puts a lot of effort into containing your changes inside a new file-system jail per document. We use chroot or unprivileged user namespaces...