Thursday, September 11, 2025
41 changes · 19.0
Enhancements to existing features
The stock transfer list now separates date-related filters from other filter options. This makes it easier for users to find and apply date filters when managing warehouse operations.
Original PR description
Task: 5075847 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 website shop configurator preset images have been refreshed with a new placeholder logo. This keeps the setup experience visually consistent and better aligned with current branding when users choose product and shop layouts.
Original PR description
Update configurator preset images in `website_sale` with new placeholder logo. task-5080114 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Color choices now use a rounded visual style and clearly show which color is selected. This makes color selection more consistent and easier to understand across project and general interface areas.
Original PR description
We now have rounded item colors, and we can now see which color is selected. task-5049476 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 mail composer now better detects when users are actively editing a message, so messages can be marked as read at the right time. Its border styling also gives clearer visual feedback when the composer is focused.
Original PR description
This commit binding the focusin and focusout handlers to the HTML composer, making the mark as read feature working as expected. Also, this commit improves the border styling of the composer with focus state. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update reorganizes how spreadsheet borders are handled to make editing behavior more consistent and easier to maintain. It helps reduce the risk of future issues in spreadsheet features such as list and pivot autofill, with minimal direct impact for users.
Resolved issues and error corrections
This fix ensures the online store uses the right template when displaying an alternative website snippet. It helps prevent incorrect page elements from appearing, keeping the shopping experience consistent for visitors.
Original PR description
This commit use correct template key in alternative snippet. Issued PR: https://github.com/odoo/odoo/pull/214744
Code cleanup and technical improvements
The builder asset bundle was renamed to better reflect that it is now shared by website editing and mass mailing email composition. This is an internal naming cleanup that improves clarity for future maintenance without changing business workflows.
Original PR description
Miscellaneous changes
This pull request updates Odoo's release information for version 19.0. It helps ensure the product correctly identifies and communicates the new release version across business and operational contexts.
This fix prevents internal display conditions from appearing in the shop page header markup. It keeps the website storefront output cleaner and avoids unintended visible or hidden technical values in the page structure.
Original PR description
In odoo/odoo@f207c7644400228a2ee10dcb3f2731250fcbea08 we introduced conditions on the `o_wsale_products_header` to tweak its styling. However some of the conditions were returning the value of `category` instead of a False boolean. This commit replaces it with `bool(category)` to ensure the condition is False and not rendered in the DOM. task-5059179 What was rendered before this fix: <img width="365" height="157" alt="image" src="https://github.com/user-attachments/assets/ae60629b-7b3d-46bd-bfb4-d935419402a9" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website search empty-state icon has been updated to match the current user interface. This keeps the search experience visually consistent and avoids a small mismatch in the website design.
Original PR description
Before this PR, the empty search icon was not the same as the current one in the UI. task-5062081 | Before | After | |--------|--------| | <img width="469" height="288" alt="Screenshot 2025-09-03 at 11 46 46" src="https://github.com/user-attachments/assets/2d9b1a3b-bfe1-4b3a-af3a-bfc00da1f535" /> | <img width="469" height="288" alt="Screenshot 2025-09-03 at 11 46 36" src="https://github.com/user-attachments/assets/08da73c6-28fd-4ab8-8c83-034af891ca36" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website shop editor now shows each sample product name only once when previewing a dynamic product catalog without real products. This avoids confusing duplicate text in the preview and makes the editing experience cleaner.
Original PR description
When editing the dynamic product catalog snippet with no real products available, a default sample is generated. Each sample product is assigned a fictitious name. However, the card template for each product also renders a default product name when sampling is enabled, leading to an issue where two names were displayed. This fix ensures only one name is shown by removing the default product name if one is already available.
This fix adjusts several spreadsheet dashboards so their charts are properly aligned. Users reviewing expense, restaurant, sales, timesheet, and eCommerce dashboards should see cleaner, more consistent layouts.
Original PR description
This commits fixes some misaligned charts. Task: 5081680 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
This fixes the compact Discuss sidebar so avatars and their clickable areas are centered. It improves visual consistency and makes the sidebar easier and more reliable to use.
Original PR description
Items were not centered, so the avatar and click zone was off-centered. This commit centers the avatar to fix the issue. Before / After <img width="56" height="578" alt="Screenshot 2025-09-10 at 14 34 09" src="https://github.com/user-attachments/assets/400de8c1-6a87-49d3-823e-157048962bca" /> <img width="59" height="578" alt="Screenshot 2025-09-10 at 14 34 21" src="https://github.com/user-attachments/assets/c4dd72cb-04e9-40df-8e13-f0fe39643c3a" />
The Indian localization now requires a PAN entity name before saving. This prevents users from encountering an error during record creation when the field is left blank.
Original PR description
Cause: When saving a PAN Entity without a PAN, `record.name` is False. The create() method calls `record.name.upper()`, which crashes with "AttributeError: 'bool' object has no attribute 'upper'". Before this commit: It was possible to save a PAN Entity without a name, leading to a traceback during record creation. After this commit: The PAN field is marked as required. Ref - https://pastebin.com/Gu15zLwA
Fixes an editor issue where pasting the same hyperlink twice in a row could merge both links into one element and cause an error. The editor now only merges safe text-formatting elements, improving reliability when users paste links into content.
Original PR description
Steps to reproduce: - Copy a valid hyperlink (e.g., https://example.com). - Paste it into the editor. - Without changing the selection or moving the cursor, paste the link again. - Inspect the DOM: both links are merged into single tag, causing a traceback. Description of the issue/feature this PR addresses: - When pasting the same hyperlink multiple times without moving the cursor, editor merged them into a single anchor tag, which triggered a traceback. This appeared after commit [1](https://github.com/odoo/odoo/commit/2752ca733b4feda4ef16eef02fdaba1561ceb6b7), it introduced root-level check for mergeability. Desired behavior after PR is merged: - Only formattable inline tags (SPAN, FONT, B, STRONG, I, EM, U, S) are eligible for merging. task-4965381 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223366
Website editors now see navbar logo height changes immediately while adjusting them, instead of only after saving or reloading assets. This makes the editing experience more accurate and avoids confusion when customizing a site's header.
Original PR description
Steps to reproduce: - Website > Go to Website > Edit - In the sidebar: Navbar logo, change Height - Before: the logo size does not change until clicking Save (or after bundles reload) - After: the logo resizes immediately while editing Since [1], the header logo is rendered with width and height attributes to reserve space and reduce CLS. But since [2], the `width` and `height` attributes have been removed and converted to inline styles, which take precedence over the CSS stylesheet. This commit addresses this issue. [1]: https://github.com/odoo/odoo/commit/d80b8cbc28b6e9d16608f9ecfcf4b360d0c792c7 [2]: https://github.com/odoo/odoo/commit/cb2510f4e525192e4b3d5d673218775c2d9d174e Forward-Port-Of: odoo/odoo#226283
The Uruguay localization now points users to the dedicated Uruguay fiscal localization documentation instead of a general localization page. This makes it easier for users to find the relevant guidance directly from the app information.
Original PR description
Description of the issue/feature this PR addresses: The website link in the `l10n_uy` manifest was pointing to a generic documentation page. Current behavior before PR: Link in manifest points to `https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations.html` Desired behavior after PR is merged: Link in manifest points to `https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/uruguay.html` Forward-Port-Of: odoo/odoo#226169 Forward-Port-Of: odoo/odoo#225460
This fix moves product sellability logic to the correct eCommerce module, where the required website publishing information is available. It helps prevent cart-related errors after the recent eCommerce cart redesign while keeping related sales, delivery, and loyalty behavior aligned.
Original PR description
*: sale, delivery, sale_loyalty, website_sale_loyalty In [^1], the eCommerce cart page was refactored to enhance its responsiveness and design. During development, a method closely tied to the `website_sale` module was mistakenly placed in the `sale` module. This method relies on the `is_published` field, which is only available in `website_sale`. This commit corrects the placement by moving the method to its appropriate module, `website_sale`. [^1]: https://github.com/odoo/odoo/pull/190720
The Indian localization demo company data now includes a TAN number when TDS is enabled. This prevents setup or demo data issues caused by a missing mandatory tax deduction identifier.
Original PR description
TAN number is a mandatory field when TDS is enabled on a company. 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
This fix restores transparent gray color options in the website editor's custom color filter settings. Business users editing website content can now reliably select these grayscale filter options as intended.
Original PR description
Following the [refactor] of the html_builder, [addition] of the transparent grayscale, and this [commit], we had an issue when the transparent grayscale wasn't displayed as needed because it wasn't…
Following the [refactor] of the html_builder, [addition] of the transparent grayscale, and this [commit], we had an issue when the transparent grayscale wasn't displayed as needed because it wasn't added to 'EDITOR_COLOR_CSS_VARIABLES', which later were used to save colors together with the theme color prefix, i.e., --hb-cp-'color'. Steps to see the issue: - Open website and start editing - Drop a s_cover snipper and click on it - Click on the "Filter" option and select "Custom" - Click on "Color Filter" and go to the "Custom" tab -> Transparent Grayscale isn't displayed correctly. This commit copies [1], which was lost in the refactor. [refactor]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 [addition]: https://github.com/odoo/odoo/commit/55c58bf45165e3a3eafcbaecc516e7c1d19809a6 [commit]: https://github.com/odoo/odoo/commit/eb12451a169c752034abb5d4aab9926c19067ebf [1]: https://github.com/odoo/odoo/commit/5490c126f42bd1729ba0d4b4103d7284ba7ab8c0 Forward-Port-Of: odoo/odoo#225931
The wishlist checkout test now allows more time to complete, reducing false failures when automated validation runs slowly. This helps keep release checks stable without changing the customer-facing wishlist experience.
Original PR description
Increase timeout for wishlist tour. As it was taking too long to complete. runbot-229616 Forward-Port-Of: odoo/odoo#225357 Forward-Port-Of: odoo/odoo#219653
This fix prevents a confusing system error when saving a view that includes an XML encoding declaration. Users now receive a clearer, handled message explaining the issue, making the problem easier to understand and correct.
Original PR description
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User…
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User Interface > Views` Create or edit any view. - Enter the `view name` and select `view type`. - In the Architecture field, declare encoding as: `<?xml version='1.0' encoding='utf-8'?>`. - Attempt to save the view. **Error:** `ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.` **Root Cause:** The [1] call raises a ValueError when the XML declaration includes an encoding attribute. This low-level error is not handled and results in an ungraceful failure. [1]- https://github.com/odoo/odoo/blob/bf4ccb21f6c9c8bcda9c6f94d844c89296523954/odoo/tools/translate.py#L281 This commit ensures raising an UserError, improving the error message clarity. sentry-6505918596 Forward-Port-Of: odoo/odoo#226396 Forward-Port-Of: odoo/odoo#205324
Vendor price lists created from blanket orders now keep the unit of measure chosen on the blanket order line instead of switching to the product's default unit. This helps purchasing teams avoid pricing mistakes when negotiating or buying in alternate units.
Original PR description
This commit fixes setting the UoM of the vendor pricelist generated by a blanket order. Previously, the created pricelist had the base unit of the product. Now, it has the unit of the blanket order line. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226033
The Belgian demo company now uses a properly formatted VAT number. This prevents validation issues when users test Belgian localization features with demo data.
Original PR description
The Belgian VAT doesn't have the right length, which is causing weird behavior when testing feature with demo data.
In particular, since the company_registry is computed based on it, Odoo doesn't pass some validation since it's not a correctly formatted data.
The VAT should be following the format `^BE[0-1][0-9]{9}$`. So "BE" followed by 10 digits, while we only had 9.
task-noneThis fixes an issue where images in duplicated Team Basic blocks could not be selected or edited. Users can now duplicate team content and still adjust image options as expected in the website editor.
Original PR description
[FIX] html_builder, *: enable image options on duplicated team snippet *: html_editor Steps to reproduce the problem: - Drop the "Team Basic" snippet. - Duplicate it. -> When you click on an image of…
[FIX] html_builder, *: enable image options on duplicated team snippet *: html_editor Steps to reproduce the problem: - Drop the "Team Basic" snippet. - Duplicate it. -> When you click on an image of the duplicated block, the image is not selected and you can not change the options related to it. The problem is that the `o_editable_media` class does not appear on the images of the duplicated snippet as it is a system class. This commit removes the `o_editable_media` class from the system classes. Indeed, it was added by [1] to avoid the closest savable to be marked as dirty when this class was added. However, this class is added during the `normalize` and since [2], the mutations done at the `normalize` do not trigger the adding of the `o_dirty` class anymore. [1]: https://github.com/odoo/odoo/commit/c20dfb73528d60a079d73564504646fe7d1d4272 [2]: https://github.com/odoo/odoo/commit/7c5cdb6d70eea29dec4ba126e62eeb93c6e6eeb2 Related to task-4367641 Forward-Port-Of: odoo/odoo#226051
This fix makes the import screen easier to customize by allowing its startup behavior to be overridden. It helps teams and extensions adapt import workflows without changing the core application, reducing maintenance risk.
Original PR description
This commit, allows to override the `onWillStart` of the import action component.
This fixes a case where email or message processing could fail when expected message details were missing. The change helps keep mail-related workflows running smoothly instead of stopping on incomplete internal data.
Original PR description
msg_vals might not be propagated.
This fix lets users open meeting chats from embedded live chat, matching the intended live chat experience. It removes a small limitation where the meeting chat option existed but was blocked in the embedded version.
Original PR description
The embed live chat has a subset of allowed thread actions. The meeting chat action was added but not added to the allowed thread actions. In the future, we will allow most of the thread actions, at least the ones allowed for guests. Environment should not impact feature availability. However for now, let's just enable the missing action. 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
This fixes a confusing mobile display issue for product cards with secondary images. The image indicators now better reflect how shoppers can scroll through product images, reducing the chance that the product card appears broken.
Original PR description
=> https://github.com/odoo/odoo/pull/226578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Website editors can now replace background images in Banner Categories, such as sofas, drawers, and desks. This fixes a missing editing option and makes content updates easier without needing technical help.
Original PR description
Steps to reproduce: 1. Go to Website > Edit Mode. 2. Add a Banner Categories snippet from catalog. 3. Click on the image of a category (including sofas, drawers or desks) to replace it. 4. There will be no replace media button. Issue: The banner categories snippet does not contain a selector through which replace option was triggered. Fix: Added a generic selector named o_background_image to both the banner categories snippet and the replace media options. As, it is the generic selector, It can be used for other snippets too.
The checkout and portal address selector now displays more consistently on mobile devices. Spacing and edit icon placement were adjusted so customers can review and manage addresses more easily during checkout and in the portal.
Original PR description
This PR fixes some issues regarding the mobile design of the address selector, mainly by adapting the margins and paddings in and between the components. 1. The 'edit' icon placement was changing if…
This PR fixes some issues regarding the mobile design of the address selector, mainly by adapting the margins and paddings in and between the components. 1. The 'edit' icon placement was changing if there was no badge on the card (address checkout & portal page). 2. Refine the spaces in the address & billing summary on the payment method page. task-5081875 | | Before | After | |--------|--------|--------| | 1 | <img width="1179" height="2556" alt="image" src="https://github.com/user-attachments/assets/33faf30b-3b6c-47ce-acef-12265b50df0d" /> | <img width="368" height="802" alt="image" src="https://github.com/user-attachments/assets/1432d00e-9d41-488d-b482-b64728319206" /> | | 2 | <img width="1179" height="2556" alt="image" src="https://github.com/user-attachments/assets/195da2f4-9f0e-4cc8-bb4d-df55fc887216" /> | <img width="1095" height="2040" alt="image" src="https://github.com/user-attachments/assets/046f1353-df4b-4b4b-b14c-1fe4d7db85c1" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A bug in the Belgian CodaBox integration could cause an error when processing company records. The fix ensures the correct company is used, helping avoid interruptions for businesses using CodaBox bank document workflows.
Original PR description
We incorrectly used the recordset `self` instead of the record `company` This commit fixes this opw-5036698 Forward-Port-Of: odoo/enterprise#94289
Several spreadsheet dashboards now display charts with improved alignment, making reports easier to read and compare. The updates also refine the Helpdesk and Operation Analysis dashboards for a cleaner viewing experience.
Archived quality control points are now correctly excluded from the product Quality Points button and its count. This prevents users from seeing outdated or inactive quality checks when reviewing products.
Original PR description
**Steps to reproduce:** 1. Install the module `quality_control`. 2. Go to **Products → select any product → Quality Points (smart button)**. * Create a new Quality Point that applies to *all…
**Steps to reproduce:** 1. Install the module `quality_control`. 2. Go to **Products → select any product → Quality Points (smart button)**. * Create a new Quality Point that applies to *all products*. 3. Open any product form. * Verify that the *Quality Points* smart button shows the created point and the correct count. 4. Archive the Quality Point. 5. Reopen the same product form and check the *Quality Points* smart button again. **Observed behavior:** - The archived Quality Point is still counted and shown in the smart button. **Root cause:** - During the refactor from raw SQL (`get_sql` + `cr.execute`) to the ORM query builder (`query.add_where(SQL(...))`), one outer bracket was dropped. [ref](https://github.com/odoo/enterprise/pull/66290/commits/a6362bc07eac7640f68d145a0f6a14a81f499913#diff-2ffdc2ffc25417076b580b772447514c7e9d8b3e2d2fff2d3100721eb5ccbaf4L542-R561) - This changed the operator precedence, causing the `active = true` condition to no longer properly apply when combined with the OR block. - As a result, archived Quality Points bypass the filter and are still counted. **Solution:** - Fix the missing bracket in the `query.add_where` SQL expression so that the `active` condition is always enforced before evaluating the OR block. opw-5046289 Forward-Port-Of: odoo/enterprise#94173
The "Count Entire Locations" button now appears correctly during regular warehouse actions such as deliveries and receipts. It remains restricted only on the physical inventory page, helping staff access the right counting action without disrupting standard operations.
Original PR description
This commit fixes showing "Count Entire Locations" button in normal operations (delivery, receipt, etc.) and only restricts it in physical inventory page.
The bank synchronization duplicate-finding tool now removes wording that incorrectly suggested users could choose a journal. This avoids confusion by keeping the message aligned with what users can actually do in that screen.
Original PR description
The aim of this commit is removing a small part of sentence in the find duplicate tool in bank synchronization. Indeed, this sentence is proposing the customer to select the journal where it's not possible to do it. no task id
A bug was fixed so accounting import buttons can pass the correct target directly, instead of relying on the surrounding screen to guess it. This helps ensure each import option opens the intended workflow when several import buttons are available on the same page.
Original PR description
Since [1], the import action will infer the model from the current action. In this case, the action is a client action with multiple import buttons. This commit, adapts the extends of the import action to accept the model as as a parameter.
The Indian tax report document summary now avoids showing a misleading “Missing” status when the expected data is already available. This improves clarity for users reviewing GSTR-1 reporting information and helps prevent unnecessary follow-up on valid records.
Original PR description
Issue: - `Missing` tag appeared in document summary even when data was present. - Additionally, record_name was passed in `_check_suite_in_gstr1_report`, but as a computed field it never worked as intended. Fix: - No `missing` tag appears if document summary exists. - Replaced `record_name` with `record_model` to ensure correct record count and computed record name.
The AI context feature now safely handles files that have been added but not fully saved yet. This prevents errors during quick record creation or file uploads, improving reliability for users working with attachments.
Original PR description
When a record contains unsaved binary fields during quick creation or file upload, no ir.attachment exists yet. This leaves `raw bytes objects` in the record’s values, which caused `_get_ai_context()` to crash during `json.dumps()`. This fix updates `_ai_context_json_default()` to also handle raw bytes values (in addition to NewId), converting them into safe string representations so they can be serialized. This prevents crashes in `_get_ai_context()` and ensures consistent JSON output for records with unsaved binaries. task-19060
*: mass_mailing, portal, website, website_mail, website_mail_group, website_mass_mailing, website_payment, website_profile, website_sale The new html_builder is used by both website and mass_mailing. While the old name `[html_builder|website].assets_edit_frontend` makes sense in the context of the website builder, where the iframe is indeed used to "edit the frontend", it is not the case in mass_mailing, where the email being composed is not a "frontend". A more generic name is more appropriate.
This update tidies the internal tests for subscription optional products without changing customer-facing behavior. It helps keep the subscription area easier to maintain and reduces future risk when related features are updated.
Original PR description
See Also: - https://github.com/odoo/odoo/pull/226052
This change updates an internal asset bundle name so it better fits shared use across website building and mass mailing. It helps keep naming consistent as the same editor technology is used beyond website pages, with no expected direct impact for end users.
Original PR description
The new html_builder is used by both website and mass_mailing. While the old name `[html_builder|website].assets_edit_frontend` makes sense in the context of the website builder, where the iframe is indeed used to "edit the frontend", it is not the case in mass_mailing, where the email being composed is not a "frontend". A more generic name is more appropriate. This commit is linked to the community PR that updates the bundle name everywhere.