Daily updates from Odoo
Monday, June 30, 2025
33 changes · saas-18.4
Resolved issues and error corrections
Fixes a display issue in Mail where clearing a message while editing could make the empty message bubble stretch across the full conversation area. This keeps chat and discussion views cleaner and avoids confusing visual glitches for users.
Original PR description
This commit fixes a UI bug where editing a message and clearing its content results in the message bubble expanding to full width. **Current behavior before PR:**  **Desired behavior after PR is merged:** 
The live chat widget now waits for the correct availability check before showing the start chat button. This prevents visitors from briefly seeing a chat option that may not actually be available, creating a smoother website experience.
Original PR description
When the live chat is loaded on a page, it receives a value called `isAvailable` from the session. This name is misleading: it indicates availability if either an agent or a bot is present, but it…
When the live chat is loaded on a page, it receives a value called `isAvailable` from the session. This name is misleading: it indicates availability if either an agent or a bot is present, but it doesn’t consider the live chat rules.
These rules depend on the URL. Since `get_livechat_info` is called from the website template, we can’t determine which rule applies at that point. The goal is mainly to avoid calling `init_livechat` ("/mail/data") if we already know the live chat won’t be available. However, this check alone isn’t enough to decide whether to show the chat button.
This commit renames `isAvailable` to `can_load_livechat` for clarity. If `can_load_livechat` is set, we can load the live chat and call `init_livechat`, which will then set the `livechat_available` value.
task-4908197
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-prWebsite editing could show duplicate live chat bubbles and windows because both editing and visitor assets were loaded at the same time. This fix keeps the chat experience clean during website editing by hiding the extra chat elements with styling, avoiding more complex communication between page frames.
Original PR description
When editing is enabled, the website loads both the backend and frontend assets. Until [1], this resulted in two sets of chat windows and bubbles being displayed. This commit is a follow-up to the above PR, maintaining the same behavior but relying only on styles. This avoids the need for cross-iframe or cross -window communication. [1]: https://github.com/odoo/odoo/pull/212452 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
The messaging menu button in the top bar now displays with the correct background. This fixes a small visual issue so the interface looks consistent and polished for users.
Original PR description
This commit fixes a background issue on the messaging menu button in the systray. issue introduced by: https://github.com/odoo/odoo/pull/198012 before:  after: 
This fixes an issue where using the Tab key in the color picker could preview or apply colors incorrectly, including changing more text than selected in the editor. Users can now navigate color options by keyboard more reliably, reducing accidental formatting changes.
Original PR description
Following [1], which introduced the preview when focusing color buttons inside a colorpicker (and revert when focusing out of them), tabbing on the color selector within html_editor stopped working as expected: 1. the reset button doesn't trigger a preview 2. For instance in the To-Do app: - Select a single word - Open the "Apply Font Color" picker and use tab to navigate => The color of the whole line is changed. [1]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
This update fixes a broken automated test for the website editor so the test suite better reflects the current behavior. It helps maintain release stability by reducing false test failures during development and deployment checks.
Original PR description
This commit adapt the broken tests test_05_specific_website_editor.
Clicking a GIF preview in Mail now works without triggering an error when no click handler is available. This prevents a confusing interruption for users who open GIF links from messages.
Original PR description
**Current behavior before PR:** When a user posts a GIF link and clicks the preview, it opens in a new tab but throws an error because `props.onClick` is called unconditionally, even if undefined. **Desired behavior after PR is merged:** The issue is fixed by ensuring `props.onClick` is only called if it is defined. **Task**-4908537 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now only shows the quick-create option for grouped list and kanban views when the view uses its intended default grouping. This prevents confusing or unsupported behavior when users group records by other fields.
Original PR description
This commit updates the conditions for enabling group quick create in list and kanban views. In addition to existing checks, the view must now be grouped using its default groupby (if defined) for quick create to be available. This ensures that group quick create is only shown in contexts where it is properly supported and avoids undesired behavior when grouping by arbitrary fields. task-4897809
This fix improves the range slider used in the website builder so keyboard navigation no longer triggers repeated updates that can confuse sidebar options. It also makes keyboard focus styling clearer, improving usability for people navigating with the keyboard.
Original PR description
1) This commit adds proper styling on focus-visible on the BuilderRange. 2) When using the arrows to modify its value, it commited after every keydown. If the action relies on a load, the behavior is buggy. This is for instance the case on image optimization options: - Select an image - Set a filter on top > the "Quality" option appears - Use tab to focus it - Press an arrow and stay pressed for a while => The sidebar options are wrongly computed. To avoid that, we debounce the commit just like what was already done in the BuilderNumberInput. Note that while it prevents unwanted UI flickers and doesn't commit until after you let go of the key, the preview doesn't happen: this is due to the fact that each preview is cancelled by the next, preventing the load to ever complete, and thus the apply from happening. task-4367641
This fixes a small error in how the Time Off app checks which team members are currently online. The change makes the status check more reliable and reduces the risk of incorrect availability information being shown.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/198012 PR above made a typo in code in which list of "online" member IM status is a list of string, and it uses + to concatenate items like in python but this doesn't work in JS. Thankfully it kinda "worked" because this casted the array into list (e.g. `["a", "b"]` becomes "a,b") and other items were appended to string. Since this list was used for `.includes()` by chance the ".includes()" method is on Array and String and functionally this results to about the same intention... Again by chance!
Restores the missing help tooltip in the website builder's product filter dropdown. This makes it easier for website editors to understand filter choices such as recently viewed products when configuring product snippets.
Original PR description
> [LIPI] Missing dynamic filter help tooltip added in https://github.com/odoo/odoo/pull/196493 (quick fix: `title="fitler.help"` in dynamic_snippet_option.xml:9) Steps to reproduce: - Open website builder (with website_sale) - Drop snippet `s_dynamic_snippet_products` - Open the "Filter" dropdown and hover "Recently Viewed Products (...)" - Bug: No tooltip appears with a help message The tooltip with a help message on filter option was implemented on master in parallel of the initial refactor of the website builder. This commit adds the tooltip on the refactored builder Help on filter option: 5e21f518d285d0e3ca619ba3505ded6da5fb2e67 Website refactor: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
Website editors can no longer accidentally submit forms or navigate away by clicking page content while the builder is open. This keeps users safely in editing mode and avoids disruptions such as login attempts or forum post navigation during page edits.
Original PR description
> [ROLE] Go to '/@/web/login' > Edit > > - Click on "Login" => instead of allowing to edit the label, it opens the warning that every field must be completed. > - Enter a login/password and clock on "Login" > you're logged in, redirected, and now out of the editor iframe (every link is clickable). > - (Another way to reproduce the same bug: go to Forum > Help > New Post, then edit)
This fixes a crash that could happen in the website HTML builder when users moved the mouse while pressing a key. The change keeps editing interactions stable and avoids interrupting page-building work.
Original PR description
__Current behavior before commit:__ The `onMouseMoveOrDown` event listener is inside `throttleForAnimation` therefore it might be called asynchronously. In this case `ev.currentTarget` is `null` and the following traceback appears when we move the mouse while pressing a key in the html builder: ``` TypeError: Cannot read properties of null (reading 'removeEventListener') ``` __Description of the fix:__ Replace `ev.currentTarget` by `this.editable` since the `onMouseMoveOrDown` event listener is always added on the latter.
This update fixes several issues in website image galleries, especially when all images are removed. Galleries now handle empty states safely, show the add-image prompt only when appropriate, and keep navigation controls intact for easier editing.
Original PR description
Miscellaneous fixes about the image gallery: - survive when empty - "Add images" message display conditions - "Remove all" detroying the navigation
This fix prevents an error when loading restaurant sample data after product categories have been removed. It adds a fallback so the sample sushi combo product can still be created, helping users set up restaurant demos without manual troubleshooting.
Original PR description
A ParseError is raised when the system attempts to assign a product category to the `sushi_drink_combo` product, in cases where food product category have have been manually removed before loading…
A ParseError is raised when the system attempts to assign a product category to the `sushi_drink_combo` product, in cases where food product category have have been manually removed before loading the demo data. - new demo data has been added : odoo/odoo@94734feba5670b23acf73a2ad485efe3d480efc0 - `raise_if_not_found` conditions has been added for all demo data : odoo/odoo@e6430737bdcea0162e4a3d5ee82e9ab6caa697e9 Steps to reproduce: 1. Install the `point_of_sale` module without demo data. 2. Navigate to Inventory -> Configuration -> Categories. 3. Delete food category. 4. Navigate to Point of Sale → Load Restaurant Sample Data. 5. An error is triggered during the process. Error: ```python odoo.tools.convert.ParseError: while parsing /home/odoo/odoo/codebase/odoo/saas-18.3/addons/pos_restaurant/data/scenarios/restaurant_demo_data.xml:605, somewhere inside ``` This issue occurs because `sushi_drink_combo` also references a missing product category. As with previous products, this change ensures a fallback to prevent failure when no categories exist. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213345
This fixes an issue where Chrome could show a “too many redirects” error inside the website editor after translated page names changed. The editor now reloads the preview with a fresh URL when this browser cache behavior is detected, helping users continue editing without disruption.
Original PR description
Since [1], the fix introduced with [2] was lost. This commit adapts [2] to the new `WebsiteBuilderClientAction`. If you have the backend in a language A but the website in English only, you can: 1)…
Since [1], the fix introduced with [2] was lost.
This commit adapts [2] to the new `WebsiteBuilderClientAction`.
If you have the backend in a language A but the website in English only, you can:
1) modify a record's (event, product...) name in language A (say "New Name").
2) visit the page `/new-name-11` => the server will redirect you to the English page `/origin-11`, with the only slug that actually exists on the website. Chrome caches the redirection.
3) give the same name in English as in language A, try to visit
=> the server now wants to access `/new-name-11`
=> Chrome uses the cache to redirect `/new-name-11` to `/origin-11`,
=> the server tries to redirect to `/new-name-11`
=> infinite loop, Chrome puts an end to it after ± 20 redirects.
In effect, Chrome injects a "Too many redirects" layout inside the iframe, which in turn raises a CORS error when the app tries to update it.
At the time of this commit, the flow described here should be expected of users, because the translation UI in the backend is not clear: the default field displayed is in language A even though the website does not use it, and the way to update translations is not obvious (you have to click on the language tag, which doesn't look like a button).
After this commit, if we detect that behavior, we reload the iframe with a new query parameter, making the URL brand-new (and not cached) for Chrome.
Another way to artificially reproduce the issue would be:
- Create a website.redirect from /dog to /cat
- Same from /cat to /dog
- Go to /@/dog (Obviously, reproducing it that way is not fixed by this commit.)
[1]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
[2]: https://github.com/odoo/odoo/commit/16d47ddf128f31f13e8d0d74597635faf7f9702a
task-4367641The website builder now treats unset social media links as empty values rather than missing entries. This ensures all expected social media options remain available when editing a social media snippet, especially on databases without demo data or preconfigured links.
Original PR description
Steps to reproduce: - On a database without demo data (and no social links set) - Open website builder - Click on a social media snippet (by default there is one in footer) - Bug: social media not in the snippet are not present in the option The bug was introduced when changing the handling of empty social media records to fix a crash: d4621f81698cdbf3e6a1d72349b3e5f135e0ee53
Fixes an issue where installing a missing app from a website snippet did not refresh the website builder afterward. The install dialog now shows the correct app name instead of the snippet name, making the process clearer for users.
Original PR description
This was forgotten in the website refactor [1]. The builder was not reloading after installing a new module via the "Install" button on a snippet. The install module dialog was showing the snippet name and not module name, because of a forgotten recent change [2]. Adapted tests to check presence of the module name and not snippet name. Steps to reproduce: - Install website - Click install on a snippet that's missing its module (e.g. Donation button) - Install module dialog appears - Dialog should show the module name - Builder should reload after clicking on "Save and Install" [1]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 [2]: https://github.com/odoo/odoo/commit/dd33ab018db7aa0fe7ad5e636636b75aaadd5d7a Related to task-4367641 Related to task-4434981
The website builder's Theme > Advanced section now shows the Code Injection and Google Map Custom Key controls as proper buttons. This improves clarity for users configuring advanced website settings and removes some unused internal code.
Original PR description
Before this commit, the buttons "Code Injection" and "Google Map Custom Key" in `ThemeAdvancedOption` were defined with the tag `button` instead of `BuilderButton` and were acting via `t-on-click` instead of using a `BuilderAction`. This commit converts the two elements to `BuilderButton` using `BuilderAction`. In addition, unused references are removed from `ThemeTabPlugin`. **How to reproduce** 1. In the website builder 2. In the "Theme" tab 3. In the "Advanced" section 4. Problem: the two objects on the rows "Code Injection" and "Custom Key" do not look like buttons. task-4367641
The website builder now hides the Header Position option when a sidebar header is selected, since that setting does not affect sidebar layouts. This prevents users from seeing a confusing control that has no visible impact while editing website headers.
Original PR description
> [BVR] select the "sidebar" header. Select "over the content" => no effect .. I think the option should be hidden for "sidebar" (check before mysterious egg). Steps to reproduce: - Open website builder - Click on the header - Change the "Template" to the last one: "Sidebar" - Bug: "Header Position" is still visible This bug was introduced during the initial website builder refactor. Website refactor: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
This fix updates a web test so it uses a reliable record created during the test setup instead of depending on existing demo data. It reduces false test failures and helps keep quality checks stable for future releases.
Original PR description
Before this commit, the test TestLoadBreadcrumbs was failing with demo data. After this commit, the test uses a record created during the setUpClass, thus resolving the issue introduced in #212950 .
This fixes a regression in the HTML builder where special handling for style options like text and background colors was lost during a previous refactoring. Restoring this behavior helps users apply visual styling in the builder as expected, reducing disruption when editing website content.
Original PR description
Following the refactoring introduced in [1], the `builder_style_actions` which defines custom behavior for specific CSS styles such as `background-color` and `color` was unintentionally omitted. This commit restores its implementation. The `border-radius` style implementation, that still remains untouched will be restored in another PR: [2] [1]: https://github.com/odoo/odoo/commit/b4b2153 [2]: https://github.com/odoo/odoo/pull/215371
A daily automated check now keeps each employee linked to their correct current HR version. This helps ensure employee records stay accurate over time without requiring manual updates.
Original PR description
This adds a cron that will update the current_version_id of all employees every day. Task: 4886048
Saving changes in the website menu editor now preserves any page edits already made in the website builder. This prevents users from losing their work when adjusting navigation menus during website editing.
Original PR description
This plugin fixes a bug where making changes on the editor, opening the menu editor and clicking save would cause the changes to be discarded. Steps to reproduce: - Open editor - Make any change - Click on any navbar element (like Home) to open the navbar popover - Click on the edit menu button in the popover - A modal will open, click save - All changes have been discarded After the fix the changes will be saved when clicking save in the menu editor modal
This update fixes an internal validation issue in the HTML builder that could allow duplicate action identifiers when actions are defined in newer formats. It helps keep website editing behavior consistent and reduces the risk of unexpected builder conflicts.
Original PR description
With the changes of b4b215325db61fbbe9793545293c8b6fbc99f310, some actions are declared as classes with their id as a static field instead of an object for which th id is the key in the resource `builder_actions`. The check for unique action id has not been adapted and only checked if the key is not the id of another action. But for classes the key is not the id, which could lead to duplicates. It also introduced an inconsistency between the actions declared with objects and classes: the id field was added to the object, but not the other. As this field is not used, this commit removes it for both. task-4367641
When an invoice submission to Kenya's eTIMS times out, the system now checks whether the government already received it before trying again. If it was received, Odoo restores the confirmation details such as the QR code, reducing duplicate submissions and manual follow-up.
Original PR description
When a timeout occurs during invoice submission to eTIMS, we had no way to know if the invoice was actually received. Retrying could lead to duplicate invoices being accepted by the government. With the release of the selectInvoiceDetails endpoint, we now check if the invoice was already submitted before retrying. If found, we treat it as successfully sent and retrieve its details (QR code, etc). If not, we proceed to resend. task-4863787 Forward-Port-Of: odoo/enterprise#88858 Forward-Port-Of: odoo/enterprise#88608
This fixes which Helpdesk ticket form is opened from timesheet-related views so users see the appropriate ticket layout for their team restrictions. It helps prevent navigation to the wrong form and keeps the Helpdesk timesheet workflow consistent.
Original PR description
- Replaced `form_view_ref` from `helpdesk_timesheet.helpdesk_ticket_view_form_inherit_helpdesk_timesheet` to `helpdesk_timesheet.helpdesk_ticket_view_form_inherit_helpdesk_timesheet_restrict_teams`. - Add primary mode
A new automated check confirms that website rentals count both the start and end dates correctly. This helps prevent pricing or availability errors where a two-day rental could be calculated incorrectly.
Original PR description
Adds a tour that ensure date-based rental durations are set correctly, i.e. renting from 2025-01-01 to 2025-01-02 should result in a rental period of 2 days. This should prevent commits like 574e111 (reverted by 5982e11) from introducing faulty logic. Forward-Port-Of: odoo/enterprise#88671 Forward-Port-Of: odoo/enterprise#88264
This update adjusts internal test expectations for the Mail enterprise module after a recent merge caused performance checks to fail. It helps keep automated validation reliable without changing business functionality for users.
Original PR description
Started to fail just after merge, weird. runbot-227060
This fix ensures AI email rendering no longer changes shared settings provided by custom modules. It helps avoid unexpected behavior when the same settings are reused elsewhere, improving reliability for customized deployments.
Original PR description
In custom modules the caller parameters are reused, don't modify them in place as it is a bad practice and copy the dict.
This fix ensures that when users save a website form, the related access setting is properly applied instead of being skipped. It also makes the option clearer with a tooltip and improves reliability by avoiding inconsistent handling of form model information.
Original PR description
When [1] converted the form access option to fit inside `html_builder`, the form access was supposed to be enabled upon saving a form, but the used selector was incorrect, which led to the form access not being enabled. Also, a `ModelCache` was created which kept track of the same model but according to various ways to write this key. This system was flawed and led to reaching distinct object depending on the used "synonym" key. This commit: - fixes the selector used during the save operation - removes `ModelCache` and uses a plain cache with the model name as key in all situations - makes changes to form access included in the history - adds a tooltip on that confusing option [1]: https://github.com/odoo/enterprise/commit/689a2186fbe3b932b90bef3b64716c8443bad551 task-4367641
This fix keeps accounting report tests focused on the intended generic tax report, even when US accounting localization is installed. It prevents test failures caused by automatic switching to the US-specific report variant, improving release reliability without changing user-facing behavior.
Original PR description
https://github.com/odoo/odoo/commit/174fda9bde8460df0d819100aed7974321d43a59 added a new US variant for the tax report. When running the tests, some failed, because the active company was then a US one, and calling the generic tax report actually rerouted to that new variant. We now ensure we don't reroute in those tests by using the appropriate option key. runbot-226719
This update prevents errors when Belgian Intrastat VAT report export views are combined with related screens. It removes an empty view definition that could disrupt normal reporting workflows.
Original PR description
In l10n_be_intrastat, we have vat_report_export.xml, which contains an empty arch (because it had to be removed in master). But as this view is inherited by other views, it raises an error, because we're trying to merge a string (the inherits) and a None (the empty arch). We will remove the empty arch in 18.4 (as we did in 18.3), and remove totally the view in master, with an upgrade script. no-task