Monday, December 22, 2025
16 changes · 19.0
Enhancements to existing features
This update improves internal website builder testing by avoiding repeated parsing of the same large snippet data. It helps speed up automated test execution, supporting faster validation and development cycles without changing user-facing behavior.
Original PR description
__Behavior before commit:__ - [`SnippetModel`] loads all snippets and parse them for every test that uses a snippet. - `getStructureSnippet` parse them as well This parsing may take around 80 ms for each test because it is 1MB long. __Fix:__ `DOMParser.parseFromString` is patched to cache its result when it's the snippet document. This significantly reduce the duration of the website builder test suite. [`SnippetModel`]: https://github.com/odoo/odoo/blob/4de72eeca8b8f9251ea18cd48330fc1c48bce1bd/addons/html_builder/static/src/snippets/snippet_service.js#L138 task-5269391 Forward-Port-Of: odoo/odoo#240365
The point of sale order list no longer shows an invoice status badge when an order is marked "to invoice." This reduces confusion for users by avoiding the impression that they must manually create an invoice when no action is needed from the list view.
Original PR description
In this commit: - Hide the invoice status badge when the status is "to invoice" in order list. - Prevent confusion by ensuring users don’t assume an invoice needs to be generated. Task-5347495
The Mexico localization demo company name was updated so demo data can be used to validate CFDI documents and XML files. This helps ensure Mexican electronic invoicing examples work correctly in testing and demonstrations.
Original PR description
Update the demo company name so we can validate CFDI's and XML target: 19.0 task-5239031 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
User activity is now detected even when clicking on interface elements that stop clicks from reaching the usual listener. This helps ensure a user's presence changes back from away to online correctly, improving accuracy for availability indicators.
Original PR description
Before this PR, Elements that stopped event propagation (e.g., using event.stopPropagation()) prevented the global click listener from firing. As a result, user activity wasn't detected, and the presence status stayed "away" instead of switching back to "online". This PR fixes the issue by enabling event capturing on the global click listener (useCapture: true). With capture mode, the listener receives the event during the capture phase before any element can stop propagation. Bug:  task-[4892229](https://www.odoo.com/odoo/project/1519/tasks/4892229) Forward-Port-Of: odoo/odoo#238650
Documentation and clarification updates
This pull request records an individual Contributor License Agreement signature. It supports Odoo's legal contribution process and does not change product functionality or user workflows.
Original PR description
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an unexpected background request from happening while using the Email Marketing HTML editor. It improves reliability for users editing mass mailing content and helps avoid unnecessary network activity or test instability.
This update corrects an internal automated test that could fail in January or February because week numbers were compared without the expected leading zero. It helps keep test results reliable and prevents false failures during release validation, with no expected impact on end users.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Run `test_ir_sequence_iso_directives` in January or February. Issue ----- Test fails due to the sequence generated having a leading zero on the ISO week number, whereas the comparison string doesn't. Cause ----- We get the week number from the comparison string from the `isocalendar` method as a simple `int`, hence we it doesn't automatically get formatted with a leading zero. Solution -------- In the comparison string, ensure the `isoy` and `isoweek` parts are always formatted with 2 width, adding a leading zero when needed. runbot-234592 Forward-Port-Of: odoo/odoo#238721
Fixes a display issue in the HTML builder where dropdown choices and adjacent button groups could overlap or hide text. This makes animation settings easier to read and use when editing website content.
Original PR description
Fix animation options layout when a select and a button group share the same row. Ensure the select text remains visible and the buttons show their full labels (e.g. for "onScroll"). | Before | After | | ------------- | ------------- | | <img width="290" height="39" alt="image" src="https://github.com/user-attachments/assets/4fb367fe-77f0-4038-ac2c-c0d856aeba8f" /> | <img width="288" height="40" alt="image" src="https://github.com/user-attachments/assets/99402e23-4144-42bf-81b1-7ddec0c35cfe" /> | | Before | After | | ------------- | ------------- | | <img width="290" height="36" alt="image" src="https://github.com/user-attachments/assets/39f1a6d0-3ba5-4c80-b452-5c5ba03cee2d" /> | <img width="289" height="39" alt="image" src="https://github.com/user-attachments/assets/482f84cc-7600-4510-91d7-1d6ad9d63937" /> | task-5353509 Forward-Port-Of: odoo/odoo#239588
Timesheet creation notifications will now appear only when records are created from the calendar, instead of showing in unrelated areas. This reduces unnecessary pop-ups and keeps users focused on the relevant workflow.
Original PR description
This occurs due to the reason we have not limited the notification using bus to shown only when records are created in calendar. Due to this when ever timesheet is created notification occurs. Fix: Use context to limit notifications to be visible. Problem from : https://github.com/odoo/odoo/pull/240049 opw-5431729
The spreadsheet chart side panel now correctly applies the 'Use compact format' checkbox for Odoo charts. This fixes a confusing control that was visible but had no effect, helping users format chart values as expected.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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 Point of Sale order details screen no longer tries to open an employee profile from the sales interface when clicking the cashier name. This prevents an error screen and keeps employee record navigation in the back-office where it belongs.
Original PR description
Steps to reproduce ------------------ 1. Enable "Log in with Employees" 2. Login with any employee and make an order 3. Switch to the admin, "Mitchell Admin" usually 4. Go to the paid orders (we are still in PoS UI not in the backend), and select the order paid in step 2. 5. Click on "Details", the order form will appear, click on the "Cashier" name A traceback will appear, saying 'Cannot find key "hr_employee_form" in the "views" registry'. The fix ------- We simply disable the employee_id field; it will not try to open the employee form anymore. That is much simpler than adding all the required hr assets to the PoS frontend. Employee details are meant to be seen and navigated from the backend. opw-5252486 Forward-Port-Of: odoo/odoo#240012
A previous error prevented users from completing sign requests after a user was deleted. This fix addresses a technical issue where the system incorrectly handled missing user information when retrieving suggested sign requests. By safely handling cases where user IDs are missing, the system now reliably allows users to complete sign requests without errors.
Original PR description
Currently an error occurs when a user tries to click `Valid & Send Compeleted Document` as follows below: - Install the `sign` module with demo data - Log in as the `demo` user and send 2 sign requests to the `admin` user - Now log in as the `admin` user and delete the `demo`user - Go to the sing and open sign request that was sent by the `demo` user - Complete the sign and click on `Valid & Send Compeleted Document` This issue occurred while retrieving the suggested sign request items. The code was accessing the `create_uid` of those items, but because the user had been deleted, `create_uid` was set to False instead of containing a valid user ID and user name. This commit fixes the above issue by handling cases where `item['create_uid']` is False. When `item['create_uid']` is False, the code now safely returns `False` instead of attempting to access its index. sentry-7116433081 Forward-Port-Of: odoo/enterprise#102438
This update fixes an issue where sharing a document link within the list view didn't automatically open the preview. Now, the preview opens in the list view, similar to the kanban view, ensuring a consistent and user-friendly experience when accessing shared documents. This improves usability for users who primarily view documents in the list format.
Original PR description
Bug === If the user has the list view as his default view, if we share him a document, the preview is not opened. After this commit, the preview is opened like in the kanban view, and the document is selected. Task-5361212 Forward-Port-Of: odoo/enterprise#102598 Forward-Port-Of: odoo/enterprise#100716
This update clarifies the labeling of a key reporting menu item within the Enterprise module. Previously, duplicate menu names caused confusion. The 'Currencies' menu item under 'Review' has been renamed to 'Unrealized Currencies' to accurately reflect its function and improve user experience.
Original PR description
Previously, there were two menu items named `Currencies`: one under Review and another under Configuration, which caused confusion. The one under Review was incorrectly labeled, it should have been `Unrealized Currencies`. This **PR** renames the menu item under Review to `Unrealized Currencies` to reflect its actual purpose. **task**-5169637
This update fixes an issue where sharing a deleted spreadsheet caused errors. It now correctly identifies if a spreadsheet is archived and hides the 'Share' options when it's in the Trash, providing a cleaner and more intuitive user experience. This ensures users can't accidentally share deleted documents.
Original PR description
## Description This PR fixes a traceback when sharing a spreadsheet that is in Trash. It exposes `is_archived` in the spreadsheet metadata and adds an `env.isArchived()` getter on the environment. It hides the topbar "Share" button and the "Share"/"Freeze and share" menu entries when the document is in Trash. Task: [5166945](https://www.odoo.com/odoo/project/2328/tasks/5166945)
This update resolves a technical issue where a checkbox in the Odoo chart side panel was present but not functioning correctly. The checkbox for 'Use compact format' was implemented, but did not affect chart rendering. This fix ensures that users can now consistently utilize the compact format option for their charts.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)