Commit Graph
841 Commits
Author SHA1 Message Date
Nathan Vasse 5601f4368e ✨(frontend) add PDF viewer core components
Implements a full-featured PDF viewer with thumbnail
sidebar, zoom controls, page navigation and external
link interception. Includes polyfills for older browsers
and a fallback component for unsupported environments.
2026-03-30 10:54:34 +02:00
Nathan Vasse accbe04f78 ✨(frontend) add PDF viewer dependencies and build config
Adds react-pdf and react-virtualized for the PDF viewer
feature. The next.js config transpiles pdfjs-dist to
support Safari < 17.4 which lacks ES2023 static
initialization blocks.
2026-03-30 10:54:31 +02:00
Nathan Vasse 622fb813bc 🔧(backend) allow extra CSRF origins via env variable
When testing on local network devices (phones, tablets)
the Django CSRF check blocks requests from non-localhost
origins. This merges CSRF_TRUSTED_ORIGINS env var into
the default list.
2026-03-30 10:54:06 +02:00
Nathan Vasse d882744c00 🐛(frontend) fix React SVG attributes in AddFolderButton
React requires camelCase for SVG attributes. Using
fill-rule and clip-rule triggers warnings and may cause
rendering issues.
2026-03-30 10:53:20 +02:00
Nathan Vasse bf51755ff9 🔖(release) version sdk package
- 🏷️(sdk) update Item interface by adding url_permalink
2026-03-27 10:14:08 +01:00
Nathan Vasse 5b109e1e25 📝(sdk) update CONTRIBUTING.md
The old version was not really up to date with our current practices.
Let's update it.
2026-03-27 10:13:25 +01:00
jbpenrathandNathan Vasse 4d4a15876f 🏷️(sdk) update Item interface
A new property `url_permalink` has been added recently but the Item interface
in the sdk packages has not been updated accordingly.
2026-03-27 09:49:28 +01:00
neilcroft 54a293b6a5 🐛(backend) handle race condition on concurrent LinkTrace creation
Handle race condition where two concurrent retrieve requests pass the
exists() check and both attempt to create a LinkTrace for the same
user/item pair, violating the unique constraint.

Fixes #611
2026-03-23 14:40:09 +01:00
neilcroft c4188f8342 🐛(backend) fix hard delete of files created by other users
Allow folder owners/admins to hard delete files in their trashbin
even when the file was created by another user.

Fixes #604
2026-03-23 12:58:44 +01:00
Manuel Raynaud f09d6d15a9 ✨(backend) new action to duplicate a file item
A user with at leat editor role, connected can duplicate a file item
which has its upload_state ready. The duplicate_file task is used to do
the copy of the file on the storage.
2026-03-20 13:30:51 +01:00
Manuel Raynaud 238d6eb92e ✨(backend) add a task to duplicate a file
We plan to add an action to duplicate an item. We want to use a celery
task to make the copy using the s3 client. The task is retried 10 times
if failing and then the item is deleted if the copy fail after 10
retriees.
2026-03-20 13:30:51 +01:00
Manuel Raynaud b91c2d1777 🛂(backend) add duplicate in the item abilities
In order to add in next commit a duplicate action in the ItemViewset, we
add a `duplicate` entry in the item abilities. A user can duplicate a
file if he can update it.
2026-03-20 13:30:51 +01:00
Manuel Raynaud 1bb2c556fc 🔖(minor) bump release version 0.15.0
Added

- 🌐(frontend) update Dutch translation for create label
- ✨(frontend) add create folder and import file actions
- 🐛(frontend) add action menu to mobile breadcrumbs
- 🐛(frontend) app stabilization

Changed

- ⚡️(CI) optimize Docker Hub workflow
- ♻️(frontend) replace WorkspaceIcon with FolderIcon in breadcrumbs
- ✨(backend) exclude pending items from listing views
- ✨(frontend) scale upload progress to 90% before completion

Fixed

- 🐛(backend) allow inviting external person on item with no direct access
- 🐛(backend) stop storing numchild in database use annotation instead
- 🐛(backend) sanitize filename to be compatible with filesystems

Removed

