Commit Graph
2236 Commits
Author SHA1 Message Date
Nathan Panchout 98ed46467e ✨(frontend) hint how dividers split slides on the first slide
When a document has no divider, show a dismissible hint on the title
slide explaining that /Divider splits slides.

Closes #2475
2026-07-07 16:54:30 +02:00
Nathan Panchout 5882aca59d ✅(frontend) cover presenter PDF export
Exercise PDF print pages, file blocks, and tall slide clipping.

Keep coverage scoped to the presenter export workflow.
2026-07-01 16:22:28 +02:00
Nathan Panchout 0d6b1f4fff ✨(frontend) export the presentation as a PDF
Render the slides off-screen as A4 landscape pages and print them via
the browser, one slide per page with the watermark. Add a "Download PDF"
action to the floating bar.

Closes #2446
2026-07-01 16:17:53 +02:00
Nathan Panchout 5afdba1ae9 ✨(frontend) add a docs logo watermark to presentations
Show a monochrome Docs logo in the slide corner (web and PDF) to signal
the document was made with Docs.

Closes #2472
2026-07-01 16:17:53 +02:00
Nathan Panchout 02b56e2076 ♻️(frontend) let print DOM helpers target a custom root
wrapMediaWithLink / wrapInterlinksWithAnchor defaulted to document.
Accept a root node so the presenter export can reuse them on its
off-screen tree.
2026-07-01 16:17:53 +02:00
Nathan Panchout 0a311b82d5 ✅(frontend) cover present from block
Exercise block-to-slide mapping and the editor side-menu action.

Keep coverage scoped to starting the presenter from a block.
2026-07-01 14:23:28 +02:00
Nathan Panchout a7ba5b4539 ✨(frontend) start the presentation from a block
Add a "Present" item to the block side menu that opens the presenter on
the slide containing that block. Map any block id (incl. nested or
divider ids) to its rendered content slide.

Closes #2470
2026-07-01 14:20:44 +02:00
Nathan Panchout b5f94cc820 ✅(frontend) cover presenter share links
Exercise direct present links, copied slide URLs, and mobile behavior.

Keep the e2e slice scoped to the share-link workflow.
2026-07-01 14:16:20 +02:00
Nathan Panchout 6714c470ed ✨(frontend) open and share a presentation at a given slide
Support ?view=present&slide=N deep-links (clamped, URL kept in sync) and
a "Copy link to slide" action in the floating bar. Ignore the deep-link
on mobile.

Closes #2397
2026-07-01 14:16:03 +02:00
Nathan Panchout d3eee2b429 💄(frontend) restyle the editor divider block
Slim the divider to a 1px rule with a brand-colored selected state,
matching the mockups.

Closes #2474
2026-07-01 13:51:53 +02:00
Nathan Panchout 577544d610 ✅(frontend) test present-mode core behavior
Cover generated title slides, divider grouping, and presenter focus.

Keep e2e coverage aligned with the first present-mode slice.
2026-07-01 13:14:19 +02:00
Nathan Panchout 75bddc0d33 🐛(frontend) remove the stray focus outline on presenter slides
A selected image (or any selected node) leaked its editing outline into
the read-only slide. Suppress the selected-node outline so nothing looks
focused unless the user tabs or clicks.

Closes #2393
2026-07-01 13:09:35 +02:00
Nathan Panchout dd844e90b6 🐛(frontend) keep divider children and trim slide-break spacing
Dividers with children are kept as structural parents so their slide
keeps its indentation; the divider's own rule is hidden. Empty
paragraphs around a divider are dropped so habitual spacing no longer
offsets slides.

