Commit Graph
2064 Commits
Author SHA1 Message Date
Manuel Raynaud a05de21d14 📈(backend) capture an event when a document is imported
We want to capture an event when a file is imported. We add in the
properties the type of file imported and if it is in the
create-for-owner api call.
2026-06-01 17:41:56 +02:00
Manuel Raynaud d1476024a7 📈(backend) capture an event when a document is duplicated
We want to capture an event when a document is duplicated. The document
from where come from the duplication is added in the properties.
2026-06-01 17:41:56 +02:00
Manuel Raynaud f4139e3ab0 📈(backend) capture an event when a user logs in
We want to capture an event every time a user logs in.
2026-06-01 17:41:55 +02:00
Manuel Raynaud d495b158c1 📈(backend) capture an event when a document is created and deleted
When a document is created and deleted, we capture an event and we send
it to posthog.
2026-06-01 17:41:55 +02:00
Manuel Raynaud 5eb9c4edd6 📈(backend) create a utils to capture event with posthog
We want to capture event with posthog. We created a utils for this
reposible to send the event or not if posthog is configured.
2026-06-01 17:41:55 +02:00
Manuel Raynaud e6a7657c89 ♻️(frontend) split posthog conf and how sdl is initialized
Reflect the changes made about posthog by the backend application. The
posthog config is split in POSTHOG_KEY and POSTHOG_HOST properties.
2026-06-01 17:12:11 +02:00
Manuel Raynaud 76544ab64a ♻️(backend) split posthog configuration
The posthog information were only available using the POSTHOG_KEY
settings. We split it in POSTHOG_KEY and POSTHOG_HOST to use them with
the pyhton posthog sdk
2026-06-01 17:02:43 +02:00
Manuel Raynaud 9f98af1387 (backend) allow to leave a document
We want to allow users to leave a document where they have an access or
they have visited creating a link_trace. All subdocuments should also be
leaved at the same time.
To know if the user can leave a doc we have to check when computing the
abilities if a record is existing in the LinkTrace table. This is a N+1
query situation. To avoid it, we added an annotation in the
DocumentQueryset like we already do to annotate the user role.
There is one edge case where the annotation is made to soon, it is when the
user is visiting a document for the first time, the `get_object` add the
annotation and in the permission, we compute the abilities. The `leave`
property is False because the entry in the LinkTrace table is not made,
when the serializer ask for the abilities again, it is still False. So
in the `retrieve` method in the viewset we force the
`user_has_link_trace` to the correct value.
2026-06-01 16:25:50 +02:00
Manuel Raynaud 7773a5b9bf 🔥(backend) remove masking document code
The mask feature has never been implemented by the frontend application
and it is not what we want to do. We want to implement a feature to
leave a document.
2026-06-01 16:25:50 +02:00
Anthony LC 2ad24384bd 🔒️(js) fix security warning
Moderate:
- ajv CVE-2025-69873
- qs CVE-2026-8723
- protobufjs CVE-2026-45740
- fast-uri CVE-2026-6322
2026-06-01 15:18:26 +02:00
renovate[bot]andGitHub ae9a6a14da ⬆️(dependencies) update js dependencies 2026-06-01 10:11:21 +00:00
Anthony LC 6361913587 💄(frontend) update icons in left panel header
The icon in the left panel header was updated to
match the new design.
2026-06-01 10:22:29 +02:00
Anthony LC 8104fe0be5 ️(frontend) improve focus behavior of the doc title input
Add wrapper to catch focus.
Benefit:
- The tooltip will show exactly in the middle of
  the title input text
- When the user is click on the right side of the
  doc title, the title get the focus and the cursor,
  which is the expected behavior when editing a title.
