Commit Graph
2094 Commits
Author SHA1 Message Date
Anthony LC 0bfc697476 🐛(frontend) remove comments from print
When we print a document, we want to hide
the comments and selection highlights. This is
done by adding some CSS rules to the print styles.
2026-05-19 22:04:44 +02:00
Anthony LC 48ba77b6d1 🔥(frontend) remove patch following upgrade of Cunningham
A patch about tabindex was added to the codebase
to fix an accessibility issue. However, after
upgrading Cunningham, the issue seems to have been
resolved and the patch is no longer necessary.
Therefore, we are removing the patch to keep
our code clean and maintainable.
2026-05-19 21:36:26 +02:00
Anthony LC 41f76ebde8 ⬆️(dependencies) upgrade Blocknote to 0.51.1
Upgrade Blocknote to 0.51.1 to get the latest
features and bug fixes.
2026-05-19 21:36:26 +02:00
Anthony LC 9cde092250 ⬇️(frontend) downgrade major release @hocuspocus
@hocuspocus made a major release, we need to do
a substantial refactor to be compatible with it.
This PR downgrades to the previous major release,
which is still compatible with our codebase,
until we have time to do the necessary refactor.
2026-05-19 17:01:44 +02:00
renovate[bot]andAnthony LC 18e9c3accb ⬆️(dependencies) update js dependencies 2026-05-19 17:01:44 +02:00
c9cf3b6550 (buildpack) add PaaS deployment support, tested with Scalingo
Replaces #1020

- fixes
https://github.com/suitenumerique/docs/pull/1020#discussion_r2314089799
by creating a `deploy/` directory, making room for a deploy/docker
directory later
- fixes
https://github.com/suitenumerique/docs/pull/1020#issuecomment-3886237213
by adding documentation in docs/installation
- in general, follow the same changes as we did in
https://github.com/suitenumerique/meet/pull/957

Tested successfuly on Scalingo

Co-authored-by: Sylvain Zimmer <sylvain@sylvainzimmer.com>
2026-05-19 10:08:20 +00:00
Maximilian BoschandGitHub 0f14981d5b 🐛(backend) fix inclusion of modules with uv_build
Same fix as https://github.com/suitenumerique/meet/pull/1199 for meet.

Signed-off-by: Maximilian Bosch <maximilian@mbosch.me>
2026-05-18 07:56:58 +00:00
Manuel Raynaud 59499a83f9 🔧(ci) keep node version 22
the node version was updated to version 24, we want to keep version 22.
2026-05-13 08:57:51 +02:00
Manuel Raynaud 5880493f01 🔧(ci) use uv in crowding jobs
We miss to migrate to uv in crowding jobs
2026-05-13 08:57:51 +02:00
renovate[bot]andManuel Raynaud 06eb49dd43 ⬆️(dependencies) Pin dependencies
use commit hash instead of tag.
2026-05-13 08:57:50 +02:00
Manuel Raynaud abd03d1ac0 🐛(docs) run migration 0027 without superuser role
The migration 00227 must be run with a postgres superuser, most af
managed postgresql database can not be run using this kind of user.
Ti fix this, we use postgresql unnacent function instead of accessing C
function.
2026-05-13 08:18:01 +02:00
Manuel Raynaud b3ac8b1e8c 🔧(postgres) create a user without superuser role
In development environment we wanto tu use the application with a
postgres user not having superuser role. The migration 0027 needs
superuser role to be executed, so we want to be able to test migrations
and other scenarios with a normal user. In order to create this user,
the compose service must be deleted first and then recreated with
DB_USER and DB_PASSWORD environment variable values different with
POSTGRES_USER and POSTGRES_PASSWORD
2026-05-13 08:18:00 +02:00
Mohamed El Amine BOUKERFAandManuel Raynaud 562ed0da3e (backend) delete accesses and invitations on move when scope changes
When a document is moved outside its current permission scope (root
document, cross-tree move, or promotion to root), its direct accesses
and pending invitations are now deleted server-side within the same
atomic transaction as the move itself. This ensures consistency: if
the move fails, deletions are rolled back.

