Monday, October 20, 2025
26 changes · 19.0
Enhancements to existing features
Peruvian customer addresses no longer need a ZIP code to be accepted. This better reflects local address practices in Peru and reduces unnecessary data entry friction for customers and staff.
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
This update makes automated browser shutdown more reliable when Chrome reports rare errors during test cleanup. It helps prevent unfinished test environments and zombie builds, improving stability of the development and release pipeline.
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
Links added in the mail composer are now recognized and highlighted more reliably. This improves message clarity for users and also simplifies the underlying editor setup to reduce duplicated configuration.
Original PR description
This commit enables the link plugin in the mail composer so that the link will be properly parsed and hightlighted. This commit also improves the plugin set and clean up the duplicated plugin lists. task-5172795 backport - https://github.com/odoo/enterprise/pull/97504 https://github.com/odoo/odoo/pull/232347
Resolved issues and error corrections
This fixes an issue where confirmed validation payments could skip part of the normal completion process. Sales payment validation now still avoids unnecessary emails while ensuring all required follow-up actions run correctly.
Original PR description
Versions -------- - 18.0+ Issue ----- `super` isn't called on `_post_process` for confirmed validation transactions. Cause ----- A fix that prevented the sending of mail for validation transactions added a `continue` in a loop, which skips over the `super` call in the loop. Solution -------- Instead of `continue`, add an `if` check to see if we want to send mail. Forward-Port-Of: odoo/odoo#231972
Documentation and clarification updates
The Camptocamp corporate contributor agreement record has been updated to include Tomasz Walter. This supports compliance by confirming the contributor is covered under the organization’s signed CLA before contributing to Odoo.
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
The user form now shows the phone field with the correct label, “Phone,” instead of mistakenly displaying “Email.” This prevents confusion when viewing or editing user contact details.
Original PR description
…sers is displayed as email Description of the issue/feature this PR addresses: In Odoo 19, the phone field label in the user form view was incorrectly displayed as “Email” instead of “Phone”. Current behavior before PR: The phone field in the user form view showed the wrong title — “Email”. Desired behavior after PR is merged: The phone field now correctly displays the title “Phone” in the user form view. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The user form now shows the phone field with the correct label instead of displaying it as email. This avoids confusion when viewing or editing user contact details.
Original PR description
… is displayed as email [BUG] https://github.com/odoo/odoo/issues/232233 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
Error messages now use the same bank account field label that users see on the form. This helps payroll and payment users quickly identify which routing or clearing number information needs to be completed.
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
The project sharing page now hides a chat expand option that was not supported for portal users. This prevents an error when external users open a shared project task and interact with the task chat.
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#231360
The website shop search box now shows search suggestions with apostrophes correctly, such as “desk's lamp,” instead of displaying code-like characters. This avoids confusing shoppers and makes the storefront search experience look cleaner.
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
This fixes an issue where names containing non-breaking spaces could cause generated signature images to fail or display incorrectly. Users can now create signatures and initials reliably even when names include these special spaces.
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
Payment QR codes now use the payment reference instead of the customer reference in the free communication field. This helps ensure payment instructions carry the intended reference, reducing confusion during payment matching and processing.
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
The mobile shop page no longer adds extra spacing that pushed carousel indicators out of alignment. This creates a cleaner, more consistent browsing experience for customers on phones.
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
The asset list has been restored to its previous non-editable behavior so the New button opens the asset form correctly. This fixes a workflow issue that could block users from creating new assets as expected.
Original PR description
The previous change to make the asset list view editable caused a problem where the "New" button no longer opens the form view. This commit reverts that change to restore the intended functionality.
Feedback entered when completing a meeting activity is now saved in the event's internal notes instead of its public description. This prevents unnecessary updates or notifications from being sent through synced external calendars.
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
Internal chat and call tests now use simpler mock audio and video streams, reducing unnecessary resource usage during automated testing. This helps make test runs more reliable and lowers the chance of test cleanup issues, without changing user-facing behavior.
Original PR description
Before this commit, since https://github.com/odoo/odoo/pull/231222, the streams used for tests were unnecessarily realistic. - The audio stream was running with an oscillator, it is now an empty idle stream. This may also fix an issue where if the `oscillator.start` function crashes, the stream wouldn't be added to the stream list and not be closed. - The video stream was playing at 1fps, it now uses the default of canvas.captureStream which does not generate new frames if the canvas does not change. The commit also makes the `mockGetMedia` return the streams that it manages instead of using an exported global variable, which may cause issues as hoot retains the reference to window.
The help text for advanced employee access in Point of Sale was updated to match how the setting actually works. This reduces confusion for users configuring employee permissions by making the description accurate.
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 bug in the Mail module could cause field settings from one discussion record to be reused for another. The fix keeps each record's extra field list separate, helping prevent incorrect or unexpected information from appearing in mail and discussion views.
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. Forward-Port-Of: odoo/odoo#232266
This fixes how Facebook video links are recognized when users embed videos in the HTML editor. It helps ensure Facebook videos are handled correctly and reduces failed or incorrect embeds.
Original PR description
This PR improves the changes made in PR #215204.
When embedding facebook videos, the url looks like
`"//facebook.com/plugins/video.php?href=https://www.facebook.com/username/videos/{video_id}/"`
after embedding, so we need to check for "https:" and "http:"
with method `startsWith` instead of `includes`.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes an invalid Swedish IBAN used in demo data for the Sweden localization. The corrected account number follows the official IBAN format, helping demonstrations and test setups reflect valid banking 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 no longer automatically focus and open the keyboard on tablet devices. This avoids an unnecessary interruption for tablet users 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
IoT payment terminals now record consistent logs for every step of a transaction, including details that help identify the transaction. This makes it easier for support teams to investigate payment issues and understand what happened during a terminal transaction.
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
This fixes an internal payroll test that failed because newer Chrome versions changed how certain text styling information is reported. The adjustment keeps automated checks reliable without changing payroll features or user workflows.
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
The app menu search field now tells browser extensions not to offer autocomplete suggestions. This prevents tools like Bitwarden from showing unnecessary popups over the main menu, making navigation cleaner for users.
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
This fixes an issue where a failed file upload in the full mail composer could cause an error screen. Users can now recover from upload failures without the composer crashing, improving reliability when attaching files.
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 the contributor arch-fan has signed Odoo's Contributor License Agreement. This supports legal compliance for accepting their contributions and does not change product functionality.
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