Thursday, August 27, 2026
11 changes · master
Code cleanup and technical improvements
This update modernizes internal interface code by replacing an older development pattern with newer framework capabilities. It should make future maintenance easier across calendar, messaging, stock, and scheduling areas without changing day-to-day user workflows.
Original PR description
- enterprise: https://github.com/odoo/enterprise/pull/126245 See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The guided tour flow has been reorganized so the interactive tour player manages the end-of-tour experience directly. This makes tour completion tracking more reliable, especially in automated scenarios where success is now confirmed only after the completion message appears.
Original PR description
…teractive onTourEnd was an externally-injected callback whose completion the interactive step player had to blindly trust and separately re-derive (rainbow man message, tour pointer) to know what actually happened. TourInteractive now owns pointer setup/teardown and the full end-of-tour sequence (reward, consume, chaining) itself, and in robot mode only reports the tour as succeeded once the rainbow man is confirmed in the DOM instead of right before it's requested. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change centralizes how Odoo detects and uses debug mode across many apps. It should make developer and support tools more consistent without changing normal day-to-day business workflows.
Original PR description
This commit introduces a new plugin `DebugModePlugin` which gives some utility functions: - `isActive`: checks that odoo is in debug mode or in a specific mode if the mode is given in parameter. - `toList`: lists the debug modes (`debug=assets,test` gives `["assets", "test"]`). - `toString`: returns the raw debug value (`debug=assets,test` gives `"assets,test"`). This commit also replaces all occurrences of `env.debug` and some of `odoo.debug` by the plugin.
The HTML builder has been updated to rely on newer internal component patterns instead of deprecated ones. This helps keep the website editing tools maintainable and ready for future framework updates, with little expected visible change for users.
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 refreshes internal code used by several Odoo apps to align with the newer interface framework. It helps keep calendar, timesheet, knowledge, and signing features easier to maintain without changing day-to-day user workflows.
Original PR description
- community: https://github.com/odoo/odoo/pull/281421 See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This internal cleanup replaces the previous way apps checked debug mode with a shared plugin. It helps keep behavior consistent across affected Odoo apps without changing day-to-day user workflows.
Original PR description
This commit replaces all occurrences of `env.debug` by the new plugin `DebugModePlugin`.
The Documents app internals were reorganized to remove outdated technical dependencies and simplify how document views are managed. This should make future maintenance and upgrades easier without changing the day-to-day user experience.
Original PR description
- community: https://github.com/odoo/odoo/pull/284726 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 replaces a deprecated internal frontend mechanism with the newer standard approach across several Odoo apps. It helps keep the interface code easier to maintain and reduces upgrade risk, without changing visible business workflows.
Original PR description
- community: https://github.com/odoo/odoo/pull/281946 See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mail system now uses one internal change-tracking approach instead of two overlapping mechanisms. This reduces unnecessary presence update messages during user activity and makes the messaging code easier to maintain without changing expected user-facing behavior.
Original PR description
Before this commit, a record reacts to what it reads in two ways: `Record.onChange`, and a raw owl effect. Such an effect only sees a relation change when it reads the record as its proxy, which only `static new` has, so three models override `static new` for nothing else. There is no need for the raw effect, as `Record.onChange` runs the same body on a change and compares the values its dependencies return, so a bus channel that comes back equal keeps its subscription. This commit registers the four raw effects as onChange, from `setup`. An onChange resolves the proxy when its two functions run instead of when they are registered, which is what a `setup` registration needs. `effectWithCleanup` has no caller left, so it goes. Note that the self user or guest sends one `update_presence` when its status changes, where the effect sent one on every click and keystroke while the server still reported away or offline.
Several internal text field length limits were removed across accounting, documents, payroll, expense, and localization modules. This reduces avoidable data-entry constraints and keeps enterprise modules aligned with the related core platform cleanup, with minimal expected business impact.
Original PR description
https://github.com/odoo/odoo/pull/284290
The Point of Sale number entry logic has been reorganized into a plugin, making it easier to maintain and extend across related POS features. This is an internal cleanup with little expected day-to-day impact for users, but it should support more reliable future updates.
Original PR description
Convert the number buffer service into a plugin