Signed-off-by: Mohamed El Amine BOUKERFA <boukerfa.ma@gmail.com>
2026-05-12 15:56:59 +02:00
Mohamed El Amine BOUKERFAandManuel Raynaud 0a7aa58182 🔥(frontend) remove manual access deletion logic from move doc hook
Access and invitation cleanup on document move is now handled
atomically by the backend. The frontend no longer needs to fetch
and delete accesses/invitations after a successful move.

Signed-off-by: Mohamed El Amine BOUKERFA <boukerfa.ma@gmail.com>
2026-05-12 15:56:58 +02:00
Manuel Raynaud 1a82b379a9 🔧(ci) enable trivy step
We want to enable again the trivy step. This step can be enabled using
an action variable.
2026-05-12 14:48:01 +02:00
Manuel Raynaud c72336a785 ♻️(ci) use arm64 runner to build images for arm64 architecture
We have trouble build docker images for arm64 architecture when we use
QEMU emulation. We want to try building them using an arm64 native
runner.
2026-05-12 14:48:01 +02:00
Manuel RaynaudandGitHub 325284cc78 🔧(ci) ignore uv.lock in spell-mistakes job
In the spell-mistakes job we wanto to ignore the uv.lock file, the
content of this file can't be modified.
2026-05-12 12:47:15 +00:00
Anthony LC c52569448b (e2e) fix some flakiness
Strong flakiness started to appear.
This commit aims to fix some of them by improving
the stability of the tests and removing some
redundant checks.
2026-05-12 10:43:27 +02:00
renovate[bot]andGitHub 0501551abb ⬆️(dependencies) update next to v16.2.6 [SECURITY] 2026-05-11 21:33:48 +00:00
Gustavo TrottandGitHub cd75a17f45 🐛(backend) support creating subdoc from file
The children/ endpoint was missing file upload support that the root
documents endpoint already had. Added file-to-YJS conversion handling to
subdocument creation.
2026-05-11 18:02:03 +02:00
Manuel Raynaud db467407cf 🔖(minor) release 5.1.0
Added

- ️(frontend) add skeleton on content loading #2254
- ️(frontend) close websocket connection when user change tab #2264

Changed

- 🏗️(core) migrate from pip to uv

Fixed

- 🩺(project) reload app if front and back unsync #2276
- 🐛(frontend) fix patch and comments #2273
- 🐛(frontend) interlinking are exported correctly in print mode #2269
- 💬(frontend) add missing link in onboarding description #2233
- 🐛(frontend) sanitize pasted and dropped content in document title #2210
- 🐛(frontend) Emoji menu doesn't display above comment box #2229
- 🐛(frontend) Block menu doesn't stay open on 1st line #2229
- 🐛(frontend) The "+" on the first line of a new doc doesn't work #2229
- 🐛(backend) manage race condition between GET and PATCH content #2271
- 🐛(backend) replace document creation table locks with retry strategy #2274

Security

