Odoo Release Updates
Every commit to Odoo Community and Enterprise, parsed and categorized. Never miss a bug fix, improvement, or new feature.
Activity
2026-03-23
This commit consolidates avatar card handling across HR modules by centralizing the single source of truth for employee information in hr.employee records rather than duplicating data across multiple models. The hr.employee.public model is now simplified to act as a proxy to hr.employee using access control, eliminating duplicate field definitions and complex JavaScript patches. The store service's employee chat lookup is refactored to use the standard Store API instead of maintaining a separate employee cache, improving consistency and reducing code complexity.
[REF] mail, *: clean up avatar card and related models
The "Mark as Completed" button on tax returns is now always visible regardless of the return's current state, allowing users to manually complete returns even after a workflow has started. This fixes a critical issue for localizations that don't use API integration or when API connections are temporarily unavailable but users have manually submitted returns through alternative channels.
[FIX] account_reports: always show "mark as complete" for returns
Fixed a traceback that occurred when users selected channel mentions from the @ suggestion list in the mail composer. The issue arose from incomplete code migration where the `channel` attribute was renamed to `thread` in a previous commit, but the suggestion template still referenced the old attribute name. The fix restores the `channel` property in the suggestion object while keeping the renamed `thread` property, and corrects the template reference to use the appropriate channel suggestion template. A comprehensive test tour was added to verify the channel mention selection flow works correctly.
[FIX] mail: fix traceback when selecting items from @ mention in composer
This commit fixes a failing livechat digest test in the runbot environment by removing any existing livechat channels before test execution. The test was failing because demo data created additional livechat channels that interfered with the digest calculations, so the fix ensures a clean slate by deleting all livechat channels prior to running the test setup.
[FIX] im_livechat: fix runbot livechat digest test
This fix prevents unwanted formatting and styles from being pasted into the HTML editor composer in Odoo's Discuss module. The change intercepts paste events, sanitizes the HTML content, and strips out disallowed tags and styles, allowing only a controlled set of formatting tags (bold, italic, lists, links, etc.) while preserving essential mail-specific class names for mentions and redirects. This ensures consistent message formatting and prevents users from inadvertently introducing problematic HTML or styling into their composed messages.
[FIX] mail,*: no formatting paste in HTML composer
This commit removes the "Register Payment" button and associated payment registration logic from individual payslips in the core hr_payroll_account module, consolidating payment handling at the payrun level instead. The "Payment Report" button in payruns is renamed to "Pay" for clarity, and related test files are removed, while the Australian localization module now inherits and maintains the payment registration functionality for its specific requirements.
[IMP] hr_payroll: remove register payment logic
The Stripe issuing top-up feature was incorrectly retrieving the country code from the financial address nested structure, which only exists in EU payloads. UK accounts return the country at the bank_transfer level instead. This fix relocates the country lookup to the common bank_transfer object, ensuring UK top-ups correctly identify the account holder's country for partner creation.
[FIX] stripe_issuing_proxy: UK topup country
This commit enhances the Live Chat user experience through four targeted improvements: rating filters are now grouped under a collapsible "Rating" section for cleaner interface organization, the sessions pivot view axis has been flipped for better data visualization, empty state messaging has been rewritten to be more instructive and action-oriented, and the Chatbot "Channels" button now intelligently opens the form view directly when only one channel exists instead of always showing a list view. Additionally, technical menu items have been reorganized under the main Technical menu structure.
[IMP] im_livechat: improve Live Chat views
This commit consolidates the separate l10n_pl_reports_jpk_fa module into the main l10n_pl_reports module by merging all JPK FA (Polish invoice register) reporting functionality, data files, models, views, and tests into a single unified Polish reporting module. The change updates all internal references and dependencies to reflect the new module structure while maintaining full backward compatibility of the JPK FA report functionality for Polish accounting compliance.
[REF] l10n_pl_reports,l10n_pl_reports_jpk_fa: merging JPK FA into polish reports
This commit fixes multiple printing issues in the Discuss app by hiding non-essential UI elements during print and ensuring proper layout overflow visibility. The sidebar, message composer, thread actions, and visitor offline banners are now hidden when printing, while a new print stylesheet ensures the discuss container displays correctly, similar to existing knowledge module print behavior.
[IMP] im_livechat, mail: enhance print layout in discuss
This commit upgrades the o_spreadsheet library to its latest version, replacing multiple native HTML select elements throughout the spreadsheet UI with the standardized Select component from the o-spreadsheet library. The changes modernize the spreadsheet interface by using consistent, component-based dropdown controls across filter editors, list sorting panels, comments filtering, and related dialogs, while also updating test helpers to work with the new component structure. This ensures better UI consistency, maintainability, and alignment with the o-spreadsheet design system.
[IMP] *_spreadsheet_*: update o_spreadsheet to latest version
This commit updates the o-spreadsheet library to version 19.3.0-alpha.4, incorporating 24 upstream commits that address multiple functional areas including formula handling, clipboard operations, chart rendering, pivot tables, filters, and UI improvements. Key fixes include correcting formula reconstruction, enabling paste-as-value functionality, updating geospatial chart data with region selectors, adding column analysis capabilities, improving dark mode compatibility, and enhancing pivot measure calculations. The update also introduces stricter code quality standards through ESLint promise enforcement and improved context menu event handling.
[IMP] spreadsheet: update o_spreadsheet to latest version
2026-03-21
This commit fixes a test setup sequence issue in the HR Appraisal module where employee creation was occurring before the company's appraisal plan settings were configured, causing next appraisal date calculations to use incorrect default values. By moving the employee creation to after the appraisal plan configuration is complete, the test now properly validates the appraisal date computation logic with the correct settings in place.
[FIX] hr_appraisal: fix next appraisal date tests
This commit fixes a HOOT (Headless Odoo Object Testing) framework bug where invoice lines were not rendering in tests when localization modules like l10n_in or l10n_ar were installed. The fix changes how test invoice lines are created—from a direct account.move.line creation to writing through the invoice_line_ids one-to-many relationship—preventing the mock server's relationship mapping from being shadowed by competing withholding line relationships in localization modules.
[FIX] account: fix HOOT test with l10n_in/l10n_ar installed
2026-03-20
This fix corrects the messaging menu counter calculation when the Discuss app is not actively in use by ensuring archived channels and muted channels are excluded from the unread message estimation. The issue occurred because the server-side counter estimation included channel members from archived and muted channels that were not actually displayed in the UI, causing the counter to be inflated. The fix adds filters to check both channel.active status and mute_until_dt field in two locations where the counter is calculated.
[FIX] mail: correct messaging menu counter when not using Discuss
This commit integrates user activity management directly into the attendee calendar view by displaying pending activities as special all-day events that users can interact with via a popover interface. Users can toggle activity visibility through a calendar sidebar filter, reschedule activities to specific dates, and access related records, with the feature designed to be optional and controlled through user settings. The change also refactors activity field storage to include res_name for linking and removes obsolete calendar event ordering logic that was specific to work locations.
[IMP] mail,calendar: add activities in attendee calendar
This commit systematically adds ".this" prefix to all template variable references across multiple Odoo modules in preparation for OWL3 framework migration. The changes ensure that component instance variables (props, state, methods) are properly scoped by explicitly referencing "this" in inline XML templates, which will become a requirement in OWL3 to avoid variable resolution ambiguity and improve template clarity.
[REF] *: run rendering context migration script on inline xml
This fix adds 'line_ids.account_id' to the dependencies of the _get_datev_account computed field in the German localization module, ensuring that the DATEV export account (l10n_de_datev_main_account_id) is automatically recomputed whenever a move line's account changes. Previously, updating an account on a move line did not trigger recalculation of the DATEV account, resulting in incorrect exports with duplicate lines when accounts were corrected (such as replacing suspense accounts with actual ones).
[FIX] l10n_de_reports: recompute DATEV account when line account changes
This change simplifies the spreadsheet snapshot retrieval logic by directly reading the binary field instead of searching for and accessing the related attachment record. Since Odoo's ORM no longer uses base64 encoding internally, the code eliminates unnecessary database queries and indirect attachment lookups, improving performance on large spreadsheets while maintaining identical functionality.
[REF] spreadsheet_edition: read binary field
This fix prevents right-click context menu interactions from triggering long-press keypad actions in the VoIP softphone module. By restricting long-press detection to left-mouse button only (button 0), the commit eliminates a bug where right-clicking would inadvertently activate long-press features like backspace deletion or voicemail access via key "1", improving the reliability of keypad interactions.
[FIX] voip: prevent keypad long-press with right-click
This fix removes three leftover console.log debugging statements from the spreadsheet module's chart plugin test file that were inadvertently included in a previous pull request. These debugging lines served no functional purpose in the final test code and have been cleaned up to maintain code quality and prevent unnecessary console output during test execution.
[FIX] spreadsheet: remove left-over console.log from tests
The net wage field in the payslip summary widget has been centered to align with the basic wage field above it, improving visual consistency across different payroll views. This UI alignment change ensures a coherent user experience when viewing payslip information in various contexts within the HR Payroll module.
[IMP] hr_payroll: align net pay in payslip summary widget
This commit removes a leftover file from the l10n_it_xml_export module that was previously deleted in version 19.0 but accidentally left incomplete. The removal of account_return.py eliminates 151 lines of Italian-specific localization code that extended account return functionality with quarterly month validation and country-specific workflow state logic. This housekeeping resolves a technical debt issue by ensuring the codebase remains clean after the module's deprecation.
[REM] l10n_it_xml_export: remove leftover file
This change standardizes button terminology across spreadsheet modules by replacing "Cancel" labels with "Discard" to align with Odoo's UI conventions. The modification affects two files in the spreadsheet import and global filter components, where cancel buttons now display consistent language that better communicates the action of discarding unsaved changes rather than canceling an operation.
[IMP] *_spreadsheet_*: Use Discard rather than Cancel
The MRP module's production order tracking was refactored to use the new unified '_track_add' tool instead of custom low-level tracking code for the date_finished field changes on completed productions. This simplifies maintenance by leveraging standardized tracking infrastructure while preserving the same business functionality of recording when production completion dates are modified.
[REF] mrp: replace manual track
The spreadsheet module was updated to the latest o-spreadsheet library version (19.3.0-alpha.4), incorporating 24 commits with significant enhancements to formula handling, clipboard operations, chart functionality, and UI/UX improvements. Key business-impacting changes include new column analysis capabilities, improved pivot table handling, geo chart region selection, customizable chart axis scales, and fixes for critical issues like formula reconstruction and clipboard paste operations. The update also refines dark mode support, context menu behavior, and adds data validation features to enhance overall spreadsheet usability and reliability.
[IMP] spreadsheet: update o_spreadsheet to latest version
The hr_expense_stripe module replaced the mute_logger utility with a custom info_as_debug logging filter that conditionally demotes INFO level logs to DEBUG level, allowing developers to see detailed webhook call tracebacks and other diagnostic information during debug mode while keeping tests clean when running in info mode. This custom filter can be applied as both a context manager and a decorator, giving developers flexibility in controlling which logger outputs are suppressed during testing. The change improves test debugging capabilities by preserving informational logs that were previously completely hidden, making it easier to diagnose issues in Stripe webhook integration flows.
[IMP] hr_expense_stripe: replace mutelogger with info_as_debug logger
This commit modifies the Owl template engine to add a `this` key to the context object passed via t-call-context directives, enabling templates to access context values using `this.` notation while maintaining backward compatibility with the current syntax. This change is a preparatory step for migrating to Owl 3, which will adopt this new access pattern as standard, allowing developers to update their templates incrementally before the major version upgrade.
[REF] web: patch owl to prepare migration to owl 3