Wednesday, September 16, 2026
26 changes · master
Enhancements to existing features
Odoo now removes reliance on an outdated spreadsheet-writing library and uses the maintained reader for older Excel imports. This reduces maintenance risk while preserving the ability to import existing .xls files and newer .xlsx files through the appropriate tools.
Original PR description
(see commit message) task-2480034 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A small internal flag was added to the base module setup to prepare for possible future support for loading test data. This does not change day-to-day user workflows now, but it makes a later backport or rollout easier and safer.
Original PR description
Part of https://github.com/odoo/odoo/pull/284989 for 20.0 Introduce the new test data flag on ir.module.module in case we want to backport the feature in 20.0 later.
Settings pages now include clearer spacing between the top control area and the settings form. This small visual adjustment improves readability and keeps the layout consistent across Odoo editions.
Original PR description
ENT: https://github.com/odoo/enterprise/pull/131451 task-6570898 | Before | After | |--------|--------| | <img width="1704" height="567" alt="Screenshot 2026-09-14 at 17 06 55" src="https://github.com/user-attachments/assets/8adfb0f8-97e3-4405-975f-2b3a198e35e5" /> | <img width="1706" height="547" alt="Screenshot 2026-09-15 at 15 51 45" src="https://github.com/user-attachments/assets/311569f0-d0f7-4e7b-ac21-754f4e3e9fff" /> |
Spreadsheet imports now rely on the maintained Excel handling already required by the system, instead of an older library that is no longer used for XLSX files. This keeps accounting import tests aligned with the current dependency setup and reduces outdated technical baggage without changing day-to-day user workflows.
Original PR description
xlrd is not used anymore for xlsx files. https://github.com/odoo/odoo/pull/286896
The contact smart button for Signature Requests now opens a complete list of all related requests, including those still awaiting signature. This removes confusion where the displayed count did not match the documents shown and makes requests easier to review.
Original PR description
The Signature Requests smart button on a contact opened a kanban view filtered to signed documents, while the number displayed on the button also included requests awaiting a signature. Users could therefore see fewer documents than the number displayed on the button, with no indication that a filter was applied. Open the requests in a list view without any filter, so that all requests counted by the smart button are displayed and easier to scan. task-6575586
The activity view now has softer cell gradients and slightly more padding after the web client redesign. This makes activity information easier to scan and gives the interface a cleaner, more polished appearance.
Original PR description
| Header | Header | |--------|--------| | <img width="264" height="77" alt="image" src="https://github.com/user-attachments/assets/95dd9535-c66a-420e-8e34-cd2a3a44c195" /> | <img width="262" height="80" alt="image" src="https://github.com/user-attachments/assets/2e62ad1a-afc1-4999-b4b1-f2b534597504" /> | This PR finetunes the cells of the activity view after the webclient redesign. It slightly reduces the strength of the gradient applied on the cells and adds a bit of padding. task-6577089 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes an obsolete internal option from expense receipt extraction and Stripe expense processing. It helps keep the expense workflow code simpler and easier to maintain without changing how users handle expenses.
Original PR description
Remove the check parameter as it is not used anywwhere anymore Related: https://github.com/odoo/odoo/pull/288256
The website shop carousel filter has been renamed from “Newest Products” to “Newest Arrivals” and now uses the same sorting logic as the shop page. This makes product presentation more consistent for website editors and shoppers, reducing confusion around which items are shown as new.
Original PR description
Currently, the `Newest Products` dynamic filter shows products that were recently created and published. This is inconsistent with the `Newest Arrivals` filter already used on the /shop page, which…
Currently, the `Newest Products` dynamic filter shows products that were recently created and published. This is inconsistent with the `Newest Arrivals` filter already used on the /shop page, which sorts products according to publish date. Steps to produce: --- - Install the website_sale module with demo data. - Navigate to Website and open the homepage in edit mode. - Add a Dynamic Snippet Carousel to the homepage. - Click on the newly added carousel. - In the right-side Edit panel, select the Dynamic Carousel settings. - Observe that the Current Filter is set to Newest Products by default. This PR aligns the dynamic filter with the /shop page behavior by: - Renaming the filter from `Newest Products` to `Newest Arrivals` (including its XML ID) for consistency. - Updating the underlying sort logic to match the /shop page's `Newest Arrivals` filter. - Updating the related tests accordingly. upgrade PR: https://github.com/odoo/upgrade/pull/10668 opw-6331212 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now routes Gevent worker web requests through the same internal HTTP server used elsewhere, while still relying on Gevent for connection handling. This reduces duplicate server logic and should make future maintenance more consistent without changing business workflows.
Original PR description
The Gevent worker (started in a subprocess by the PreforkServer) was still using the WSGI server of gevent, although we have our own server since [h11]. We think it is a good idea to consolidate the codebase around a single server, then to use multiple different ones. The Threaded and Prefork servers are calling `socket.accept()` themselves, doing the same for geven is proving more difficult, so we decided to still rely on Gevent and its StreamServer class for the socket management, but leave the HTTP part to our h11-based WSGI server. Co-authored-by: Chong Wang <cwg@odoo.com>
Several localization modules were updated so their company settings continue to align with a recent change to the VAT field in the base system. This helps keep country-specific reporting, payroll, payments, and e-invoicing settings working consistently after the underlying template change.
Original PR description
*au_hr_payroll_api,be_reports,bg_reports,ca_payment_cpa005,cl_edi, de_intrastat,eu_oss_reports,ke_edi_oscu,lu_reports,nl_reports, ph_reports,uy_edi In the associated community PR, the vat field has changed a bit for a new feature, this updates the view that were xpathing to it. task-6285604
The purchase dashboard KPI cards have been visually updated so the Days to Order card matches the other dashboard cards. This improves readability and consistency by using clearer backgrounds and rounded styling.
Original PR description
Before this PR, the not all the KPI's backgrounds were updated to be visible with the new background. Now they are raised to bg-200 and border-radius was added. | Before | After | |--------|--------| | <img width="1681" height="193" alt="Screenshot 2026-09-14 at 15 16 27" src="https://github.com/user-attachments/assets/7cb39825-cf19-4872-97a1-5203fe79b8ff" /> | <img width="1681" height="193" alt="Screenshot 2026-09-14 at 15 16 05" src="https://github.com/user-attachments/assets/19f5f8cc-6eab-47b3-9604-ea1500d3d653" /> | task-6570029 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The invite people experience in Discuss has been visually refined to match the rest of the interface. Search fields, selected person chips, invitation links, result rows, and dialog spacing now feel more consistent and easier to scan.
Original PR description
The invite people panel did not match the rest of Discuss. Its search field was square, while every other search input in Discuss is pill-shaped, and its result rows were stacked flush against each other without any padding. Give the search field the same pill shape and height as the one of `mail.SearchInput`, used by the member list and the sidebar. Add padding and a gap between result rows, and let the selected person chips and the invitation link field follow the same pill language. The dialog wrapping these panels, opened by "+ Chat" and by the "Invite people" entries, had almost no padding of its own, letting its content touch the modal border. Use the standard modal body padding instead. <img width="1716" height="686" alt="invite-popover-comparison-zoom" src="https://github.com/user-attachments/assets/d6338e61-3c72-49cc-a0b6-f5bfb73eaed0" />
The ellipsis menu buttons in Odoo Discuss now use a consistent size and hover style across related screens. This creates a more polished and predictable experience for users interacting with chat, channels, and messaging menus.
Original PR description
Before this commit, ellipsis buttons in Discuss had an inconsistent style (different size, different hover effect). This commit harmonizes the style with a shared classname `.o-discuss-ellipsisButton`. <img width="1188" height="1130" alt="ellipsis-button-before-after" src="https://github.com/user-attachments/assets/54e7f6f8-1308-4075-adaf-7b95230e2a70" />
Completed activity meeting links now keep users connected to the record they came from, making it easier to return after viewing a meeting. The change also improves these links in email notifications so navigation remains reliable outside the app.
Original PR description
If you clicked on the activity meeting link of a done activity, you'd have no robust way of going back to the record you were on. Using this instead of _get_html_link and adding base_url in order to work on email notifications too. Task-6577150
The AI assistant connection setup now includes clearer hints about the information users need to provide. This makes it easier for users to configure the connection correctly and reduces confusion during setup.
Original PR description
This commit adds hint to the MCP configuration dialog describing the parameters required to connect an AI assistant, making the setup process clearer for users. task-6375961
Helpdesk users will no longer receive an empty PDF when trying to print timesheets for a ticket with no logged time. Instead, the system shows a notification, keeping the action available while avoiding confusing blank reports.
Original PR description
Before this PR --- - The "Timesheets" print action was available from helpdesk tickets even when no timesheet entries were logged on the ticket - Clicking the action generated an empty timesheet PDF After this PR --- - The "Timesheets" print action remains available on helpdesk tickets - When no timesheet entries are available to print, a toast notification is displayed instead of generating an empty PDF task-5361456
Dropdown menus have been visually adjusted to better match Odoo's new Frost design direction. This improves interface consistency and polish for users across enterprise web screens without changing business workflows.
Original PR description
This commit adapts the dropdown layout to better align with the new Frost design. task-6542810 Requires: - https://github.com/odoo/odoo/pull/287459
The spreadsheet dashboard grid now better matches the surrounding action interface color. This creates a more consistent visual experience for users working with spreadsheet dashboards.
Original PR description
Task-6542221
Payroll run lists now show the most recent entries first. This makes it easier for payroll teams to find and review current pay runs without scrolling through older records.
Original PR description
-Order of payruns has been adjusted to show the newest firstly.
Odoo settings can now store text-based options directly through configuration parameters. This makes it easier for businesses and implementers to manage longer or multi-line setting values consistently without extra custom work.
Spreadsheet dashboards now use a grid color that matches the surrounding action interface. This creates a more consistent visual experience for users working with dashboards and spreadsheets.
Original PR description
Task-6542221
The Guatemala and Peru localization settings have been moved higher in the Accounting settings page. This makes electronic invoicing configuration immediately visible when users arrive from dashboard links or warnings, reducing scrolling and setup friction.
Original PR description
Purpose: Moving the Guatemalan/Peruvian Localization section higher in the settings ensures that when a user is redirected from the Accounting Dashboard or from warnings, the relevant EDI configuration is immediately visible without scrolling. task-6572740
Sales service products can now have a task template selected even when no project is assigned. This reduces setup friction while keeping choices relevant by limiting templates based on whether a project is selected.
Original PR description
The task template field on the product form was hidden if there were no project set on the service, forcing users to set a project before being able to pick a task template. With this commit, the task template can be selected even without project. Further, if no project is set, only task templates without project can be chosen. Finally, if a project is set then task templates either matching the project or without project can be selected. task-6514809
Project administrators can now open a project's settings directly from the task kanban or list view using a new cog menu action. This saves time by reducing navigation steps while keeping the option limited to users with project administration rights.
Original PR description
In this commit, we add a "Configure Project" action to the cog menu of the kanban and list views of tasks. This action redirects to the form view of the current project and is only visible for users with 'project > admin' access rights. task-6533807
The VoIP project app now includes required access group information when the user session starts. This avoids an extra background request during startup, helping the web client load more efficiently.
Original PR description
The voip app needs this group at startup: https://github.com/odoo/enterprise/blob/c50de485ab5c0fa7927652d4129629b5b674ca37/voip_project/static/src/softphone/softphone_model_patch.js#L14 This commit adds the group inside the session info to avoid extra RPCs at webclient startup. The exact same thing is done for `voip_crm` task-6565730 Forward-Port-Of: odoo/enterprise#131207
The VoIP recruitment integration now includes a needed permission check during the initial session load. This reduces extra background requests when the web client starts, helping the app open more efficiently without changing user workflows.
Original PR description
The voip app needs this group at startup: https://github.com/odoo/enterprise/blob/203c85cade63a6564f5051d318916aaf0ea87df5/voip_hr_recruitment/static/src/softphone/softphone_model_patch.js#L14 This commit adds the group inside the session info to avoid extra RPCs at webclient startup. The exact same thing is done for other voip_* bridge modules task-6565730 Forward-Port-Of: odoo/enterprise#131210