Commit Graph
1958 Commits
Author SHA1 Message Date
Anthony LC 7edbd4efcb 💄(frontend) update search ui to fit the design mockup
The search ui has been updated to fit
the design mockup.
It includes:
- the search feature
- the move doc modal
- the interlinking search part
2026-06-10 16:44:49 +02:00
Anthony LC 359fb42605 (frontend) add top parent on sub docs search
In the search modal, under the sub docs,
we now display the top parent of the doc, to give
more context to the user about the doc they are
looking for.
We refactorize the filters to get more flexibility
and avoid too much props drilling.
2026-06-10 16:44:49 +02:00
Manuel RaynaudandAnthony LC da6e65b204 ♻️(backend) return only the top parent in the search endpoint
In the search endpoint, we were returning all the parents for a document
mathing the search. We want instead to return only the top parent the
user has access to.
2026-06-10 16:44:48 +02:00
Cyril 69c3303c1a ️(frontend) restore focus after presenter close
Restore focus to menu trigger after closing presenter mode.
2026-06-10 14:27:06 +02:00
Cyril fd0e858304 ️(frontend) trap focus inside presenter dialog
Trap focus with FocusScope; remove editor role from slides for better SR sprt.
2026-06-10 14:26:43 +02:00
Cyril a8705195fe ️(frontend) announce slide position in presenter mode
Announce slide position via react-aria on change; drop bar live region.
2026-06-10 14:26:43 +02:00
Cyril ad33e9e0eb ️(frontend) use anchor links for table of contents entries
Replace TOC buttons with anchor links and heading ids for a11y navigation.
2026-06-10 14:04:57 +02:00
Anthony LC 6dc9955d64 (frontend) unauthenticated users can search
Unauthenticated users can now search documents inside
a document depend their permissions on the document.
2026-06-10 11:44:13 +02:00
Manuel RaynaudandGitHub 021f53092e 🐛(backend) stream empty string with an async iterator under ASGI
In the content_retrieve action, if the document is not existing on the
object storage, we return an empty binary string. In the case the app is
ran as an ASGI application we still have a warning explaining it must
consume the iterator before sending it.
2026-06-10 06:36:03 +00:00
Anthony LC 87061dd26d 🐛(frontend) fix ui issues
- Fix floating bar z-index to ensure it appears
  under the editor toolbar and suggestion menu
- Add text center to toolip content
2026-06-09 16:38:25 +02:00
Manuel RaynaudandGitHub 593c98c7d1 🔧(backend) delete object created in object storage during tests
The tests are using the local object storage configured in the docker
compose stack. Every time a test using the DocumentFactory is executed,
an object is created in the object storage and will stay here but never
used. The data/media directory is growing and time to time we have to
delete it in order to free some gigabytes. In this commit we add a
global conftest responsible to delete the object created during the test
execution. The space will be really free when the object storage
container will be shutdown.
2026-06-09 13:14:58 +00:00
Cyril a4559d9519 ️(frontend) use heading element for pinned documents section title
Replace <span> with <h2> so the section appears in the heading for SR.
2026-06-09 10:35:27 +02:00
Anthony LC a43883caf0 🔖(patch) release 5.2.1
Changed:
- 💄(frontend) display emoji button on hover

Fixed:
- 🐛(backend) close thread DB connections to fix test teardown
  OperationalError
- 🐛(frontend) fix crash when orphaned threads
- 🐛(backend) order trashbin response by most recently deleted
- 🐛(backend) stream document content with an async
  iterator under ASGI
- 🐛(frontend) fix long titles in table of content
2026-06-05 13:44:21 +02:00
AntoLCandAnthony LC c9829576a5 🌐(i18n) update translated strings
Update translated files with new translations
2026-06-05 13:44:21 +02:00
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
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
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