Thursday, September 18, 2025
37 changes · 19.0
Enhancements to existing features
The app switcher scrollbar now uses a transparent background so it fits more naturally with the surrounding design. This is a small visual refinement that improves polish without changing how users work.
Original PR description
This PR customizes the app switcher scrollbar by using a transparent background for better visual integration. task-5089709
The online courses homepage now shows content that better matches each visitor's situation. Guests no longer see the leaderboard, search results avoid duplicate empty messages, and empty pages are presented with a clearer hierarchy.
Original PR description
This PR fine-tunes 3 different context within the `website_slides` homepage by taking the following actions : 1) Hide the leaderboard if the user is not logged in 2) Fix duplicated no search result message + All courses title appearing even when no result are found 3) Fine-tune empty screen hierarchy task-5085463 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The GitHub issue template has been adjusted for the Odoo 19 release. This helps people report problems with the correct version context, making support and triage clearer for maintainers.
Original PR description
😊 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Discuss users can now press F on desktop to open message search for the current conversation. This makes it faster to find past messages without navigating through the interface.
Original PR description
This commit adds hotkey `F` in discuss app in desktop to quickly open the search panel of the active conversation.
The message "Add reaction" action now opens the same quick reaction menu as the reaction shortcut, showing frequently used emojis first with access to the full emoji picker. This creates a more consistent and faster experience when users react to messages across Odoo discussions and related apps.
Original PR description
Before this commit, message action "Add reaction" and the quick button to add a reaction next to existing reactions on a message differ: - one opens the quick reaction menu, aka the 5 frequently used emoji and "+" button for emoji picker - one opens immediately the emoji picker The quick reaction menu is the preferred UX. The "Add reaction" button next to existing reactions was not adapted, which this commit is changing. Before <img width="317" height="416" alt="Screenshot 2025-09-17 at 16 39 09" src="https://github.com/user-attachments/assets/29143518-b835-4a79-ace9-c686514e4c5b" /> After <img width="288" height="175" alt="Screenshot 2025-09-17 at 16 38 55" src="https://github.com/user-attachments/assets/64d6d321-32fb-4430-b510-9b97df78e2f5" />
Resolved issues and error corrections
This fix removes an unnecessary test dependency from point of sale tour utilities. It helps keep automated checks more stable and easier to maintain without changing the customer-facing point of sale experience.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Malaysian EDI identity card placeholder was updated to remove hyphens, matching how these numbers are typically entered in ERP systems. This helps prevent user confusion and avoids validation failures with IAP and MyInvois services.
Original PR description
Hyphens are generally omitted in ERPs, and just shown on the Identity card. Putting hyphens in the placeholder is actually misleading for users, and prevents validation through the IAP server and MyInvois Ref: https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC) Task [link](https://www.odoo.com/odoo/project/967/tasks/5054821) task-5054821 Forward-Port-Of: odoo/odoo#225094
Several help and documentation links across Odoo Enterprise have been updated so they direct users to the correct 19.0 documentation instead of older 18.0 pages. This reduces confusion and helps users find guidance that matches their current software version.
Original PR description
Community PR https://github.com/odoo/odoo/pull/227546.
This update corrects documentation links that were still pointing to older Odoo 18 pages. Users and implementers will now be directed to the relevant Odoo 19 documentation, reducing confusion when following setup or help guidance.
Original PR description
Before this commit, many of the url is pointing to 18.0. After this commit, the url will point to 19.0 documentation link. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes payroll localisation test failures by ensuring an attendance-related overtime field is only added where the relevant attendance module is available. This helps keep payroll localisation validation reliable across countries without changing day-to-day payroll features.
Original PR description
**Issue:**
The test_{xx}_contract_template_loading test fails across all localisations due to incorrect fields being passed.
**Cause:**
The issue occurs because the _get_whitelist_fields_from_template() method includes the overtime_from_attendance field, introduced in this https://github.com/odoo/enterprise/pull/92093. This field comes from the hr_work_entry_attendance module, which is not listed as a dependency in all payroll localisations. As a result, the field cannot be found during test execution.
**Solution:**
Remove the overtime_from_attendance field from all _get_whitelist_fields_from_template overrides in the localisation modules, and instead include this field by overriding the function in the hr_work_entry_attendance module.
build_error-231680
Forward-Port-Of: odoo/enterprise#94004When a payment memo is edited, the related accounting entry reference is now updated to match. This keeps payment and accounting records consistent, reducing confusion during reconciliation and review.
Original PR description
Issue: In previous versions, the memo field of account payments and ref field of account move were related Now that payments do not required to have generated account move's when the memo is updated the ref remains unchanged. Purpose of this PR: To update the account move ref when the payment memo is updated. Steps to Reproduce on Runbot: install accounting go to bank account and assign outstanding accounts for manual payment methods create a payment -- a related account move should be created update the memo on the payment -- the ref on the related account move is unchanged. opw-4989260 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226168 Forward-Port-Of: odoo/odoo#223459
The test suite now uses UTC for domain tests so results are not affected by the server or administrator timezone. This helps keep automated checks consistent across environments and reduces false test failures.
Original PR description
When testing with demo user, the timezone is in the installed localtime for the administrator user. For the tests, force it to UTC. runbot-error-230424 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an error that occurred when users grouped stock locations while inventory valuation features were installed. This prevents an unexpected crash and lets users analyze locations normally.
Original PR description
Steps to reproduce: - Have `stock_account` module installed - Navigate to stock locations - Group by location Problem: Traceback "ValueError: Cannot convert stock.quant.value to SQL because it is not stored" --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The inventory action to set quantities to zero now works consistently from the forecasted report as well as the physical inventory menu. This helps users correct stock quantities faster and reduces inconsistent inventory handling depending on where the action is used.
Original PR description
The action "Set to 0" was working only via the "Physical inventory" menu and not via the list quants from the forecasted report. This commit makes sure the quant is set to 0 and autoapply the new quantity based on the context (either the "apply" button is present or not Task : 5064269 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 spreadsheet pivot editor now filters out fields that cannot be used for grouping before users select them. This avoids configurations that would later fail on the server, making pivot setup more reliable.
Original PR description
A pivot cannot be grouped in a dimension if some link of the field chain is not groupable. This revision removes the special passthrough for o2m and m2o fields as the final query will still be rejected by the server. task-5095342
Users can now apply vertical alignment to table cells in the website editor without the formatting menu closing too soon. This makes table formatting more reliable when editing website content.
Original PR description
### Steps to reproduce: - Navigate to the Website module. - Drag and drop a Text Snippet. - Create a Table (e.g., /table) and select a table cell. - Click on Vertical Align button in toolbar and apply alignment option. ### Description of the issue/feature this PR addresses: - When clicking on a vertical align option inside the dropdown, overlay was immediately closed. Because of this, the click event handler was not triggered, and the selected vertical alignment was not applied to the table cell. ### Desired behavior after PR is merged: - Prevent overlay from closing by using `data-prevent-closing-overlay`. task-5062814 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225470
The Discuss search bar now has extra spacing from the header, making the interface look cleaner and easier to use. This is a small visual fix that improves readability and polish without changing functionality.
Original PR description
Before this commit, the search bar was too close to the header bar, now padding has been added. Enterprise: https://github.com/odoo/enterprise/pull/95004 task-5092001 | Before | After | |--------|--------| | <img width="440" height="673" alt="Screenshot 2025-09-17 at 11 19 41" src="https://github.com/user-attachments/assets/226c48ff-a6cf-4e13-9f91-7b2fcfa8f92f" /> | <img width="440" height="673" alt="Screenshot 2025-09-17 at 11 19 31" src="https://github.com/user-attachments/assets/2b0b8034-6dff-4717-92fc-322b69a5c2ca" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now mark unread notifications as read directly from the messaging menu, including when clicking the check icon. This prevents accidental opening of the related record and makes notification handling work as expected.
Original PR description
Steps to reproduce: * Open the messaging menu from the systray with an unread notification. * Hover on a notification item. * Click on the `mark as read` button (check icon). The notification is not marked as read. Instead, the related record is opened. In [1] UI changes introduced to avoid flickering in the messaging menu modified the structure of the `mark as read` button. Because the click handler only checked if the clicked element exactly matched the button reference, clicks on the inner icon were ignored and triggered the record opening instead. This commit adjusts the button so that clicks are correctly detected even when they occur on the icon. [1]: https://github.com/odoo/odoo/pull/226531 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The stock app now hides the 'Move a Pack' button when package tracking is not enabled. This prevents users from seeing an action that should only be available when packages are configured, reducing confusion in warehouse operations.
Original PR description
As the button is added though an override of the ListRenderer, there was no check on the group made on the button, meaning that even if the 'Packages' setting wasn't activated, the button would still appear. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The messaging search bar now has extra spacing from the header when dark mode is enabled. This small visual fix makes the interface look cleaner and easier to use without affecting other display modes.
Original PR description
Before this PR, the search bar was too close to the header bar, now padding has been added only in dark mode. Community: https://github.com/odoo/odoo/pull/227647 task-5092001 | Bafore | After | |--------|--------| | <img width="440" height="673" alt="Screenshot 2025-09-17 at 11 20 28" src="https://github.com/user-attachments/assets/000b2cb7-bace-4995-a58c-197f05185a99" /> | <img width="440" height="673" alt="Screenshot 2025-09-17 at 11 20 09" src="https://github.com/user-attachments/assets/bb5a0114-9e33-427d-a17d-66fb95f702ba" /> |
Custom mailing templates are once again limited to new mailings for the same target type they were created from. This prevents users from accidentally selecting an unsuitable template and helps keep mailing setup consistent.
Original PR description
Previously, custom mailing templates (which could be created by marking an existing mailing as Favorite) would only be accessible for new mailings matching the template's target model. This restriction was lost by the update to the new mailing editor; this commit restores it. task-5054968
This update standardizes the wording shown when duplicating accounting records, changing the label to match the style used elsewhere in accounting. It helps provide a more consistent user experience with no expected change to business processes.
Original PR description
For coherence with other models in accounting. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents an error in the mail module when invalid empty values are included while looking up mail records. It improves reliability by ignoring those empty values before processing, reducing the chance of unexpected failures.
Original PR description
Browse breaks when given a bool, so the solution is to filter the list from false values before browsing --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225916
Website editors no longer see duplicate background controls when adding scroll effects to category showcase blocks. This makes editing ecommerce category sections clearer and avoids confusion in the website builder.
Original PR description
Applying a scroll effect on a block from the categories showcase snippets triggers the parallax plugin, which converts the block into .parallax and adds a .s_parallax_bg child. But both global and snippet-local background option registrations then target the same block, resulting in duplicated controls in the builder. This commit fixes this by removing the snippet's custom WebsiteBackgroundOption registration entirely and adding .s_ecomm_categories_showcase_block to the global background selector. task-5076305 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The product showcase design now uses a stronger overlay so product presentation remains clearly visible, even at the highest overlay setting. This improves the shopping page appearance and makes showcased products easier for visitors to view.
Original PR description
This commit adjusts the overlay of the Showcase product design, as it was too light and not visible enough, even when set to its maximum value. task-5090301 | Before | After | |--------|--------| | <img width="1387" height="793" alt="Capture d’écran 2025-09-17 à 15 27 49" src="https://github.com/user-attachments/assets/616e635b-d7ae-4d9a-b6a6-6807e7b68b4d" /> | <img width="1370" height="788" alt="Capture d’écran 2025-09-17 à 15 29 05" src="https://github.com/user-attachments/assets/094e00c2-6658-4d8b-a57d-a909ade08ca4" /> | --- 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 blocks directly from the editor. This fixes a missing media replacement option, making it easier to customize website catalog visuals without workarounds.
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 (e.g., sofas, drawers, or desks) to replace it. 4. Notice that there is no Replace Media button. Issue: The _Banner Categories_ snippet does not contain a selector that triggers the Replace Media option. Reason: Since the snippet lacked a dedicated selector for its background images, the system could not detect or offer the replacement option. Fix: Added a generic selector named o_background_image to both the Banner Categories snippet and the Replace media options. Because it is a generic selector, it can also be reused in other snippets.
This fix adds the missing 'SZJ' product code required by Hungary's official NAV XML invoicing specification. It helps ensure Hungarian electronic invoices can use all officially supported product code types, reducing compliance issues for affected businesses.
Original PR description
Description of the issue/feature this PR addresses: In the official NAV XML 3.0 documentation (available at: https://onlineszamla.nav.gov.hu/dokumentaciok page 123), according to the list of possible product codes, there is an 'SZJ' code that is missing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226213
Long values in editable Many2one fields are now shortened with a visible ellipsis instead of causing layout misalignment. This keeps employee form fields, such as private state information, visually aligned and easier to read.
Original PR description
The text-truncate bootstrap class of the m2o field does not work properly as the ellipsis is not visible and create an alignment issue with the private_state_id field. This PR solves this issue which can be seen in the "Private information" tab of the employee form. Task-5078736 Forward-Port-Of: odoo/odoo#226214
A flaky automated test for purchase catalog suggestions was temporarily shortened to avoid inconsistent failures. This helps keep validation runs reliable while the related suggestion logic is being reworked separately.
Original PR description
Temporarily remove last part of suggest feature JS tour, which test record interactions as well as filter interactions. WHY: Non deterministic behavior, see: https://runbot.odoo.com/odoo/runbot.build.error/232708 https://runbot.odoo.com/odoo/runbot.build.error/231734 This was simply commented out because the logic, as well as the tour are being reworked in this PR https://github.com/odoo/odoo/pull/225721 task#4783508 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change reverses a previous update that caused automated build failures. It restores the prior behavior for user settings field descriptions, helping keep the system stable for future releases.
Original PR description
This reverts commit adef0f7261de8f5936aff62077732a974c313f39. Responsible for this runbot error: https://runbot.odoo.com/odoo/runbot.build.error/230934
Project reports now leave out tasks that belong to template projects, so reporting reflects only real active project work. This prevents template setup data from distorting business metrics and management views.
Original PR description
Tasks in project templates should be excluded from the reporting. Task-5096193
This update fixes internal test failures for Mexico electronic invoicing by giving the test user the required Sales permissions. It helps keep validation reliable without changing how customers create sales orders or invoices.
Original PR description
The tests `test_global_discount` and `test_down_payment` in `l10n_mx_edi_sale` were failing with:
AccessError: You are not allowed to create 'Sales Order' (sale.order) records.
This happened because `mx_external_setup` runs with a user that does not belong to any Sales group. Both tests explicitly create Sale Orders and advance payment wizards, which require Sales ACLs.
This change ensures the test user has the `sales_team.group_sale_salesman` group in `setUpClass`, so Sales Orders can be created normally. No business logic is modified, only test stabilization for the MX localization.
[RB-232559](https://runbot.odoo.com/odoo/error/232559)
Forward-Port-Of: odoo/enterprise#94911This update fixes an internal Swiss payroll test by removing a reference to a field that is no longer supported. It helps keep automated checks reliable without changing payroll features or user workflows.
Original PR description
The CH contract template whitelist test referenced `overtime_from_attendance` when creating a Version. task-5095572 Forward-Port-Of: odoo/enterprise#95034
The automatic cleanup process now skips documents that are linked to signed document records. This prevents background deletion jobs from failing while still keeping signed documents protected from manual deletion.
Original PR description
Currently an error occurs when auto vacuum tries to clear documents linked to `sign_document`. **Steps to replicate:** * Install `documents_sign` with demo data. * Go to documents > Move Employment…
Currently an error occurs when auto vacuum tries to clear documents linked to `sign_document`. **Steps to replicate:** * Install `documents_sign` with demo data. * Go to documents > Move Employment contracts to trash * Trash > Try to to delete employment contract you will see error in terminal. Similarly error will be produced by the Auto-Vacuum process when it attempts to delete it after the configured deletion delay. **Error:** `ForeignKeyViolation: update or delete on table 'ir_attachment' violates foreign key constraint 'sign_document_attachment_id_fkey' on table 'sign_document' DETAIL: Key (id)=(1164) is still referenced from table 'sign_document'.` **Root cause:** * At [1], the `sign.document` model was introduced, which prevents the deletion of sign documents. As a result, attempting to delete them due to [2] will cause an error. **Solution:** * Update the `_get_gc_clear_bin_domain` to ensure that the Auto-Vacuum process skips sign documents. * This will still throw an Validation and ForeignKey error as expected when the user tries to delete it from the GUI letting them know it cannot be deleted. [1]: https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b#diff-deebbcccf829fd1804d145c5c7140b482801644bd948639f77caa310b18b8120 [2]: https://github.com/odoo/enterprise/blob/828d47f9ad1d5e396b074c404287799574a6d692/sign/models/sign_document.py#L44 sentry-6842360375 Forward-Port-Of: odoo/enterprise#95018 Forward-Port-Of: odoo/enterprise#93818
This update standardizes button text, tooltips, and accessibility labels across the online shop. It makes customer-facing actions clearer and more consistent while also correcting minor wording and formatting issues.
Original PR description
Harmonize & fix buttons labels/titles/aria-labels Correctly format/order button nodes attributes Fix some typos --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enabling the Can Create option in Studio for Website Live Chat channels no longer triggers an error. This prevents an interruption when administrators customize Live Chat views and makes the setup experience more reliable.
Original PR description
Currently, an error occurs when enabling `Can Create` in Studio for a Website Live Chat channels. **Steps to reproduce:** - Install the `im_livechat` and `web_studio` modules. - Go to `Live Chat`,…
Currently, an error occurs when enabling `Can Create` in Studio for a Website Live Chat channels. **Steps to reproduce:** - Install the `im_livechat` and `web_studio` modules. - Go to `Live Chat`, create a new channel, then return to the Live Chat channels view and open the newly created channel in kanban view. - Open `Studio` and enable `Can Create`. **Error:** ``` SyntaxError: syntax error at or near ')' LINE 12: WHERE discuss_channel.id IN () ``` **Root Cause:** At [1], an `SQL query` is executed with `self.ids`, when `self.ids` is `empty`, this leads to an `error`. **Fix:** This commit prevents the error by updating `_get_last_messages` to check for `empty self.ids` and return an empty recordset early and also updates `_compute_duration` to safely handle cases where `record.create_date` is `False`. [1]: https://github.com/odoo/odoo/blob/70a7babcc830f72bd069a5bb1504748363e4e848/addons/mail/models/discuss/discuss_channel.py#L1404-L1421 sentry-6861438710 Forward-Port-Of: odoo/odoo#225899
This change prevents internal performance tests from failing because of unpredictable timing variations. It helps keep development and release checks stable without affecting customer-facing features.
Original PR description
These tests are non-deterministic, we should not fail when running them. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227515 Forward-Port-Of: odoo/odoo#226278