Monday, September 21, 2026
35 changes · master
Enhancements to existing features
This update fixes small visual inconsistencies in the website builder and website settings, including dropdown corners, focus outlines, section background color, and button spacing. These refinements make the editing experience look more consistent after the recent interface redesign, with no expected workflow changes for users.
Original PR description
This PR fixes minor visual issues within the builder that were either related to the webclient redesign or already there before but became more visible after the webclient redesign. - Fix the first and last items of a dropdown receiving the wrong border radius (e.g header selector) - Ensure the the focus state on snippet category thumbnail has the right border-radius - Fix a wrong background-color for the website section in the settings view - Fix the button-group gap to match the new logic introduced in https://github.com/odoo/odoo/commit/f8f3da6fed103bee179459197b34edede737aaab task-6511995 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288101
The timesheet assistant animation now ends more smoothly by keeping the focus on the timesheet screen and showing the total time captured. The example entries look more realistic with client names and clearer task labels, making the assistant feel more polished and easier to understand.
Original PR description
Before these changes, the animation cut harshly to the end message. Now the focus stays on the timesheet screen at the end, showing the total time captured. The message is clearer, and the logs now carry a client to look like real timesheets. task-6090601 Forward-Port-Of: odoo/enterprise#126838
Manufacturing order PDF reports now have clearer styling and include more useful production details. Business users can see produced lot or serial numbers, deadlines, consumed quantities, quantities still to consume, and component serial numbers directly in the report.
Original PR description
Improved styling and added extra information to the MO pdf. The lot/serial numbers for the produced products are now displayed on the pdf. The deadline is also displayed. Furthermore the consumed and to consume quantity of each part are now displayed, same as the serial numbers associated with the parts. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#287596
The HR structure type setting is now hidden by default, reducing clutter in the employee management setup. This keeps the interface simpler for users who do not need payroll structure configuration while preserving the underlying capability.
Original PR description
task-6569952 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288902
Romanian eTransport declarations can now be generated for supported dropshipping scenarios, including domestic and international B2C flows. This helps businesses using dropshipping comply with Romanian transport reporting requirements, while unsupported B2B dropship cases now show clear errors.
Original PR description
Before this commit: Dropship operations were not supported by the Romanian eTransport integration. As a result, eTransport declarations could not be generated for dropshipping flows. After this commit: eTransport declarations can now be generated for dropship operations, allowing the supported dropshipping scenarios to be processed through the Romanian eTransport workflow. task-6391489 Forward-Port-Of: odoo/odoo#289344 Forward-Port-Of: odoo/odoo#280199
The salary adjustment form now uses clearer action labels for pausing and restarting an adjustment. A visible paused status ribbon helps payroll users immediately recognize when an adjustment is on hold, reducing confusion during payroll review.
Original PR description
- renamed the buttons to pause and restart the adjustment - added a ribbon if the status is paused task-6462095
The partner amount due button now uses a more general label and shows signed amounts instead of always displaying absolute values. Open item views also include payable items by default, giving users a clearer picture of customer and supplier balances.
Original PR description
With this commit:- - We changed the label of the smart button and gave generic name. - The button will not show the absolute value, but simple values with a sign will be shown. - Open items will also have the 'payable' filter by default. task-6528204 Forward-Port-Of: odoo/enterprise#131910
This update reorganizes how report-related actions are handled behind the scenes across accounting and local compliance reports. Users should see the same reporting workflows, while the change makes the system easier to maintain and extend in future updates.
Original PR description
Forward-Port-Of: odoo/enterprise#132210
Belgian payroll employee and contract template forms no longer show the payroll structure type field. This reduces unnecessary choices for users and helps keep localization-specific payroll setup clearer.
Original PR description
- hide `structure_type_id` on employee and contract template form views for BE localization task-6569952 Forward-Port-Of: odoo/enterprise#131955
The Sales dashboard now updates its cards after users run actions on selected sales orders. This keeps counts and amounts current without requiring a manual page refresh, improving confidence in dashboard data during daily sales work.
Original PR description
**Target: 20+** **Description of the issue/feature this PR addresses:** The Sales dashboard doesn't dynamically reflect changes made through actions. **Current behavior before PR:** Selecting several sale orders in the list view and running an action updates the records but the dashboard cards above keep showing stale counts/amounts until the page is manually refreshed. **Desired behavior after PR is merged:** After such a action completes, the dashboard automatically reloads and shows up-to-date data. Forward-Port-Of: odoo/odoo#288506
The card options menu in kanban views has been visually adjusted to better match Odoo's Frost design direction. It now sits slightly away from the card edge and uses a standard icon size, creating a cleaner and more consistent user experience.
Original PR description
Before this commit, the ellipsis menu was pinned edge-to-edge in the card's top-right corner and shaped to follow the card's rounded corner. This commit detaches it from the card edges, following Frost's move away from edge-to-edge elements. Its icon also drops back to the standard size. task-6584479 requires: https://github.com/odoo/enterprise/pull/132201 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#289240
This update keeps light gray visual elements looking consistent after the broader web client redesign changed the meaning of the secondary color. It helps avoid unexpectedly darker backgrounds, borders, alerts, and icons across several Odoo apps, preserving the intended user experience.
Original PR description
- requires: https://github.com/odoo/enterprise/pull/131768 With the webclient redesign deployed for Odoo 17, we used to set `$secondary` to `$gray-300`, a light gray, while Bootstrap's secondary is a…
The working schedules list view now aligns calendar names more neatly in each row. This small visual improvement makes the list easier to scan and provides a more polished user experience.
Original PR description
Add a class `o_resource_calendar_list` for the working schedules list view to align the list rows in the middle. task-6562529 Forward-Port-Of: odoo/odoo#289140
Several Odoo apps were updated so elements intended to appear light gray keep the same look after the broader web client design color changes. This helps preserve visual consistency in screens, dialogs, notifications, reports, and booking flows without changing business behavior.
List views now give clearer feedback while users edit multiple records, replacing separate save and discard buttons with a status indicator. Clicking, focusing, and validation behavior is more reliable, so users are less likely to lose track of required corrections during bulk edits.
Original PR description
Main changes: - Add `ListStatusIndicator` to replace Save/Discard buttons. - Improve cell click and focus behavior in `ListRenderer`. - Update cursor styles for selected and read-only cells (editable fields will have text cursor otherwise default cursor). - Remove the mass-edit pencil button. task-6463104
Point of Sale global discount lines now show the applied percentage when relevant and avoid showing unnecessary unit price details for fixed discounts. This makes discounts easier for staff and customers to understand across POS screens, receipts, customer displays, and self-ordering flows.
Original PR description
..., point_of_sale, pos_self_order, pos_discount_self_order (ADD) --- Global discount lines did not indicate the applied percentage and displayed redundant unit price information for fixed discounts. Include the percentage in the name of percentage discount lines and hide their unit price details. Apply this consistently to the POS, receipts, customer displays, and self-ordering interfaces. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6537486
This update brings the spreadsheet component to a newer version with improvements for resizing rows and columns, better handling of zoom values, and fixes that prevent blank spreadsheet grids. Users should see a smoother and more reliable spreadsheet experience in Odoo dashboards and spreadsheet views.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/63c49a88a3 [REL] 20.1.0-alpha.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/63c49a88a3 [REL] 20.1.0-alpha.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/62ac6604c6 [FIX] header_resize_editor: remove unnecessary toString() [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/4bcd7f6f33 [IMP] zoom: clip out-of-range values instead of ignoring them [Task: 6515617](https://www.odoo.com/odoo/2328/tasks/6515617) https://github.com/odoo/o-spreadsheet/commit/b7e1d79a4d [FIX] stores: prevent blank grid when zoom value is empty [Task: 6515617](https://www.odoo.com/odoo/2328/tasks/6515617) https://github.com/odoo/o-spreadsheet/commit/c2bc431a3c [REL] 20.1.0-alpha.1 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/0d33ec1665 [IMP] headers: resize rows and columns from context menu [Task: 6234780](https://www.odoo.com/odoo/2328/tasks/6234780) https://github.com/odoo/o-spreadsheet/commit/b704a2d032 [REF] viewports: centralize Cartesian coordinate lookup [Task: 6234780](https://www.odoo.com/odoo/2328/tasks/6234780) https://github.com/odoo/o-spreadsheet/commit/0bd4c2d221 [IMP] headers: cap row and column sizes [Task: 6234780](https://www.odoo.com/odoo/2328/tasks/6234780) https://github.com/odoo/o-spreadsheet/commit/1307c3f3a9 [REF] env: remove side panel methods [Task: 6566084](https://www.odoo.com/odoo/2328/tasks/6566084) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
Demo quotation templates were updated so sales teams can better showcase and test quotation features. This helps evaluators and trainers demonstrate a more complete sales flow using realistic sample data.
Original PR description
*: product, sale_management, stock Improve the available demo template to demo and test all features from quotations. task-6566585 Forward-Port-Of: odoo/odoo#288087
Payroll warning records now keep a clearer history of important field changes and include the discussion area directly on the form. This helps HR teams follow updates, comments, and context in one place for better traceability.
Original PR description
task-6574042
Payslip validation errors now show helpful descriptions in addition to error titles when available. When multiple issues are found, they are presented as a numbered list, making it easier for payroll users to understand and resolve configuration problems.
Original PR description
Validating a payslip for an employee can raise errors (regarding salary configuration for example.) The validation message providing insights to the users used to be a list of the titles of the errors. Some of these validation errors may have a description as well, which would be useful for the user. The errors message has been adapted to display title and description if any. If more than one error is shown, the message format is also adapted as a numbered list. task-6526610 Forward-Port-Of: odoo/enterprise#131977
Belgian demo payroll employees now include the private address details required for 281 tax report validation. This helps demo environments generate Belgian 281 reports cleanly without address-related errors.
Original PR description
When generating Belgian 281 reports, the validation fails if employees lack a valid private address (street, zip, city, and country). So this change adds private address fields to the Belgian demo employees and their corresponding `hr.version` records to ensure the report can be generated cleanly in demo environments. Task:6582075
Spanish Veri*Factu invoice problems that are detected before submission are now marked as rejected and shown in the usual invoice views. The sales journal dashboard also highlights invoices with Veri*Factu errors, helping accounting teams spot and resolve issues sooner.
Original PR description
Users had no easy way to spot sale invoices that are broken from a Veri*Factu standpoint: the account.move field only ever reached the 'rejected' state after a real submission attempt to the AEAT got…
Users had no easy way to spot sale invoices that are broken from a Veri*Factu standpoint: the account.move field only ever reached the 'rejected' state after a real submission attempt to the AEAT got a negative answer. Invoices that fail local validation before anything is sent (e.g. more than one main tax on a line) generate a l10n_es_edi_verifactu.document with errors filled in but state left empty, so they never showed up as rejected anywhere and could sit unnoticed until someone opened the invoice's Veri*Factu tab. Widen L10nEsEdiVerifactuDocument._get_state() so a document also counts as 'rejected' whenever it has errors set, regardless of the literal state value. This reuses the existing account.move computed/stored l10n_es_edi_verifactu_state field as the single source of truth instead of duplicating the check against the UI-only, non-stored warning fields, so every consumer of that state (list view badge, search filters) picks up the change for free. On top of that, add a "Veri*Factu Error(s)" entry to the sale journal's dashboard kanban card, with its own search filter, so these invoices are visible from the accounting dashboard without having to open each one individually. task-6463206 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Spreadsheet-related screens now use a shared notification plugin instead of the previous notification store. This streamlines how messages and alerts are handled across spreadsheet features, improving consistency and maintainability without changing core business workflows.
Original PR description
This commit replace the store `NotificationStore` with an owl plugin `NotificationPlugin`. Task: 6542121
Spreadsheet notifications were moved to a newer plugin-based system, making them better aligned with the spreadsheet interface architecture. This should improve maintainability and consistency without changing the core user workflow.
Original PR description
This commit replace the store `NotificationStore` with an owl plugin `NotificationPlugin`. Task: [6542121](https://www.odoo.com/odoo/2328/tasks/6542121) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves Belgian payroll cafeteria plan handling by adding support for net contributions and salary sacrifice calculations. It helps ensure salary simulations respect minimum wage rules and blocks offers when salary sacrifice exceeds the allowed ratio.
Original PR description
### 1 -HR_PAYROLL - flow minimaliste : - Ajout de deux champs (sans compute / depends) - Règles salariales ### 2 - Salary config Calcul du salaire à partir du YC : ce qui descend en dessous du barème min passe en **net_contrib**. => Impact sur le calcul du YC/WAGE Calcul du salary sacrifice par rapport à un pourcentage donné dans l'offre. Au-delà d'un certain ratio, l'utilisateur ne peut pas valider le formulaire. Méthode de calcul : SS = (wage sans benefices) - (wage de la simulation)
This update improves accounting behavior for companies that operate without VAT, especially in Belgium, by adding better handling of 0% non-deductible taxes and preventing errors when taxes are missing. It also refreshes the invoicing registration dashboard after Peppol or French PDP registration so users immediately see the correct next step.
Original PR description
#### [IMP] account,l10n_be: `vat_disabled` l10n_be - Add 0% ND tax for `vat_disabled` case - Also set toggle the "Default Purchase Receipt Fiscal Position" - Fix use of `self` in `for company in self` loop - remove duplicate line account - Fix a traceback in case of missing taxes - On XML import: Match the 0% ND tax for invoice lines with tax category 'O' for vat_disabled companies task-6570364 #### [IMP] account_peppol,l10n_fr_pdp: refresh page after registration I.e. this is needed so that the dashboard reloads after registration. Otherwise there is still a button to open the peppol / pdp registration wizard respectively. After the refresh it is gone and replaced by a link to the settings. task-6570364 #### [REF] l10n_be: `vat_disabled` replaced taxes Replace 4 searches with a single `_read_group` task-6570364 Forward-Port-Of: odoo/odoo#288149
This change introduces a lighter user profile for inventory-related work, allowing users to perform normal stock actions while only seeing the Shopfloor and Barcode apps. It also broadens maintenance equipment access so users can view equipment more easily across the maintenance area.
Original PR description
* : stock,mrp,maintenance Light users can do every action normal users can do, the difference is that they only have 2 apps, shopfloor and barcode. Task: 6469225 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#286681
HR officers can now enter a fixed monthly reimbursement amount for employees using a private car for home-to-work travel under Belgium's CP200 category. This gives payroll teams more flexibility while ensuring payslips, reporting, and related payroll documents use the chosen reimbursement amount correctly.
Original PR description
For employees under CP200 pay category, the HR officer has now the choice to either specify the private car ride between home and work, or enter a fixed amount that the employer will reimburse monthly to the employee. The private car salary rule has been modified to take into account this amount if set. The monthly amount is the same by default regarding the number of worked days it is computed on. However, the HR offcier can modify the number of days manually, which modifies the monthly amount if recomputed on the payslip. task-6424651
Shop floor and barcode users can now complete quality checks and create quality alerts without needing access to the full Quality app. This keeps the main app hidden for light users while still letting them handle required quality tasks during production or warehouse work, with better employee details available in shop floor screens.
Original PR description
Light users should be able to perform/validate quality checks and create quality alerts through shopfloor/barcode. Task: 6469225 Forward-Port-Of: odoo/enterprise#130431
Companies with VAT disabled will no longer see the generic tax report or reports based on the generic EC sales report. This keeps reporting menus focused on relevant obligations and reduces confusion for users who do not need VAT reporting.
Original PR description
- Disable the generic tax report. - Also disable all reports that have the generic ec sales report as root report. task-6570364 Forward-Port-Of: odoo/enterprise#131471
This update adds a debug option that lets teams temporarily turn off cached data requests in the web interface. It helps performance investigations show the true loading cost of menus and actions, making slow areas easier to identify and improve.
Original PR description
The JS rpc cache can sometimes hide real performance issues of some menus/actions. This commit adds a "Disable RPC Cache" debug menu item, which toggles a `cache=0` url query param. When it is set, the rpc cache is disabled, so every rpc made with a `cache` setting goes straight to the network. This allows to analyse performance or debug performance issues more easily. 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 Forward-Port-Of: odoo/odoo#289183
An unused online payment wizard file has been fully removed after it was previously emptied but left in place. This is an internal cleanup that reduces clutter and helps keep the payment codebase easier to maintain, with no expected impact for users.
Original PR description
Since 56e73e8d8d674e272b809ef7628b0705cbd76900, we don't need the wizard anymore. That commit emptied the file without actually removing it, this commit does that. No task ID Forward-Port-Of: odoo/enterprise#132169
The AI website builder can now add JavaScript when HTML and CSS alone cannot meet a user's request, enabling richer interactive page elements. Added safeguards review generated scripts, track AI-made page changes, and let users pause scripts while editing or translating content.
Original PR description
This commit enables ai to add javascript to the page, when it's needed. By default, scripts are added as a last resort. Firstly, AI tries to satisfy the user's prompt with HTML/CSS changes, and when…
This commit enables ai to add javascript to the page, when it's needed. By default, scripts are added as a last resort. Firstly, AI tries to satisfy the user's prompt with HTML/CSS changes, and when it's not possible, we allow AI to add javascript. Because static analysis of custom js scripts is quite limited, a dedicated LLM safety reviewer is introduced to validate proposed code. To ensure safety, the review fails if any vulnerability or suspicious pattern is detected, or if the reviewer call itself fails. In addition, to make sure ai scripts don't mess up the history, and that we properly clean up everything that ai generated, we prompt AI to wrap every part of the code that changes the DOM interactively in a wrapper `__aiProtectMutations`, which handles mutations done right after this call, so we can easily track the changes made by ai script, in order to easily reset modifications made by ai before saving the page, or when entering the edit mode. Also, in the edit mode this wrapper ignores the mutations made by the script. To make it more-or-less work acceptably, we stop the execution of ai generated scripts on entering the translation. Also, we add a builder option to pause the execution of the ai scripts in a snippet, so users can easily edit it. We prompt AI not to hardcode strings on state change, but instead have a few different blocks with necessary text and show/hide them with d-none. This way we show every text block when scripts don't run to be able to edit them. task-6144157
The spreadsheet component has been updated to a newer version, bringing usability improvements such as resizing rows and columns directly from the context menu. It also adds safeguards around row and column sizing and includes internal cleanup to keep the spreadsheet experience more reliable and easier to maintain.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c2bc431a3c [REL] 20.1.0-alpha.1 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c2bc431a3c [REL] 20.1.0-alpha.1 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/0d33ec1665 [IMP] headers: resize rows and columns from context menu [Task: 6234780](https://www.odoo.com/odoo/2328/tasks/6234780) https://github.com/odoo/o-spreadsheet/commit/b704a2d032 [REF] viewports: centralize Cartesian coordinate lookup [Task: 6234780](https://www.odoo.com/odoo/2328/tasks/6234780) https://github.com/odoo/o-spreadsheet/commit/0bd4c2d221 [IMP] headers: cap row and column sizes [Task: 6234780](https://www.odoo.com/odoo/2328/tasks/6234780) https://github.com/odoo/o-spreadsheet/commit/1307c3f3a9 [REF] env: remove side panel methods [Task: 6566084](https://www.odoo.com/odoo/2328/tasks/6566084) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
Adds a supporting view in the phone validation module so call activities can be formatted consistently in upcoming versions. This is a preparatory change for forward-porting related work and has minimal direct user impact.
Original PR description
See [1], which introduces a view in 20.0 so we need this in master first to be able to forward-port. [1]: https://github.com/odoo/odoo/pull/289456 Related to task-6537285
- requires: https://github.com/odoo/enterprise/pull/131768
With the webclient redesign deployed for Odoo 17, we used to set `$secondary` to `$gray-300`, a light gray, while Bootstrap's secondary is a dark gray. With the new webclient redesign, it is now sets to `$o-gray-700`, closer to the Bootstrap default, so everything built on `$secondary` got darker: `bg-secondary`, `text-bg-secondary`, `border-secondary`, the `-subtle`/`-emphasis` variants, `alert-secondary` and SCSS rules reading `$secondary`.
Usages that meant "light gray" now use `gray-300`, the former value of `$secondary`, or the closest gray token, so they render as before. To get that light look, don't use secondary, instead, use:
```
bg-secondary -> bg-300
text-bg-secondary (no badge) -> text-bg-300
text-secondary (icons, dots) -> text-300
bg-secondary-subtle -> bg-100
text-secondary-emphasis -> text-700
border-secondary-subtle -> border-light-subtle
alert-secondary -> alert-light
border-secondary -> drop it: `border`, `border-top`, ...
already draw `--border-color`
(gray-300); on a `.card`, use `border`
$secondary -> $gray-300
$secondary-text-emphasis -> $gray-700
@each ... in $theme-colors -> map-merge($theme-colors,
("secondary": $gray-300))
```
task-6578378
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#288603Original PR description
- requires: https://github.com/odoo/odoo/pull/288603 With the webclient redesign deployed for Odoo 17, we used to set `$secondary` to `$gray-300`, a light gray, while Bootstrap's secondary is a dark…
- requires: https://github.com/odoo/odoo/pull/288603
With the webclient redesign deployed for Odoo 17, we used to set `$secondary` to `$gray-300`, a light gray, while Bootstrap's secondary is a dark gray. With the new webclient redesign, it is now sets to `$o-gray-700`, closer to the Bootstrap default, so everything built on `$secondary` got darker: `bg-secondary`, `text-bg-secondary`, `border-secondary`, the `-subtle`/`-emphasis` variants, `alert-secondary` and SCSS rules reading `$secondary`.
Usages that meant "light gray" now use `gray-300`, the former value of `$secondary`, or the closest gray token, so they render as before. To get that light look, don't use secondary, instead, use:
```
bg-secondary -> bg-300
text-bg-secondary (no badge) -> text-bg-300
text-secondary (icons, dots) -> text-300
bg-secondary-subtle -> bg-100
text-secondary-emphasis -> text-700
border-secondary-subtle -> border-light-subtle
alert-secondary -> alert-light
border-secondary -> drop it: `border`, `border-top`, ...
already draw `--border-color`
(gray-300); on a `.card`, use `border`
$secondary -> $gray-300
$secondary-text-emphasis -> $gray-700
@each ... in $theme-colors -> map-merge($theme-colors,
("secondary": $gray-300))
```
task-6578378
Forward-Port-Of: odoo/enterprise#131768