Wednesday, October 15, 2025
6 changes · 17.0
Enhancements to existing features
The website editor now detects when a user's browser or device cannot support image filters and disables that option instead of showing an error. This improves editing reliability, especially on Linux Chrome setups where WebGL may no longer fall back to software rendering.
Original PR description
On recent versions of Chrome for Linux (v140+), the old SwiftShader software fallback for WebGL has been removed. As a result, new window.WebGLImageFilter() now throws if no GPU context is available, typically when WebGL is disabled or unsupported. Since the application cannot enable WebGL from JavaScript, this commit improves the user experience by detecting the absence of a WebGL context early and disabling image filters in edit mode. Instead of raising a traceback, the editor now skips the filter feature and can optionally display a friendly message explaining that WebGL is required to use image filters. This avoids runtime errors and ensures a more robust behavior on platforms where WebGL is unavailable. task-5117584
Resolved issues and error corrections
This fixes issues in the Social app when commenting on Twitter posts. Images now upload with the correct file type, and comment text is no longer lost when adding files or emojis.
Original PR description
Issue 1 ======= Steps to reproduce ----------------------- 1. Go to the Social app. 2. Create or Select any twitter post. 3. Add a comment to that post with an image. 4. Press Enter. ---> An error…
Issue 1
=======
Steps to reproduce
-----------------------
1. Go to the Social app.
2. Create or Select any twitter post.
3. Add a comment to that post with an image.
4. Press Enter.
---> An error notification will be shown.
When adding an image in a post comment to Twitter, the image was not uploaded properly because the MIME type was not set, and it defaulted to `application/octet-stream`.
This caused the following error:
```
{"errors": [{"parameters": {"$.media_type": ["'application/octet-stream'"]},
"message": "$.media_type: does not have a value in the enumeration
[video/mp4, video/webm, video/mp2t, video/quicktime, text/srt, text/vtt,
model/gltf-binary, model/vnd.usdz+zip, image/jpeg, image/gif, image/bmp,
image/png, image/webp, image/pjpeg, image/tiff]"}], "title": "Invalid Request",
"detail": "One or more parameters to your request was invalid.",
"type": "https://api.twitter.com/2/problems/invalid-request"}
```
From the above error, it's clear that Twitter only accepts specific MIME types.
This fix ensures the image has the correct MIME type so it can be uploaded without issues.
-------------------------------------------------------------------------------------------------------------------------------
Issue 2
=======
Steps to Reproduce
------------------------------
1. Select any post from social feed.
2. Add text comment or edit existing comment.
3. Upload file or add emoji.
=> The comment text is cleared/reset to its initial value.
Technical
------------------------------
With commit [1] we added `t-att-value` which sets the value of the textarea
on every re-render of the component.
After this commit
------------------------------
The initial value is only set once when component is mounted.
Removed `remove image` button for attachment while posting comments.
[1] https://github.com/odoo/enterprise/commit/ced5e88f433b7b9a8e1429259cd8bb6594b34852
Task-4845385Users can now print or export their own timesheets from a single private project without encountering an access error. This removes an inconsistency that blocked valid reporting for assigned users while keeping the same information visibility already available elsewhere in Odoo.
Original PR description
****Behavior:**** **Current:** When a user with only 'User' access to Projects and Timesheets, is assigned to a task in a Private project by an admin user, they can then log timesheets on the task as…
****Behavior:**** **Current:** When a user with only 'User' access to Projects and Timesheets, is assigned to a task in a Private project by an admin user, they can then log timesheets on the task as it appears under "My Tasks". The user might then want to print or export the timesheets form the list view. - If the selected timesheets come from only a single private project : an Access Error is raised - If the selected timesheets come from multiple private projects, or a mix of public and private ones : no Error is raised The issue comes from the need to access to the project's name (since the project is private to the user the code raises the error) as well as the company's name. And it only happens when single projects are selected, in the other cases, the exported pdf shows the project's name at another location without error. **Expected:** Since the information is already accessible through multiple other places in odoo (and even in the exported pdf), we should allow the access here aswell. So now when printing or exporting a timesheet from a single private project, no Access Error is raised. **Steps to reproduce:** - Create 2 different projects - Create a task in each - Assign it to another user (Make sure the other user only has user access to timesheets and projects) - Set each project's visibility setting to private - Log in with the other user - Go to Timesheets --> List View Single projects: - Select one or multiple timesheet entries from one of the private projects - Select Print -> Timesheets - You should see an Access Error Multiple projects: - Select one or multiple timesheet entries from a combination of both private projects - Select Print -> Timesheets - You should not have any Errors opw-5127526
Changing the timezone on an appointment page could crash the booking flow when no specific resource filter was selected. The fix ensures the system uses the appropriate available resources automatically, keeping appointment slot refreshes working smoothly.
Original PR description
Changing the timezone on the appointment page triggers a refresh of the available slots. In that flow, the controller computes the maximum possible capacity using `filter_resources`. When no specific…
Changing the timezone on the appointment page triggers a refresh of the available slots. In that flow, the controller computes the maximum possible capacity using `filter_resources`. When no specific resource is selected, `filter_resources` remained falsy and was passed down to `_get_max_capacity_possible`, which then attempted to call a recordset method on a boolean value. Steps to reproduce: 1. Appointments > Dental Care 2. Select a person 3. Change the timezone 4. Observe a traceback Current behavior: `AttributeError: 'bool' object has no attribute '_get_filtered_possible_capacity_combinations'` because `filter_resources` is falsy (boolean) instead of a recordset. this fix: When `filter_resources` is falsy, compute it with `self._get_possible_resources(appointment_type, filter_resource_ids)` before calling `_get_max_capacity_possible(...)`. This guarantees a proper recordset is used and avoids calling recordset methods on a boolean. If a resource is explicitly selected, behavior is unchanged. If not, we now use the same "possible resources" logic already employed by the rest of the route. opw-5152162
Replies to signature request, confirmation, or refusal emails are now shown in the related signing record's chatter. This helps teams keep all signer communication visible in one place and reduces the risk of missed responses.
Original PR description
Previously, when users replied to sign request, signature confirmation, or refusal emails, their responses were not displayed in the corresponding sign request’s chatter. This fix ensures that replies to those emails are now properly routed and shown in the related record’s chatter. task-5105494
This fixes an issue where Mexican electronic invoice XML attachments could be saved with the wrong file type for users with limited permissions. As a result, related Documents records are created correctly when accounting centralization is enabled.
Original PR description
When creating an XML attachment as a user without Write access on the ir.ui.view model, the Mimetype will be set to plain/text. In particular, this causes issues when Accounting centralization is enabled in Documents, as the corresponding Document will only be generated if the Mimetype is application/xml. Creating the XML as Superuser avoids this issue. Similar to https://github.com/odoo/odoo/pull/124507 opw-5057038