Monday, October 20, 2025
23 changes · saas-18.4
Enhancements to existing features
Peruvian customer records no longer require a ZIP code, reflecting that ZIP codes are not commonly used in Peru. This makes customer data entry easier and helps avoid unnecessary validation issues for Peruvian addresses.
Original PR description
As ZIP codes are not widely used in Peru, the requirement for a ZIP code to be provided for a Peruvian customer should not be present. task-5012593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223157
Payment terminals connected through Odoo IoT will no longer be automatically registered for event handling, because they already manage their own events. This reduces unnecessary background handling and aligns terminal behavior with devices that send events independently.
Original PR description
As for printers that can send event whenever they want, payment terminals handle event themselves. We then removed auto event registering for payment terminals. odoo/enterprise#97617
This change makes Odoo's automated test browser shutdown more robust when Chrome reports rare shutdown errors. It helps prevent stuck test builds and lingering browser processes, improving runbot reliability without affecting normal users.
Original PR description
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if…
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if this is in response to `stop`-ing the page, or a pre-existing navigation directive interfereing with the stop-ing of the browser. I tried reproducing locally under the assumption that the `Page.stopLoading` might be the cause but got nowhere[^1]. This issue seems extremely infrequent, and in most cases is but a minor annoyance, an error appears on the corresponding build, and that's it. However if the error occurs during `ChromeBrowser.stop` then the browser is not terminated, which on runbot prevents the docker image from shutting down properly, and leaves zombie builds. Therefore make `ChromeBrowser.stop` more resilient to errors in the initial section so that we do terminate the browser even if the "graceful CDTP shutdown" fails. While at it, add a fallback to kill the browser if it does not terminate gracefully. https://runbot.odoo.com/odoo/error/233442 [^1]: and the error only happening in 18.0 and later when `Page.stopLoading` was present long before that makes it likely the proximal cause is in the code being run, especially as all the errors sampled from the builds list are related to pos and the failure are immediately preceded by ongoing HTTP requests Forward-Port-Of: odoo/odoo#232222 Forward-Port-Of: odoo/odoo#232060
Resolved issues and error corrections
The website shop search box now displays product search text with apostrophes correctly, such as “desk's lamp” instead of showing encoded characters. This removes a small but visible display issue and improves the shopping experience.
Original PR description
currently, we use `t-out` to set the placeholder, which escapes HTML so `desk's lamp` becomes `desk's lamp` Fix: - replace `t-out` with `t-value` to properly store placeholder. **Before** <img width="513" height="270" alt="image" src="https://github.com/user-attachments/assets/92046e41-e471-4eba-9510-a9ea91eeccd8" /> **After** <img width="472" height="252" alt="image" src="https://github.com/user-attachments/assets/79157a51-adac-4c95-8e39-a0caa7cf1537" /> opw-5136972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230961
Documentation and clarification updates
The Camptocamp corporate contributor agreement record was updated to include Tomasz Walter. This supports proper contributor authorization and keeps Odoo's legal contributor records current.
Original PR description
Please add me as a member of the Camptocamp organization. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230780
A test helper now checks whether the editor component is available before trying to use it. This prevents automated website form tests from getting stuck, improving reliability without changing customer-facing behavior.
Original PR description
Steps to reproduce
==================
Run the test test_contactus_form_email_stay_dynamic
The ready "odoo.isTourReady('...')" code was always falsy
Cause of the issue
==================
website_form_editor.js import @html_editor/../tests/tours/helpers/editor
it itself import @html_editor/editor
Since the editor is not part of the bundle when loading the tour, nothing is loaded
Solution
========
As it not that easy to include the editor in the web.assets_tests bundle,
we check if the editor module is present before patching it.
When actually running the tour, it will be present.
runbot-231561Signatures now generate correctly when a person's name contains a non-breaking space. This prevents broken signature images and restores initials-based signature creation for affected users.
Original PR description
Before this commit: Names containing a non-breaking space would break the generated svg file. This is because the inserted ' ' is not valid XML. This also broke the initials signature generation. After this commit: The getCleanedName method actually returns the cleaned name and the signature svg files is correct. Related ticket: opw-4927425 Forward-Port-Of: odoo/odoo#231517
This fixes an issue in the mail module where extra information prepared for one record could accidentally be reused for other records. The change helps ensure messages and discussion data stay consistent and avoids unexpected cross-record behavior.
Original PR description
Before this commit, the `extra_fields` kwarg of Store.Relation would be mutated in place, causing unexpected behavior where the `dynamic_fields` of a record would be used for others. This commit fixes the shared list mutation issue by making a copy of the `extra_fields` and appending to that.
Payment QR codes now use the payment reference instead of the customer reference in the free communication field. This helps ensure payment instructions match the intended payment details and reduces confusion during payment reconciliation.
Original PR description
The aim of this commit is replacing the usage of customer reference for the free communication in EPC SEPA QR Code for the payment reference. task-5122875 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231401
This fixes missing payroll group information on some Swiss payroll employee fields. It helps keep payroll data correctly organized and reduces errors during payroll processing or validation.
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
The help text for advanced employee access in Point of Sale settings now matches how the setting actually works. This reduces confusion for businesses configuring which employees can use advanced POS features.
Original PR description
Before this commit, the help text of the advanced_employee_ids field was inconsistent with its behavior, as it was not possible to keep it empty. This commit updates the help to reflect the actual behavior. opw-5112862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232004 Forward-Port-Of: odoo/odoo#228612
A previously disabled automated test for website animation hover options has been re-enabled after the timing issue behind unreliable failures was addressed. This helps maintain confidence that website editing animation settings continue to work correctly without changing end-user functionality.
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
Fixed an issue that could cause the Helpdesk ticket list to crash when there were no tickets to display. This improves reliability for teams opening an empty ticket list and ensures the page loads normally.
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
Fixes an issue where highlighted text in eLearning articles appeared correctly in the normal view but disappeared in fullscreen mode. This ensures learners see the same formatted course content regardless of viewing mode.
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#232077 Forward-Port-Of: odoo/odoo#225150
Fixed an issue that could cause an error when refreshing appointment slots based on a selected staff member. This helps customers continue booking appointments smoothly without unexpected interruptions.
Original PR description
This commit fixes an issue where the refresh with appointment based on staff user was raising a traceback as it also tried to compute the max capacity possible. Related commit 3cca7e47ab58f8a7d4e9196dbf60f7068348216b task-5118860 Forward-Port-Of: odoo/enterprise#97561 Forward-Port-Of: odoo/enterprise#95862
The Swedish localization demo data now uses a valid IBAN for the sample bank journal. This prevents confusion or validation issues when businesses test Swedish accounting setup with demo data.
Original PR description
This commit replace the wrong `SE0826566594158439377422` IBAN by `SE5850000000014938684140` The actual IBAN of the sweden bank journal demo data is not following the official format, which is: - Country code: 'SE' -> **OK** - Valid checksum digit: '58' -> **OK** - Valid bank code: '5000' -> **KO**, '2656' is not a valid SE bank code - n zeros to fill the IBAN: '0000' -> **KO**, it's missing the zeros - Account number: '14938684140' -> **OK** Linked:https://github.com/odoo/enterprise/pull/95463 task-5107240 Forward-Port-Of: odoo/odoo#232190 Forward-Port-Of: odoo/odoo#230104
The search bar will now avoid automatically focusing on tablet devices, preventing the on-screen keyboard from appearing unexpectedly. This keeps tablet navigation smoother while preserving the intended behavior on mobile phones.
Original PR description
This commit fixes the usage of the 'mobile' param in the useAutofocus hook, which incorrectly focused the input on tablets, instead of only enabling it on mobile devices. A test has been added as well to cover this use case. task-5169698 Forward-Port-Of: odoo/odoo#232191 Forward-Port-Of: odoo/odoo#232054
Logging for IoT-connected payment terminals is now more consistent across each step of a transaction. This makes it easier for support teams to identify and trace terminal transactions when investigating issues.
Original PR description
This PR improves the logging of terminals used with iot box. We will now get a log for every step of a transaction along with some information identifying the transaction Forward-Port-Of: odoo/enterprise#97216
Error messages in US payroll and NACHA payment flows now use the same bank field label that users see on the form. This makes it easier for users to identify and complete the required bank routing information.
Original PR description
The label shown in the res.partner.bank form view depends on the show_aba_routing field. If we don't show the correct label in these error messages it's not clear to the user what field they have to fill. task-5052996 Forward-Port-Of: odoo/enterprise#97318
This fix stops browser extensions such as Bitwarden from showing an unnecessary popup over the Odoo main menu. The hidden search input now opts out of browser autocomplete, keeping the menu experience cleaner without changing search behavior.
Original PR description
Bitwarden pops up small form on top of the main menu for no reason. It is because of the hidden input created to trigger search when you type. Put `autocomplete="off"` to avoid these popups, as the search feature handle its own autocompletion. Note: this commit is a backport of odoo/odoo@403d7b70ab16b8b70ea46aa692883c7b4a6e83b7 Forward-Port-Of: odoo/enterprise#97506
Meeting activity feedback is no longer added to the public meeting description. This prevents external calendar attendees from receiving unnecessary updates while keeping the feedback available internally in the chatter.
Original PR description
When marking a calendar.event activity as done, one can submit a feedback. Currently, that feedback is logged in the chatter, and is also appended at the end of the meeting's description. As this field is synchronized with external calendars, this may lead to notification / meeting updates. However, this should serve an internal purpose instead, and should not be shared to attendees in that way. Therefore, simply remove this behavior. The feedback will still be found in the note in the chatter. Task-5143141 Forward-Port-Of: odoo/odoo#231670
Failed file uploads in the full message composer are now handled safely instead of causing an error screen. This improves reliability when users attach files to messages, especially when an upload is interrupted or rejected.
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
This pull request records that contributor arch-fan has signed Odoo's Contributor License Agreement. This is an administrative legal update that helps ensure future contributions can be accepted under Odoo's contribution rules.
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#232057