Thursday, August 20, 2026
4 changes · 19.0
Enhancements to existing features
SMS error messages now include the related record type and ID, making it easier to identify which business record caused the issue. This helps support teams trace the affected recipient faster and resolve messaging problems with less investigation.
Original PR description
- Error now includes the model and ID of the record triggering the SMS, allowing the recipient to be traced opw-6023401
This change enables an additional quality check for the web document test suite. It helps catch issues earlier during development, reducing the risk of preventable problems reaching users.
Original PR description
Task-5180137
This change gives automated web test checks more time to wait for expected page updates, matching other existing waits. It reduces false test failures on busy machines without slowing successful test runs, helping teams get more dependable build results.
Original PR description
Before this commit, waitFor, waitForNone and waitUntil gave the DOM 200 milliseconds, which the loop turns into 12 animation frames, while contains() and expect.waitForSteps sitting in the same tests…
Before this commit, waitFor, waitForNone and waitUntil gave the DOM 200 milliseconds, which the loop turns into 12 animation frames, while contains() and expect.waitForSteps sitting in the same tests give 10 seconds. 430 call sites in addons reach these three helpers and 29 pass an explicit timeout, so 12 frames is what the other 401 get. The problem is that 12 frames is less than what the client needs on a loaded machine. Measured on "should remove file from html editor if removed from attachment list", on the wait that follows the Full composer button: - 5 to 7 frames on an idle machine; - 11 to 18 frames over 8 runs with the machine at load 10 to 20, 5 of the 8 above the 12 frames the default allows. Those 5 are failing runs, and the same test at load 13 to 29 fails 6 runs out of 6 with the 200 milliseconds, 0 out of 6 with 10 seconds. Note that a longer timeout costs nothing on a green build: the wait ends on the frame the DOM matches, so it only delays the report of a test that was going to fail anyway. Hoot fails the test itself after 5 seconds, 15 in test_js.py, which keeps bounding a wait that never resolves. This commit raises the default to 10 seconds, the delay a tour step already gets in macro.js and the one contains() and expect.waitForSteps already have. https://runbot.odoo.com/odoo/error/946094 Forward-Port-Of: odoo/odoo#282702
The Dutch payroll localization now includes the 2026 resident income tax rate values. This helps payroll calculations stay aligned with upcoming tax rules for employees residing in the Netherlands.
Original PR description
Added 2026 values for the residents' income tax rates rule parameter. task-6462877 Forward-Port-Of: odoo/enterprise#127556