Commit Graph
2165 Commits
Author SHA1 Message Date
Anthony LC 8bf30d0ec3 🐛(frontend) fix long titles in table of content
Long title in table of content is were not displayed correctly.
This commit fixes the issue.
2026-06-05 12:42:26 +02:00
Manuel RaynaudandGitHub 26670eb588 🐛(backend) stream document content with an async iterator under ASGI
When docs is ran using an ASGI server, the django StreamingHttpResponse
expect to consume an async generator. If a sync generator is used, it
fully consumes it and then return all the content and we loose the
benefits of using a StreamingHttpResponse.
2026-06-04 15:43:41 +00:00
Anthony LC 559b73bfc2 💄(frontend) display emoji button on hover
The emoji button is now displayed when hovering
the doc header. We reduced the size as well.
2026-06-04 16:22:47 +02:00
Anthony LC 6e60bb9cb1 🐛(frontend) fix crash when orphaned threads
The app expect threads to always have
comments, but in some cases threads can end up without
comments, which causes crashes. This PR adds a
check to delete orphaned threads without comments
to avoid this issue.
2026-06-04 14:46:12 +02:00
Manuel RaynaudandGitHub 3b9a0f0f2d 🐛(backend) order trashbin reponse by most recently deleted
The trashbin response wasn't ordered at all. We want to order by default
by -deleted_at.
2026-06-04 12:29:52 +00:00
Manuel RaynaudandGitHub ccb44aec6c 🐛(backend) close thread DB connections to fix test teardown OperationalError
When all the tests are ran, there is a PytestWarning log present to warn
us that there is remaining database connection open and can not be
closed. It appears that the tests about concurrence are responsible of
leaving connection open. We need to manually close them in these tests.
2026-06-03 14:43:46 +00:00
Anthony LC 9633f5f7a0 🔖(patch) release 5.2.0
Added:
- (backend) support creating subdoc from file
- (frontend) comment side panel
- (buildpack) add PaaS deployment support, tested with Scalingo
- 🔧(backend) allow configuring settings
  OIDC_OP_USER_ENDPOINT_FORMAT
- ️(helm) create a dedicated svc and deployment for
  yprovider converter
- (backend) allow to leave a document
- (frontend) add the presenter mode
- 📈(backend) create a utils to capture event with posthog
- 🔧(backend) new setting DOCUMENT_ALL_ENDPOINT_ENABLED

Changed:
- ♻️(backend) allow global search in sub documents
- (backend) add a breadcrumb in the search response
- ♻️(frontend) move doc action buttons to fix toolbar
- ️(frontend) add aria-hidden to decorative avatar SVGs
  in share modal
- 🏗️(frontend) move comments to its own folder feature

Fixed:
- 🐛(docs) run migration 0027 without superuser role
- 🐛(backend) prevent admins/owners from overwriting other
  users comments
- 🐛(y-provider) return empty output when converting empty
  Yjs document
- 🐛(backend) use computed_link_reach in
  handle_onboarding_document
- 🐛(frontend) fix toolbar blocknote hidden
- 🐛(frontend) fix application crashes when using
  GTranslate and zoom
- 🐛(frontend) fix emoji pdf not matching
- 🐛(backend) fix UnorderedObjectListWarning for
  DocumentAskForAccess viewset
