Commit Graph

1835 Commits

Author SHA1 Message Date
lebaudantoine dcfdd35c82 🔖(helm) release chart 0.0.23 2026-06-12 09:38:53 +02:00
snyk-bot 16f465432d fix: upgrade react-i18next from 15.1.1 to 17.0.8
Snyk has created this PR to upgrade react-i18next from 15.1.1 to 17.0.8.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.eu.snyk.io/org/lasuite-dinum-default/project/96ea03d8-8d09-493d-86bf-363f274e129e?utm_source=github&utm_medium=referral&page=upgrade-pr
2026-06-12 09:11:07 +02:00
lebaudantoine 90f95ab2a9 ⬆️(frontend) upgrade libcrypto3 and libssl3 to 3.5.7-r0
Patches CVE-2026-45447 (HIGH), heap use-after-free in OpenSSL
PKCS7_verify(), flagged by Trivy scan of the frontend image.

- libcrypto3: 3.5.6-r0 -> 3.5.7-r0
- libssl3: 3.5.6-r0 -> 3.5.7-r0

Ref: https://avd.aquasec.com/nvd/cve-2026-45447
2026-06-11 16:26:13 +02:00
leo 61f7ad05e9 🐛(frontend) fix noise reduction left-channel-only audio
Fix bug with RNNoise noise reduction which interprets mono input
as left channel with some browsers.
2026-06-11 16:26:13 +02:00
lebaudantoine 69a6dd1463 🩹(frontend) fix missing default-src in CSP configuration
The CSP was missing a default-src directive (flagged by CodeRabbit).
Without it, styles, images, fonts, and media are completely
unrestricted, which undercuts the otherwise strict policy.

Set default-src to 'self' and add an explicit style-src directive
since we rely on inline styles (e.g. #close-msg and the view
toggling use inline style attributes), so style-src needs to allow
'self' and 'unsafe-inline'.
2026-06-11 15:16:52 +02:00
lebaudantoine 54908b9caa 🔧(addon) parametrize the frontend nginx configuration via a volume
Mount the nginx configuration used by the frontend image as a volume
so the default one can be overridden by a custom configuration at
deployment time.

Based on suggestions from @rouja to help parametrize the
configuration at deployment time.
2026-06-11 15:16:52 +02:00
lebaudantoine 08af6e77bb 📌(addon) pin dependencies to their currently installed versions
Improve code quality and reproducibility by pinning project
dependencies to the exact versions currently installed.
2026-06-11 15:16:52 +02:00
lebaudantoine 4525c9c255 💄(addon) align the beta tag with the UI kit styling
Update the beta tag to follow the UI kit styling so it clearly
signals that the plugin is in beta.
2026-06-11 15:16:52 +02:00
lebaudantoine 44d3ed8f2e (addon) add a feedback form link in the footer
Add the possibility to display a feedback form link in the footer to
help collect feedback from the first users of the plugin.

Once the plugin is in production at scale, this will be replaced
with a link to the support page.
2026-06-11 15:16:52 +02:00
lebaudantoine 9522dc72ac 📈(addon) allow appending an Outlook source query param to the URL
Offer the possibility to append a query parameter at the end of the
meeting URL to flag links created from the Outlook plugin, inspired
by Zoom.

The behavior is toggled via an environment variable.
2026-06-11 15:16:52 +02:00
lebaudantoine 09dbb250a7 🚸(addon) switch add button to remove when a link already exists
From the task panel, change the "add" button to "remove" when a
meeting link is already present.

This will be updated to "update" once the external API supports
updating an existing room.
2026-06-11 15:16:52 +02:00
lebaudantoine 321cb99f82 🩹(addon) skip link generation when one already exists in the event
Detect whether a meeting link is already present in the calendar
event item or its body, and prevent generating a new link if one is
found.

Detection is based on the presence of the app URL in the text. This
is imperfect but covers the most naive scenarios.
2026-06-11 15:16:52 +02:00
lebaudantoine 52bad6faaf 🔖(addons) bump plugin version to 0.0.2
Update the plugin version displayed to the user to 0.0.2 and move the
tag from alpha to beta.
2026-06-11 15:16:52 +02:00
lebaudantoine 0065527a5e 🌐(addon) internationalize the addon
Refactor the plugin to support internationalization and ship it in
three languages.

