Wednesday, April 22, 2026
11 changes · saas-18.3
Enhancements to existing features
This update makes test waits report the real underlying problem when a connection is lost, instead of showing a generic cancellation message. It also checks for an existing failure before timing out, which helps surface the true cause faster and makes debugging easier.
Original PR description
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because…
This case induces confusion in the ranks: when the WS connection fails, the result of the run is set to failure then every outstanding response is cancelled. For `_wait_ready` specifically, because it's a blocking wait on a request it yield a confusing result as the run fails with `CancelledError` and the actual cause (the WS was closed) is lost. One option would be to `set_exception` on the waiting responses, but I feel like this could create other confusing knock-on effects e.g. more evented waits which currently get ignored might start raising exceptions (although that seems unlikely as callbacks apparently do get called on cancel), and since issues with cancelling only seem to appear in `_wait_ready` that seems like overkill. Instead have `_wait_ready` handle cancellation by first checking if the result is in error, and using that to raise the underlying error, otherwise retry (and ultimately timeout, probably). And while at it, before signaling a timeout check if the run is in failure and raise that immediately, just in case. https://runbot.odoo.com/odoo/error/233738 Forward-Port-Of: odoo/odoo#260324
Resolved issues and error corrections
When users type an email address in the editor and then press space, it is now automatically turned into a clickable email link. This makes it easier to create contact links quickly and helps keep content formatting consistent.
Original PR description
Before this commit: when typing an email address, it's not converted to a mailto link after spacing. After this commit: the mailto link is created after spacing. task- 6053993 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#258736 Forward-Port-Of: odoo/odoo#257497
Miscellaneous changes
Forward-Port-Of: odoo/enterprise#114395 Forward-Port-Of: odoo/enterprise#114366
Original PR description
Forward-Port-Of: odoo/enterprise#114395 Forward-Port-Of: odoo/enterprise#114366
When a vendor bill is created from a UBL XML file, the chatter now shows the proper import message instead of displaying an empty or incorrect entry. This makes the document history clearer and helps users understand how the invoice was imported.
Original PR description
[FIX] account_edi_ubl_cii: Print right message in chatter at import When a UBL XML invoice is imported in vendor bills and no logs are collected, a message 'None' is printed in the chatter and the message 'Format used to import the invoice: ...' is not printed This commit fixes both issues no-task 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#260374
This change updates the Windows packaging setup to include optional dependencies that were missing before. It helps ensure Windows installations have the needed components available, reducing setup issues for users on that platform.
Original PR description
Forward-Port-Of: odoo/odoo#258320 Forward-Port-Of: odoo/odoo#258128
This change fixes an unstable automated test for shared activity updates across browser tabs. It prevents an internal data route from interfering with the test, making the test results more reliable and reducing false failures in development and CI.
Original PR description
The `@mail/activity/activity/activity updates are shared between tabs` fails in a non-deterministic fashion. It occurs because the `/mail/data` route can interfere with the test. runbot-242616 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#260265
This update corrects the placement of the power buttons in Knowledge so they appear next to the intended content block. It improves the visual layout and makes the editor behave more consistently for users.
Original PR description
Current behavior before PR: - In knowledge, the power buttons were displayed at the wrong position. They were displayed before the block hint instead of after it. Desired behavior after PR is merged: - In knowledge, the editable has a margin applied to it. As a result, the block does not start at the editable's left position but slightly inside it, causing the power buttons to be displayed at the wrong position. Now, the power buttons' position is set using the block's left position so that they are displayed correctly. task-6102944
This update corrects an automated test for Mexico electronic invoices after the rounding behavior was changed back to the expected mode. It helps ensure the system continues to validate invoice totals properly and avoids test failures during maintenance and future updates.
Original PR description
https://github.com/odoo/odoo/pull/255574 change the rounding mode back to mixed. This break the test modified in this PR. opw-5963855 Forward-Port-Of: odoo/enterprise#114081
Grouped list views now keep showing the actual number of records when the pager is used, instead of switching to a fixed limit value. This makes record counts more accurate and avoids confusion when users browse through grouped data.
Original PR description
When a pager is needed in a grouped list view and if the total number of record is greater than the `count_limit` (by default equal to 10000); opening the group or pressing the "Next" button will display the `count_limit` in the Pager.
This behavior can be optimized since the `web_read_group` call already computed the total count.
This commit allow the grouped list pager to display the total record count if it was already computed.
Steps to reproduce:
in a list view with 10 records, all in the same group for simplicity:
```xml
<list limit="2" count_limit="8">
<field name="foo"/>
</list>
```
- group the view by "foo" => The pager displays: `"1-2 / 10"`
- click on the 'next' button of the pager => The pager displays: `"3-4 / 8"`
8, the `count_limit` is shown instead of 10, the number of records in the group.
task-6053705
Forward-Port-Of: odoo/odoo#259858
Forward-Port-Of: odoo/odoo#259562This change ensures partner document details are only filled in when the partner is a valid Nemhandel participant. It prevents unnecessary processing and avoids test failures caused by the update being triggered in cases where no setup was expected.
Original PR description
The method to fill the supported documents of a partner was called even if it was not a valid Nemhandel participant. This would cause some test to fail as the call was unexpectedly done on tests without any setup for it. Forward-Port-Of: odoo/odoo#259117 Forward-Port-Of: odoo/odoo#258704
Forward-Port-Of: odoo/odoo#260319
Original PR description
Forward-Port-Of: odoo/odoo#260319