Skip to content

Releases: opencloud-eu/opencloud

9.0.0

Choose a tag to compare

@openclouders openclouders released this 27 Oct 14:24
b8d51b2

Caution

Action required: Follow the upgrade instructions before upgrading to this release.

Important

This is a rolling release. Learn here about the release types and lifecycle.

🌍 Guest access: share with anyone by email

Share files and folders with people who have no account on your OpenCloud. Enter their email address in the share dialog, pick a role, done. The guest gets an email with a link and starts working right away.

Guest access is built for external collaboration where you must know who accessed what.

  • Passwordless: no account to set up, no password to forget or reset. The guest proves who they are by receiving the email.
  • Identified: every guest access is logged with the email address. A public link cannot tell you who used it, a guest is always a known person.
  • Same roles as internal users: from viewer to editor, on files and folders.

How it works:

  • Personal links: every link is single-use and valid for 30 minutes. A used or expired link stops working, the guest requests a new one and gets it instantly.
  • Sessions: a guest session lasts 24 hours. 15 minutes before it ends, the web client warns the guest, who renews it with a PIN sent by email.
  • Expiry: like any share, guest access can have an expiry date. After that date, no new links are issued.
  • Admin settings: session lifetime, link and PIN lifetime and rate limits for renewals are configurable.

Sharing options compared

Public link Guest access Full account
Best for One-time sending or collecting files from anyone Ongoing work with a named external partner Daily work of your own team
Needs password No (optional) No Yes
Authentication factor One link for all Personal, single-use links in the guest's inbox Password / MFA
Who is identified Nobody The guest's email address The user, via the directory
Expiration None (optional) Link 30 min, session 24 h, renewable by email None
Restrictions Web only, no desktop or mobile sync Web only, no desktop or mobile sync None
Personal data needed None Email address only Profile data in the directory

Why guest access and not public links
A public link is anonymous. Anyone who holds it has access, and nobody can say who that is. A guest is a known person, identified by their email address. Sharers and admins see who has access, can revoke it and can show it in an audit.

🔎 Tags in search

Search now covers tags: a search term matches tag names as well as file names and content, and tags are a filter in the search results, next to the other filters.

  • Filter by tag: the filter lists all your tags, so you can show only files tagged "Private" or "Work".
  • Search for a tag: typing a tag name finds files with that tag, even if file name and content do not match.

The matching tag is shown below each result, so you see why a file was found.

📂 Folders first, for every sort order

Folders stay at the top of the file list when you sort by name, size or modified date, in both directions. A new option "Folders first" lets you turn this off and sort files and folders together. It is on by default, so nothing changes unless you switch it off.

🔄 Live updates for shares

When someone shares a folder with you, it appears in "Shared with me" right away, without a reload. Revoked shares disappear the same way. This also works for guests.

🔍 Search results show the match

When you open a file from the search results, the matching text is now shown in the middle of the preview, so it does not scroll out of view. The details view shows why the file was found, either the matching text or the tag.

🖼️ Redesigned App Store

  • Grid or list: switch between both views, like in the Files app.
  • Official badge: apps maintained by OpenCloud are marked, so you see at a glance which apps are supported.
  • Tags and filter: apps have tags, for example "File Actions", and you can filter by them.
  • Download button: now prominent in the app details.

✅ Apps show version compatibility

Find out at a glance why an app stopped working after an update.

  • Version range: each app can declare a minimum and a maximum OpenCloud version.
  • Admin overview: the compatible range is shown next to each installed app.
  • Mismatch warning: if an app does not match your OpenCloud version, its status turns red and a short hint explains the likely cause.

🖼️ Preview support for HEIC, HEIF and AVIF

Preview HEIC, HEIF and AVIF images directly in the web client. Requires additional configuration.

📐 Apollon: UML diagrams

Apollon is a new app for UML and modeling diagrams. It supports 13 diagram types, including class, component, activity and BPMN.

  • Create: choose "UML Diagram" from the "New" menu.
  • Edit together: diagrams sync in real time, and you see the cursors of the other people in the diagram.

↔️ Full right-to-left support

For languages read from right to left, such as Arabic and Hebrew, the whole interface is now mirrored. Previously only parts were, for example the settings but not the spaces view.

✉️ New email design

Notification emails have a new look based on the OpenCloud Design System.

  • Layout: OpenCloud logo, a heading and a button that opens the shared item, space or link.
  • Dark mode: logo and colors follow the mode of mail clients that support it.
  • Guest links: the PIN is shown in a highlighted box.
  • Daily and weekly summaries: events appear as a timeline with their time and a link to each shared item or space. Times are in UTC, because OpenCloud does not know the time zone of the recipient.
  • Compatibility: the templates reach 94 percent in an HTML email client check, well above the usual result for HTML emails.

Plain-text emails and all existing translations stay the same.

Custom templates: the HTML email now consists of layout.html.tmpl, message.html.tmpl and digest.html.tmpl in templates/html/. Existing custom template folders that only contain email.html.tmpl keep working as before. See the notifications service README for the new template values.

🚢 OpenCloud runs on OpenShift

The Helm chart supports OpenShift, based on customer feedback, and the setup is documented. The chart test suite simulates an OpenShift cluster and checks its security restrictions on every run, for allowed and for rejected workloads.

🧪 146 bug fixes from more testing

Before every rolling release, we run upgrade tests, exploratory tests and the existing API and UI tests. AI-supported exploratory testing found many issues nobody had reported. The latest web release contains 146 bug fixes, most of them found this way.

9.0.0 - 2026-10-27

❤️ Thanks to all contributors! ❤️