- 🔥(backend) remove unused ServerToServerAuthentication backend
2026-03-16 11:58:34 +01:00
renovate[bot]andGitHub 33fc2de6ba ⬆️(dependencies) update PyJWT to v2.12.0 [SECURITY] 2026-03-14 01:24:57 +00:00
ChristopherSpeltandManuel Raynaud feb82b29e7 🌐(front) update Dutch translation for create label
Signed-off-by: ChristopherSpelt <christopherspelt@icloud.com>
2026-03-13 08:52:39 +01:00
Manuel Raynaud b84a640cc1 🔧(backend) allow uploading mindmap manager files
Allow the upload of file of type mindmap manager using the extension
.mmap
2026-03-12 18:03:42 +01:00
Nathan PanchoutandClaude Opus 4.6 1f83154777 🐛(front) fix whitespace in ExplorerTreeItem
Remove extra whitespace: double space before closing tag and
trailing blank line.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:23:45 +01:00
Nathan PanchoutandClaude Opus 4.6 791ddb3bfa ⚡️(front) keep previous data while refetching item
Add placeholderData to useItem query so the previous item data
remains visible during refetch, preventing flickering and layout
shifts when the query is revalidated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 d066f0ac1d ✨(front) use classic variant for RhfInput
Switch RhfInput to the classic variant with hidden label and
placeholder matching the label text, for a cleaner inline
appearance in forms.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 ef24e2b5c3 🐛(front) update right panel item on rename
When renaming an item, also update the right panel's forced item
if it's currently displaying the renamed item. This ensures the
panel title stays in sync after a rename without requiring a
manual refresh.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 dbd7715046 ✨(front) reorder action menu and fix folder favorite
Reorganize the context menu items for better UX: share and download
are now grouped first, followed by favorite, then rename/move, then
info, and finally delete. Also fix the favorite handler to only add
the item to the tree sidebar when it's a folder, preventing files
from incorrectly appearing in the favorites tree.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 716d971a9b 🐛(front) fix ItemIcon large size to 32px
Reduce the large icon size from 48px to 32px to better fit the
grid layout. Pass `size={IconSize.LARGE}` explicitly in
EmbeddedExplorerGridNameCell so the icon renders at the correct
size. Also fix trailing commas in ItemIcon.tsx.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 acb28e5734 ✨(front) add custom zoom icons for ImageViewer
Replace the material icons (zoom_in, zoom_out) with custom SVG icons
(ZoomPlusIcon, ZoomMinusIcon, ResetZoomIcon) for a more polished
image viewer toolbar. Also update IconSvg to support numeric size
prop, add button styles in ImageViewer.scss, and fix trailing commas
throughout the component.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 db5b0f3453 🐛(front) fix optional chaining on item properties
Add missing optional chaining operators to prevent runtime errors
when accessing `abilities.children_create` in AppExplorerBreadcrumbs
and `creator.id` in EmbeddedExplorerGridBreadcrumbs. These properties
can be undefined when the item data is not fully loaded yet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Nathan PanchoutandClaude Opus 4.6 356da2b4fa ⬆️(front) bump @gouvfr-lasuite/ui-kit to 0.19.10
Update the ui-kit dependency from 0.19.9 to 0.19.10 to get
the latest fixes and features from the design system.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:17:15 +01:00
Julien Maupetit 42e2a4bb1a 🔧(backend) update maximal line length to 100
We should be consistent between tools configuration (ruff and pylint).
2026-03-11 16:37:10 +01:00
Julien Maupetit 088665c1cd 🚨(backend) activate pyflakes ruff rules
Activate pyflakes rules:
https://docs.astral.sh/ruff/rules/#pyflakes-f
2026-03-11 16:37:10 +01:00
Hadrien BlancandNathan Vasse 5e472506a6 📝(doc) fix various typos
Fix various typos in documentation and readme files.
2026-03-11 14:57:28 +01:00
Nathan Vasse 6b56553d89 ✅(backend) fix e2e search fixture for pending exclusion
File items created by the search fixture were left with
upload_state=PENDING (set automatically on first save),
so the new pending items exclusion filter hid them from
search results. Set upload_state to READY for file items.
2026-03-11 11:18:14 +01:00
Nathan Vasse 37a949caa2 🔧(backend) fix lint warning in external API test
Remove unnecessary f-string prefix where no variable
interpolation is used.
2026-03-11 11:18:14 +01:00
Nathan Vasse 79dc34c31d 🔧(helm) schedule cronjob for clean_pending_items
Run the cleanup command once a day to automatically
remove pending items that were never fully uploaded.
2026-03-11 11:18:14 +01:00
Nathan Vasse 0dde4d27bc ✨(backend) add management command to clean stale pending items
Pending items that were never fully uploaded remain invisible
but still occupy storage. This command deletes items stuck in
pending state beyond a configurable threshold (default 48h).
2026-03-11 11:18:13 +01:00
Nathan Vasse 9befeaad12 ✅(backend) adapt tests for pending items exclusion
Existing tests now set upload_state=READY on file items
so they remain visible after the pending exclusion filter.
New dedicated tests verify that pending items are excluded
from list, children, recents and search endpoints.
2026-03-10 16:37:28 +01:00
Nathan Vasse ffbba8bf5c ✨(backend) exclude pending items from listing views
Items with upload_state=PENDING are now filtered out from
list, children, recents and search endpoints. This avoids
showing files to other users before the upload is complete.
2026-03-10 16:37:28 +01:00
Nathan Vasse bb28499ab1 ✨(frontend) scale upload progress to 90% before completion
The progress handler was skipping 100% entirely, leaving
the indicator stuck before the upload-ended call. Instead,
we now scale the 0-100 range to 0-90 so the user sees
smooth progression while the final 10% is reserved for
the upload-ended endpoint confirmation.
2026-03-10 15:30:05 +01:00
renovate[bot]andGitHub 21bdaaaa38 ⬆️(dependencies) update python dependencies 2026-03-09 00:41:20 +00:00
Manuel Raynaud d924b47887 🐛(backend) sanitize filename to be compatible with filesystems
Filename were used as it, provided by the user. We want to force
sanitization on them to ensure they will be always compatible with
filesystems.
2026-03-05 16:25:45 +01:00
Manuel Raynaud c445215e91 ⬆️(backend) upgrade joserfc to version 1.6.3
Upgrade joserfc to version 1.6.3 in order to fic the
CVE-2026-27932
2026-03-05 14:27:51 +01:00
Manuel Raynaud d406bf5f47 ⬆️(upgrade django to version 5.2.12
Upgrade django to version 5.2.12 in order to fix the
CVE-2026-25673
2026-03-05 14:22:22 +01:00
Manuel Raynaud 725bf12564 🐛(backend) stop storing numchild in database use annotation instead
In the item model the properties numchild and numchild_folder must be
maintain by doing a +/- 1 operation in several actions. Maintaining is
error prone, hard to catch and can have lot of root cause we can't
identified. We choose to use annotation instead and to compute the value
when needed.
2026-03-05 14:16:22 +01:00
Nathan Panchout 7f5136c332 ✨(front) enhance AppExplorer and breadcrumbs
- Added a new `NewFolderIcon` component for creating folders.
- Updated `AppExplorerBreadcrumbs` to replace `WorkspaceIcon` with
`FolderIcon`.
- Introduced an `ItemActionDropdown` to manage item actions, including
folder creation.
- Improved layout in `AppExplorer.scss` by adding `justify-content:
space-between` for better alignment.
2026-03-03 15:28:32 +01:00
Manuel Raynaud bd44d4aab8 🐛(backend) allow inviting external person on item with no direct access
When a user with priviledged role on an item but inherited he can not
invite external person. We refacto the invitation viewset, serializer
and permission to check roles against all the tree.
2026-03-03 14:46:54 +01:00
Manuel Raynaud a19d70cb4e 🔥(backend) remove unused ServerToServerAuthentication backend
The backend ServerToServerAuthentication is not used in the application
and will not be used. We decided to remove it.
2026-03-03 14:18:21 +01:00
Manuel Raynaud e688fd130e 🔧(helm) add missing default probes configuration
For the backend probes, some default value are missing. We need to add
the periodSeconds, timeoutSeconds and the failureThreshold
2026-02-27 08:33:50 +01:00
Manuel Raynaud add66377a9 🔖(minor) bump release version 0.14.0
Added

- 👷(docker) add arm64 platform support for image builds
- ✨(global) add create file from template feature
- ✨(global) add FRONTEND_CSS_URL and FRONTEND_JS_URL settings
- ✨(backend) add a download action returning the media url
- ✨(frontend) add right click feature
- ✨(backend) allow customization of wopi parameters
- ✨(backend) expose DATA_UPLOAD_MAX_MEMORY_SIZE in the config endpoint
- ✨(frontend) stop upload if file higher than DATA_UPLOAD_MAX_MEMORY_SIZE
- ✨(backend) reject uploaded file higher than DATA_UPLOAD_MAX_MEMORY_SIZE

Changed

- ✨(backend) allow root item creation on the external API by default
- ♻️(backend) set item read only in the mirror item admin detail

Fixed

- ✨(frontend) sync backend user language to browser on load
- 🐛(backend) fix WOPI PutFile to check stored file size
- 🐛(frontend) fix 401 page infinite redirect loop after login
- 🐛(backend) fix OIDC redirect allowed hosts format in dev config
- 🐛(global) update ui when renaming file from wopi editor
- 🐛(frontend) fix clipboard copy-paste in WOPI editor iframe
2026-02-25 15:47:55 +01:00
Nathan Vasse 4f805e7c99 ✅(frontend) improve wopi e2e test clarity and stability
Rename the test to describe the actual scenario (clipboard).
Force-click the leaflet layer to avoid flaky interception
issues with the Collabora overlay.
2026-02-25 11:37:00 +01:00
Nathan Vasse a42e1a39c4 🔧(frontend) standardize playwright snapshot paths and viewport
Remove platform suffix from snapshot file names by setting a
custom snapshotPathTemplate. This makes snapshots portable
across CI and local environments. Also lock the default
viewport to 1280x720 for consistent visual comparisons.
2026-02-25 11:37:00 +01:00
Nathan Vasse 1b69ef334c ✅(frontend) add wopi editor e2e test
Verify that a docx file opens in the Collabora editor,
the canvas renders correctly via visual regression, and
clipboard copy-paste works within the iframe. The iframe
clipboard policy now uses wildcards to allow cross-origin
clipboard access needed by Collabora.
2026-02-25 11:37:00 +01:00
Nathan Vasse 26c9eac0ac ♻️(frontend) extract shared e2e test utilities
Deduplicate file upload and clipboard permission logic
into reusable helpers. This avoids repeating the same
filechooser and grantPermissions boilerplate across
multiple test files.
2026-02-25 11:37:00 +01:00
Nathan Vasse c4977b8406 🐛(frontend) allow clipboard access in wopi editor iframe
The iframe permissions policy was blocking clipboard operations
in the WOPI editor, preventing users from using copy/paste.
2026-02-25 11:37:00 +01:00