Monday, June 30, 2025
23 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 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 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
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 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
The 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
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 .
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
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
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 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