2026-06-01 10:22:29 +02:00
Anthony LC ce6dc77222 🚚(frontend) move doc toolbox to Floating Bar
We are modifying the doc header, we are moving elements
to a floating bar. In this case, we are moving the
doc toolbox to the floating bar.
We adapted the toolbox with the updated actions.
We update the doc header to use all empty space.
We moved the emoji part from the toolbox directly
to the header.
2026-06-01 10:22:29 +02:00
Anthony LC 882c2ac979 ♻️(frontend) replace visibility Alert
We remove the AlertPublic component and replace it
with a new visibility status in the DocHeaderInfo
component. This change simplifies the user interface
by providing a more direct indication of the
document's visibility status, whether it's public
or internal, without needing an additional alert
component.
2026-06-01 10:22:00 +02:00
Anthony LC e8cc19b74e 🚚(frontend) move Button Share to Floating Bar
We are modifying the doc header, we are moving elements
to a floating bar. In this case, we are moving the
Button Share to the floating bar.
2026-06-01 10:22:00 +02:00
Anthony LC f7f0c4d3e3 🛂(frontend) add guard before importing a doc
We could still have 400 error when importing
".markdown", because the backend only accepts ".md"
for markdown files. We added another guard on
the extensions to prevent this error and make sure
the user send acceptable formats.
2026-05-29 17:42:46 +02:00
Stephan MeijerandAnthony LC b6ab1f188c ♻️(frontend) centralize allowed conversion formats in ContentTypes
Replace ContentTypes enum with a structured object mapping MIME types
to their file extensions, removing the manual switch-case in useImport

Signed-off-by: Stephan Meijer <me@stephanmeijer.com>
2026-05-29 17:42:46 +02:00
Sylvain ZimmerandAnthony LC 5bd2d1b9f1 🐛(y-provider) return empty output when converting empty Yjs document
The convert handler returned 500 "No valid blocks were generated" whenever
the reader produced an empty blocks array, which is the normal state of a
freshly-created Yjs document. Treat empty input as a valid case and return
200 with an empty body for every supported output format.

Signed-off-by: Sylvain Zimmer <sylvain@sylvainzimmer.com>
2026-05-29 17:23:21 +02:00
Manuel Raynaud 4841d9584f 🔧(helm) enable collaboration edition in dev and feature env
We want to enable the collaboration edition check in dev and feature env
2026-05-28 16:04:12 +02:00
Manuel Raynaud efd5a3cee3 ️(helm) create a dedicated svc and deployment for yprovider converter
We want to isolate the converter service built in the yprovider server in
order to not mix conversion and collaboration together. We decided to
create a dedicated service and deployment, by default they use the
values defined in yProvider values but all can be overridden in
yProvider.converter.
Also, by default these new service and deployment are not enabled, they
must be explictly enabled and configured. If not it works like now with
only one service and deployment for the yProvider server.
2026-05-28 09:13:25 +02:00
Manuel RaynaudandGitHub a20ba1a78e 🐛(backend) use computed_link_reach in handle_onboarding_document
In the model method User::_handle_onboarding_documents_access we do not
allow using documents with restricted link_reach to be added as
onboarding documents. To check the real link_reach of the document, we
must use instead the computed_link_reach to be sure that a sub document
can also be used and compute its correct link_reach.
2026-05-28 06:50:40 +00:00
Manuel Raynaud fdc99adc78 (backend) add a breadcrumb in the search response
In the search response, we want to display a breadcrumb for every
document returned. For this we added a "parents" property containing a list
documents, all are the parents of the current document (ordered by their
depth). With this we can easily create a breadcrumb.
2026-05-27 17:41:39 +02:00
Manuel Raynaud 31b088c307 ♻️(backend) rename SearchDocumentSerializer in SearchQueryParam
The SearchDocumentSerializer name will be used for a dedicated
serializer for the search endpoint.
2026-05-27 17:41:39 +02:00
Manuel Raynaud d00b3222cf ♻️(backend) allow global search in sub documents
The global search endpoint filtering by title in the database was not
searching for accessible sub documents. We change the how global search
is made: it is now returning accessible sub documents matching the
title query.
2026-05-27 17:41:38 +02:00
Manuel Raynaud b77f7ab6f4 ♻️(backend) rename DocumentViewset::_title_search in _search_title
We rename the private method _title_search in _search_title in the
DocumentViewset for having the search methods prefixed with _search
2026-05-27 17:41:38 +02:00
Anthony LC e85e7d6c65 ️(frontend) fine grained accessibility for right panel
- improve semantics and aria attributes
- gives the focus to the panel when open or switching panels
- gives back the focus to the trigger element when closing the panel
2026-05-27 17:03:28 +02:00
Anthony LC 981aef0f18 📱(frontend) coordinate left/right panel visibility on tablet
On tablet, the place is too tight to have both
panels open at the same time. We have a fine-grained
control of the panel visibility to display panel
depend users interactions and responsive breakpoints.
2026-05-27 17:03:27 +02:00
Anthony LC 43a3620700 📱(frontend) reduce breakpoint mobile view
Most of the application was switching to mobile
view at the medium breakpoint.
Medium breakpoint let enough place to display
most of the application features and it is more
user friendly to switch to mobile view at the
small breakpoint.
We are switching to mobile view at the small breakpoint
to give more place to the application features
and to be more user friendly.
2026-05-27 17:03:27 +02:00
Anthony LC 68b9342401 ♻️(frontend) move table of content to right panel
We move the floating table of content to the
right panel. This allows us to have a more consistent
UI and to make room for the right sidebar.
2026-05-27 17:03:26 +02:00
Anthony LC 2c4317947b (frontend) add comment side panel
Add comment side panel to the right panel.
We will be able to manage the threads of the
document and see the content of the comments in
a side panel.
The advantage of this approach is that we will
be able to:
- see the comments that have been removed because
  of deleted text