Internationalizing requires updating the manifest, which involves
touching the Helm chart and releasing a new version. Ship a beta
version of the plugin once the i18n work is done to bundle these
changes together.
2026-06-11 15:16:52 +02:00
lebaudantoine 818d20888e 💄(addons) use the app logo for the "create a meeting link" ribbon action
In the ribbon, the "create a meeting link" action was displayed with
the generic add icon, which is fitting in the context of a menu but
not explicit enough on its own.

Following feedback from the social ministries, replace the add icon
with the app logo to make it clear that this button creates a
videoconference link.
2026-06-11 15:16:52 +02:00
lebaudantoine f1fce4431f ♻️(addons) insert meeting link at the cursor position
Instead of appending the meeting link at the end of the email, insert
it where the user's cursor is. This ensures the link is not placed
after the email signature, or below the quoted thread in a reply.
2026-06-11 15:16:52 +02:00
lebaudantoine 491866e584 ♻️(addons) try using the default client font
Refactor the message builder so that rendered messages are displayed
in a nicer way. Based on user feedback from the social ministries.

Go for a hybrid approach: on the desktop client, insert plain text so
it picks up the default font configured by the client theme; on the
web client, insert HTML, as the editor there is rendered using HTML.
2026-06-11 15:16:52 +02:00
lebaudantoine f777f2fdeb 🩹(addon) show fallback message when dialog cannot auto-close
The dialog window does not close itself on Outlook Desktop, which
opens links in a webview that behaves like a different browser.

Calling window.close() fails because, for security reasons, JS is
prevented from closing the window. The browser considers that the JS
script is not the one that opened the dialog.

The dialog also loses its reference to the opener due to the
redirection, so there is no way to message the parent to trigger a
close.

Keeping the dialog reference on the parent side does not help either:
since the opener is lost, the parent cannot call close on the dialog.

After investigation, go with a temporary solution that shows an
explicit message hinting the user to close the dialog manually if it
does not close automatically.
2026-06-11 15:16:52 +02:00
lebaudantoine e5184695bb 🔖(minor) bump release to 1.19.0 2026-06-04 19:13:32 +02:00
leo 3537fdf648 ♻️(agents) replace deprecated room options API
The LiveKit integration was still using RoomInputOptions and
RoomOutputOptions, which emit deprecation warnings.
Update the implementation to use the unified RoomOptions API.
2026-06-04 18:37:48 +02:00
lebaudantoine 7b485377cf ⬆️(agents) upgrade urllib3 to >=2.7.0 to address CVE-2026-44432
Pin urllib3 to >=2.7.0 via uv constraint-dependencies to fix a moderate
severity decompression DoS vulnerability. Affected versions (2.6.0 to
<2.7.0) could fully decode a compressed response body in a single
operation, leading to excessive CPU and memory consumption.
2026-06-04 17:53:40 +02:00
lebaudantoine f5a5fa93af ⬆️(agents) upgrade idna to >=3.15 to address CVE-2026-45409
Pin idna to >=3.15 via uv constraint-dependencies to fix a moderate
severity (CVSS 5.3) information disclosure vulnerability. The flaw is
network-exploitable with no authentication required.
2026-06-04 17:53:40 +02:00
lebaudantoine aca3261a9a ⬆️(backend) upgrade idna to >=3.15 to address CVE-2026-45409
Pin idna to >=3.15 via uv constraint-dependencies to fix a moderate
severity (CVSS 5.3) information disclosure vulnerability. The flaw is
network-exploitable with no authentication required.
2026-06-04 17:53:40 +02:00
lebaudantoine 8c3d1bdd95 🗑️(frontend) remove vite-tsconfig-paths dependency
Uninstall `vite-tsconfig-paths` as path resolution is now supported
natively by Vite's built-in configuration.

Remove the unused dependency and simplify the frontend tooling setup.
2026-06-04 17:18:33 +02:00
lebaudantoine a01f0256a1 ⬆️(frontend) upgrade eslint-plugin-react-hooks by two major versions
The upgrade introduced around 50 new linting errors. Fix the
low-hanging fruit and address straightforward violations.

