Daily updates from Odoo
Monday, October 20, 2025
76 changes
18 changes
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
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
12 changes
Resolved issues and error corrections
Payment QR codes now use the payment reference in the free communication field instead of the customer reference. This helps ensure payment details match the intended invoice reference 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 an issue where names containing non-breaking spaces could cause generated signature images to fail or show incorrect initials. Users can now create valid signatures reliably even when their names include this type of spacing.
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
Fixed an issue that could cause an error when refreshing appointment availability based on a selected staff member. This helps customers and staff continue booking appointments smoothly without interruption.
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#95862
The Point of Sale employee access settings now describe the actual behavior more accurately. This avoids confusion for administrators when 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
The Swedish localization demo data now uses a properly formatted IBAN for the sample bank journal. This prevents confusion or validation issues when users test Swedish accounting workflows 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
App icons created in Studio are now automatically resized before being saved. This prevents oversized images from unnecessarily increasing storage, cache size, and request payloads, helping keep the system lighter and more efficient.
Original PR description
Before this commit, the IconCreator images were sent as is in their full size. Downstream it was problematic because apps' icons were bigger than necessary, bloating the different caches, the database, and the request. After this commit, icon are resized to a max of 64x64 pixels. Forward-Port-Of: odoo/enterprise#97369 Forward-Port-Of: odoo/enterprise#94480
This fix prevents the search bar from automatically focusing on tablet devices, so users are not unexpectedly interrupted by the on-screen keyboard. Autofocus remains limited to phones, and a test was added to help prevent the issue from returning.
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
This update makes IoT payment terminal logs more consistent and complete. Businesses and support teams can more easily trace each step of a transaction, helping diagnose payment issues faster.
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 for US payroll and NACHA payment bank details now use the same field label users see on the bank account form. This helps users understand whether they need to enter an ABA routing number or another clearing number, reducing confusion when fixing payment setup issues.
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 password manager browser extensions, such as Bitwarden, from showing an unnecessary popup over the Odoo main menu. The hidden search input now disables 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
Activity feedback on calendar events is no longer added to the meeting description, preventing it from being synced to external calendars or sent as meeting updates. The feedback remains available internally in the chatter note, keeping attendee-facing meeting details clean.
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 email composer are now handled safely instead of causing an error screen. This keeps users in their workflow when an attachment upload does not complete successfully.
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
4 changes
Resolved issues and error corrections
App icons created in Studio are now automatically resized before being saved. This prevents unnecessarily large icon files from increasing database size, cache usage, and request payloads.
Original PR description
Before this commit, the IconCreator images were sent as is in their full size. Downstream it was problematic because apps' icons were bigger than necessary, bloating the different caches, the database, and the request. After this commit, icon are resized to a max of 64x64 pixels. Forward-Port-Of: odoo/enterprise#97050 Forward-Port-Of: odoo/enterprise#94480
This fix prevents spreadsheet field synchronization in Sales from crashing when users use undo or redo. It improves reliability for users working with synced sales data in spreadsheets and helps avoid interruptions while editing.
Original PR description
Fix an issue where field sync would crash when used with UNDO/REDO. Task: 4854879 Forward-Port-Of: odoo/enterprise#92883
This change removes an unnecessary browser option from IoT device requests. It avoids errors in older Chrome versions while keeping IoT and point-of-sale hardware connections working as before.
Original PR description
This reverts commit 6d09dc6 which added the `"targetAddressSpace": local` option to IoT fetch requests. This is because of two reasons: 1. It caused errors on older versions of Chrome that implemented the obsoleted 'Private Network Access' standard. 2. It was not actually required in the first place, it is only needed in situations where a HTTP resource is accessed from HTTPS using a domain that resolves to a local IP. In Odoo we only ever do this for HTTPS -> HTTPS requests, where it works automatically. task-5157145 Forward-Port-Of: odoo/enterprise#97543 Forward-Port-Of: odoo/enterprise#97500
The main menu search field was adjusted so browser extensions like Bitwarden no longer show an unnecessary popup over the menu. This keeps the menu cleaner and avoids distracting users while preserving the existing search autocomplete 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
8 changes
Resolved issues and error corrections
The project customer preview now hides non-validated timesheets when the invoicing policy only allows validated timesheets. This prevents internal preview users from seeing a different task view than customers see in the portal, improving billing transparency and consistency.
Original PR description
### Issue: Due to this issue, in the project sharing, the customer preview doesn't reflect the actual behaviour of the portal view. It shows non-validated timesheets even if invoicing policy is…
### Issue: Due to this issue, in the project sharing, the customer preview doesn't reflect the actual behaviour of the portal view. It shows non-validated timesheets even if invoicing policy is validated timesheets only. #### To reproduce: 1- Create a db with sale_project and sale_timesheet_enterprise 2- Configure invoicing policy to validated timesheets only 3- Create a service product: - Create on Order: Project & Task - Invoicing policy: Based on Timesheets 4- Create a Quotation for the product and confirm it 5- Open project from smart button 6- Share project with a portal user with Edit access 7- Open tasks, and add two timesheets to the task 8- Open timesheet app, and validate one of the timesheets 9- From project page, click on Customer preview 10- In preview, open the task. You can see both timesheets which is a different behaviour if you view the project using portal user. Using portal user, only validated timesheets are shown. ### Cause: The timesheets are filtered here to only show validated timesheets: https://github.com/odoo/enterprise/blob/8223ed0765c6064b88280656a5ab6b13ca9a431f/sale_timesheet_enterprise/models/project_task.py#L73-L91 However, it is filtered only if user is portal. In customer preview the user is still the internal user, as a result the timesheets will not be filtered. To fix that we can check if project_sharing_id exist in context to filter timesheets. opw-5093339 Forward-Port-Of: odoo/enterprise#97470
This update adjusts many enterprise module tests so legacy installation behavior is set automatically. It helps keep post-install checks consistent by default, reducing maintenance work and avoiding mismatches in automated validation.
Reference and selection field values are now sorted in test simulations the same way they are defined, rather than alphabetically by the stored value. This makes automated Gantt-related tests more reliable and better aligned with real expected behavior.
Original PR description
selection and reference fields are not sorted according to the selection value index, but using the value itself. Note: this could be fixed in earlier version, but since it's an API change (of the mock server, but still...), it could break tests of existing custom modules built by the community. Task: 5102923
Fixed an issue where opening a tax report from a Luxembourg return for a previous month incorrectly reset the date filter to the current month. This helps users review and file past-period returns with the correct reporting dates.
Original PR description
This commit solve an issue when being on the Luxembourg and doing a return on a previous month like may and clicking on the link to the tax report on the return, the date filter was wrongly set to this month. no task id
Asset names can now be shown and imported in the user's selected language. This improves usability for companies operating in multilingual environments and helps keep asset records understandable across teams.
Original PR description
To support multilingual environments, this commit refactors the 'name' field on the asset model with `translate=True`, converting it to a standard, translatable text field. This allows asset names to be imported and displayed in the user's selected language. task-5122900
The asset list was changed back so users can open the full creation form when they click New. This restores the expected workflow and avoids confusion when creating new assets.
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. Forward-Port-Of: odoo/enterprise#97483
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 which bank detail needs to be completed or corrected.
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#97510 Forward-Port-Of: odoo/enterprise#97318
This update makes IoT payment terminal logs more complete and consistent. Each transaction step now includes identifying details, making it easier for support teams to trace issues and resolve payment problems faster.
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
21 changes
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
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
10 changes
Resolved issues and error corrections
This fix ensures Swiss payroll ELM transmission employee information works correctly when more than one company or country setup is used. It helps businesses avoid incorrect or missing payroll-related data in multi-company Switzerland configurations.
Original PR description
task-5159023 Forward-Port-Of: odoo/enterprise#96733
This change removes an unnecessary browser request option from IoT and point-of-sale IoT communication. It prevents errors in older Chrome versions while keeping local device communication working as before.
Original PR description
This reverts commit 6d09dc6 which added the `"targetAddressSpace": local` option to IoT fetch requests. This is because of two reasons: 1. It caused errors on older versions of Chrome that implemented the obsoleted 'Private Network Access' standard. 2. It was not actually required in the first place, it is only needed in situations where a HTTP resource is accessed from HTTPS using a domain that resolves to a local IP. In Odoo we only ever do this for HTTPS -> HTTPS requests, where it works automatically. task-5157145 Forward-Port-Of: odoo/enterprise#97500
The mail composer now handles failed file uploads without causing an error screen. This avoids disruption for users composing messages when an attachment cannot be uploaded.
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
Improved the spacing of debug-mode menu option fields on event and event type forms, making it easier to match each label with its related setting. This helps administrators configure event website page menus with less confusion.
Original PR description
The PR fixes the display of the fields displayed when the debug mode is activated and used to show buttons in the menu of event website pages. Previously, it was difficult to determine what were the labels of the fields. To make it clearer, the spaces between the label-field couples have been increased. Task-4750239
This fix ensures United Kingdom supplier records are reported with the correct country code in Mexico's DIOT tax report. It prevents UK-related transactions from being grouped under “Other country,” improving reporting accuracy for compliance reviews.
Original PR description
The DIOT country adaptation map lacked the ISO 3-letter code for the UK, causing records with country 'GB' to be reported as 'ZZZ' ("Other country").
Added mapping 'GB' → 'GBR' to ensure correct DIOT country code generation.

