Wednesday, September 2, 2026
9 changes · master
Code cleanup and technical improvements
This cleanup removes two unused files from the Point of Sale module. It helps keep the codebase simpler and easier to maintain, with no expected change for users.
Original PR description
This commit removes the following unused files: - `static/lib/waitfont.js` - `static/src/app/utils/debug.js` --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The web client code was cleaned up by removing an outdated internal hook that is no longer used in the main codebase. This reduces maintenance overhead while keeping a temporary compatibility path for spreadsheet-related code that still depends on the older behavior.
Original PR description
See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update simplifies how Odoo's messaging and live chat features handle certain internally calculated records. It should reduce unnecessary processing behind the scenes while preserving existing user-facing behavior in discussions, calls, and website chat.
Original PR description
Before this commit, twenty-four relations derive a record from a compute option: the model runs it, links the result and settles the pair at the end of the update cycle, while no inverse is declared, no one writes them and no one reads them as a stored value. This commit declares them with this.computed(), which holds the value in an owl computed of its own, without a relation and an update cycle around it. A compute that returned an object literal inserts its record itself, as a computed has no relation to do it for it, and correspondent keeps calling computeCorrespondent() so that the im_livechat override still takes effect.
This update reorganizes how Mail and Live Chat remember browser-stored preferences, such as chat or composer settings. It reduces duplicated background handling and helps ensure these saved preferences are tracked and cleaned up more consistently without changing the user experience.
Original PR description
Before this commit, a field kept in the browser local storage is declared with an option, fields.Attr(default, { localStorage: true }), and the model core carries everything that makes it work: a compute reading the entry, an onUpdate writing it back, a map of entries per record, a map from storage key to record and field per store, and a storage listener writing into the records.
This commit declares it on the record, as the other declarations that add a behaviour to a field:
before: compact = fields.Attr(false, { localStorage: true });
after: compact = this.localStorage(false);
The value follows its entry through two onChange observers of the record itself, so the model core keeps nothing about local storage. The record listens for the storage events of its own key and drops the listener with itself.
https://github.com/odoo/enterprise/pull/129818This change reorganizes how AI channel prompts are stored locally in Discuss conversations. It is an internal cleanup that should make the feature easier to maintain without changing the user experience.
Original PR description
Enterprise counterpart of "[REF] mail: declare a local storage field on the record", which explains the shape. The channel prompts are the only enterprise field kept in the local storage, and their onUpdate becomes an onChange next to the declaration. https://github.com/odoo/odoo/pull/285620
The mass mailing editor was updated to use newer underlying platform mechanisms as part of the Owl 3 migration. This helps keep the email marketing experience maintainable and compatible without introducing expected functional changes for users.
Original PR description
As part of the Owl 3 migration, replace onWillUpdateProps and useRecordObserver hook with the appropriate Owl 3 alternatives. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update renames an internal setting used by mail and live chat actions so its purpose is clearer to developers. It does not change customer-facing behavior, but it helps reduce confusion and future maintenance risk in messaging features.
Original PR description
This naming is confusing, action.dropdown signals that the action will open a dropdown menu while props.dropdown signals to render the action as a dropdown element.
This update removes an outdated internal developer helper from several Odoo Enterprise screens. It helps keep the interface code aligned with the newer framework, reducing future maintenance risk without changing day-to-day user workflows.
Original PR description
- https://github.com/odoo/odoo/pull/285708 See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Manufacturing bill-of-material checks were streamlined so large purchase orders process faster when kit products may be involved. In the highlighted case, confirmation time with manufacturing installed drops from about 8.1 seconds to 6.9 seconds, improving responsiveness across related workflows.
Original PR description
Confirming a purchase order of 1000 lines - with only stock & purchase : time is 6.3secs - by adding mrp : time grows to 8.1secs Part of the difference comes from the time it takes to explode the (potential) kits. The refactor of _bom_find consists of: - signature change : company_id -> company_ids to allow searching within multiple companies in one go - return value change : the returned dict's key is now a tuple ( product, company_id or False) Calling _bom_find with no company given : retrieve result with ( product, False) Calling _bom_find with one or more company_id's : retrieve result with ( product, company) -> for _bom_find on record sets having the fields product_id & company_id With this, use case time falls to 6.9secs This will obviously have performance impact on many use cases.