Commit Graph
2064 Commits
Author SHA1 Message Date
Anthony LC 4b4319d5af ️(frontend) add jitter to WS reconnection
When a massive simultaneous disconnection occurs
(e.g. infra restart), all clients would reconnect
and invalidate their queries at exactly the same
time, causing a possible DB spike.
Adding random jitter spreads these events over a
time window so the load is absorbed gradually.
2026-04-02 11:40:47 +02:00
Manuel RaynaudandGitHub 8df86e6dc8 ♻️(backend) move lock in create_for_owner action in the serializer
For the create_for_owner action, all the db operation are made in the
serializer. But the lock of the table was acquired in the viewsets, lot
of operation are made between the lock is made and the insert in db. We
move the lock operation closer to the insert in the database. We wrap it
in a transaction to release the lock once the commit made.
2026-04-02 09:34:49 +00:00
Anthony LC 756cf82678 🐛(frontend) fix styles in doc editor heading
The headings in the doc editor were not
inheriting the correct style anymore due to a recent
upgrade of Blocknote.
This commit fixes the issue.
2026-03-31 17:08:35 +02:00
Anthony LC 9c832197ed 🔒️(js) fix security warning
Critical;
- fix handlebars CVE
High:
- fix picomatch CVE
- fix flatted CVE
- fix serialize-javascript CVE
- path-to-regexp CVE
Moderate:
- brace-expansion CVE
- yaml CVE
2026-03-31 17:08:35 +02:00
Anthony LC 21af59900d (frontend) fix eslint errors and warnings
Recent dependencies update caused some
eslint errors and warnings. This commit fixes them.
2026-03-31 17:08:35 +02:00
renovate[bot]andAnthony LC da091a07ea ⬆️(dependencies) update js dependencies 2026-03-31 17:08:35 +02:00
Anthony LC 53c51a3cca 🐛(nginx) add page reconciliation on nginx
The nginx conf was lacking the page reconciliation.
It is necessary to have it in place to avoid
404 errors when refreshing the page or accessing
a page directly.
It is a known issue when using the Next Router
in "export" mode, as it relies on client-side routing.
2026-03-31 16:14:30 +02:00
Anthony LC 45fac1e869 🥚(frontend) add easter egg on doc emoji creation
The first April, we add a easter egg on doc
emoji creation. When the user creates a doc emoji
an egg emoji is displayed instead of the page emoji.
2026-03-31 09:40:59 +02:00
Anthony LCandManuel Raynaud f166e75921 🚩(frontend) Add feature flag for document import
We want to be able to enable/disable the document
import feature for testing and gradual rollout
purposes. This commit adds a feature flag for
document import and updates the relevant components
and tests to respect this flag.
2026-03-30 15:37:49 +02:00
Manuel Raynaud f4ded8ee55 🔧(backend) expose CONVERSION_UPLOAD_ENABLED in config endpoint
The frontend application needs to know the value of the settings
CONVERSION_UPLOAD_ENABLED to allow the file upload or not.
2026-03-30 15:37:48 +02:00
Manuel Raynaud 05423d4f04 🔧(backend) settings CONVERSION_UPLOAD_ENABLED to control docspec usage
We want to control the conversion of document at upload time. We want to
disable this feature using a settings. The new settings
CONVERSION_UPLOAD_ENABLED should be used to enable or not the conversion
at upload feature. If disabled and a file is uploaded, the reponse will
return a 400
2026-03-30 15:37:48 +02:00
Anthony LC 6691167a40 🐛(frontend) fix tree pagination
When a sub-sub-document had more than 20 children,
the pagination was not working.
This commit fixes the issue by ensuring that the
pagination logic is correctly applied to all
levels of the document tree.
2026-03-30 12:14:14 +02:00
Maximilian BoschandAnthony LC 79e909cf64 🐛(editor) fix TypeError in document editor
I get

> TypeError: Cannot use 'in' operator to search for 'de' in undefined

when building MIT-only since `localesBNAI` is undefined then.

