Tuesday, October 21, 2025
24 changes · master
Resolved issues and error corrections
The nightly documentation link test now checks the correct documentation version, preventing false failures caused by an incorrect version tag. This helps keep automated checks reliable without changing any user-facing behavior.
Original PR description
> AssertionError: 404 != 200 : The following link is broken: 'https://www.odoo.com/documentation/19.1a1/applications/marketing/sms_marketing/pricing/pricing_and_faq.html' --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Feedback added when completing a meeting activity is now saved in the internal notes field instead of the event description. This prevents private feedback from being synced to external calendars or triggering unnecessary calendar update notifications.
Original PR description
When using a meeting as activity, one can add feedback when marking the activity done. This feedback is currently added to the calendar.event description, which can in turn be synchronized with external calendars and trigger calendar event update notifications. As we added an internal 'notes' fields in [1] on the calendar.event model, add the feedback to that field instead. [1] : odoo/odoo@67d5383ce4a5fe2e1307ef787939d7e2371e6529 Task-5143141 Forward-Port-Of: odoo/odoo#230578
The email composer now handles failed file uploads safely instead of showing an error traceback. This improves reliability for users composing messages with attachments, especially when an upload fails due to file or connection issues.
Original PR description
Before this commit, when a file upload in the full composer would be fail, it would result in a traceback. This happens because we would try to access the attachment resulting from the upload, which is however undefined when the upload fails. This commit fixes the issue by guarding the access of said attachment. task-4778468 Forward-Port-Of: odoo/odoo#231219
The event setup screens now show debug-only menu options with better spacing between each label and field. This makes it easier for users configuring event website menus to understand which option they are changing.
Original PR description
The PR fixes the display of the fields displayed when the debug mode is activated and used to show buttons in the menu of event website pages. Previously, it was difficult to determine what were the labels of the fields. To make it clearer, the spaces between the label-field couples have been increased. Task-4750239 Forward-Port-Of: odoo/odoo#214135
Portal users viewing shared project tasks will no longer see a chat expand option that could cause an error. This prevents a traceback and keeps the shared project task experience stable for external users.
Original PR description
Steps to reproduce: === - Create a project. - Share the project with access to edit rights to the portal user. - Log in as the portal user. - Open the shared project and then open a task. - Click on the expand button in the chat. Issue: === A traceback occurs when trying to expand the chatter in a project sharing task. Cause: === `inFrontendPortalChatter` not being set in `useSubEnv` is the reason for button appearance, and we don't have the necessary composer for it to render in the project sharing bundle. Fix: === Define missing `inFrontendPortalChatter` to hide the expand chatter composer action as it was not meant to be available in the portal/front-end. task-5049129 Forward-Port-Of: odoo/odoo#231441 Forward-Port-Of: odoo/odoo#231360
Opening the Helpdesk ticket list with no tickets now works reliably instead of showing an error. This improves stability for teams setting up or using Helpdesk before any tickets have been created.
Original PR description
When accessing the Helpdesk ticket list view with zero tickets, the view previously crashed due to improper handling of folded sample data. This commit ensures that sample data folding does not trigger errors when the view is empty, improving overall stability. Steps to reproduce: 1. Navigate to Helpdesk > Teams > Tickets. 2. Ensure there are no tickets. 3. Switch to list view. Task-4971510 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226253
This fixes an issue where highlighted text in eLearning course articles appeared correctly in the normal view but disappeared in fullscreen mode. Learners now see consistent article formatting regardless of how they view the course content.
Original PR description
**Steps to reproduce:** - Go to eLearning course on the website - Edit an article - Add the highlighting effect on the text - Save the changes - The text is properly displayed in normal article - Go to the fullscreen version - The highlighting is not present in this version **Issue:** This is an ordering issue caused by the dynamic rendering of fullscreen slides. When in normal mode, the content is initialized and then the `TextHighlight` widget is started. But the rendering of the slides in fullscreen mode is delayed and occurs after the widget is applied. **Fix:** Recreate and restart the widget on `_renderSlide` in the `slides_course_fullscreen_player`` opw-4978798 related: https://github.com/odoo/odoo/commit/f64c9f27f1a9106bc009ad2f696845f2c5c58066 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232209 Forward-Port-Of: odoo/odoo#225150
A previously disabled website editor test has been re-enabled after the timing issue that caused unreliable failures was addressed. This helps ensure hover-based animation options continue to work correctly and reduces the risk of regressions in the website builder.
Original PR description
In commit 22c4ecff46d34a37549dfa3feda8cfe12cf00407, the test was disabled because it had non-deterministic failures It was failing because the preview (that was made by the hover before the click) took sometimes long enough that `waitForEndOfOperation` was executed before preview finished, so it only waited for the end of the preview, not the end of the commit made by the click. Thus the `waitDomUpdated` that followed did not wait for the update caused by the commit (thus had nothing to wait for). And the assertions failed as the sidebar was not updated yet. In order to wait enough, the helper `waitSidebarUpdated` has been introduced in commit 143c40bdb7eac35126d51ac85fb89e37ecb75f13. In this commit, we just un-skip the test (which was updated to use that helper) task-4367641 Forward-Port-Of: odoo/odoo#226814
Status receipts printed through IoT printers now use consistent spacing after each line. This makes the printed information easier to read and avoids uneven formatting on receipts.
Original PR description
This PR makes the newlines the same after every line on the status receipt Forward-Port-Of: odoo/odoo#229737
The test framework now checks for processes that are still running after a test finishes and logs them during server shutdown. This helps prevent automated tests from hanging or producing unreliable results, improving development stability without affecting end users.
Original PR description
In some case a process could remain active at the end of a tests In addition to possible race condition, this can also cause a program to remain stuck at the end of the tests. This commit proposes to - catch all remaining processes at the end of a base case. - log a message if a process is found at the shutdown of the server. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231942
The product page layout on mobile has been adjusted by removing extra padding that caused carousel indicators to appear misaligned. This improves the shopping experience by making product image navigation look cleaner and more consistent on small screens.
Original PR description
This PR removes unnecessary mobile padding that misaligns the carousel indicators. task-5126294 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229319
This fixes how Odoo stores number grouping settings when creating a language, preventing invalid formatting data from being saved. It helps keep translations and locale-based formatting reliable across environments, including cases not covered by the default test setup.
Original PR description
When `conv.get('grouping')` returns a valid list the format will be `'[x, y, z]'` which is not a valid format. This will make the test `test_lazy_translation` fail.
The reason the test doesn't fail on runbot is because runbot uses the `C` local which make the code always fallback on the `or '[3,0]'` and by doing so hides the issue.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prNew user signatures now place the user's name in a standard text block instead of a paragraph, preventing unwanted extra spacing and duplicated paragraph formatting when editing signatures. Existing user signatures are not changed automatically, but demo and admin defaults are updated for consistency.
Original PR description
Prior to this commit, the default signature for users was their name wrapped in a `p`. This is not what we want, because a `HTMLParagraphElement` natively has a margin-bottom, and when a user creates a newline from a paragraph in the HTML Editor, the paragraph is cloned. After this commit: the user name is wrapped in a `div` instead. This does not update existing users signatures. To switch to a `div`, they will have to select the desired lines, and change their type from "Paragraph" to "Normal". Demo and admin users are updated too, because lxml `document_fromstring` would wrap text content in a `p` during record creation. task-5149570 Forward-Port-Of: odoo/odoo#230275
Canned responses included in the default and demo mail data are now shared with the right user group. This ensures users can see and use the prepared OdooBot responses as intended, improving consistency in customer and internal communications.
Original PR description
**Description of the issue this PR addresses:** Modify Canned Response master and demo data **Current behavior before PR:** Before this PR, canned responses created by OdooBot in master and demo data were not shared effectively, so they were not visible to anyone. **Desired behavior after PR is merged:** This PR ensures canned responses created by OdooBot are shared properly, by assigning a user group, ensuring that everyone can see them. task-[5069111](https://www.odoo.com/odoo/project/1519/tasks/5069111) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231976 Forward-Port-Of: odoo/odoo#228006
Fixes an issue where changing the shape of a GIF image in the website editor could trigger an error. Users can now apply shape options to GIF images without disrupting their editing workflow.
Original PR description
Steps to reproduce: =================== 1- Add an image of type GIF. 2- Try to change its shape. → Traceback occurs. Cause: ====== The `process` image function can return a callback function when GIF…
Steps to reproduce:
===================
1- Add an image of type GIF.
2- Try to change its shape.
→ Traceback occurs.
Cause:
======
The `process` image function can return a callback function when GIF transformation must be skipped:
https://github.com/odoo/odoo/blob/7f95cc6094b914c57b6e36ad072ebb2c9c3b324b/addons/html_editor/static/src/main/media/image_post_process_plugin.js#L78
It can also return an object `{ url, newDataset }`: https://github.com/odoo/odoo/blob/7f95cc6094b914c57b6e36ad072ebb2c9c3b324b/addons/html_editor/static/src/main/media/image_post_process_plugin.js#L224
Only the object case was handled:
https://github.com/odoo/odoo/blob/7f95cc6094b914c57b6e36ad072ebb2c9c3b324b/addons/html_editor/static/src/main/media/image_post_process_plugin.js#L231
As a result, when a function was returned, the image source was set to `null`, because `processed` was a function and didn't have a `url` or `newDataset`, causing a crash here:
https://github.com/odoo/odoo/blob/22c83301337e40699b11621053af627f5bfd505b/addons/html_builder/static/src/plugins/image/image_shape_option_plugin.js#L412
Solution:
=========
Ensure that only the `url` and `dataset` are returned, since the same
function is called elsewhere expecting those values.
opw-5137667
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#231370The stock picking operations report now sorts products according to their warehouse location again. This makes receipt and delivery documents easier to read and helps teams find items in the expected location order.
Original PR description
Steps to reproduce: - Create an operation (Receipt, Delivery, etc..) - Add move lines with different locations (WH/Stock, WH/Stock/Shelf 1, etc..) Issue: Products are not sorted based on picking operation's location. Iterations on the picking operations were on the move_line directly. In 18.2, it was changed to iterate on the move itself, but the sorting was disregarded therefore it was added again with some modifications to cope with the new iterations. The change was made on this PR: See https://github.com/odoo/odoo/pull/152280 Task: 4570203 (Unreleated but addressed on this task) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232101
Icons created in Studio are now reduced to a maximum of 64 by 64 pixels before being saved. This keeps app icons lightweight, reducing storage, cache size, and request overhead without changing how users create icons.
Original PR description
Before this commit, the IconCreator images were sent as is in their full size. Downstream it was problematic because apps' icons were bigger than necessary, bloating the different caches, the database, and the request. After this commit, icon are resized to a max of 64x64 pixels. Forward-Port-Of: odoo/enterprise#97626 Forward-Port-Of: odoo/enterprise#94480
The spreadsheet sale management field sync now handles undo and redo actions without crashing. This improves reliability for users editing linked sales spreadsheet data and reviewing version history.
Original PR description
Fix an issue where field sync would crash when used with UNDO/REDO. Task: 4854879 Forward-Port-Of: odoo/enterprise#97424 Forward-Port-Of: odoo/enterprise#92883
This fix adds the missing payroll group setting to several Swiss payroll employee fields. It helps ensure those payroll details are correctly organized and displayed, reducing configuration or validation issues during payroll processing.
Original PR description
The payroll group was missing on some payroll fields. Related runbot issue: https://runbot.odoo.com/odoo/runbot.build.error/233445 task-5179821 Forward-Port-Of: odoo/enterprise#97611
Updated an HR Payroll automated test so it remains reliable with newer Chrome browser behavior. This helps keep payroll development checks stable and avoids false test failures unrelated to product functionality.
Original PR description
Since either 140 or 141[^0] Chrome uses compact serialization rules for text-decoration, as a result of w3c/csswg-drafts#12486. This was merged [on August 12th][CL-6824265] and Chrome 139 was cut on August 5 so couldn't have had this change. The new serialization rule means values which can be ommitted from a shorthand (default or fallback) should be, so the default `text-decoration-line` and a `text-decoration-color` matching the `color` won't be serialized in `text-decoration` anymore. Instead of matching the shorthand, match the actual stored properties. [^0]: 140 was not deployed on chrome next so it may or may not have been broken then [CL-6824265]: https://chromium-review.googlesource.com/c/chromium/src/+/6824265 Forward-Port-Of: odoo/enterprise#97667
This fixes automated test behavior by skipping an Early Payment Discount scenario when the full accounting app is not installed. It prevents false test failures in batch payment checks, helping keep validation results reliable without changing business functionality.
Original PR description
Some new tests would test for the application of Early Payment Discounts in the bank reconciliation widget, but without the accountant module installed, that doesn't make much sense as a payment with move is automatically created for those cases, rendering the test useless. runbot error 233509
This update prevents batch payment tests from failing when the Accountant module is not installed. It improves test reliability across different system setups without changing business features or user workflows.
Original PR description
Issue: some tests may fail when "accountant" module is not installed. Solution: Handle the case when "accountant" module is not installed separately as it is done in previous versions. runbot-231231,231238
The Documents app now correctly updates debug mode when users use the command palette shortcut. This avoids confusion where the URL did not reflect the requested mode unless edited manually.
Original PR description
Issue: In the documents app toggling debug mode through the command palette (ctrl-k) does not work. Manually editing the URL works as expected. Cause: A patch on `router.stateToUrl` for the documents app rebuilds the URL to create clean, shareable links. When doing so, it attempted to preserve the debug status by referencing the global `odoo.debug`. This global object did not reflect client-side state changes. The command palette correctly provides the intended future state to the router. The patch was ignoring this incoming state and using the outdated global value, causing the generated URL to be incorrect. Solution: Modify the patch to use the `state` argument provided to `stateToUrl`, which contains the correct, up-to-date information for the navigation. Task-5095056 Forward-Port-Of: odoo/enterprise#96275
This update adjusts demo employee signatures so names use a cleaner layout by default. It avoids extra spacing that previously appeared in signatures, reducing manual cleanup for users setting up or reviewing these records.
Original PR description
Adapt signatures for Laurie Poiret and Maggie Davidson so that they are wrapped in a `<div>` instead of a `<p>`, because lxml `document_fromstring` would wrap text content in a `p` during record creation. Ideally all user data records should do that for their signature field. This commit only updates the main ones. `p` in a signature is not desired because it has a native margin-bottom, and the user has to change it to a `div` in order not to have it. Making `div` the default container for signatures simplifies that tedious process. task-5149570 Forward-Port-Of: odoo/enterprise#97229