@aduffeck, @AlexAndBear, @BloomyInDev, @butonic, @dragonchaser, @dschmidt, @eriktews, @fredrikblau, @fschade, @jay23606, @JammingBen, @junkerderprovinz, @kulmann, @LetsDrinkSomeTea, @maki5, @micbar, @NickWalters, @pbleser-oc, @rhafer, @saw-jan, @Svanvith, @tammi-23, @tbsbdr, @v-scharf, @VicDeo

Opencloud:

💥 Breaking changes

  • Push based thumbnailer architecture [#3397]
  • feat(guestlinks)!: auth-guest service [#3609]

🐛 Bug Fixes

  • Skip extraction for directories before checking the size limit [#3832]
  • log errors when a personal space is deleted [#3710]
  • fix(cli): detect storage driver from storage path in revisions and trash commands [#3776]
  • fix(idp): show keyboard focus on every control [#3732]
  • fix: show the lilac logo on the login page [#3773]
  • fix(frontend): report content search only when full-text search is enabled [#3760]
  • fix: allow guests to list role definitions [#3729]
  • fix: nats checks were missing the configured auth [#3724]
  • fix(collaboration): answer a wopi lock in a read-only session with 200 instead of locking [#3711]
  • fix(collaboration): show the secure view watermark only for view-only tokens [#3712]
  • fix: add restart command output [#3706]

📈 Enhancement

  • feat: new mail notifications based on design system [[#3789](https://github.com//pull/37...
Read more

8.1.0

Choose a tag to compare

@openclouders openclouders released this 05 Oct 17:40
8e51430

Important

This is a rolling release. Learn here about the release types and lifecycle.

8.1.0 - 2026-10-05

Highlights

🎨 Excalidraw: draw together on a whiteboard

OpenCloud gets a collaborative whiteboard. The Excalidraw app started as a proof of concept and now ships as a web extension.

  • Create and open: create a new whiteboard file from the "New" menu and open it like any other file.
  • Draw together: share the file, and everyone in the session sees every stroke instantly.
  • Follow a collaborator: click their avatar to follow their cursor across the canvas.
  • Same backend as the editor: syncing runs through the OpenCloud Yjs service introduced in 8.0.0.

🚀 Web UI loads 40% faster

First content appears 40% sooner (1.5 s → 0.9 s), the full page 35% sooner (2.0 s → 1.3 s). The Lighthouse score goes from 85 to 96. Nothing was removed, the web UI just loads less, and later.

  • Fonts: only the weights we use, split by Unicode range. The preloaded Latin subset is 7x smaller (337.5 KB → 48.5 KB). Other scripts such as Cyrillic or Greek load on demand.
  • Translations: only the selected language is loaded, for German 12x less (419 KB → 34 KB). English needs no download.
  • Chunking: smaller JavaScript chunks that load in parallel or later.

🏗️ Create a space in one step

The "New space" dialog has an Options button, just like the public link dialog:

  • Customization: image or emoji, subtitle, description, header.
  • Advanced options: quota and members.

If you don't open the options, the dialog stays as simple as before.

📝 Editor

  • Table of contents: for Markdown and .ocnote. It follows your scroll position, jumps to a heading on click and updates live.
  • Markdown copy & paste: pasted Markdown is rendered. Copied content carries both HTML and Markdown, so GitHub issues and other plain text targets get the Markdown source. Community reported.
  • External changes: if a file is changed on the server while it is open, for example by a desktop client sync, all participants get a conflict notification right away. You can "Save as" or reload.
  • Code blocks with syntax highlighting: insert a code block from the "Turn into" menu or with /. The language is detected automatically, or you pick it from the list. Tab inserts spaces, and pressing Enter three times leaves the block. Screen readers announce the shortcut. The YAML frontmatter uses the same highlighting.
  • Mobile: a slider picks the table size on mobile.

🧭 Consistent web UI

  • Right sidebar: one look across the Files app and the admin settings.
  • Activities and versions: a calmer timeline that fits many more versions on one screen. Community feedback.
  • Tiles: a larger click area for selecting a tile.
  • Sorting: folders always stay above files, in both directions.
  • Spaces: appearance settings are grouped under "Customize" in the context menu.
  • Account pages: two-column layout.
  • Vaults: the breadcrumb shows the vault icon in every subfolder.

👥 Admin settings

  • Search: by user name and email, not only by first and last name.
  • Users: the quota shows used space. User and group edit panels are redesigned, and "Login allowed" is a toggle.

❤️ Thanks to all contributors! ❤️

@NickWalters, @aduffeck, @butonic, @dschmidt, @fschade, @maki5, @micbar, @pascalwengerter, @pbleser-oc, @rhafer, @saw-jan, @schweigisito, @v-scharf, @zerox80, @AlexAndBear, @JammingBen, @flimmy, @fredrikblau, @kulmann, @tammi-23, @pReya

Opencloud

🔒 Security

  • feat(proxy): add optional OIDC access token audience validation [#3466]

🐛 Bug Fixes

  • Reindex disabled spaces once they get enabled again [#3579]
  • fix(search): tika key fixes [#3651]
  • fix(search): keep trashed and live folders at the same path apart [#3602]
  • Fix/uploads cli no async consumer [#3603]
  • Remove the timeout when reindexing spaces [#3543]
  • fix(shares): not auto accepting shares created by guest users [#3533]
  • fix(graph): fix PatchMe method to prevent password change [#3526]

📈 Enhancement

  • feat: add new editor roles [#3637]
  • feat(collaboration): let admins disable wopi extensions [#3633]
  • fix(collaboration): send LastModifiedTime and the EuroOffice file size [#3636]
  • feat(collaboration): mobile web view for EuroOffice [#3635]
  • fix(collaboration): harden wopi token handling [#3630]
  • add posixfs index command [#3068]
  • feat(proxy): add per-service metrics to the proxy service [#3521]

✅ Tests

  • fix(search): ellipsize parity matrix labels by runes, not bytes [#3643]
  • fix(collaboration): mint the mobile view test token with the token manager secret [#3647]
  • run cli tests with decomposed nightly [#3580]
  • [decomposed] test(api): remove passing notification tests from expected failure [#3555]
  • api-test: add CLI test for reindexing all spaces including disabled [#3560]

📚 Documentation

  • [SKIP CI] fix: add file_read documentation to audit log docu [#3503]

Web

🐛 Bug Fixes

  • fix(web-pkg): paste text/plain in plain text editor to keep markdown syntax [#3526]
  • fix(web-pkg): embed pasted images in rich text editors [#3527]
  • fix(design-system): don't break icons if process is not defined [#3525]
  • fix(web-pkg): show resource table columns if any resource has the field [#3512]
  • fix: load indirect shares in editors [#3313]
  • fix: make current breadcrumb item clickable on mobile [#3476]
  • fix(yjs): let the server grant stale recovery to one client [#3433]
  • fix: reload favorites and shares when clicking the current breadcrumb or shares tab [#3477]
  • fix: select only the clicked space when opening admin space details [#3487]
  • fix: show space quota progress bar background in sidebar [#3491]
  • fix: move rename action below download in context menu [#3485]
  • fix: use full width search inputs on mobile screens [#3474]
  • fix: respect file extension setting and validate file name in save as dialog [#3468]
  • fix: shift-click multi select in favorites, shares and trash views [#3472]
  • fix: prevent truncated resource names from overflowing into adjacent elements [#3469]
  • fix: hide announcement banner in embed mode [#3467]
  • fix(files): apply the picked member role when creating a space [#3459]
  • ci: fix error when trying to delete nonexisting cache [#3455]
  • fix: keep editor drops inside the create space modal's focus trap [#3450]
  • Lock an encrypted space when it gets disabled [#3408]
  • Remove the vault unlock actions and hide the lock action for disabled spaces [#3404]
  • Show the action title in mobile text editor toolbar drops [#3399]
  • fix: keep editor open when saving fails on close [#3396]
  • Fix nested mobile drops in overflow menus [#3392]
  • fix(web-pkg): keep full folder names when file extensions are hidden [#3369]

📈 Enhancement

  • perf: lazy load translations [#3522]
  • feat(admin-settings): search users by user name and email as well [#3517]
  • refactor(admin-settings): show avatars and space images in the name column [#3516]
  • feat(admin-settings): use the web-pkg spaces store, add the customize menu and space images [#3501]
  • perf: subset an...
Read more

8.0.1

Choose a tag to compare

@openclouders openclouders released this 16 Sep 13:47
c7b175c

Note

This is a rolling release. Learn here about the release types and lifecycle.

Release Notes OpenCloud 8.0.1

🚨 Coming from 7.x, after you upgrade, you must do this:

tl;dr version

  • Run docker compose exec opencloud opencloud search index --all-spaces --force-rescan --insecure (Upgrade details )

One command, once. That's the whole migration path from 7.x to 8.0.1.

You could make use of the new announcement banner by informing your end users about the search reindexing.

❤️ Thanks to all contributors! ❤️

@aduffeck

🐛 Bug Fixes

  • Remove the timeout when reindexing spaces [#3543]

8.0.0

Choose a tag to compare

@openclouders openclouders released this 15 Sep 12:26
75e6366

Important

This is a rolling release. Learn here about the release types and lifecycle.

8.0.0 - 2026-09-15

🚨 After you upgrade, you must do this:

tl;dr version

  • Run docker compose exec opencloud opencloud search index --all-spaces --force-rescan --insecure (Upgrade details )

One command, once. That's the whole migration path from 7.x to 8.0.0.

You could make use of the new announcement banner by informing your end users about the search reindexing.

It is worth it! This release fixes more than 50 search bugs and makes Bleve and OpenSearch return the same results for the same query. Path search, upper and lower case in paths and tokenization of Chinese content all work now. A new parity test suite with over 300 test cases runs every KQL query against both backends and compares the results. On top of that, a community fix cuts Bleve memory usage for around 100,000 files from 1.1 GB to about 120 MB. The default search engine now scales much further.

Highlights

📝 Real-time collaborative editing in the Editor

Several people can now edit the same Markdown or .ocnote file at the same time. Everyone sees every keystroke immediately, without locking and without waiting for a save.

  • Participant list: avatars of all participants are shown in the top right, together with a "Collaboration ready" status. Click the avatars to see who joined.
  • Mentions: type @ to mention someone. Only people who actually have access to the document can be mentioned. The mentioned user gets a notification and can jump straight into the document from it. A new config setting chooses between mail and in-app notification.
  • Read-only access: read-only users join the session and follow the changes live. They get no toolbar.
  • Supported formats: Markdown files and the .ocnote note format.

How it works: the editor uses YJS with CRDTs. The clients sync the document among each other, the server does not merge anything. There is no WOPI and no locking involved, which is a completely different mechanism than the Collabora integration.

A new OpenCloud YJS service handles authentication and makes sure the right user identities are shared in a room. It runs a Hocuspocus server that acts as a pure relay: it stores no content, persists nothing, and holds no data. Clients connect over websockets.

Deployment:

  • Default in compose: the YJS service is published alongside OpenCloud and becomes the default in opencloud-compose after the rolling release. Collaborative editing is then on by default.
  • Optional: you can deploy without it. In that case the editor behaves as before and there is no collaboration.
  • Scaling: websockets need sticky sessions. Multiple instances can be synced over Redis or NATS. Both were tested.

Known limitations:

  • Source mode: not available while collaboration is active. Switching into a plain textarea and back cannot be merged into the shared document.
  • Vaults: no collaboration inside end-to-end encrypted spaces and folders.
  • Public links: no collaboration. The public link session has no access token to authenticate against the YJS service, so a recipient only sees the last state that came from the server. With write access they can save, which produces a conflicted copy against the running session and triggers the conflict dialog.
  • Autosave: runs locally in every participant's browser every two minutes when the editor is dirty, so an active session creates a lot of versions. Leader election is already in place, restricting autosave to the elected leader is planned.
  • Concurrent saves: if two clients save in the same moment, the server decides the order. The second client can receive a conflict response. No data is lost and the file on disk is correct, but one peer may see a failed save.
  • Permission changes: losing write permission during a running session is only noticed on reload. This matches the behavior of WOPI based editing.

🔍 Search: one behavior across Bleve and OpenSearch

OpenCloud ships Bleve by default and offers OpenSearch for larger installations. The two had drifted apart and returned different results for the same query. This release fixes more than 50 search bugs, independent of the backend.

  • Parity test suite: KQL queries are defined without naming a backend, then run against both Bleve and OpenSearch, and the results are compared. Over 300 test cases, more than 90 percent of the previously duplicated per-backend tests were replaced, 200 test cases are new.
  • Parity report: checked into the search package and doubles as documentation of what the search can actually do.
  • Fixed, partly customer reported: path search, upper and lower case in paths, and tokenization problems with Chinese content.

Bleve memory usage drops massively thanks to a community fix. For around 100,000 files it goes from 1.1 GB to about 120 MB. This matters because an out-of-memory Bleve kills the process, and in the Docker setup NATS runs in the same container, where a failed write can corrupt data. The default search engine now scales much further.

📷 Motion photo support

The web client plays motion photos, the short frame sequences almost every modern phone records around a picture.

  • Tile view: a play icon in the top right marks a motion photo and doubles as play/pause control. On hover the motion photo loops.
  • Preview app: the motion photo plays once when opening, then the still image remains. A "Play motion photo" button restarts the loop.

This also introduced the building blocks for further preview work on other file types.

⚡ Faster scrolling in large file lists

Follow-up to the initial loading work from a previous sprint, this time on scrolling and lazy loading. Triggered by a community bug report about slow scrolling in large folders in Safari.

  • Thumbnail size: thumbnails were requested far too large, around 1000x1000 px for a small tile. That is fixed.
  • Scrolling: in a folder with 1000 photos, tiles and previews now keep up with fast scrolling. White areas appear for a fraction of a second instead of blocking the view. Chrome, Chromium and Firefox show the intended shimmer placeholder while loading.
  • Preview app: benefits as well, less noticeably than the file list.

🔗 Redesigned public link and file drop pages

The plain layout, the page people outside your instance see first, was reworked.

  • Public link password page: cleaner card with an icon in the top left corner, a small lock icon, more spacing, and the button moved into the card with a stronger color. Password protection is the default for public links, so this is the most visible page of the set.
  • Access denied page: uses the same layout.
  • Secret file drop: the link type where the recipient can only upload and sees no content got a dotted drop area, a clearer layout, more explanatory text, and a better success message after upload.

fix: YAML frontmatter

Markdown files with a frontmatter block lost that block on save. The --- delimiters were rendered as horizontal rules and the metadata as normal content. Frontmatter is now shown as its own editable node at the top of the document with YAML syntax highlighting, both for existing files and for newly written blocks. No more data loss.

Print action

The editor can now print. The content is written into a new window with print CSS and the system print dialog opens, which also gives you "Save as PDF". Two things to know: this is operating system functionality, not a PDF export by the application, so the file lands on your local disk and not in OpenCloud, and some styling such as the frontmatter syntax highlighting is lost.

Toolbar overflow

The editor toolbar is wide, especially for .ocnote. In narrow windows it scrolled horizontally, and on some devices that scrolling did not work at all, which made actions unreachable. A "More actions" button now moves everything that does not fit into an overflow menu.

Syntax Highlighting

  • Supported Languages (37 Grammars):
    ⁠apache⁠, ⁠bash⁠, ⁠c⁠, ⁠cpp⁠, ⁠csharp⁠, ⁠css⁠, ⁠diff⁠, ⁠go⁠, ⁠graphql⁠, ⁠ini⁠, ⁠java⁠, ⁠javascript⁠, ⁠json⁠, ⁠kotlin⁠, ⁠less⁠, ⁠lua⁠, ⁠makefile⁠, ⁠markdown⁠, ⁠objectivec⁠, ⁠perl⁠, ⁠php⁠, ⁠php-template⁠, ⁠plaintext⁠, ⁠python⁠, ⁠python-repl⁠, ⁠r⁠, ⁠ruby⁠, ⁠rust⁠, ⁠scss⁠, ⁠shell⁠, ⁠sql⁠, ⁠swift⁠, ⁠typescript⁠, ⁠vbnet⁠, ⁠wasm⁠, ⁠xml⁠, ⁠yaml⁠.
    Triggers: Markdown fences (e.g., ⁠```python⁠ or ⁠~~~js⁠).
    Fallback: Defaults to ⁠plaintext⁠ when no language identifier is specified.

📊 Prometheus metrics for the Graph API

The Graph API had no metrics at all. It now exports Prometheus metrics:

  • HTTP requests: incoming requests with path and status code, so error rates, requests per second and concurrent requests are visible.
  • LDAP calls: which outgoing operations run and how long they take.
  • Nodes and latencies: number of Graph API nodes serving HTTP or processing events, plus latencies.

Everything is exported as histograms, so p50, p95 and p99, spread and buckets are available in Grafana, live or over a time window. Grafana alerts can be defined on top of it, for example errors per second, too many concurrent requests, or requests that are too slow.

The Helm chart already ships a Grafana suite with dashboards and about 10 alerts. The new metrics close the biggest blind spot there, LDAP in particular. Which of them become default dashboards in the chart is being decided. The Graph API is the pattern, other services will follow.

🎨 Theming through the ...

Read more

7.5.0

Choose a tag to compare

@openclouders openclouders released this 25 Aug 13:56
cd90958

Important

This is a rolling release. Learn here about the release types and lifecycle.

Release Notes OpenCloud 7.5.0

🔐 E2EE - End to end encrypted vaults for folders and spaces

You can now create a vault, which is a single folder or a whole space where all files are encrypted. The encryption happens in your browser before the data reaches the server. File names are encrypted as well. The server never gets the key, so nobody with access to the server can read the content.

To create one, open "New", then "Folder", turn on the switch "end to end encrypt this folder" and set a passphrase. The folder gets a lock icon. When you open it you enter the passphrase once, and the vault stays unlocked for the current browser session. The passphrase is not stored anywhere.

Vaults are built on rclone crypt and are fully compatible with it. A folder that you encrypted locally with the rclone command line can be uploaded and opened in OpenCloud, and a vault that was synced to your computer can be mounted with rclone. Your data stays readable with a free standard tool, also without OpenCloud.

There are limits, because the server cannot read the files. Collabora and collaborative editing do not work inside a vault. Thumbnails are not shown in the file list, but you can still open images in the preview app. You cannot share single files out of a vault, only the vault itself. Encrypted spaces have no space image and no description yet.

There is no passphrase recovery. If you lose the passphrase, the content is lost. Please use a password manager.

📖 EPUB reader

The reader has a fullscreen mode, full text search inside the book, and search inside the table of contents. Search results are highlighted and take you to the right position. The table of contents now highlights the chapter you are reading. An EPUB has no fixed pages, because the number of pages changes with the font size, so you navigate with a position slider.

On small screens the content width now adapts to the screen. Before that the text stayed too wide and reading on a phone was not practical. When the arrows on the left and right are hidden, navigation stays available at the top, and the chapter list opens as a drawer from the bottom. You can read and search a book, a manual or a standard directly in OpenCloud on a phone, without a download and without installing an app.

Editor Improvements

📊 Tables in the editor

You can insert a table with the number of rows and columns that you need, instead of always starting with 3x3. When the cursor is inside a table, a small menu appears at the table. It lets you add a row above or below, add a column left or right, delete the current row or column, and delete the whole table. You can also switch the header row on and off. If you deleted the header row before, the only way back was to edit the raw file by hand. Documents with tables can now be finished in OpenCloud without opening another program.

🖇️ Insert an image from your cloud

"Insert image" has a third option next to "from file" and "from URL": you can pick an image that is already in your OpenCloud. You no longer have to download an image and upload it again to use it in a document.

🔍 Find and replace

The editor has find and replace. There are options for match case and whole words.

📝 New rich text format .ocnote

Markdown has no syntax for text color, background color, line spacing, subscript and superscript, so these buttons cannot be offered for a .md file. OpenCloud now has its own rich text format with the extension .ocnote, which supports them. The editor also got subscript and superscript, which is enough for footnote marks, units and simple formulas.

An .ocnote file is a normal text based json-file in your own storage. It syncs, you can share it, and search finds it, like any other file. You can write a short formatted text or a note without starting a big office application first. .ocnote follows the tiptap json format.

▶️ Media controls in the preview app

The playback controls were reworked. The actions are grouped by function now and separated visually, so it is easier to see what belongs together.

🖌️ SVG files in the preview app

SVG files are now displayed in the preview app. They are loaded in the browser and go through a sanitizer first, so script code inside an SVG cannot run. Two limits: SVG files do not show up in the photo roll, and unusual SVG files, for example files with an embedded bitmap, may not render.

⭐ Filters in the favorites view

The favorites view now filters like in the search results page. You can filter by type, for example folders or documents, and by last modified, for example last 7 days or last year.

🎨 Smaller space header

The space header with image, name and description uses less height, so more files are visible without scrolling. You can still expand it, and long descriptions are still fully readable with "show more".

🗂️ More file type icons

There are icons for more file types now, including .drawio, .ifc, .odg, .oform and .root.

--

OpenCloud 7.5.0 - 2026-08-25

❤️ Thanks to all contributors! ❤️

@AlexAndBear, @JammingBen, @Svanvith, @aduffeck, @butonic, @fschade, @junkerderprovinz, @kulmann, @maki5, @pbleser-oc, @rhafer, @saw-jan, @schweigisito, @v-scharf

✅ Tests

  • test(api): update php test dependencies [#3335]
  • fix(acceptance): fix running acceptance tests against host on Linux [#3358]
  • fix(graph): adding the same user as multiple members in a group (#3354) [#3356]
  • test(api): fix share role update test scenario [#3322]
  • test: add api tests for cross-space search index mutation [#3320]
  • ci: run search acceptance tests against OpenSearch in nightly [#3302]
  • api-test: notification settings and getting email notifications [#3281]
  • api-test: add posixfs scan and consistency CLI tests [#3263]
  • api-test: replace sleeps with WaitHelper poll for async state [#3239]

📈 Enhancement

  • feat(thumbnails): extend list of default resolutions [#3386]
  • ability to disable grpc and/or event consumer for event history service [#3279]
  • feat(graph): add LibreGraphContentType on drive [#3355]
  • feat: update space template image [#3324]
  • feat(web): add rclone-crypt to default apps [#3313]
  • enhance: send events for adding/removing favourite items [#3229]
  • allow tuning the proxies http client [#3278]
  • feat(web): add yjsServerUrl config [#3259]
  • feat(posixfs): #3182 add basepath option in the "posixfs scan" command [#3235]

🐛 Bug Fixes

  • fix(search): refresh the opensearch index after a write [#3388]
  • fix(thumbnails): respect the requested height in libvips builds [#3377]
  • refactor datagateway into proxy middleware [#3289]
  • Only log a debug message when an item is still in processing state [#3158]
  • fix(postprocessing): retry publishing events instead of killing the server [#3347]
  • actually log error on exit [#3344]
  • fix(activitylog): log missing parent id cache entry at debug level [#3325]
  • fix restore file version for shared resource [#3268]
  • Fix missing favorite flag on opensearch hits [#3252]

📚 Documentation

  • docs: clarify custom role bootstrap behavior [#3366]

Web 7.4.0

📈 Enhancement

  • enhance code block language picker [#3214]
  • perf: preview cache optimizations [#3194]
  • perf: decode thumbnails asynchronously [#3204]
  • feat: add accessibility hint for code block exit [#3209]
  • feat(epub-reader): improve chapter resolution and progress slider UX [#3201]
  • Tip tap code block tab indetation [#3208]
  • feat(editor): add lowlight code blocks [#3199]
  • feat: add notebook assets [#3200]
  • perf: drop queued previews leaving the viewport [#3198]
  • perf: dynamic tile preview dimensions [[#3192](https://github.com/op...
Read more

7.2.4

Choose a tag to compare

@openclouders openclouders released this 21 Aug 05:45
1770793

Important

This is a production release. Learn here about the release types and lifecycle.

7.2.4 - 2026-08-21

❤️ Thanks to all contributors! ❤️

@AlexAndBear, @aduffeck, @fschade, @rhafer, @v-scharf

Opencloud:

🐛 Bug Fixes

  • [stable-7.2] fix(search): fix open-search kql field compilation [#3375]
  • [stable-7.2] fix(search): ack every event the index service handles [#3374]
  • [stable-7.2] fix(postprocessing): retry publishing events [#3370]
  • [stable-7.2] Only log a debug message when an item is still in processing state [#3369]
  • [stable-7.2] backport fixes for the opencloud posixfs command [#3367]
  • [stable-7.2] Expose upload status and message [#3365]
  • Fix opensearch space scope [stable-7.2] [#3351]
  • [stable-7.2] fix(posixfs scan): Setup logger for scan command [#3195]

✅ Tests

  • [stable-7.2] api-tests against open-search in stable [#3353]

Reva

🐛 Bug Fixes

  • [stable-2.46] Add a helper which checks if a resource is still being processed [#783]
  • [stable-2.46] Set proper upload status if an upload ends at antivirus [#780]
  • [stable-2.46] Do not disregard disabled spaces when propagating changes [#771]
  • [stable-2.46] Add database name to kv log output [#752]
  • [stable-2.46] Extend upload sessions to hold more explicit state information [#772]
  • [stable-2.46] Fix Metadata locking and Reading for decomposedfs and align defaults with OpenCloud [#744]
  • [stable-2.46] Sync uploads incrementally to avoid fsync freezes [#743]

Web

🐛 Bug Fixes

  • fix(text-editor): update editor content when loaded via recovery [#3081]
  • [stable-7.1] fix: encode hash character in app route URLs to prevent truncation (#3075) [#3080]

✅ Tests

  • split keycloak test [#2897]

7.2.3

Choose a tag to compare

@openclouders openclouders released this 06 Aug 13:24
a17a70c

Important

This is a production release. Learn here about the release types and lifecycle.

Release Notes OpenCloud 7.2.3

7.2.3 - 2026-08-06

❤️ Thanks to all contributors! ❤️

@aduffeck, @v-scharf

🐛 Bug Fixes

  • Fix missing favorite flag on opensearch hits [#3256]

7.4.0

Choose a tag to compare

@openclouders openclouders released this 03 Aug 18:45
d695d28

Important

This is a rolling release. Learn here about the release types and lifecycle.

Release Notes OpenCloud 7.4.0

📢 Global Announcement Banner

Display a runtime-managed announcement banner across the entire application with rich Markdown details. Admins can create, preview, enable, or disable announcements directly from General Settings, while the backend keeps everything centrally managed and instantly reflected across all users.

Image

Opencloud

7.4.0 - 2026-08-03

❤️ Thanks to all contributors! ❤️

@AlexAndBear, @JammingBen, @aduffeck, @dschmidt, @fschade, @michaelstingl, @pbleser-oc, @rhafer, @schweigisito, @v-scharf, @Svanvith, @cheneyveron, @kost, @tammi-23, @tbsbdr

📈 Enhancement

  • Do not check ignored paths [#3233]
  • Extend posixfs consistency check [#3220]
  • Improve reindex command [#3213]
  • Reindex spaces concurrently [#3207]
  • feat: add announcement banner [#3189]
  • feat: add space viewer with versions role [#2961]

🐛 Bug Fixes

  • fix(runtime): log service startup errors instead of printing them beside the log [#3140]
  • fix(posixfs scan): Setup logger for scan command [#3185]

✅ Tests

  • api-test: mark group last-manager removal scenario as flaky [#3194]
  • rerun flaky tests [#3183]
  • api-test: fix removeAccessToDrive.feature:145 [#3179]
  • api-test: cover additional unified roles in acceptance tests [#3169]
  • test(apiAuthApp): fix flaky token pattern [#3163]
  • test(apiArchiver): the single-resource archive is named after the resource [#3080]
  • test(coreApiWebdavUploadTUS): assert etag and permissions on the finalizing TUS chunk [#3078]
  • test(coreApiWebdavOperations): download a file with a literal "%" via its oc:downloadURL [#3079]

📚 Documentation

  • maint: clean-up auth-app documentation [#3155]
  • ci: sync tests/README.md to docs [#3164]

Reva

📈 Enhancement

  • Add a helper which checks if a resource is still being processed [#742]
  • enhancement: Add database name to kv log output [#748]

🐛 Bug Fixes

  • Do not disregard disabled spaces when propagating changes [#751]
  • fix(metadata/hybrid): Avoid resurrecting space root directory [#739]

Web

🐛 Bug Fixes

  • Fix pagination and items-per-page behavior in Spaces and Trash overview [#3007]
  • fix: loading trash bin overview with lots of spaces [#2986]
  • fix: use Inter as the default font [#2988]
  • fix: reset custom props not defined by the active theme [#2972]
  • fix: retry silent token renewal before logout on auth error [#2951]
  • fix: loading user avatars won't get cancelled when changing route [#2962]
  • fix: resolve hardcoded absolute image paths under a subpath deployment [#2956]
  • fix(pdf-viewer): harden rendering of PDFs [#2933]
  • fix(tiptap): prevent images from stretching while increasing size [#2927]
  • fix: batch action labels with limited screen size [#2931]
  • fix: admin settings icon color in dark mode [#2911]
  • fix: topbar left extension point placement [#2901]
  • fix: bring back space image submenu grouping [#2880]
  • fix: app top bar resource name colors [#2886]
  • fix: add space after password label when copying [#2881]
  • Vault status indicator icon [#2873]
  • fix (vault): cancel button width [#2872]

📈 Enhancement

  • feat: rework public and permanent link resolving [#2981]
  • feat (tiptap): plus menu [#2973]
  • feat: add empty extensions state icon [#2991]
  • feat: add announcement banner [#2967]
  • perf: use pagination in sidebar user lists [#2965]
  • feat: tiptap - Insert and edit Links [#2930]
  • feat: expose the active theme as html[data-theme] [#2971]
  • perf: improve user and groups list loading in admin-settings [#2963]
  • perf: improve render times with lots of paginated items [#2958]
  • feat (tiptap): move blocks [#2950]
  • perf: improve folder loading times in tiles view [#2945]
  • perf: improve file selection in table view [#2940]
  • perf: improve file selection in tiles view [#2939]
  • feat(tiptap): add Tiptap toolbar support [#2793]
  • feat(tiptap): add image drag and drop [#2926]
  • feat(tiptap): add image resizing [#2924]
  • feat(tiptap): add zoom feature [#2922]
  • feat(tiptap): add emoji menu [#2923]
  • feat(admin-settings): enable name sorting for extension overview [#2907]
  • feat(admin-settings): extension overview [#2889]
  • feat(extension-sdk): inject package.json metadata into manifest.json [#2894]
  • feat: Support registration for submenus on context menu for plugins [#2830]

📚 Documentation

  • ci: sync e2e/README.md to docs [#2938]
  • docs(e2e): add README how to run e2e tests [#2884]

✅ Tests

  • e2e-fix: a11y flaky in webkit [#2913]
  • add settings for e2e tests in vscode [#2870]

7.3.0

Choose a tag to compare

@openclouders openclouders released this 14 Jul 16:54
85e63ca

Note

This is a rolling release. Learn here about the release types and lifecycle.

Release Notes OpenCloud 7.3.0

🎨 A Calmer, More Focused Web Interface

The design refinement makes the interface feel more open and puts the focus on your content. The surrounding background now matches the sidebar (Material Design surface color), the "New" button is far more prominent with a subtle gradient, and there's a brand-new set of custom-designed file type icons.

📝 Editor Improvements (Markdown & Rich Text)

The editor gains several improvements: the block menu ("Turn into") now supports paragraphs, blockquotes and code blocks; text alignment is available for rich-text content; the color pickers now preview the actual color; and a new source view lets you edit the raw content directly.

✏️ Cleaner Editing / Viewing Experience

The top app bar got a fresh layout that prioritizes your essential info so you can focus entirely on your work. We also removed its border, giving the whole header a much lighter, more open feel.

✅ Grouped Batch Actions & Deselect

When you select multiple files, the available actions are now grouped together in a single bar at the top of the view — and a new Deselect button lets you clear your selection in one click.

💬 Mentions in Documents

Mention colleagues directly inside a document just like you're used to from other office suites. Mentioned people receive an in-app notification and an email pointing them to the document. Mentions resolve against the members of the space (including via groups), so you only ever notify people who already have access.

❤️ Thanks to all contributors! ❤️

@aduffeck, @AlexAndBear, @butonic, @cheneyveron, @dragonchaser, @dschmidt, @flash7777, @fschade, @JammingBen, @kulmann, @micbar, @michaelstingl, @openclouders, @pbleser-oc, @rhafer, @saw-jan, @schweigisito, @stonith404, @tammi-23, @tbsbdr, @tralph3, @v-scharf

Opencloud

🐛 Bug Fixes

  • fix(proxy): honor access token cache ttl [#3056]
  • chore(idp): update axios [#3094]
  • fix: make the collaboration service events optional [#3001]
  • Revert "fix: disallow thumbnails for tiff and jpeg2000 images" [#2973]
  • bump reva [#2950]
  • change error level for trashing items interaction with search [#2951]
  • fix: Send SSE events for SpaceEnabled/Disabled to affected users [#2871]

📚 Documentation

  • update collaboration readme [#3076]
  • fix: fix typo in proxy service documentation [#3089]
  • roling release template [#2972]
  • enhance: fix typos in webfinger service description [#2958]

✅ Tests

  • [full-ci] gherkin steps refactoring. cleaning code [#3100]
  • [decomposed] more cli command tests [#3087]
  • test(apiSpaces): a space admin can delete a space with no manager [#3040]
  • Update tests for opencloud-eu/reva#655 [#2889]
  • api-test: deleting space [#2970]

📈 Enhancement

  • feat: add disableSponsorLink web config option [#3093]
  • feat(graph): add MS Graph colon-syntax path lookup middleware [#2688]
  • feat: adjust theme chrome colors and logos [#2599]
  • add tls support for all nats connections [#2063]
  • feat: add more roles [#2928]
  • next to main [#2924]
  • feat: add core apps env variable to override the default core apps [#2930]

📦️ Dependencies

  • build(deps): bump golang.org/x/image from 0.43.0 to 0.44.0 [#3112]
  • build(deps): bump golang.org/x/text from 0.39.0 to 0.40.0 [#3101]
  • [full-ci] chore: bump web to v7.2.0 [#3121]
  • build(deps): bump golang.org/x/term from 0.44.0 to 0.45.0 [#3103]
  • build(deps): bump github.com/coreos/go-oidc/v3 from 3.19.0 to 3.20.0 [#3102]
  • build(deps): bump golang.org/x/text from 0.38.0 to 0.39.0 [#3085]
  • build(deps): bump github.com/go-chi/chi/v5 from 5.3.0 to 5.3.1 [#3073]
  • build(deps): bump github.com/nats-io/nats-server/v2 from 2.14.2 to 2.14.3 [#3063]
  • build(deps): bump github.com/gookit/config/v2 from 2.2.8 to 2.2.9 [#3075]
  • build(deps): bump github.com/open-policy-agent/opa from 1.18.1 to 1.18.2 [#3061]
  • build(deps): bump github.com/kovidgoyal/imaging from 1.8.21 to 1.8.22 [#3060]
  • build(deps): bump github.com/libregraph/lico from 0.66.0 to 0.67.0 [#3028]
  • chore: bump web to v7.2.0-beta.3 [#2953]
  • chore: bump reva to latest main [#2943]

Reva

🐛 Bug Fixes

  • Fix Metadata locking and Reading for decomposedfs and align defaults with OpenCloud [#722]
  • Fix warming up the id cache for the user storage [#727]
  • fix(decomposedfs): merge service account permissions with node grants [#723]
  • fix: retry xattr.List on ERANGE/E2BIG [#717]
  • fix: space delete unit test [#716]
  • fix: status codes on DeleteStorageSpace [#691]
  • Prevent access to internal files and folders [#681]
  • fix(tus): Upload checksum validation [#677]

📈 Enhancement

  • feat(tus): return etag and permissions after the last TUS chunk [#718]
  • Sync uploads incrementally to avoid fsync freezes [#720]
  • feat: add more roles [#671]

📚 Documentation

  • doc: Update docs related to how the changelog works [#708]

📦️ Dependencies

  • chore(deps): bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc from 0.68.0 to 0.69.0 [#736]
  • chore(deps): bump github.com/go-ldap/ldap/v3 from 3.4.12 to 3.4.13 [#733]
  • chore(deps): bump github.com/minio/minio-go/v7 from 7.1.0 to 7.2.1 [#734]
  • chore(deps): bump go.etcd.io/etcd/client/v3 from 3.6.11 to 3.6.13 [#732]
  • chore(deps): bump github.com/prometheus/alertmanager from 0.31.1 to 0.33.1 [#731]
  • chore(deps): bump golang.org/x/image from 0.38.0 to 0.41.0 in the go_modules group across 1 directory [#726]
  • chore(deps): bump google.golang.org/grpc from 1.81.1 to 1.82.0 [#724]
  • chore(deps): bump github.com/tus/tusd/v2 from 2.9.2 to 2.10.0 [#725]
  • chore(deps): bump github.com/go-chi/chi/v5 from 5.2.5 to 5.3.0 [#715]
  • chore(deps): bump github.com/nats-io/nats-server/v2 from 2.14.2 to 2.14.3 [#721]
  • chore(deps): bump github.com/rogpeppe/go-internal from 1.14.1 to 1.15.0 [#719]
  • chore(deps): bump github.com/nats-io/nats.go from 1.51.0 to 1.52.0 [#714]
  • chore(deps): bump github.com/segmentio/kafka-go from 0.4.50 to 0.4.51 [#706]
  • chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.42.1 [#704]
  • chore(deps): bump golang.org/x/text from 0.37.0 to 0.38.0 [#705]
  • chore(deps): bump github.com/rs/zerolog from 1.35.0 to 1.35.1 [#699]
  • chore(deps): bump github.com/ceph/go-ceph from 0.39.0 to 0.40.0 [[#689](https://github.com/opencloud-eu/reva/p...
Read more

7.2.2

Choose a tag to compare

@openclouders openclouders released this 14 Jul 08:26
31f01c6

Note

This is a production release. Learn here about the release types and lifecycle.

Release Notes OpenCloud 7.2.2

❤️ Thanks to all contributors! ❤️

@kulmann, @v-scharf

OpenCloud

📦️ Dependencies

  • [full-ci] chore: bump web to v7.1.4 [#3122]

Web

🐛 Bug Fixes

  • fix: add Firefox ESR to supported browser list [#2855]