- see the resolved comments
- see the unresolved comments
2026-05-27 17:03:26 +02:00
Anthony LC 896444aa13 (frontend) add right panel
Add a right panel, it will in a first time be used
to display the comment side panel, but it will be
used in the future for other features as well.
2026-05-27 16:49:21 +02:00
Cyril 980d57fe60 ️(frontend) add aria-hidden to decorative avatar SVGs in share modal
Hide decorative user avatar SVGs from assistive technologies in share modal.
2026-05-27 09:59:15 +02:00
Anthony LCandManuel Raynaud 7ad9550f54 (backend) add unresolve action to ThreadViewSet
We have now the possibility to unresolve a thread
from the frontend.
We need to add the unresolve action to the
ThreadViewSet.
2026-05-26 12:21:47 +02:00
Anthony LCandManuel Raynaud 7956540b73 👔(backend) add resolved thread to queryset
We need to include resolved threads in the queryset
of the ThreadViewSet, otherwise they won't be
included in the list of threads and we will not be
able to list resolved threads in the side panel.
2026-05-26 10:28:09 +02:00
Amine BOUKERFAandGitHub 3264e29941 🔒(backend) prevent admins from rewriting other users comments
Admins/owners could overwrite another user's comment text and silently
take ownership of it.
Split write permissions: destroy stays broad (author + admin/owner) for
moderation.
    
Signed-off-by: Mohamed El Amine BOUKERFA <boukerfa.ma@gmail.com>
2026-05-26 10:26:31 +02:00
Amine BOUKERFAandGitHub 8d42f814b7 (backend) validate user-provided document id is a valid UUID
Reject client-supplied IDs that are not valid UUIDs
when creating a document

Signed-off-by: Mohamed El Amine BOUKERFA <boukerfa.ma@gmail.com>
2026-05-26 07:57:36 +00:00
Manuel RaynaudandGitHub 24d58a1aa5 🔧(backend) allow configuring settings OIDC_OP_USER_ENDPOINT_FORMAT
The djang-lasuite package manages the settings
OIDC_OP_USER_ENDPOINT_FORMAT allowing to enforce the format use by the
user endpoint. By default it is set to `AUTO`.
2026-05-21 14:24:31 +00:00
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 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
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
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