Daily updates from Odoo
Thursday, January 29, 2026
14 changes · master
Enhancements to existing features
This update expands Odoo's language support to include Spanish, recognizing the significant number of Spanish speakers. This enhancement improves usability for a wider customer base and aligns with global market needs. It's an important step in broadening Odoo's reach and appeal.
Original PR description
The official language is English, but Spanish is spoken by ~41 million. task-5247124 Forward-Port-Of: odoo/enterprise#105494 Forward-Port-Of: odoo/enterprise#105246
This update simplifies how the portal displays author avatars. The team has replaced a specific route used for fetching avatars with the standard route used in the main Odoo email system. This ensures consistent avatar display across the portal and improves the overall user experience.
Original PR description
This is a preparation PR to replace the portal message fetch route with the mail one. This commit replaces the `/mail/avatar/mail.message/` route with the route currently used in the mail base code, which is `/web/image`. odoo/odoo#183911
This update enhances the clarity of DIMONA categories used in the odoo Enterprise payroll module. The changes include adding code labels and enforcing a specific ordering, ensuring accurate payroll calculations and reporting. This improves data consistency and reduces potential errors related to DIMONA category assignments.
Original PR description
clarify DIMONA categories with code and label Task Id:5478540
This update replaces the previous method of managing holidays with a new, dedicated 'public holiday' model within Odoo. This change improves the accuracy and flexibility of holiday tracking, ensuring proper payroll and scheduling calculations. It simplifies holiday management and aligns with best practices.
Original PR description
In this commit, we introduced the new public holiday model instead of using resource calendar leaves. task-4791808
This update improves how Odoo clients with on-premise IoT Box installations manage their device drivers. It now allows clients to download custom drivers directly from the Odoo database, based on modules they've installed. This enhances flexibility and allows for tailored IoT device integration.
Original PR description
We updated the outdated "automatic handlers update" to "use custom handlers" to adapt to the stable IoT Box. This allows sh/on premise clients to download their custom drivers from the database (from custom modules). see odoo/odoo#245771 see odoo/upgrade#9352
Resolved issues and error corrections
This update addresses inaccuracies in performance tracking for Odoo's email, SMS, and WhatsApp functionalities. The changes ensure that internal counters are correctly updated, leading to more reliable performance data and improved reporting. This enhances the overall stability and accuracy of Odoo's communication tools.
Original PR description
Some of them are not up to date.
This update fixes an error that prevented users without WhatsApp access from viewing WhatsApp conversations within Discuss. The issue stemmed from a configuration change that caused access problems when fetching messages. This ensures all users can access and participate in WhatsApp conversations.
Original PR description
Steps to reproduce: - Open any WhatsApp conversation in Discuss. - post a message. - Invite an internal user who does not have WhatsApp access (e.g., Marc Demo). - Log in as the invited user. - Open the invited WhatsApp conversation. => it shows `An error occured while fetching messages` Since [1], this happens because `sudo()` was accidentally removed while storing `whatsappStatus` on messages, leading to an access error. This commit fixes the issue. [1]: https://github.com/odoo/enterprise/pull/100237 Task-5794783 Forward-Port-Of: odoo/enterprise#104953
This update resolves an issue where the Gantt chart incorrectly displayed unavailability for employees who didn't have a defined holiday schedule. The fix standardizes the data format to ensure accurate representation of all employee time off, improving the chart's reliability and usability.
Original PR description
In this PR, _get_unavailable_intervals() returns Intervals objects while _gantt_unavailability assumes mutable lists. This mismatch causes a runtime error when appending new intervals. Normalize all unavailability data to lists of (start, stop) tuples to ensure consistent behavior and fix gantt rendering without schedules. Build-238381
This update enhances the performance testing of our holiday leave functionality. Following the addition of the Public Holiday Leave model, we've adjusted query counts in performance tests to ensure optimal system performance. This ensures a smoother user experience and efficient processing of leave requests.
Original PR description
In this commit, we updated query count in some perf tests after adding th public holiday leave model. task-4791808
This update resolves a problem where 360 feedback emails sent to external clients displayed incorrectly due to formatting errors in the email template. The fix addresses issues with HTML nesting and Bootstrap styling, ensuring consistent and professional email presentation for all recipients. This improves the user experience for feedback requests.
Original PR description
The mail template layout breaks in external clients due to HTML tag nesting and reliance on Bootstrap classes. To reproduce: 1. Install 'hr_appraisal_survey'. 2. In an Appraisal, click "Ask Feedback" using the 360 template. 3. View the sent mail in an external client (e.g., Mailhog). 4. Observe broken alignment and missing styles. task-5462702
This update resolves an issue where the VoipImStatus component's validation process would fail when receiving incorrect 'persona' values. By relaxing the validation rules, the system now handles falsy values gracefully, ensuring consistent functionality and preventing potential errors. This improves the stability of the VoIP feature.
Original PR description
The component VoipImStatus introduced in https://github.com/odoo/enterprise/pull/102936 declares an optional prop "persona" whose type should be Object (in case it is defined) but some components that use VoipImStatus sometimes pass it false or null. In those cases, the props validation fails if the debug mode is activated. Since the underlying component ImStatus of VoipImStatus can work with any falsy values assigned to persona, we can accept more types for persona in VoipImStatus too.
This update resolves a technical error that prevented users from successfully connecting the demo account for the HR Expense Stripe module. The previous implementation had a flaw in how system parameters were updated, causing a traceback during the account creation process. This fix ensures a smooth and reliable experience for users wanting to test the demo.
Original PR description
Forward port wasn't done right, and the way to get the system parameter changed. To reproduce: - Install hr_expense_stripe_demo - confirm agreeing to the terms - Save - click on "Connect (Demo)" Forward-Port-Of: odoo/enterprise#105790
This update corrects a bug in how websites are displayed on the Helpdesk page. Now, the website with the lowest sequence number is automatically designated as the default, ensuring consistent and predictable website selection. This resolves an issue where a website with a high sequence number could incorrectly appear as the default.
Original PR description
This PR changed the default website behaviour. Now, the website appearing at the top of the list in the '/websites' page is considered to be the default one. In other words, the default website is the one with the lowest `sequence` value. This commit fixes a test where a website is created with sequence equal to 5 and interferes with the above-described mechanism. Community PR: https://github.com/odoo/odoo/pull/225335 Upgrade PR: https://github.com/odoo/upgrade/pull/9434 task-5028180
The Documents activity menu now correctly displays folder names instead of "Unnamed" when navigating from the systray. This issue stemmed from an undefined value in the folder selection process, which was resolved by providing a default folder value to ensure accurate breadcrumb navigation.
Original PR description
When navigating to Documents through the activity menu (systray), the breadcrumb displays "Unnamed" instead of showing the proper folder name. Steps to reproduce: 1. Click the activity menu icon (clock) in the systray 2. Click on "Documents" in the activity dropdown 3. Observe the breadcrumb shows "Unnamed" The issue occurs because when navigating from the systray, the folder section's activeValueId is undefined. This causes getSelectedFolderAndParents() to call folderSection.values.get(undefined), which returns undefined instead of the default folder. Without a valid folder object, the breadcrumb computation has no context and falls back to displaying "Unnamed". The fix ensures that when activeValueId is undefined, we explicitly pass false to values.get(), which correctly retrieves the root/default folder. opw-5473442 Forward-Port-Of: odoo/enterprise#104297