Wednesday, September 2, 2026
19 changes · master
Enhancements to existing features
The Timesheets app now directs users to Odoo's newer Timesheets Assistant browser extension instead of the older Activity Watch extension. This helps users find the recommended tool for tracking work activity and completing timesheets more smoothly.
Original PR description
Before this commit, the links pointing to the browser extension of Activity Watch. However, a new extension called Timesheets Assistant has been published by Odoo to improve the Activity watch extension. This commit replaces the links pointed to the browser extension to set the links for Timesheets Assistant browser extension. task-6470304 Forward-Port-Of: odoo/enterprise#129883
Status buttons now show clearer visual feedback for hover, pressed, open, and current states. This makes workflow progress indicators easier to understand and avoids confusing highlights after a user clicks a step.
Original PR description
- requires https://github.com/odoo/enterprise/pull/130030 The statusbar buttons painted `:hover` and `:focus` alike, so a button stayed highlighted after being clicked. That rule is also more…
- requires https://github.com/odoo/enterprise/pull/130030 The statusbar buttons painted `:hover` and `:focus` alike, so a button stayed highlighted after being clicked. That rule is also more specific than Bootstrap's `.btn:first-child:active` and `.btn.show`, so it kept winning the cascade while the cursor was on the button: the pressed state only appeared once the pointer left it, and an open `...` dropdown read as merely hovered. Restrict the rule to `:hover`, and give `:active` and `.show` a declaration of their own on a dedicated `--o-statusbar-background-pressed` token. The current step was painted through the `disabled` attribute, which tied its look to the button being disabled and forced anything restyling the bar to go through `--btn-disabled-bg`. Paint it from its own `.o_arrow_button_current` class instead, declared last so it outranks the states above, and leave `:disabled` with nothing but the muted color of the steps that are not the current one. The three backgrounds are no longer declared on `.o_statusbar_status`: they are read where they are used, with the `btn-secondary` design map as a fallback. An edition or a component can now set `--o-statusbar-background-hover`, `-pressed` or `-current` on the bar without having to reach into these rules. The hr timeline only overrode these states to compensate for a hover as dark as the selected version: the reviewed web states cover it, so the override goes away. task-6518027 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The page navigation control now uses the standard button group style already used in similar Odoo toolbars. This reduces duplicated styling and keeps the control panel visually aligned, with only a minor interface consistency impact for users.
Original PR description
The pageSwitcher shipped its own SCSS duplicating the `o_switcher` meta-component from web_enterprise: same padding, background, border and radius, same `--btn-*` overrides. Drop it and let the pageSwitcher render as a regular `btn-group`, like the gantt and calendar toolbars. The pageSwitcher sits next to the view switcher, which `o_switcher` makes taller than a standard button, so stretch `.o_cp_pager` to keep the control panel row on a single height. No effect in community or on mobile, where nothing in that row is taller than a button. The group header pageSwitcher no longer has a wrapper to cancel out, so its reset in `list_renderer.scss` goes away too. task-6518267 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Project To-Do onboarding flow now shows refreshed screenshots that better match the current product experience. This helps new users follow setup guidance more easily and reduces confusion during onboarding.
Original PR description
Update the screenshots of the onboarding to-do --- task-6443670
This update lets Odoo modules choose where editor placeholder text appears instead of forcing it into the default content block. It keeps the existing behavior by default while reducing extra customization work for modules that need placeholders in places such as titles.
Original PR description
Before the placeholder was tied to the default block, so a module that wanted it somewhere else (like a title) had to rewrite the whole plugin. This commit lets a module register its own target instead, keeping the current behavior when nothing overrides it. task-4496371 requires: https://github.com/odoo/enterprise/pull/116529 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Status bars in Enterprise now use clearer visual states for hover, press, and the current step. This reduces confusion by making it easier to see which step is selected in both light and dark mode.
Original PR description
- requires https://github.com/odoo/odoo/pull/285945 The statusbar now reads its hover, pressed and current backgrounds from `--o-statusbar-background-hover`, `-pressed` and `-current`, falling back to the `btn-secondary` design map when nothing declares them. Enterprise had no statusbar stylesheet, so the bar was left with those fallbacks: the hover was as dark as the current step, which made the bar look like it had two selections, and the pressed state was hard to tell apart from either. Declare the three tokens on the gray scale instead, each state a step apart, with the hover and pressed hints kept translucent so they stay lighter than the current step. Dark mode gets its own values: the scale reads the other way round there, so the same three tokens move up a step to stay visible on a dark bar. task-6518027
This update makes India payroll Form 138 setup clearer and more reliable by improving date handling, file naming, and employee filtering. It also prevents accidental creation of responsible person records from settings, helping keep configuration data cleaner.
Original PR description
this PR - removes custom `format_date` by using `odoo.tools.format_date` - adds a placeholder for filename in Form 138 form view (because the default value was `false`) - uses employee's `country_code` to filter in the settings rather than employee's parter's `country_code` (to save the headache) - also restricts on-the-fly creation of `responsible_person` in settings. [Task #6522078](https://www.odoo.com/odoo/project/1251/tasks/6522078)
The accounting reports interface has been updated to use a safer shared mechanism for its button bar. This is an internal improvement that should help keep report actions reliable without changing day-to-day user workflows.
Original PR description
Following odoo/odoo@324ab8b5080fc35367b2e7a63d33e3fa0674a2e1, usePlugin can now be safely used.
The Point of Sale dashboard graph now uses tighter spacing in its card to better match the accounting dashboard design. This is a small visual polish change that makes dashboards feel more consistent across Odoo.
Original PR description
We removed the padding on the left, right and bottom of the graph in the kanban card. task-6488005
This update improves how Sign and VoIP look up internal records, aligning them with a faster shared approach used elsewhere in Odoo. Business users may see small performance gains in related activity, call history, and softphone interactions, with no change to features or workflows.
Original PR description
Enterprise counterpart of "[PERF] mail: speed up a record lookup by local id", which explains the why.
Object.values(Model.records) -> Model.records.values()
https://github.com/odoo/odoo/pull/285358The demo worksheet for device installation and maintenance now looks more realistic, with shorter labels and a clearer two-column layout. Some sample interventions also include completed worksheet details, helping customers better understand how the feature can support real field service work.
Original PR description
This commit reworks the "Device Installation and Maintenance" worksheet template to display its fields in two columns using separators, and shortens the labels so the demo represents a realistic use case and customers can see themselves using the feature. It also fills in the worksheet of some interventions in the demo data. task-6455863
The attachment tab is now visible when creating or editing a work order operation, even before the operation has been saved. This removes an extra save step and makes it easier for users to add relevant documents at the right time.
Original PR description
Attachment tab is not visible if work order operation is not set. This commit makes sure it is always visible, so there is no need to save the operation beforehand task-6392087
The mail module now formats warranty information in a standard JSON format before sending it to the warranty server. This helps ensure the server can reliably read the information and reduces the risk of processing errors.
Original PR description
Format the publisher warranty message using json.dumps() instead of Python's native str() representation. This ensures serializeid JSON serialization for the payload sent to the warranty server. Forward-Port-Of: odoo/odoo#285632 Forward-Port-Of: odoo/odoo#283139
This update prepares the sales discount wizard so its discount values can be reused by subscription-related workflows. It helps keep discount handling more consistent across sales processes, with minimal direct impact on day-to-day users.
Original PR description
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
Belgian payroll employee types are now consistently assigned to Belgium, reducing the risk of incomplete or inconsistent employee setup data. The update also aligns seasonal employee type records with the shared HR definition to avoid duplicate configuration.
Original PR description
Some employee types from the Belgian localization do not have the country id set to Belgium. This commit sets all default employee type country_id to Belgium. The field country_id for hr.employee.type is now required, without enforcing NOT NULL constrain at the sql table level. Instead a constrain is used on the server side and an attribute on the frontend xml to mimic the same behavior. The goal is to ensure data integrity. New sql constrains only applied to a l10n would cause issue in case of an install/uninstall of that same l10n. Additionally, a standalone record for seasonal employee existed in the l10n, along with one hr/. This commits reuse the parent one in hr/ and deletes the standalone record. task: 6511484
The Helpdesk team card layout has been adjusted so the email alias lines up neatly with the team name. This small visual improvement makes the Helpdesk settings screen look cleaner and easier to scan.
Original PR description
In this commit, we remove the margin before the mail alias, ensuring aligment within the helpdesk team card. task-6416578
The test suite now checks the most recent document in the same order users see it in the interface. This reduces confusing test behavior and helps prevent false failures when internal data ordering changes.
Original PR description
Because of missing `sorted()`, we were asserting the last document using the cache order and not the order in which they are in the UI. That brings confusion when reading the code and leads to failing tests if, for some reason, the cache is refreshed.
Payroll payment reports now use a shared way to choose the right export format for each country. This reduces repeated code across local payroll modules, making future updates easier and lowering the risk of inconsistent payment report behavior.
Original PR description
* = l10n_{ae, au, ch, hk, in, sa, us}_hr_payroll, hr_payroll_account_iso2002
Currently, the `action_payslip_payment_report` method in `hr.payroll` and the `action_payment_report` method in `hr.payroll.run` are overridden across multiple localization modules to modify default_export_format.
This results in code duplication, higher maintenance effort, and a risk of conflicts or inconsistencies, since the same method is repeatedly overridden in different localizations just to update a single context value.
This commit will improve the current code by introduce the helper methods `_get_payslip_export_format (hr.payslip)` and `_get_payslip_run_export_format (hr.payslip.run)` to compute `default_export_format`.
This allows Allows localizations to override only these methods instead of full report actions, reducing duplication and avoiding conflicts.
sentry-7391832811This update aligns Odoo Enterprise spreadsheet features with the latest spreadsheet engine changes. It improves reliability for spreadsheet comments, pivots, surveys, and sales field synchronization without introducing major user-facing changes.
Original PR description
See https://github.com/odoo/odoo/pull/285929