Several of the new rules appear to target patterns intended for newer
React compiler capabilities. Since the project currently runs on
React 18 rather than React 19, disable these rules for now instead of
applying potentially inappropriate changes.

Follow-up work can address the new rules in a dedicated PR, potentially
alongside a future React version upgrade.
2026-06-04 17:18:33 +02:00
lebaudantoine 27ebc2f2e3 ⬆️(frontend) replace NodeJS.Timeout with ReturnType<typeof setTimeout>
Removes Node.js type dependency from browser/React code by substituting
the non-portable `NodeJS.Timeout` type with the standard
`ReturnType<typeof setTimeout>` equivalent across all affected files.

Also replaces `process.env.NODE_ENV` in Icon.tsx with
`import.meta.env.MODE` for Vite compatibility.
2026-06-04 17:18:33 +02:00
renovate[bot] 553df5070e ⬆️(frontend) update js dependencies 2026-06-04 17:18:33 +02:00
Florent Chehab c79984a883 🔒️(backend) prevent accessing files if they are not ready
With the addition of the ANALYSING state
files could be accessed in the short time they
were in that state.
We now require files to be in ready.

Also adds missing frontend types (no impact).
2026-06-04 17:03:42 +02:00
renovate[bot] 22b2e6bd1e ⬆️(dependencies) update aiohttp to v3.14.0 [SECURITY] 2026-06-04 16:06:10 +02:00
leo be35c1d6e0 ⬆️(dependencies) update python dependencies
Update python dependencies.

Co-Authored-By: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-04 15:34:39 +02:00
Florent Chehab 8d653b30e5 🧵(backend) improve robustness of the delete file process
* Make the call the delete celery task after the transaction
this makes sure the file object is in the right
state before being deleted.
2026-06-04 11:41:06 +02:00
Florent Chehab 5602d256d8 (backend) add file specific admin
Adds a file (background image) specific django admin.
Files can be previewed, and deletion is properly managed.
2026-06-04 11:41:05 +02:00
Florent Chehab d9804172e7 🔇(summary) make ffmpeg quiet
In the refactoring of the prepare pipeline, ffmpeg
was added in non quiet mode.
2026-06-04 10:22:27 +02:00
leo 61d0043790 🐛(agents) fix shutdown exception in metadata extractor
Remove a redundant drain operation causing an exception during the
metadata extractor shutdown.
2026-06-03 19:07:16 +02:00
lebaudantoine 6ccc9ef0bf ⬆️(frontend) upgrade frontend to ESLint 9
Manually upgrade the frontend codebase to ESLint 9.

Update the linting configuration and related code where required to
maintain compatibility with the new major version.
2026-06-03 18:45:48 +02:00
lebaudantoine 73a7841b96 🔖(minor) bump release to 1.18.0 2026-06-03 14:46:26 +02:00
Florent Chehab 6c25d0a525 🐛(backend) update alter file state migration predecessor
Last PR was merged a bit too quicly and another migration
was added before the PR one.
2026-06-03 14:18:58 +02:00
Florent Chehab d13e3a8a5d ️(backend) change db state instead of using long running row lock
When analysing a file, the previous commit introduced a row level lock
to make sure we would analyse and promote a single file.
This commit changes the locking mechanism so that it happens with
the upload state which avoids long running db locks and potential
perf issues.
2026-06-03 13:45:32 +02:00
Florent Chehab a82d7f885a 🔒️(backend) prevnt file change post checks
Before this commit, post a file check, the policy could be
reused to change the verified file.
Now, files are uplaoded to a temporary location, then inside
a transaction that prevents concurrent calls, the file is
copied to its final destination and the checks are run on that one.
A new file can still be updated with the policy but it will never be read, etc.

As part of this change, all files in the new tmp directory
on s3 should have an expiration policy.
2026-06-03 13:45:31 +02:00
lebaudantoine 5ef6e8b5ea 🔖(helm) release chart 0.0.22 2026-06-03 13:25:25 +02:00
lebaudantoine 913d4f91ae 👷(helm) add Kubernetes job for duplicate user merge command
Introduce a Kubernetes job to run the `merge_duplicate_users`
management command on the backend, as suggested by @rouja.

