Collabora does not post messages when a file is renamed
so the frontend cannot reflect the change. Disabling
SupportsRename hides the rename option in the editor.
Setting WOPI_<CLIENT>_OPTIONS as a JSON env var to override
CheckFileInfo properties per client.
This is needed because Collabora does not send a
PostMessage on rename, so we disable SupportsRename
for it to hide the rename UI in the editor.
This feature could also be useful for any other uses as
as a open source feature.
Also cleans up leftover commented-out post_message_origin
code that was replaced by this approach.
Add client inside the WOPI discovery cache among the url.
It allows the possibility to grab the client name from the
CheckFileInfo in order to return customised parameters.
Especially needed for the renaming customization.
OnlyOffice sends a File_Rename PostMessage when a file
is renamed in the editor. We listen for it and propagate
the new name through the component tree so the preview
and explorer update without a full refresh.
Verify that copy link and redirect to parent folder
actions correctly emit posthog events. Introduce a
reusable posthog capture utility for e2e tests that
intercepts the config API and captures emitted events.
Track copy link and redirect to parent folder actions
in the share modal to measure sharing feature adoption.
Also tweak PostHog provider config for dev environment.
We want visibility on how users interact with items
(move, favorite, share access, invitations) to guide
product decisions. A posthog_capture utility centralizes
the settings guard and item metadata enrichment.
Cover background right-click (create menu) and item right-click
(action menu) with rename, delete and star flows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move item action menu items (share, rename, move, download, delete,
favorite) and their modals into a shared useItemActionMenuItems hook,
enabling reuse for the upcoming context menu feature.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move create folder/file menu items and modals into a shared
useCreateMenuItems hook, simplifying ExplorerTreeActions and
ExplorerTree by removing duplicated state and modal management.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Upgrade ui-kit to get ContextMenu and ContextMenuProvider components
needed for the right-click context menu feature.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
To not have to compute the download url, we decided to add a new
property url_permalink, this property will have the download action url
set in it when available.
The media url is subject to change if the file is renamed. If someone is
using it as a permalink, it will lose the ability to download the file.
We created a new download action, always returning a redirection to the
media url.
The new CSS and JS injection features needed documentation.
We merged the old theming doc into a broader customization
guide covering runtime CSS, JS injection, and footer config.
Verify that <link> and <script> tags are injected in the
DOM when FRONTEND_CSS_URL and FRONTEND_JS_URL config values
are set, and absent when they are not.
Allow runtime injection of custom CSS and JS assets via
environment variables. The config API endpoint exposes both
values so the frontend can use them to inject <link> and
<script> tags dynamically.
Ensures that when a user's session expires, they are
redirected to /401, can log back in, and are then sent
back to the page they were originally trying to access.
The OIDC_REDIRECT_ALLOWED_HOSTS setting expects host:port
values without the http:// scheme prefix. Including the
scheme caused redirect validation to fail silently.
The login button on the 401 page was redirecting back to /401
after authentication, causing an infinite redirect loop. We
now explicitly redirect to / so the home page can handle the
post-login navigation properly.
The redirect-after-login logic was inlined in the home page.
Extracting it into a dedicated hook improves reusability and
keeps the page component focused on rendering.
The external API resource server needs to create items
at root level (not only as children). We enable the
"create" action on the items endpoint so that external
clients can upload files to the root.
Add a "New" dropdown with options to create text documents,
spreadsheets and presentations from ODF templates. A modal
lets users name the file before creation. Also register ODF
mimetypes so icons display correctly for these file types.
Cover permission checks, valid/invalid extensions, missing title,
storage errors, duplicate title handling and correct mimetype
assignment for all three template types (odt, ods, odp).
Allow creating files from template (odt, ods, odp) through the
existing children/create endpoints. An optional `extension` field
on CreateItemSerializer triggers template-based file creation
instead of requiring a file upload. This avoids a separate
endpoint and keeps the API surface minimal.
When a file is created from a template, it has content from the start.
The PutFile operation needs to check the stored file size rather than
the request content length to correctly handle lock-free updates.
This ensures the empty file check works correctly for template-created
files.
When a tree node has no children, the expand arrow is absent.
Without this change, the test fails instead of silently
returning. The new failIfLeaf option lets callers choose
whether a leaf should throw. We had an issue with webkit that
was slower than the other navs failing to find the right arrow
after erasing all the starred items. The other navs should have
failed too on this, but were quicker to pick the right arrow
before it dissapears.
We verify that the useSyncUserLanguage hook correctly syncs
language in both directions: backend→frontend (user with a
language set gets the UI in that language) and
frontend→backend (new user with no language gets the browser
locale synced to the backend).
When the user already has a language set in the backend, we
now apply it to the browser on first load. This ensures the
frontend and WOPI editors use the same language as the one
stored in the user profile.
- Added new release notes for version 0.13.0, including updated titles
and descriptions for advanced sharing features.
- Removed outdated release notes for version 0.11.1.
- Updated the import structure to reflect the new versioning.
Replace static SVG image imports with the new React icon
components. The DefaultRouteData type now has a single
icon field instead of iconName/iconSrc/breadcrumbIconSrc.
This removes 11 SVG files that are no longer needed.
Each default route (recent, my files, shared with me,
starred, trash) gets a dedicated React component built
on the IconSvg base. Using currentColor for fill allows
icons to inherit the text color from their context.
The Icon.tsx file contained only the CheckIcon component.
We replace it with a generic IconSvg wrapper that handles
sizing via the ui-kit IconSize system. CheckIcon is moved
to its own file to keep a single responsibility per file.