v5.2.0-preprod v5.2.0
2026-06-03 12:09:39 +02:00
AntoLCandAnthony LC 0ed6167b56 🌐(i18n) update translated strings
Update translated files with new translations
2026-06-03 12:06:56 +02:00
Cyril a78269a69f ️(frontend) align mobile header menu aria-label i18n pattern
Use t() on each aria-label branch to match impress i18n convention.
2026-06-03 09:15:29 +02:00
Manuel Raynaud dc692a1594 🔥(backend) remove unused order parameter in Paginator class
In the custom Paginator present in the viewset, an ordering parameter
was set. This parameter is never used by the DRF paginator and can be
removed.
2026-06-02 19:47:38 +02:00
Manuel Raynaud 9bdf36a323 🐛(backend) fix UnorderedObjectListWarning for DocumentAskForAccess
In the tests there is a UnorderedObjectListWarning, we also find this same
warning in the logs in production. This warning appears because the
queryset used by the DocumentAskForAccess paginator is not ordered and
can lead to inconsistent result. Ordering the queryset fix this warning.
2026-06-02 19:47:31 +02:00
Manuel Raynaud 5b70c5aecb 🔧(backend) new setting DOCUMENT_ALL_ENDPOINT_ENABLED
We want to allow or not the usage of the /documents/all/ endpoint. It has
been created to be used for an other purpose than the js client. For
those who don't use it this new settings allow to disable it. By default
it is set to True to keep the same behavior.
2026-06-02 17:28:04 +02:00
Manuel Raynaud b946080881 🔧(doc) add missing POSTHOG_HOST in env.md
We missed to add the setting POSTHOG_HOST in the env.md file
2026-06-02 17:28:04 +02:00
Nathan Panchout 73c3ca8105 (e2e) add presenter mode e2e test
Add a Playwright spec that opens the presenter overlay from the
doc options menu, walks through a multi-slide document built with
dividers, and verifies that Escape closes the overlay.
2026-06-02 16:25:56 +02:00
Nathan Panchout 39390eff0e (frontend) add unit tests for presenter hooks
Cover the three hooks that drive the presenter overlay:
useSlides for divider-based block segmentation,
useBrowserFullscreen for the Fullscreen API wrapper,
and usePresenterShortcuts for the keyboard navigation bindings.
2026-06-02 16:25:56 +02:00
Nathan Panchout 5f7e59a8dd (frontend) add presenter mode
Add a presenter overlay that turns the current document into a
slide deck. The editor's blocks are snapshot at open time and
split into slides on each divider; navigation is driven by
keyboard shortcuts and a floating bar with browser fullscreen
support. The overlay is wired to the doc header toolbox via a
new "Present" entry, lazy-loaded to keep the editor bundle lean.
2026-06-02 16:25:56 +02:00
Nathan Panchout 8e7a59aca7 ♻️(frontend) adapt modals to ModalDefaultVariantProps
cunningham-react 4.3.0 splits Modal props per variant. Switch
AlertModal and SideModal from the now-removed ModalProps alias to
the more precise ModalDefaultVariantProps type so the modal
wrappers keep type-checking against the new API.
2026-06-02 16:25:56 +02:00
Anthony LC 31588ac08d ⬆️(frontend) bump Blocknote to 0.51.4
We bumped the Blocknote editor to version 0.51.4,
which includes several bug fixes and improvements,
particularly 1 bug fix about emoji on the side bar.
2026-06-02 14:31:41 +02:00
Anthony LC 3b7ea3eba7 🏗️(frontend) move comments to its own folder feature
The feature "doc-editor" start to be quiete big,
and the comments related code is quite a lot.
We move all the comments related code to a new
folder "doc-comments" to make the code more
organized and easier to maintain.
2026-06-02 14:24:01 +02:00
Anthony LC 7b3ce3ca98 🐛(frontend) fix toolbar blocknote hidden
The header could hide the formatting bar of the
blocknote editor. This commit improve the z-index
of the header to ensure that the formatting bar
is always visible.
2026-06-02 12:00:58 +02:00
Anthony LC 472cb228cb 🐛(frontend) fix floatingBar skeleton layout
The floatingBar skeleton layout was not correctly
placed in the editor skeleton. It was not every time
above the floating buttons.
2026-06-02 11:32:52 +02:00
Anthony LC 9482783a62 🐛(frontend) don't load left panel in error boundary page
Error boundary page is used when an error occurs
in the application, this page can have states still
set, causing side effects depend the component that
throw the error. In this case, the left panel is
still loaded and try to load the tree, but the
provider is not set, causing a crash error inside
the error boundary page.
We don't need the left panel in the error boundary
page, so we can just not load it to avoid this issue.
2026-06-02 11:32:52 +02:00
Anthony LC 7fc115e4e4 🐛(frontend) fix emoji pdf not matching
The emoji algorithm to find the emoji was not totally
correct, it could choose a bad family of emojis.
The first part of the emoji "code" is
what should be used first to find the "family" of the
emoji, we can then try to find the exact match in
that specific family.
2026-06-02 10:10:45 +02:00
Manuel Raynaud 1ebc8d52a0 📈(backend) capture an event when a document is left
When a user leave a document, we want to capture an event.
2026-06-01 17:47:28 +02:00
Manuel Raynaud c91c443b08 📈(backend) capture an event when a document is moved
When a document is moved we want to capture an event. The position and
target_document_id is added to the sent properties.
2026-06-01 17:47:28 +02:00
Manuel Raynaud 0df2d753c4 📈(backend) capture an event when a comment is created
When a new comment is created, we capture an event related to this comment
creation.
2026-06-01 17:47:28 +02:00
Manuel Raynaud ba1a1d469e 📈(backend) capture an event when a thread is created
When a new thread is created, we capture an event related to this thread
creation.
2026-06-01 17:47:27 +02:00
Manuel Raynaud ab1708f6df 📈(backend) capture an event when an access document is deleted
When an access is deleted we want to capture an event.
2026-06-01 17:43:56 +02:00
Manuel Raynaud 0aac4b662b 📈(backend) capture an event when an access document is created
When an access is created we want to capture an event.
2026-06-01 17:41:57 +02:00
Manuel Raynaud 7f4226452f 📈(backend) capture an event when an AI action is used
When an AI action is called from ai_translate, ai_transform and
ai_proxy, an event doc_ai_action is captured with a method property
giving the information from where it is called.
2026-06-01 17:41:57 +02:00
Manuel Raynaud a55b1c61eb 📈(backend) capture an event when a document is mark as a favorite
We want to capture an event when a user flag a document as a favorite.
2026-06-01 17:41:57 +02:00
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