Commit Graph
1443 Commits
Author SHA1 Message Date
Anthony LC f18d23338e 🐛(frontend) display imported docs in list grid
The imported docs were not displayed anymore in the
list grid view directly after the import.
It was because the request was not matched with the
correct query key.
2026-08-24 21:40:18 +02:00
Anthony LC 00c0d3aee8 ✏️(frontend) fix uppercase in on-boarding assets
STEP was in uppercase in the assets names, on the
preprod the assets were not found because the
server is case sensitive.
We renamed the assets to lowercase to fix the issue,
as the previous assets.
2026-08-24 15:55:50 +02:00
AntoLCandAnthony LC c8ed9ec349 🌐(i18n) update translated strings
Update translated files with new translations
2026-08-24 14:51:36 +02:00
Anthony LC bfada16063 🐛(i18n) fix export translations
Last upgrade of js-yaml has a compatibility issue
with i18next-parser library, which causes the
export / import translations to fail.
2026-08-24 14:05:51 +02:00
Anthony LC 75d332f111 ✨(frontend) add sorting on docs list column name
We can now sort the documents list by clicking on
the column name. The sorting is done in ascending
or descending order.
2026-08-24 12:28:45 +02:00
Anthony LC 420b2bdfc6 ♿️(frontend) set focus style globally
Lot of elements did not have a focus style, or the
focus style was not consistent. We now have a global focus
style that is applied to all elements that are
focusable. The style is still overridable for
specific elements, so buttons and other elements
still have their own focus style.
We will have probably to improve the focus style
in the future of some elements, but this is a
good start.
2026-08-24 12:26:29 +02:00
Anthony LC b25a7f3f9e ♻️(frontend) refacto of the grid documents
We have refactored the document grid feature to
fit the new design system and to improve the code
quality.
2026-08-24 12:26:28 +02:00
Anthony LC d28b0d8afc 🚸(frontend) print from document options menu
We move the print button from the export select to
the document toolbox, so that it is more accessible
and easier to find.
2026-08-24 10:52:11 +02:00
Anthony LC 675483dce2 💄(frontend) update ui doc toolbox
We updated the UI of the doc toolbox to fit
with the design system. The icons have been updated,
we moved it to the doc management folder in order
to use it to different places in the app.
2026-08-24 10:50:29 +02:00
Anthony LC 6f68c1ea3b 🔥(frontend) remove copy as markown from document options
We have removed the "Copy as Markdown" option from
the document options menu.
If user need to copy the document content as markdown,
they can just copy the content from the document
editor and paste it into a markdown editor.
2026-08-24 10:50:28 +02:00
Anthony LC ef898affe3 ⚡️(frontend) replace onboarding assets with webm and webp
Webp and webm are more efficient formats
than gif and png, so we replace the
onboarding assets with these formats to improve
performance and decrease file size.
2026-08-24 09:38:37 +02:00
fch-aaandAnthony LC 2da4ae2298 🐛(frontend) refresh pins after document deletion and restoration
Favorite relationships persist across soft deletion, while the sidebar keeps
a stale cached list until reload. Invalidate the favorites query after deletion
and restoration so deleted documents disappear immediately and their pins
return when restored.

Signed-off-by: fch-aa <21101725+fch-aa@users.noreply.github.com>
2026-08-13 10:00:42 +02:00
risk-altandAnthony LC 44c51ff7bf 💄(frontend) use the same highlight color for cells and moves
Blocknote highlights the selected table cells with #c8c8ff66 and draws
the drop cursor of a moved block with #ddeeff: two different colors,
both out of the palette.

Use --c--contextuals--background--semantic--brand--tertiary for both, and
for the drop indicator of a moved table row or column which was #adf.
The cell overlay is blended with multiply because it is drawn on top of
the cell content while the token is opaque.

Signed-off-by: risk-alt <aldu6974@gmail.com>
2026-08-11 17:19:00 +02:00
Anthony LC c389a3c83d 🐛(y-provider) fix sentry init
Sentry should actually be initialized
before the app is created. We now start sentry
before starting the app server.
2026-08-11 15:29:06 +02:00
risk-altandAnthony LC 28438fdd92 🐛(frontend) export images embedded with a relative url
Images embedded with a relative url such as /assets/logo.png were routed
through the CORS proxy: the same origin check used a substring match on
window.location.hostname, which a relative url never contains. The
backend rejects those urls with a 400 as it only validates absolute
http(s) urls.

Resolve the url against the current origin instead, so relative and
absolute same origin urls are fetched directly. This also stops matching
unrelated external urls that merely contain the hostname, and replaces
the "base64" substring check by an explicit data: scheme check.

exportResolveFileUrl now checks response.ok as well: fetch() only
rejects on network errors, so the 400 payload was returned as a blob and
embedded in the export instead of falling back to the url.

