Daily updates from Odoo
Monday, February 23, 2026
11 changes · saas-19.2
Enhancements to existing features
This update replaces a complex caching mechanism with a simpler one for functions without arguments. This change reduces unnecessary overhead and improves the performance of key Odoo modules, leading to faster response times. The update focuses on internal optimizations without impacting user-facing features.
Original PR description
A 0-argument function can definitionally only have one cache entry (at `()`). Not only is a bound entirely useless (`lru_cache` does not do any presizing), using `lru_cache` incurs the full cost of maintaining an LRU's doubly-linked list. Using `cache` (~ `lru_cache(None)`) still allocates and interacts with a dict, but it at least skips the whole LRU.
This update optimizes the Delivery Ups module by replacing a less efficient caching method (`lru_cache`) with a standard cache. This change improves performance, particularly for argument-less functions, leading to faster processing times. It's a routine performance enhancement.
Original PR description
On an argument-less function, `lru_cache` is strictly worse.
This update enhances the AI chat experience by improving the readability and formatting of AI responses. Changes include highlighting code snippets, adjusting message layout for better clarity, and dynamically updating conversation titles to mirror popular AI platforms like ChatGPT.
Original PR description
* = ai_knowledge, ai_livechat, test_full_discuss_enterprise In this commit, we "overhaul" the way that AI messages are rendered. This effort was motivated not just by aesthetics but also to make the…
* = ai_knowledge, ai_livechat, test_full_discuss_enterprise In this commit, we "overhaul" the way that AI messages are rendered. This effort was motivated not just by aesthetics but also to make the AI responses more readable and understandable for users. The first change was to inject boostrap classes to the tables added by the markdown library. By doing that, we make tables render as tables with borders and highlighting, instead of just text. We also added the prism library in the modules assets. Now, if the AI replies with some code snippet, it will be highlighted depending on the language used. We also added different CSS rules in `chat.scss` to changed some of the front end details like the padding and margin between elements in messages. In said file, we also changed some display and width values, to make tables and code segments horizontally scrollable, so information won't get "smushed" in a chat window. We also limit the width to 75% of the AI response in the discuss app because otherwise the information was too spread out - we added a media query to return the width to 100% in smaller screens. We moved the "Expand in Discuss" button, to be inbetween the close button and the minimise button, because the dropdown was confusing users, who imagined that they can switch between agents directly from the chat window. We additionally, made it so conversation titles change based on the user's first query, similarly to how it is done in the web versions of ChatGPT or Gemini. For that, we initial create channels with the name field empty and then we extend the display_name compute method of the discuss channel to add the agent's name in case the name is empty. After the first message we populate the name field which should by extension change the display_name field. We heavily patched the message template to remove the bubble and apply classes for the css rules. We also made it so user messages remain in the right in the discuss app (like in chat windows), increasing visual clarity. Finally, the test_natural_language_query_tour was modified to check for the new descriptive chat window title feature and the test_create_ai_chat was modified to reflect the new way of creating ai chats - with empty name and populated display_name. Task-5164382
This update adds more flexible options for calculating AVS (Additional Voluntary Savings) deductions within Odoo's payroll system for Swiss businesses. The changes improve the system's adaptability to various Swiss tax regulations and reporting requirements. A new test has been implemented to ensure accurate salary rule calculations.
Original PR description
5 more generic AVS is added to l10n_ch_hr_payroll/hr_salary_rule_data and /hr_payroll_input_types. task - 5902593 Forward-Port-Of: odoo/enterprise#107901 Forward-Port-Of: odoo/enterprise#106218
This update allows companies to directly receive KSeF invoices electronically, eliminating the need for traditional postal delivery. This streamlines the invoice process and ensures legally compliant delivery of sales invoices under Poland's KSeF tax system. It improves efficiency and reduces administrative overhead.
Original PR description
If a company sell me something, they can send me an invoice. With KSeF, they do not have to send an invoice to me by post or mail - they can send it directly to KSeF. And it is legally delivered to me. Implement fetching bills from KSeF task-5405257 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247812
This update enables administrators to create API keys programmatically, streamlining the process and reducing manual steps. Previously, API keys needed to be created through a user interface. This change allows for more efficient key management and integration with automated systems.
Original PR description
Previously, API keys could only be created interactively: the method required an interactive session and a recently typed password. This commit adds a new method on `res.users.apikeys` that allows creating an API key when an existing one is provided. Optionally, in the case of a renewal, the new key can replace the old one, and the provided one is unlinked. Forward-Port-Of: odoo/odoo#249528 Forward-Port-Of: odoo/odoo#246118
This update optimizes the creation of global invoices in the Mexican tax system (l10n_mx_edi). By changing the wizard to a 'TransientModel,' the system no longer stores temporary data permanently, leading to a smoother and more efficient invoice creation process. This change avoids unnecessary database usage and improves performance.
Original PR description
Change to TransientModel so a wizard is not permanently stored in db when creating a global invoice. Forward-Port-Of: odoo/enterprise#107950 Forward-Port-Of: odoo/enterprise#107244
This update enhances the user experience in the chatter by changing the action when clicking on a follower. Instead of opening the partner form, clicking now opens the follower's avatar card. This provides a more intuitive and streamlined way to engage with followers within the Odoo platform.
Original PR description
Before this commit, clicking on a follower in the chatter always opened the partner form view. This commit changes the behaviour to open the avatar card. enterprise-https://github.com/odoo/enterprise/pull/107393 task-[5873738](https://www.odoo.com/odoo/project/1519/tasks/5873738)
This update enhances the user experience by automatically opening a user's avatar card when a follower is clicked in the follower list. Previously, users were directed to a partner form view. This change simplifies navigation and provides a more modern interaction.
Original PR description
The tours are updated to reflect the new behaviour where clicking on a follower opens the avatar card for users instead of the partner form view task-5873738
This update allows users to process multiple bank statements and reconciliation lines simultaneously, streamlining the accounting process. The changes enhance efficiency by enabling bulk actions on statement lines, improving the accuracy and speed of reconciliation tasks. This update focuses on usability and performance improvements.
Original PR description
This commit will allow to do the set account, set partner and apply reco models on multiple lines. To select multiple line you need to use alt + click and then you will have button on top to trigger the actions. - The set partner function was modified to work with multiple statement lines and keep all existing functionality (modify line with same partner_name) - The trigger reconcile model function was also modified to work with multiple statement lines - The set account function was not touched because we use the aml_id of the suspense as a parameter but here we will have multiple suspense line to modify. Since we are doing this change in stable, we created a new function set_account_multiple_bank_statement_line. This function will have the same behavior for reco models as the basic set account. task-5253778 Forward-Port-Of: odoo/enterprise#107997 Forward-Port-Of: odoo/enterprise#100316
This update enhances the user experience by recentering the Odoo logo and floor plan button across different screen sizes. A subtle shadow has also been added to the logo for improved visual clarity and a more polished look. This ensures consistent branding and a better user interface.
Original PR description
** = pos_restaurant In this commit: - Recentered the Odoo logo and floor plan button based on the viewport size for better alignment and responsiveness. - Applied a shadow on the Odoo logo for a better user experience. Before: <img width="1920" height="852" alt="image" src="https://github.com/user-attachments/assets/e8b05b7a-11be-4652-90dc-2b89236fc190" /> After: <img width="1920" height="852" alt="image" src="https://github.com/user-attachments/assets/b32c4b46-3e66-4948-8bd6-ae7dc935e037" /> Task-5946199 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr