Monday, August 24, 2026
7 changes · saas-19.4
Enhancements to existing features
Mail activity and message searches now load records in smaller chunks when a limit is used. This helps views open reliably while still applying access rules, avoiding cases where simple screens could fail because too much data was loaded at once.
Original PR description
When a limit is applied in the search method, fetch the data in small batches like we do in ir.attachment. This allows to search with a limit on views while applying security access. Without this, simple views cannot be opened because the ORM searches for all records before filtering them in memory. Note that this cannot be avoided for group by queries and that if we don't set a limit, we will eventually still fetch everything in smaller batches. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265203
Odoo restores the default grouping option in the search area for affected views. This helps users keep familiar list organization behavior and avoids disruption from the previous removal.
Original PR description
This reverts commit 7413e08c166ef3123ac7ed6623db1fb366f44e3c (#265574) task-6425644
Administrators can now see and adjust whether each time off type creates a Calendar entry when employees submit leave requests. This makes the existing option easier to manage and helps companies control how absences appear in shared calendars.
Original PR description
The `create_calendar_meeting` field on `hr.leave.type` allows users to choose if leave requests created with a given time off type generate a corresponding entry in the Calendar app. However, this field was not displayed on the form view. This commit adds `create_calendar_meeting` to the `hr.leave.type` form view inside the configuration section, along with dedicated help text explaining its behavior. Task: 6445794 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#283450
The website configurator now clearly names the color palette selected by the AI recommendation. This helps users understand the suggested branding choice and why it fits their business context.
Original PR description
Steps to reproduce: - Start website creation with the configurator. - Reach the color palette selection step. => The AI recommendation does not name the selected palette. Before this commit, the recommendation described suitable colors without identifying the corresponding palette. After this commit, the recommendation names the selected palette and explains why it fits the business context. task-6484260
This update adds automated checks to catch outdated code patterns that could silently break parts of the interface after a framework upgrade. It also updates the mail chatter composer to use the current pattern, reducing the risk of users encountering unexpected behavior.
Original PR description
Owl 3's useEffect takes a single callback and calls it with no arguments, but Owl 2 code still parses and runs. `useEffect(fn, () => [deps])` silently drops the dependencies, and `useEffect((el) => ...)` gets undefined parameters - nothing fails until a user walks the path. Add two no-restricted-syntax selectors so eslint catches both on the lint build. They are wrong by construction, so no exceptions are needed, and the useLayoutEffect shim keeps its two arguments under a different callee name. The rules go in test_lint/tests/eslintrc and, for point_of_sale, iot and obox, in web/tooling/_eslintrc.json. The chatter composer patch is the last community call site of that shape. Its body already reads both recipient lists, so dropping the dependency argument is enough; it matches master, so the forward-port is a no-op. Enterprise: https://github.com/odoo/enterprise/pull/128751
Stock quantity updates now avoid repeating the same warehouse lookup when processing several products at once. This reduces unnecessary database work during batch operations and can make inventory updates run more efficiently.
Original PR description
When `_inverse_qty_available` processes multiple products, it performs the same warehouse search for every eligible product, resulting in redundant queries during batch operations. Look up the warehouse lazily once and reuse it for all products in the recordset. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#283564
Canceled point-of-sale orders using the Belgian black box no longer hold up the checkout flow while waiting for receipt printing. This helps staff move on faster when an order is canceled, reducing unnecessary delays at the register.
Original PR description
Stop awaiting the receipt print in the POS for canceled orders task-id: 6425204 Forward-Port-Of: odoo/enterprise#128593