Signed-off-by: Maximilian Bosch <maximilian@mbosch.me>
2026-03-30 09:09:19 +02:00
Cyril 03c049f59f ️(frontend) fix list merging across headings in HTML export
Lists separated by a heading were merged into a single <ul>
2026-03-29 12:35:19 +02:00
Cyril 43d486610b ️(frontend) fix empty heading before section titles in HTML export
Avoid nested headings: full HTML already wraps content in h1–h6; unwrap
2026-03-28 17:58:58 +01:00
Cyril 7d24af8702 ️(frontend) add contextual browser tab titles for docs routes
Each page sets its own tab title instead of generic "Docs"
2026-03-28 17:14:09 +01:00
Cyril 7f9869f547 ️(frontend) use aria-haspopup menu on DropButton triggers
Replace aria-haspopup true with menu on DropButton
2026-03-27 11:24:32 +01:00
Cyril 210c8b5660 (e2e) update tests for list semantics and add keyboard nav test
Adapt selectors from grid/row to list/listitem and add a Tab+Enter test
2026-03-27 10:38:21 +01:00
Cyril f7bea69d27 ️(frontend) localize dnd-kit screen reader instructions
Pass i18n strings for screenReaderInstructions and announcements.
2026-03-27 10:38:21 +01:00
Cyril 0df960bd5e ️(frontend) replace ARIA grid pattern with list in docs grid
Use list/listitem roles, mark column headers as aria-hidden
2026-03-27 10:38:14 +01:00
Manuel Raynaud 7427fdd222 ⬆️(dependencies) update PyJWT to v2.12.0
upgrade to fix CVE-2026-32597
2026-03-27 10:03:38 +01:00
renovate[bot]andGitHub 641c6f43c6 ⬆️(dependencies) update requests to v2.33.0 [SECURITY] 2026-03-26 15:26:14 +00:00
Manuel Raynaud e7cbe24f3d 🔖(patch) release 4.8.4
Added

- 🚸(frontend) hint min char search users #2064

Changed

- 💄(frontend) improve comments highlights #1961
- ️(frontend) improve BoxButton a11y and native button semantics #2103
- ️(frontend) improve language picker accessibility #2069
- ️(frontend) add aria-hidden to decorative icons in dropdown menu #2093

Fixed

- 🐛(y-provider) destroy Y.Doc instances after each convert request #2129
- 🐛(backend) remove deleted sub documents in favorite_list endpoint #2083
2026-03-25 23:19:28 +01:00
Anthony LCandManuel Raynaud acb20a0d26 🌐(i18n) update translated strings
Update translated files with new translations
2026-03-25 23:19:28 +01:00
Anthony LCandManuel Raynaud cbe6a67704 🔧(y-provider) increase Node.js memory limit
By default, Node.js has a memory limit of
around 512MB, which can lead to out-of-memory
errors when processing large documents.
This commit increases the memory limit to
2GB for the y-provider server, allowing
it to handle larger documents without crashing.
2026-03-25 17:22:32 +01:00
Manuel Raynaud f91223fe4a 🔊(backend) add some log to trace conversion made on docs creation
We added logs on the conversion made when a doc is created.
2026-03-25 17:22:32 +01:00
Manuel Raynaud 330096eb47 🐛(backend) move lock table closer to the insert operation targeted
We want to lock the table just before the insert we want to protect is
made. In the case of the perform_create action in the Document viewset,
an http call is made after the lock and can take a very long time,
blocking for nothing the table.
2026-03-25 15:43:49 +01:00
Paul VerninandManuel Raynaud ff995c6cd9 🚨(backend) fix lint on test file
Signed-off-by: Paul Vernin <paul.vernin@gmail.com>
2026-03-25 15:14:13 +01:00
Paul VerninandManuel Raynaud 004d637c8b 🐛(backend) use ancestors_deleted_at to filter out deleted docs
Filter by ancestors_deleted_at__isnull=True instead of deleted_at__isnull=True
to be more accurate

Signed-off-by: Paul Vernin <paul.vernin@gmail.com>
2026-03-25 15:13:59 +01:00
Paul VerninandManuel Raynaud 8a0330a30f (backend) add favorite list test for sub-doc
Add test_api_document_favorite_list_with_deleted_child to verify favorite_list
endpoint does not include deleted sub documents

Signed-off-by: Paul Vernin <paul.vernin@gmail.com>
2026-03-25 15:13:47 +01:00
Paul VerninandManuel Raynaud 677392b89b 🐛(backend) Fix favorite_list result for deleted sub docs
filters out deleted documents from the favorite_list query

Signed-off-by: Paul Vernin <paul.vernin@gmail.com>
2026-03-25 15:13:36 +01:00
Cyril b8e1d12aea ️(frontend) add aria-hidden to decorative icons in dropdown menu
Mark decorative SVG icons with aria-hidden.
2026-03-25 14:15:48 +01:00
Anthony LC 525d8c8417 🐛(y-provider) destroy Y.Doc instances after each convert request
The Yjs reader and writer in `convertHandler.ts`
were creating `Y.Doc`instances on every request
without calling `.destroy()`, causing a slow heap
leak that could crash the server.

