Monday, August 24, 2026
5 changes · saas-19.4
Enhancements to existing features
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