This provides a standard and reproducible way to execute the user merge
process in deployed environments without requiring manual access to
application containers.

The job can be used alongside the command's dry-run mode to validate
the impact of a merge operation before applying changes.
2026-06-03 13:19:26 +02:00
lebaudantoine 1f437089ad 📝(helm) correct chart value docstring for createsuperuser
Update the chart value docstring to reference the `createsuperuser`
command instead of `migrate`.
2026-06-02 21:55:46 +02:00
lebaudantoine 85eff8afaf 🧑‍💻(backend) add email filter to target subset of users for merge cmd
Add an email substring filter to the user merge management command,
allowing selection of a subset of users concerned by the merge process.

This enables safer incremental execution of the command by testing it
on a controlled group of users before applying it globally.

The goal is to validate behavior and ensure the merge process does not
introduce unexpected side effects or inconsistencies at scale.
2026-06-02 21:55:46 +02:00
lebaudantoine 29b0a6fcb4 🧑‍💻(backend) add management command to merge duplicate users
Add a management command to merge duplicate users and reassign all
granted resources to the most recent user account in the database.

Support a dry-run mode to estimate the impact of the operation before
applying any changes. This helps validate the command and identify
potential issues in environments where realistic testing is difficult.

Add unit tests to verify the command behavior and ensure database
integrity is preserved during the merge process.
2026-06-02 21:55:46 +02:00
lebaudantoine 3554b2eb53 ♻️(backend) defend user provisioning against race condition
Move user provisioning logic out of the external token viewset into a
dedicated service to keep the viewset lightweight and easier to
maintain.

While extracting the logic, refactor user object handling to improve
robustness and make the provisioning workflow easier to reason about.

Defend against race conditions when concurrent requests attempt to
provision the same user. Rely on the existing database constraints to
guarantee uniqueness and gracefully handle integrity errors raised by
concurrent creations.
2026-06-02 20:13:16 +02:00
lebaudantoine e25aa6ce05 (backend) add test coverage for blank sub behavior
Update the test to document the actual contract without modifying the
underlying model behavior.

These tests act as non-regression coverage and explicitly assert that
users may have a null sub or email. They are intended to document the
current behavior of the initial user model rather than evolve or
constrain it.

Ghost rows have not been reported as an operational issue. For the sake
of simplicity, avoid changing the model unless required by a concrete
issue or unless the benefits clearly outweigh the added complexity.
2026-06-02 20:13:16 +02:00
lebaudantoine a8b79740e9 🐛(backend) prevent duplicate pending users on concurrent requests
Fix a race condition in the external viewset where concurrent requests
could create multiple pending users with the same email address.

No database constraint enforced email uniqueness for pending users,
allowing duplicates to be created under load.

This caused issues during user reconciliation, which expects a single
matching pending user and raises a warning when multiple records are
found.

Add a narrowly scoped migration to enforce the uniqueness constraint
and address the identified issue.
2026-06-02 20:13:16 +02:00
lebaudantoine 28f652e035 🔧(backend) backport logging configuration from docs
Backport the logging configuration from docs to LaSuite Meet after
discussion with @lunika.

Add a proper base logging setup to restore usable logs in production.
The initial repository bootstrap lacked a complete logging
configuration, resulting in limited operational visibility.
2026-06-02 14:27:58 +02:00
lebaudantoine a4997e7431 🔖(minor) bump release to 1.17.0 2026-05-31 18:18:00 +02:00
snyk-bot 13c7b9ad40 fix: upgrade core-js from 3.48.0 to 3.49.0
Snyk has created this PR to upgrade core-js from 3.48.0 to 3.49.0.

See this package in npm:
core-js

See this project in Snyk:
https://app.eu.snyk.io/org/lasuite-dinum-default/project/af693e79-8c43-4c09-ab65-60580515c9e8?utm_source=github&utm_medium=referral&page=upgrade-pr
2026-05-31 00:16:26 +02:00