Closes #2398
2026-07-01 13:09:35 +02:00
Nathan Panchout 963ff44845 ✨(frontend) show a generated title slide before the content
Prepend a slide with the document title (emoji stripped) so every
presentation opens on a cover, announced to screen readers like any
other slide (#2466).
2026-07-01 13:09:35 +02:00
Nathan Panchout d229f673f2 ♻️(frontend) extract reusable presenter slide content component
Pull the BlockNote rendering out of PresenterSlide into
PresenterSlideContent so it can be reused by the title slide and the PDF
export. Add a PresenterSlideData union (title | content) and a shared
PresenterBlock type.
2026-07-01 13:09:35 +02:00
Nathan Panchout 97f2ea584e ♻️(frontend) drive the presenter from a store and one mount point
Move presenter ownership out of DocToolBox into a top-level
PresenterRoot driven by a zustand store, lazy-load the overlay and paint
a boot cover while the editor boots. Groundwork for the deep-link and
present-from-here features (#2466).
2026-07-01 13:09:35 +02:00
Nathan Panchout 13fe22d72b ✅(frontend) wait for editor mount in createDoc e2e helper
createDoc returned before the ProseMirror editor was visible, so tests
that immediately typed or opened the presenter raced the load. Wait for
the editor container before handing control back.
2026-07-01 13:09:35 +02:00
Dakshesh JainandGitHub 6ec541f5cb 🐛(backend) update restore ability for inherited deletion
Updated the restore ability so that only directly deleted documents can
be restored. This prevents the restore action from being exposed for
child documents whose parent is deleted. This PR addresses #2127.
2026-06-30 10:01:07 +00:00
Amine BOUKERFAandGitHub 36dced1e56 🐛(backend) prevent owner from leaving a soft-deleted document
Owners could leave trashed documents via the leave endpoint, deleting
their `DocumentAccess` and all subtree access. When the last owner
leaves a document it creates an orphan as no owners remains in the doc.

Signed-off-by: BOUKERFA Mohamed El Amine <boukerfa.ma@gmail.com>
2026-06-29 13:04:04 +00:00
Cyril a64b5cb447 ♿️(frontend) remove redundant aria-label on table of contents links
Removed redundant aria-label to fix double SR announce.
2026-06-29 11:14:28 +02:00
Anthony LC 3fe8bd5cc0 🐛(frontend) fix waffle positioning
The floating waffle menu is positioned only on the bottom
left of the trigger button, so when positioned
on the bottom left, the floating menu is not visible.
This commit fixes the positioning.

We also added a patch to the ui-kit, so when
the patch is released, we can remove this patch
from the codebase.
2026-06-24 16:21:13 +02:00
Anthony LC cb19a6ee71 🚚(frontend) move Waffle to bottom left
We moved the waffle button to the bottom left inside
the left panel.
This change is part of the new header design.
2026-06-24 16:21:13 +02:00
Anthony LC 9605dc7c90 🐛(frontend) fix service worker causing reload on tab focus
During rolling deploys, multiple replicas serve
different builds of service-worker.js
(each build has a random buildId baked in).
This causes a controllerchange loop: the new SW
activates via skipWaiting, the page reloads, then the
next request may hit an older replica,triggering another
update and another reload — surfacing as a reload
every time the tab becomes visible.

We added a sessionStorage guard so a controllerchange
triggers at most one automatic reload per session; subsequent
flaps between versions are silently ignored, while legitimate
updates still cause a single reload automatically.
2026-06-24 15:40:29 +02:00
ydndandAnthony LC c8e44dd359 ✏️(docs) fix typos in contributing guide
Correct minor wording and spelling mistakes in the contribution guidelines.

Signed-off-by: ydnd <1843212188@qq.com>
2026-06-24 10:03:15 +02:00
Anthony LC 4585fd80a1 ✨(frontend) add create sub-documents button
We added a sub button to create sub-documents
from the New button. This sub button is only visible
when the user is in a document, and it allows them to
create a new document that is a child of the current
document.
2026-06-23 14:26:17 +02:00
Anthony LC 25d47966c0 ♻️(frontend) new create button for docs
New create button for docs.
It is now a link button instead of a pure button,
meaning we can navigate to this new created doc
and open it in another tab by doing ctrl + click.
This new button has a dropdown menu that allows
users to import a docx file or a markdown file.
We removed the old import button.
2026-06-23 14:26:16 +02:00
Cyril f6de499ff4 ♿️(frontend) align search modal field label with placeholder
Remove redundant aria-label on QuickSearch input, align DocSearchModal labels.
2026-06-23 14:02:29 +02:00
Cyril b05d220b7a ✨(frontend) add support with mailto link in help menu
Add configurable support_mailto in theme customization to open
the user's email client from the help menu.
2026-06-23 13:38:28 +02:00
Cyril b9e4df7bd6 🔥(frontend) remove Crisp from the project
Remove Crisp chat SDK, provider, analytics, session management
and all related references across the codebase.
2026-06-23 13:37:50 +02:00
Cyril 31749b3051 ♿️(frontend) add configurable legal submenu in help menu
Expose legal page URLs in theme customization under help.legal_links.
2026-06-23 13:37:17 +02:00
Cyril ddb864608a ♿️(frontend) focus export modal on format select
Focus export modal on format select for ARIA dialog compliance
2026-06-23 13:01:41 +02:00
Anthony LC 3304c12b2c 🔒️(js) fix security warning
Moderate:
- @babel/core
- @opentelemetry/core
- dompurify
- form-data
- js-yaml
- markdown-it
- undici
- ws
2026-06-23 12:17:47 +02:00
Anthony LC b8c2406361 📌(dependencies) pin prosemirror deps
We are pinning the prosemirror dependencies to avoid
conflicts with other versions.
2026-06-23 12:17:47 +02:00
renovate[bot]andAnthony LC e4b6132dfd ⬆️(dependencies) update js dependencies 2026-06-23 12:17:47 +02:00
Cyril 09f95681ef ♿️(frontend) enable blocknote heading ids for toc anchors
Use setIdAttribute and link TOC entries to native block ids.
2026-06-23 11:46:31 +02:00
Cyril 5843d5ab2f ♿️(frontend) hide mobile left panel from screen readers when collapsed
Hide closed mobile left panel from screen readers with inert
2026-06-23 10:54:07 +02:00
Bolaji AyodejiandAnthony LC 5cedaa3f05 ✏️(docs) Add DPG badge to README
This PR includes the new DPG badge in the README file
and links to LaSuite Doc's profile page on the DPG Registry.
2026-06-23 10:05:38 +02:00
Sylvain ZimmerandAnthony LC 19b9fb483c 🐛(y-provider) fix interlinking markdown test for blocknote 0.51.4
The 0.51.4 markdown serializer no longer emits the optional link title
attribute, so the exported link is `[text](url)` without ` "title"`. The
title is still present in the HTML export. Update the expectation to match.
2026-06-23 09:43:27 +02:00
Sylvain ZimmerandAnthony LC 635f1cf7a4 ✨(y-provider) preserve commented text on HTML/markdown conversion
The "comment" mark must exist in the conversion editor schema, otherwise
y-prosemirror silently drops every commented run of text when reading the
Yjs document, turning any block holding a comment into an empty block.
Register the CommentsExtension on the conversion editor so commented text
round-trips like the other custom blocks.
2026-06-23 09:43:27 +02:00
Sylvain ZimmerandAnthony LC 46fc08a538 ✨(y-provider) preserve custom blocks on HTML/markdown conversion
Wire the docs BlockNote schema (callout, pdf, uploadLoader, interlinking
link, page break) into the conversion editor so /api/convert no longer
drops or mangles these blocks.
2026-06-23 09:42:43 +02:00
Quentin BEY 3382e67a46 📝(readme) add Snyk badge to header
As part of the Snyk opensource program we proudly add
their badge to show their support.
2026-06-22 21:52:15 +02:00
Anthony LC e844929404 ⚡️(frontend) try to improve performance of tree
The tree rerenders crazily, creating performance
issues, especially on big trees. To fix it properly
we will need a big refacto, on the uikit side.
Before doing that, we try to optimize the current
code by memoizing the tree view, and by using the
selected node from the url instead of the one
from the context.
We improve the treeitem link, we can now easily
opening a new tab by doing CTRL+Click.
2026-06-22 17:09:41 +02:00
Anthony LC a63fa17e20 🐛(frontend) fix removed item in the tree
react-arborist's scrollTo calls react-window's scrollToItem, which mutates
the internal scrollOffset state. When navigating to a deep item in a large
tree, this causes all items above the target to be removed from the DOM
(virtualized away), making the tree appear empty above the selected node.
We no-op it to prevent that — the panel's own overflow-y handles scrolling.
2026-06-22 17:09:41 +02:00
Manuel Raynaud a8d67f34c4 🔖(minor) release 5.3.0
Added

- ✨(backend) add limit on distinct reactions per comment #1978
- ✨(frontend) leave a document #2410
- ✨(frontend) add top parent on sub docs search #1952
- ✨(frontend) unauthenticated users can search #2407
- ✨(backend) specific user delete method to delete its relations #2437

Changed

- 👷(CI) remove test-e2e-other-browser job #2404
- ♿️(frontend) use heading element for pinned documents section title #2380
- ♿️(frontend) use anchor links for table of contents entries #2390
- ♿️(frontend) improve presenter mode screen reader and keyboard support #2383
- ♿️(frontend) link export modal name to its heading #2422

Fixed

- 🐛(frontend) overlap of block menu dropdown #2406
- ⚡️(backend) fix N+1 queries when serializing thread comments #2415
v5.3.0-preprod v5.3.0
2026-06-19 15:57:23 +02:00
github-actions[bot]andManuel Raynaud 1fa3aaa8ae 🌐(i18n) update translated strings
update translated strings
2026-06-19 15:57:22 +02:00
renovate[bot]andGitHub 87fbcbaceb ⬆️(dependencies) update PyJWT to v2.13.0 [SECURITY] 2026-06-19 12:28:35 +00:00
Manuel Raynaud 82013a84b6 ♻️(backend) change how a user is deleted in the admin
In the admin there were 2 ways to delete a user : by the actions select
box and the button on its change view. Both are leading to a failure. To
fix it, both way are removed and we implemented a custom action calling
the user.delete method with all the specific workflow we implemented.
2026-06-19 11:53:32 +02:00
Manuel Raynaud ed0dce66c5 ✨(backend) specific user delete method to delete its relations
Deleting a user is not possible when it has created docs because the
on_delete on the Document class id RESTRICT and we don't want to change
it. We decided to have a specific workflow for correctly delete a user.
The document where the user is the sole owner must be deleted, the other
only the owner access must be deleted. For the remaining Documents where
the user is the creator, we set it to `null`, then the user can be
delete, remaining relations are deleted in cascade.
2026-06-19 11:53:32 +02:00
Manuel Raynaud b417a57418 ♻️(backend) use user_id instead of user relation in sharing module
In the sharing module, the user model was used instead of working with
the user id. Only the user id is used in this module, forcing in the
module calling this functions to load the user model for nothing and
doing a N+1 query.
2026-06-19 11:53:30 +02:00
Mohamed El Amine BOUKERFAandManuel Raynaud 51364e3d3c ✨(frontend) add UI support for reaction limit on comments
Prevent users from adding more reactions once the per-message
limit has been exceeded. It Disables reaction buttons
when limit is reached

Signed-off-by: Mohamed El Amine BOUKERFA <boukerfa.ma@gmail.com>
2026-06-15 08:56:45 +02:00