Friday, September 12, 2025
18 changes · saas-18.4
Resolved issues and error corrections
A timing issue in the point-of-sale self-order payment test was corrected so the generated self-order link includes the required access token. This keeps kiosk QR code payment validation reliable and prevents failures related to IoT payment channel setup.
Original PR description
A call to `_get_self_order_route` in the `test_online_payment_kiosk_qr_code` test was happening too early, resulting on getting the self order url missing the `access_token`. This resulted in making the test fail due to the override of the `iot_http` service in `pos_self_order_iot`, relying on this token to get the IoT WebSocket channel. Enterprise PR: odoo/enterprise#93895
This fix prevents a closed websocket connection from being treated as an unexpected internal error during test handling. It restores the intended cleanup behavior, reducing confusing error reports and improving reliability in core infrastructure.
Original PR description
Followup to 16.0-closed-in-stop-xmo: the condition in `stop` is a `hasattr`, so we need to delete `self.ws` not set it to `None`. Setting it to `None` means the condition passes then blows up as soon as we try to use it, which means we "just" converted all the old `WebSocketConnectionClosedException` to an `AttributeError`. https://runbot.odoo.com/odoo/error/231446 Forward-Port-Of: odoo/odoo#226267
Fixes an issue where users returning from an external link in a dashboard were taken back to the first dashboard instead of the one they had selected. This preserves the user’s place and avoids confusion when navigating between dashboards and linked pages.
Original PR description
Steps to reproduce: - go to dashboards - select a dashboard with external links on scorecard charts for instance (do not select the first dashboard) - click on the chart w/ the external link to be redirected - Go back to the previous page through the browser The selected dashboard is now the first dashboard instead of the one you came from. the behaviour was broken since the introduction of the path-based routing in #157867 as we did not specify a path for the dashboard action but still worked because the action params were sent in the context but this was corrected in #216067 task-5067826 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Due to time constraints the translations were not added in the commit adding the modules (72ac059edfcc35ad44c5faa9daf971123377af24). This commit adds the translations / fills the `.po` files. The translations were created by LMAN based on the 18.0 po files. Veri*Factu task: task-3745982 Forward-Port-Of: odoo/odoo#226298 Forward-Port-Of: odoo/odoo#225173
Original PR description
Due to time constraints the translations were not added in the commit adding the modules (72ac059edfcc35ad44c5faa9daf971123377af24). This commit adds the translations / fills the `.po` files. The translations were created by LMAN based on the 18.0 po files. Veri*Factu task: task-3745982 Forward-Port-Of: odoo/odoo#226298 Forward-Port-Of: odoo/odoo#225173
This update adjusts an internal email server test to match a changed error message from a supporting mail library. It helps keep automated quality checks reliable without changing how users work with Odoo.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226489
This update fixes failing automated tests in the online shop area. It helps keep the website sales feature reliable by ensuring test checks run successfully during validation.
Original PR description
runbot-error-227575 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Documents app now consistently shows the Activities button in the document chatter, including for files linked to other document-related models such as signing documents. This makes it easier for users to manage follow-ups and tasks from the same place without missing activity options.
Original PR description
Step to Reproduce: - Install `Documents_sign` module - open Documents - click on 'info & tags` button on the top right corner to show chatter - Open 'Odoo CLA.pdf' document Observation: - The Activities button is not shown in Chatter. Issue: - after this https://github.com/odoo/enterprise/commit/a32825ee00f2b330d99113f4d8c1488903fe744e, the activities button shows only for those documents which are related to `documents.documents` model or a document has no model, but it should be shown for all documents https://github.com/odoo/enterprise/blob/23fb26ae0f91a5bdb74d0d4fce48b31fa7abef86/documents/static/src/views/kanban/documents_kanban_renderer.xml#L21-L26 Solution: - Remove condition for Kanban and list view to show `activities` button in Chatter opw-5013427 Forward-Port-Of: odoo/enterprise#94361 Forward-Port-Of: odoo/enterprise#93093
The web test runner now reports critical setup problems during dry runs as real errors. This helps Odoo’s automated checks catch blocking test issues earlier and more clearly, reducing the risk of failed or misleading test runs.
Original PR description
The test runner replaces most occurences of `console.log` with a formatted `console.trace`, as to avoid duplicate runbot error messages in general. The issue is that during the dry run, errors that are caught should be logged on the runbot since these errors are more critical (i.e. duplicate test name, which will prevent the runner to run at all). This commit ensures that errors caught during dry run are logged as actual errors to prevent this issue. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225688
The web test runner now avoids over-simplifying test URLs when specific tests are excluded. This keeps automated test selections accurate, reducing the risk of running the wrong set of tests during development and validation.
Original PR description
Before this commit, when the test runner simplified the URL (e.g. if the runner is given the ID of every test in a suite, it will remove them and only include the suite ID), it always considered IDs as being "included", and ignored the "-" specifying that some IDs should be "excluded". --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225950
This fix makes the online rental checkout test wait until the cart has fully updated after a customer changes the rental duration. It helps prevent false build failures and improves confidence that rental pricing is displayed correctly before checkout checks continue.
Original PR description
steps to reprduce: 1. duplicate multi enterprise 18.0 database 2. run the tour `website_sale_change_rental_duration` in the duplicated database inspired from: https://github.com/odoo/enterprise/commit/c7542e897c537650966497065db9c7d033dcb8ee added a delay to wait when choosing the rental duration, after page is loaded when go to cart , check if the next page is loaded before checking untaxed amount build_error-227718 Forward-Port-Of: odoo/enterprise#93659 Forward-Port-Of: odoo/enterprise#89274
Survey datetime answers now show the same time in list views and detail forms by using the current user's timezone. This prevents confusion when reviewing submitted survey responses across different time zones.
Original PR description
Steps to reproduce ==================== 1. Create survey with some datetime questions. 2. Receive some response on it. 3. Check answer of datetime questions in answer tab. 4. Click on that answer to open form. ->The time shown in answer tab differs from actual value in form. The display_name of survey.user_input.line is computed based on the answers submitted by users. For questions of type datetime, the display_name was generated by converting the datetime value to a string without accounting for the user's timezone, leading to a mismatch between the actual value and the displayed time. After this commit ================== This commit updates the computation of display_name for datetime answers to consider the current user's timezone. Task-4890423 Forward-Port-Of: odoo/odoo#226354 Forward-Port-Of: odoo/odoo#216281
This fix prevents inserted non-editable blocks, such as banners or tables of contents, from blocking full-content deletion in the HTML editor. It adds a blank paragraph before those blocks so users can reliably select all content and delete it, avoiding frustrating editing leftovers.
Original PR description
**Current behavior before PR:** If the first child of an editable element was `contenteditable="false"`, selecting all content and pressing backspace would not remove everything. This was due to a Chromium bug where non-editable elements as the first child are not fully selected. **Desired behavior after PR is merged:** When inserting elements such as a banner or table of contents, a paragraph is added before them. This ensures that the editable element never starts with a non-editable child. task: 5010666 Forward-Port-Of: odoo/odoo#223357
Stripe payment card fields now use the language selected on the website instead of defaulting to the shopper's browser language. This keeps checkout wording consistent for multilingual websites and reduces confusion during payment.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Enable Stripe; 2. enable a second language on the website; 3. use second language on website; 3. go to checkout; 4. open card payment method. Issue ----- The card field values are displayed using the current browser's locale instead of the website's language. Cause ----- The `locale` parameter isn't included when connecting to the Stripe API. Solution -------- Include the lang from the `html` element via `_prepareStripeOptions`. If not present, let it fall back on the browser's locale. opw-5024805 Forward-Port-Of: odoo/odoo#226045
Fixes an issue in the website editor where choosing a vertical alignment option for a table cell did not apply the change because the menu closed too quickly. This makes table formatting more reliable for users editing website content.
Original PR description
### Steps to reproduce: - Navigate to the Website module. - Drag and drop a Text Snippet. - Create a Table (e.g., /table) and select a table cell. - Click on Vertical Align button in toolbar and apply alignment option. ### Description of the issue/feature this PR addresses: - When clicking on a vertical align option inside the dropdown, overlay was immediately closed. Because of this, the click event handler was not triggered, and the selected vertical alignment was not applied to the table cell. ### Desired behavior after PR is merged: - Prevent overlay from closing by using `data-prevent-closing-overlay`. task-5062814 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an internal dependency used by the Google Maps options in the website editor. It helps prevent editor issues caused by relying on a testing-only component, with no expected change to normal website visitor behavior.
Original PR description
The commit 47e971086ea57219a628a99d35e36354c71a4192 uses `Deferred` in the implementation of the google maps options plugin. But imported it from hoot. This commit fixes the import to use `concurrency.js` instead. task-4367641
This fixes an issue where selected website color palette names were saved without the expected quotation marks after a recent refactoring. Restoring the correct format helps prevent theme customization settings from being misread or applied incorrectly.
Original PR description
Since the refactoring, the `color-palettes-name` value is not surrounded by quotes in the `user_values.scss` anymore. This commit restores the quotes upon selection. task-4367641
Long custom out-of-stock messages on product pages now stay within their display box instead of spilling over at narrower screen sizes. This keeps product pages looking clean and readable for shoppers on different devices.
Original PR description
When the Out-of-Stock message contains a long string of text at certain screen sizes the text is longer than the parent div Steps to reproduce -------------------- 1. Have a tracked product with Continue Selling off and a long custom Out-of-Stock Message. 2. View the product shop page on the website. 3. Reduce the horizontal screen size until the text goes over the edge of the parent div(red rounded box). Cause ----- No CSS to handle when the text is longer than the parent element. Solution -------- Add text-wrap to parent div so the child element text wraps when necessary. opw-5056843
On small screens, selecting items such as Preferences from the user menu now closes the burger menu first. This prevents dialogs from opening hidden behind the menu, making mobile navigation clearer and less frustrating.
Original PR description
This commit ensures the BurgerMenu is closed when clicking on one of its items, and specifically on one of the BurgerUserMenu items. Steps to reproduce (on small screen): - on a "base" database (no app installed) - click on the BurgerMenu (top right) - click on "Preferences" => the user's preference dialog opens behind the BurgerMenu Forward-Port-Of: odoo/odoo#226739 Forward-Port-Of: odoo/odoo#225696