- 🔒️(frontend) sanitize color during collaboration #2270
v5.1.0
2026-05-11 15:57:02 +02:00
github-actions[bot]andManuel Raynaud 4d68f39623 🌐(i18n) update translated strings
update translated strings
2026-05-07 16:56:19 +02:00
Manuel RaynaudandGitHub fa3beca494 💚(docker) ignore .venv with compilemessages command
The compilemessages management command was also compiling messages for
all the libraries present in the .venv folder. We have to ignore it, on
arm64 this management command is taking too much time otherwise.
2026-05-07 14:21:38 +00:00
Anthony LC d340c8f1f1 🧐(frontend) dispatch the app version to posthog
We add the app version in Posthog events to be
able to track which versions are being used and
identify potential issues related to specific
versions.
2026-05-07 14:20:05 +02:00
Anthony LC 67773ef2d9 🩺(project) reload app if front and back unsync
We observe some cases where the frontend and
backend versions can get out of sync, which can
cause issues.
To mitigate this, we want to implement a mechanism
that detects when the frontend and backend
versions are mismatched and triggers a
reload of the application to ensure they are in sync.
2026-05-07 14:20:05 +02:00
Manuel Raynaud 1268bbe5ea 🔧(actions) migrate from pip to uv
Migreate usage of pip to uv in github actions. How python is setup is
also changed.
2026-05-07 13:09:43 +02:00
Manuel Raynaud 8fc13d75dc ♻️(backend) migrate from setuptool to uv_build as build backend
We already migrate from pip to uv to manage our dependencies. We can also
migrate the build backend from setuptool to uv_build.
In the pyproject file, the readme property has been removed, because
uv_build try to read it, but the readme is at the root of the project
and not copied into the Dockerfile instructions. This readme can be used
when the package is published on pypi but it is not the case for Docs.
2026-05-07 13:09:43 +02:00
Manuel Raynaud aea6fbef9b 🏗️(core) migrate from pip to uv
We want to remove the usage of pip in order to use uv as python package
manager.
2026-05-07 13:09:42 +02:00
Manuel Raynaud a47c35195d 🐛(backend) replace document creation table locks with retry strategy
We have situation where the number of locks in the database can increase
dangerously creating deadlock situation. To remove this situation we
decided to change the strategy to manage document creation concurrency.
We decided to use a retry strategy, trying to create the document
multiple times while a usable path is found. To avoid having an
inifinite loop, we use a max_attempts counter configurable using the
setting TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS
2026-05-07 11:52:48 +02:00
Manuel Raynaud 8f67b37d70 ♻️(backend) split core/utils.py module
We need to split the core/utils.py in multiple submodule created in
core/utils/*.py. We need to do this to avoir circular import between
this module and the models module.
2026-05-07 11:45:57 +02:00
Manuel RaynaudandGitHub 0b20d9f435 🐛(backend) manage race condition between GET and PATCH content
When a PATCH and a GET on the content endpoint are made at the same time
for different users a race condition can happen and the metadata
returned
by the S3 head_object can be outdated when the object is fetched leading
to an error raised because the Content-Length header does not match the
size of the response body. To avoid this, we no longer used head_object
followed bu get_object, we have to manage
everything in one call with the get_object. The get_object also accepts
as parameters an etag or last-modified header and will return a 304 if
the content has not changed, so we can use this to not return the entire
body if this one has not changed.
2026-05-07 09:43:20 +00:00
Anthony LC a166716a2f ️(frontend) close websocket connection when user change tab
When a user change to another tab, after a delay of "inactivity"
we disconnect the user from the collaboration server.
When the user come back we reconnect to the server
again. It will reduce the connection to the collaboration
server and reduce outburst during reconnection during
a ingress ngnix restart.
2026-05-06 16:19:40 +02:00
Manuel RaynaudandAnthony LC 6fe0221596 (backend) new settings COLLABORATION_WS_INACTIVITY_TIMEOUT
We want to configure the timeout, in second, a user is consider as
inactive. After this inactivity period we want to close the websocket
connection
2026-05-06 16:19:40 +02:00
Anthony LC bd662d72bf 🐛(frontend) fix loading comments transaction
When we load the comments we have to notify the
subscribers of the DocsThreadStore. This generates
a Yjs transaction that is currently treated as a
user-initiated content change that will trigger
a patch request when the doc will try to save.
We now update the transaction origin when we notify
the subscribers so that we can reliably identify
and ignore those transactions in the useSaveDoc
hook.
2026-05-06 15:55:47 +02:00
Anthony LC 3701fe5a45 🐛(frontend) interlinking are exported correctly in print mode
Interlinking are now exported correctly in print
mode. The interlinking was not a link in print
mode, but now it is.
2026-05-06 15:12:24 +02:00
Anthony LC 0f527a789a 🔒️(frontend) sanitize color during collaboration
To improve security we sanitize the color used
for collaboration presence to ensure it's a valid
hex color. If the color is not valid, we generate
a random color instead. This prevents potential
issues with invalid color values being used in the UI.
2026-05-05 15:21:16 +02:00
renovate[bot]andGitHub 85128c7b11 ⬆️(dependencies) update axios to v1.15.2 [SECURITY] 2026-05-05 12:25:22 +00:00
Anthony LC 5f700ed6c4 💬(frontend) add missing link in onboarding description
We added a missing link in the onboarding step
description to direct users to ready-made templates f
or common use cases. This enhancement aims to improve
the user experience by providing easy access to
resources that can help users get started quickly
and customize their workflow efficiently.
2026-05-05 13:23:19 +02:00
Anthony LC b0d9ed15c0 ️(frontend) add skeleton on content loading
Content is longer to load than other parts of the
editor because of the connection with websocket
to the collaboration server. To improve the user
experience, we add a skeleton on the content part
of the editor while the others parts are displayed.
2026-05-05 12:12:11 +02:00
Anthony LC d41e44dcd5 🐛(frontend) fix uikit dnd tree
The last version of UIKit has a bug that causes
the dnd tree to break. It is due to some
pointers event that are not properly handled.
We remove the pointer event in waiting for the
fix to be released.
2026-05-05 10:56:59 +02:00
Anthony LC 07e7b3feb6 🏷️(mail) adapt to mjml v5
We upgraded to mjml v5, which has some breaking changes.
By default the ubuntu font was loaded, with google
fonts, that is not GDPR compliant.
We switched to Inter, and uses fonts.bunny.net to
load the font, which is GDPR compliant.
2026-05-05 10:56:59 +02:00
Anthony LC aa71cfdfc0 ️(frontend) remove listener on hover with react-dropzone
React-dropzone was rerendering components on hover,
which was unnecessary. This commit removes the
rerendering by adapting its settings.
2026-05-05 10:53:39 +02:00
Anthony LC 7afa17a181 💄(frontend) adapt css to Blocknote v0.49
We updated Blocknote to v0.49, which includes
some breaking changes in the CSS. This commit adapts
our custom styles to the new version of Blocknote.
2026-05-05 10:53:39 +02:00
Anthony LC af2b381097 🐛(frontend) fix scroll table of content
The scroll of the table of content was calculated
on mount of the component, so when the editor height change,
the scroll of the table of content was not updated.
We added a observer to observe the height of the
editor and update the scroll of the table of
content when the height change.
2026-05-05 10:53:39 +02:00
Anthony LC 5015d42677 🏷️(frontend) adapt types to i18next v26
We updated i18next to v26, which includes some
breaking changes. This commit adapts our types
to the new version, ensuring compatibility and
proper type checking throughout our codebase.
2026-05-05 10:53:39 +02:00
Anthony LC 738ff90fc7 🏷️(frontend) adapt types to upgrade Cunningham and ui-kit
We upgraded Cunningham and ui-kit dependencies, which
introduced some breaking changes. This commit adapts
our code to these changes, ensuring compatibility
with the new versions of these libraries.
2026-05-05 10:53:38 +02:00
Anthony LC 0e8094c733 🏷️(frontend) adapt types to typescript v6
We updated typescript to v6, which includes some
breaking changes. This commit adapts our code to
be compatible with the new version of typescript.
2026-05-05 10:53:38 +02:00
renovate[bot]andAnthony LC 9231730bf0 ⬆️(dependencies) update js dependencies 2026-05-05 10:50:49 +02:00
Cyril 21100b986d 🐛(frontend) sanitize pasted and dropped content in document title
Prevent rich-text formatting when pasting or dropping into document title.
2026-05-04 16:14:39 +02:00
Manuel Raynaud eaddbd83d7 🔖(major) release 5.0.0
Added

- (backend) create a dedicated endpoint to update document content
- ️(backend) stream s3 file content with a dedicated endpoint
- (backend) allow to use new ai feature using mistral sdk

Changed

- ♻️(backend) rename documents content endpoint in `formatted-content` (BC)
- 🚸(frontend) show Crisp from the help menu #2222
- ️(frontend) structure correctly 5xx error alerts #2128
- ️(frontend) make doc search result labels uniquely identifiable #2212
- ⬆️(backend) upgrade docspec to v3.0.x and adapt converter API #2220
- (backend) make forward auth request uri header configurable #2241
- ️(frontend) fix sidebar resize handle for screen readers #2122

Fixed

- 🚸(frontend) redirect on current url tab after 401 #2197
- 🐛(frontend) abort check media status unmount #2194
- (backend) order pinned documents by last updated at #2028
- 🐛(frontend) fix app shallow reload #2231
- 🐛(frontend) fix interlinking modal clipping #2213
- 🛂(frontend) fix cannot manage member on small screen #2226
- 🐛(backend) load jwks url when OIDC_RS_PRIVATE_KEY_STR is set
- 🐛(backend) Prevent moving document to its own descendant or self #2208
- 🐛(backend) return 400 when restoring a non-deleted document #2225
2026-05-04 11:59:35 +02:00