Signed-off-by: risk-alt <aldu6974@gmail.com>
2026-08-10 12:12:39 +02:00
renovate[bot]andGitHub c9e32e34e8 ⬆️(dependencies) update dompurify to v3.4.13 [SECURITY] 2026-08-09 13:56:58 +00:00
Anthony LC b4b5f9fc2c ✅(e2e) fix flakiness with language tests
When tests were run in parallel, the language tests
could introduce flakiness due to a switch to the
default language not being completed before the
next test started.
2026-08-07 10:47:49 +02:00
Anthony LC 58f70e0d2c 🔒️(js) fix security warning
- brace-expansion
- svgo
- postcss
- undici
- sharp
2026-08-07 09:16:33 +02:00
Anthony LC f8c4d2b619 🚨(frontend) adapt code to ui-kit v0.28
ui-kit v0.28 breaks some UI components.
This commit updates the relevant files to ensure
compatibility with the new version of ui-kit.
We update the cunningham-tokens.css and
cunningham-tokens.ts files to reflect the changes
in the design tokens.
2026-08-06 17:44:34 +02:00
Anthony LC c37e9b162f ⬆️(dependencies) update js dependencies 2026-08-06 17:44:21 +02:00
Nathan Panchout b956be12e5 ✅(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-08-04 17:49:24 +02:00
Nathan Panchout 7aa5935872 ✨(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-08-04 17:49:24 +02:00
renovate[bot]andGitHub d2dc74c0f9 ⬆️(dependencies) update postcss to v8.5.23 [SECURITY]
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) 
leads to Arbitrary .map File Disclosure
GHSA-r28c-9q8g-f849

PostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled 
sourceMappingURL reads arbitrary .map files when from is unset
CVE-2026-69153 / GHSA-fxqj-rqcc-2cmp
2026-08-04 15:03:17 +02:00
renovate[bot]andGitHub eed828d8c7 ⬆️(dependencies) update js-yaml to v5.2.2 [SECURITY] 2026-07-28 19:42:08 +00:00
renovate[bot]andGitHub 845f134a51 ⬆️(dependencies) update next to v16.2.11 [SECURITY] 2026-07-23 02:11:03 +00:00
Nathan Panchout 9c3bc8ac60 ✅(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-22 11:16:35 +02:00
Nathan Panchout 33ca348b02 ✨(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-22 11:16:35 +02:00
Anthony LC c9bacaeb5e 🚨(y-provider) adapt build command to tsc-alias upgrade
Recent upgrade of tsc-alias introduced a breaking
change in the build command, which now requires the
`--project` flag to specify the path to the
tsconfig file.
2026-07-21 14:57:28 +02:00
Anthony LC ba0a80cdef ⬆️(dependency) upgrade fetch-mock to 12.6.0
Previous version had security vulnerabilities,
better to upgrade to the latest version.
We had to adapt tests to the new version of fetch-mock.
2026-07-21 14:57:28 +02:00
Anthony LC b550a4543b 🔒️(js) fix security warning
- brace-expansion
- body-parser
2026-07-21 14:57:28 +02:00
Anthony LC b17df9971c 📌(dependencies) add @gouvfr-lasuite/cunningham-react resolution
@gouvfr-lasuite/ui-kit pin @gouvfr-lasuite/cunningham-react,
so multiple versions of
@gouvfr-lasuite/cunningham-react were being installed,
which was causing issues.
We pin the version to 4.3.1, forcing all packages to
use the same version.
2026-07-21 14:57:28 +02:00
Anthony LC 11efa78088 ⬇️(dependency) downgrade ai packages to previous version
Blocknote is not compatible with the latest version
of the ai packages:
- @ai-sdk/openai
- ai
Better to downgrade to the previous version until the
compatibility issue is resolved.
2026-07-21 14:25:32 +02:00
Anthony LC a63049b398 🚨(prettier) automatic new prettier formatting
We upgraded prettier in a previous commit. Some files
were not formatted with the new prettier version.
This commit applies the new prettier formatting to
those files.
2026-07-21 14:25:32 +02:00
Anthony LC aff6f2b4cc ⬇️(dependency) downgrade typescript to v6.0.3
We are downgrading TypeScript from version 7.0.2
to 6.0.3.
To bump the version of TypeScript, we will need
to update the codebase to be compatible with the
new version.
2026-07-21 14:25:32 +02:00
renovate[bot]andAnthony LC be5071682b ⬆️(dependencies) update js dependencies 2026-07-21 14:25:32 +02:00
Cyril 1258ae2e04 ♿️(frontend) use semantic <p> elements in document info card
Wrap role and last-update text in DocHeaderInfo with <p>.
2026-07-21 11:42:14 +02:00
5217dd4fca 🐛(frontend) redirect homepage to login when homepage feat is disabled
FRONTEND_HOMEPAGE_FEATURE_ENABLED=false makes the Auth guard send
anonymous visitors on / straight to login instead of /home, but the
/home page itself still rendered the full homepage when reached via a
direct link. Redirect it to login too, so disabling the feature really
disables the page.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PhqB4SHsHCuMfprwLEN3rR
Signed-off-by: Maarten Draijer <maarten@madra.nl>
2026-07-21 10:56:07 +02:00
Nathan Panchout 5a8f6967ce 💄(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-20 10:52:19 +02:00
Nathan Panchout 708fa837cc 🐛(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-20 09:55:20 +02:00
Nathan Panchout 327c7ba103 🐛(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-20 09:55:20 +02:00
Nathan Panchout 33d091d88f ✨(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-20 09:55:20 +02:00
Nathan Panchout d87b82ef37 ♻️(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-20 09:55:20 +02:00
Nathan Panchout 877109be79 ♻️(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-20 09:55:20 +02:00
Cyril 8d2dd5b565 ✨(frontend) restore skip to content link after header redesign
Re-add skip link with responsive positioning and document title focus.
2026-07-13 09:41:42 +02:00
Anthony LCandManuel Raynaud 57ad4f4be8 🔖(release) patch 5.4.1
Changed:
- ♻️(backend) reset collaboration connection in cascade for all children

Fixed:
- 💄(frontend) fix some UI/UX in the left panel
- 🐛(frontend) fix tree dnd firefox
2026-07-09 18:22:20 +02:00
Anthony LC 5a705b045b 💄(frontend) fix some UI/UX in the left panel
- Collapse panel button is now:
  - fully clickable,
  - the title is hidden
  - when the doc title is visible
  - when small mobile the title is hidden
- Add button login when logout whatever the device
- Fix flickering logo
- New icon name to avoid cache
2026-07-09 17:46:12 +02:00
Anthony LC 8f53e4b068 🐛(frontend) fix tree dnd firefox
With Firefox, the DND was not working properly anymore.
From a previous refacto, a item is now a link,
by default a link has a draggable attribute set
to true, it was conflicting with the DND library,
so we need to set it to false.
2026-07-09 17:45:47 +02:00
Stephan MeijerandGitHub 9c9f2134e7 🔊(y-provider) capture convert handler errors in Sentry
The y-provider `/api/convert` handler catches every writer/reader
exception and returns a generic `{"error":"An error occurred"}` 500. The
real JS exception is silently dropped: `logger()` only prints to stdout
when `COLLABORATION_LOGGING=true`, and Sentry's
`setupExpressErrorHandler` only sees unhandled errors — never this one.

Result: Sentry issues `DOCS-4ZY` / `DOCS-4ZZ` / `DOCS-6DK` all fire on
every 500, but none of them carry the underlying JS stack, making
root-cause diagnosis impossible from Python alone.

This patch adds `Sentry.captureException` in the outer catch with
`handler:convert` tag and `contentType` / `accept` / `bodyBytes` extras.
Behavior otherwise unchanged.

Signed-off-by: Stephan Meijer <me@stephanmeijer.com>
2026-07-08 13:51:27 +00:00
Anthony LC 0659cc5247 🔖(minor) release 5.4.0
Added:
- ✨(y-provider) preserve callouts, PDFs, page breaks, interlinking
  links and commented text on HTML/markdown export
- ✨(frontend) add a user menu
- ✨(frontend) new header and responsive harmonization
- ✨(backend) add management command to reset a Document

Changed:
- ♿️(frontend) hide mobile left panel from screen readers when collapsed
- ♿️(frontend) enable blocknote heading ids for toc anchors
- ♿️(frontend) focus export modal on format select
- ♿️(frontend) configurable legal submenu in HelpMenu, remove Crisp
- ♻️(frontend) new create button for docs
- ♿️(frontend) align search modal field label with placeholder
- 🚚(frontend) move Waffle to bottom left
- ♿️(frontend) remove redundant aria-label on table of contents links
- ♻️(core) fix typo in settings COLLABORATION_WS_NOT_CONNECTED_READY_ONLY
- ♻️(backend) scope document search by document id instead of path

Fixed:
- 🐛(backend) prevent owner from leaving a soft-deleted document
- 🐛(frontend) fix removed item in the tree
- 🐛(frontend) fix service worker causing reload on tab focus
- 🐛(backend) update restore ability for inherited deletion
- 🔧(dev) make the dev stack domain-agnostic
- 🐛(frontend) stop force index redirect when delete doc
- 🐛(frontend) fix CTA on move modal on mobile

Removed:
- 🔥(backend) remove unused default authentication backend
2026-07-08 10:55:43 +02:00
Anthony LC 5440146fcd ⏪️(frontend) hide import button on a document
We decided to hide the import button on a
document because it is confusing for the user to
have the possibility to import a document when he
is already in a document. The import button is
now only available on the document list page.
We will add back the button soon, but a import
will create a new sub-document instead.
2026-07-08 10:55:42 +02:00