Fixed by wrapping both sites in `try/finally`
blocks that call `ydoc.destroy()`.
Regression tests added to assert `destroy` is
called the expected number of times per request path.
2026-03-25 12:03:12 +01:00
Cyril c886cbb41d ️(frontend) fix language dropdown ARIA for screen readers
Add missing attributes for language picker.
2026-03-25 11:08:17 +01:00
Cyril 98f3ca2763 ️(frontend) improve BoxButton a11y and native button semantics
Add type="button", aria-disabled, and align refs with HTMLButtonElement.
2026-03-25 10:05:49 +01:00
Anthony LC fb92a43755 🚸(frontend) hint min char search users
We give a hint to the user about the minimum
number of characters required to perform a search
in the quick search input of the doc share modal.
This is to improve the user experience.
2026-03-25 09:33:14 +01:00
Anthony LC 03fd1fe50e (frontend) fix vitest tests
We upgraded vitest recently, we need to adapt
some of our tests to the new version.
We brought some modules improvments as well,
problemes that was highlighted by the new version
of vitest.
2026-03-24 16:48:40 +01:00
Anthony LC fc803226ac 🔒️(js) fix security warning
Force the upgrade of some dependencies to fix
security warnings.
2026-03-24 15:54:34 +01:00
Anthony LC fb725edda3 🚨(frontend) fix eslint errors
Recent upgrade of eslint-plugin-playwright
highlighted some errors.
This commit fixes those errors.
2026-03-24 13:01:52 +01:00
Anthony LC 6838b387a2 (linter) replace eslint-plugin-import by eslint-plugin-import-x
"eslint-plugin-import" is not well maintained anymore
better to use "eslint-plugin-import-x" which is a fork
of "eslint-plugin-import" and is actively maintained.
2026-03-24 13:01:51 +01:00
Anthony LC 87f570582f ⬇️(frontend) downgrade @react-pdf/renderer and pin it
@react-pdf/renderer is not compatible with the
Blocknote version. We need to downgrade it to a
compatible version and pin it to avoid future issues.
When Blocknote updates to a compatible version,
we can upgrade @react-pdf/renderer again.
2026-03-24 13:01:51 +01:00
renovate[bot]andAnthony LC 19aa3a36bc ⬆️(dependencies) update js dependencies 2026-03-24 13:00:04 +01:00
ZouicheOmarandAnthony LC 0d09f761dc 💄(frontend) improve comments highlights
Updated comments styles to respect design proposal,
adding distinguishable highlighting, click and hover
style interactions.
2026-03-24 09:38:31 +01:00
Manuel Raynaud ce5f9a1417 🔖(patch) release 4.8.3
Changed

- 💫(frontend) fix the help button to the bottom in tree #2073
- ️(frontend) improve version history list accessibility #2033
- ️(frontend) fix more options menu feedback for screen readers #2071
- (frontend) focus skip link on headings and skip grid dropzone #1983
- ️(frontend) fix search modal accessibility issues #2054
- ️(frontend) add sr-only format to export download button #2088
- ️(frontend) announce formatting shortcuts for screen readers #2070
- (frontend) add markdown copy icon for Copy as Markdown option #2096
- ♻️(backend) skip saving in database a document when payload is empty #2062

Fixed

- ️(frontend) fix aria-labels for table of contents #2065
- 🐛(backend) allow using search endpoint without refresh token enabled #2097
2026-03-23 17:32:50 +01:00
Anthony LC 83a24c3796 ️(frontend) add debounce WebSocket reconnect
We add a debounce mechanism to the WebSocket
reconnect logic in the `useProviderStore` to
prevent rapid reconnection attempts that can
lead to performance issues and potential server
overload.
2026-03-23 17:01:02 +01:00
Anthony LC 4a269e6b0e 🐛(y-provider) fix loop when no cookies
We observed a huge amount of logs sometimes in
the y-provider server logs, all related to the
same error: "No cookies".
When this happens, the client keeps trying to
reconnect, and the server keeps logging the error,
creating a loop.
We stop the loop by checking if the error is a
"No cookies" error, and if so, we don't
try to reconnect.
2026-03-23 11:53:55 +01:00
Anthony LC d9d7b70b71 ♻️(frontend) refacto Version modal to fit with the design system
We refactored the version modal to fit
the design system. We removed some dead code and
fixed some state issues.
2026-03-23 10:58:50 +01:00
Anthony LC a4326366c2 🐛(frontend) fix leftpanel button in doc version
The left panel button was shown in the doc version page.
This commit removes the button from the doc version
page by moving it to the DocLayout.
By moving it to the DocLayout, we do not have the
flickering when we switch between subpages.
2026-03-23 10:33:05 +01:00
Anthony LC 1d7b57e03d 🐛(frontend) fix close panel when click on subdoc
Recent refacto of left panel components caused
the close panel function to stop working when
clicking on a subdoc.
This commit fixes that issue by ensuring that the
close panel function is properly called when
a subdoc is clicked.
2026-03-23 10:11:19 +01:00
Manuel Raynaud c4c6c22e42 ♻️(backend) skip saving in database a document when payload is empty
The frontend application is making PATCH request with an empty body.
This PATCH request is not making any change but an UPDATE sql query is
made, the `updated_at` field is the only one updated. When can skip this
save in the databse by returning the Document instance in the serializer
update method
2026-03-21 10:33:02 +01:00