Forward-Port-Of: odoo/enterprise#96771Calendar activity feedback is no longer added to the meeting description when an activity is marked done. This prevents internal notes from being synced to external calendars or triggering unnecessary meeting updates, while keeping the feedback available 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
The Documents app now correctly applies debug mode changes made through the command palette. This fixes a navigation issue so users can switch debug mode without manually editing the URL.
Original PR description
Issue: In the documents app toggling debug mode through the command palette (ctrl-k) does not work. Manually editing the URL works as expected. Cause: A patch on `router.stateToUrl` for the documents app rebuilds the URL to create clean, shareable links. When doing so, it attempted to preserve the debug status by referencing the global `odoo.debug`. This global object did not reflect client-side state changes. The command palette correctly provides the intended future state to the router. The patch was ignoring this incoming state and using the outdated global value, causing the generated URL to be incorrect. Solution: Modify the patch to use the `state` argument provided to `stateToUrl`, which contains the correct, up-to-date information for the navigation. Task-5095056
Invoice terms and conditions now update automatically when a customer's language is changed during invoice creation. This helps ensure customers receive invoice text in the correct language without needing to recreate or manually adjust the invoice.
Original PR description
Issue: When changing the customer’s language during invoice creation, the terms & services were not retranslated, unlike when creating a new partner in a different language. Repro Steps: 1. Create an invoice with terms link or plain enabled. 2. Change the partner's language from the invoice creation view. 3. Terms is not translated. Cause: The translation compute was only triggered on partner change, not language change. Fix: Added dependency for partner_id.lang to the narration compute to ensure it updates when the language changes. opw-5031933
Customers receiving Gelato shipping notifications now get a working tracking link for single-parcel shipments. This prevents broken links in delivery emails and helps customers follow their orders more reliably.
Original PR description
After receiving the shipping webhook from Gelato, we send a shipping notification with the tracking information to the customer. This commit fix the tracking url for single parcel, which was pointing to an inexistant url. opw-4637331 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The main menu search field now tells browsers and password managers not to offer autocomplete suggestions. This prevents unwanted Bitwarden popups from covering the menu while keeping Odoo's own search suggestions unchanged.
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
3 changes
Resolved issues and error corrections
Order validation will no longer fail when automatic carrier label printing is enabled but no shipment label was created. Instead of stopping the process with an error, the system logs a warning so users can continue their workflow.
Original PR description
If auto print carrier labels is enabled but no shipment is added to the sales order, then no shipping label document will be generated resulting in a `UserError`. We replaced the `UserError` by a logger warning to avoid blocking the validation.
This fix helps ensure automated tests finish cleanly by detecting leftover processes that could keep running after a test ends. It also adds a warning during server shutdown when such processes are found, making test issues easier to identify and resolve.
Original PR description
In some case a process could remain aive at the end of a tests In addition to possible race condition, this can also cause a program to remain stuck at the end of the tests. This commit proposes to - catch all remaining processes at the end of a base case. - log a message if a process is found at the shutdown of the server. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an unwanted Bitwarden popup appearing over the Odoo main menu when users start typing to search. The hidden search field now disables browser and extension autocomplete, keeping the menu experience clean while Odoo’s own search suggestions continue to work.
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