Wednesday, September 17, 2025
46 changes · 19.0
Enhancements to existing features
This update standardizes how filing deadlines are calculated for Intrastat and UK reporting modules. It helps keep deadline settings easier to maintain and more consistent across supported localizations, with no expected change to day-to-day workflows.
Basic automated checks were added to confirm that AI-related data models enforce the expected access permissions. This helps reduce the risk of permission mistakes in future changes without changing day-to-day user workflows.
Original PR description
Purpose: -------- This commit adds a few basic tests to check model permissions. (the fix from the original commit about the `ai.tool` model is not forwardported as the model has been removed in 19.0 (replaced by server actions). Task-5064332 Forward-Port-Of: odoo/enterprise#93847
The stock product quantity button now shows the 'On Hand' wording consistently on both product variant and product template forms. This reduces confusion for users checking available inventory from different product screens.
Original PR description
The change made in #226916 only impacted the `product.product` form, instead of both the `product.product` and the `product.template` form. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The bank reconciliation widget has been visually adjusted so labels and button counters appear less heavy. This makes the interface easier to scan while keeping the existing workflow unchanged.
Original PR description
During this commit:https://github.com/odoo/enterprise/commit/f9725d7b01cbd1235f022821a6861adb2955e49e We made some changes on the css of the bank rec widget. This commit will change: - The text weight of the labels is a bit too dark - The circle around the count on button was also a bit too dark task-5091753
The bottom sheet interface now uses adjusted colors for its inner elements when dark mode is enabled. This improves readability and visual consistency for users working in darker themes.
Original PR description
This commit adjusts the colors of the bottom sheet’s inner elements for dark mode. task-5087158 Requires: - https://github.com/odoo/odoo/pull/227230
The follow-up process tests now align with the newer journal items view used to review overdue customer entries. This keeps quality checks current and removes obsolete follow-up view code, reducing maintenance risk without changing the customer-facing workflow.
Original PR description
Current behavior before PR: - The `test_journal_items_action_domain_filters_partner_posted_entries` test was calling `action_open_overdue_entries` on the partner. - It checked overdue invoices by…
Current behavior before PR: - The `test_journal_items_action_domain_filters_partner_posted_entries` test was calling `action_open_overdue_entries` on the partner. - It checked overdue invoices by searching moves with the returned domain. Desired behavior after PR is merged: - The test now calls the new action `action_open_partner_followup_journal_items`. - It searches for `account.move.line` records using the action domain. - It validates the related invoices via `line_ids` instead of directly searching moves. - Removes redundant code. Changes implemented: - Replaced `action_open_overdue_entries` with `action_open_partner_followup_journal_items`. - Replaced search on `account.move` with search on `account.move.line`. - Assertion updated to check the invoices line ids are equal to `move_lines.ids`. - Removed `view_followup_invoice_list` custom view and `action_open_overdue_entries` which no longer used - Renamed `test_overdue_invoices_action_domain_includes_children_partners` testcase to `test_journal_items_action_domain_includes_children_partners` and updated its docstring. related commit-[75533f4](https://github.com/odoo/enterprise/commit/75533f4808f2aa52f70a12dba8829caef44bf1b7) related PR: odoo/upgrade#8451 task-5026396 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The message editor now handles channel commands correctly when composing rich-text messages. This helps users interact with chat channels more reliably and reduces confusion when using command shortcuts.
Original PR description
This commit allows the html composer to use channel commands correctly. task-5086489 https://github.com/odoo/odoo/pull/227137
The mail composer now handles channel commands correctly when using the HTML composer. This makes chat-related actions more reliable for users working in Odoo discussions.
Original PR description
This commit allows the html composer to use channel commands correctly. task-5086489 https://github.com/odoo/enterprise/pull/94743 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fixes an error in the stock forecast view when the first displayed rows contain merged cells. Business users can now review product availability forecasts for affected products without the page failing.
Original PR description
Ensure correct initialization of lastIndex and mergeLinesData to also cover the case where line 0 is part of a merge. Current behavior before PR: - `Caused by: TypeError: this.mergesLinesData[lastIndex] is undefined` - `TypeError: Cannot read properties of undefined (reading 'rowcount')` Desired behavior after PR is merged: lastIndex and mergesLinesData[lastIndex] are correctly initialized on first line too To reproduce: On a product with OnHand quantity, create multiple SO so that the first cell of the first lines are merged. <img width="1896" height="230" alt="image" src="https://github.com/user-attachments/assets/d8eb550a-e9c8-4dbf-ade7-046f83b370ae" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Features or functions removed from Odoo
An outdated automated test for website link editing was removed because it had been disabled for months and no longer matched the current editor behavior. This reduces maintenance noise and avoids misleading test failures without changing the customer-facing website features.
Original PR description
Test has been disabled in 18.0~master since March, it's even more broken in 19.0+ following #225791 (migrated to a `setSelection` with a different protocol, but the tour was not updated to the new protocol). https://runbot.odoo.com/odoo/error/116797 Forward-Port-Of: odoo/odoo#227455 Forward-Port-Of: odoo/odoo#227163
Code cleanup and technical improvements
This update reorganizes where color picker tabs are defined so each editor area owns the options it uses. It helps keep the website and HTML editing tools easier to maintain without changing the expected user experience.
Original PR description
*: html_editor, html_builder, website. Following the creation of the colorpicker and the [refactor] of the html builder, colorpicker's tabs were defined in web, which is wrong for the 'Theme' and 'Gradient' Tabs. This commit moves them to 'html_builder' and 'html_editor' accordingly. Related to task-4367641 [refactor]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
Documentation and clarification updates
This update records the contributor license agreement signature for tsezgin. It supports Odoo's legal compliance process by confirming contribution rights for future work from this contributor.
Original PR description
The commit contains my CLA signature Forward-Port-Of: odoo/odoo#226307
This fix prevents Odoo from adding a log note when an internal validation error occurs before a request is sent to ZATCA. It keeps invoice chatter cleaner and avoids confusing users with response logs when no external submission actually happened.
Original PR description
In a previous commit e90c35cde2a1f5de5d7bc4db7a525638ca3fab6e, we modified the logic of posting a log note when receiving a response from ZATCA to always log a note of the response. An issue occured because sometimes, Odoo raises user errors before sending a request to ZATCA, In which case, we do not need to log a note. Task-id: 5056724 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#226628 Forward-Port-Of: odoo/odoo#226036
This fixes an issue where fully postpaid subscriptions did not set the next invoice date to the first day of the billing period when the plan required period alignment. Businesses get more accurate billing schedules and fewer manual date corrections after confirming subscriptions.
Original PR description
Before this commit, when a subscription whose lines were all postpaid and the subscription plan was meant to align periods to first day of the period (e.g. first of the month), there was an issue at confirmation. The next invoice date was not put at the first day of the period in that case.
Rotting items in Kanban views now use the normal selected-item appearance when clicked. This makes it easier for users to see which item is selected and avoids confusion from the previous reddish background remaining visible.
Original PR description
The new Rotting feature displays rotting items with a light reddish background in Kanban view. However, they retain this color even as they are selected, which makes the selection unclear. This fix makes it so the rotting items look, once selected, the same as any other selected kanban item. task-5088907
The delivery form now shows the related sale order in the intended information area instead of beside the picking name. This prevents confusing form layout and makes sales information easier for users to find.
Original PR description
The picking form had two times the field `picking_type_code` in the arch. One next to the name, and the other in the Additionnal info tab. In 2713876dbc70d, the xpath in `sale_stock` adds `sale_id` after picking_type_code. It was placed right next the the picking name. This commit uses another field (unique this time) to place the sale_id at a more suitable place. Task: 5073894 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
POS receipts in Spain will no longer print a misleading QR code when the TicketBAI submission fails. This avoids confusing customers and helps ensure receipts only show valid compliance information.
Original PR description
Currently if the TicketBAI upload fails, a QR code is printed with the value `true`. Steps to reproduce ----- 1. Validate a POS order 2. Have a request exception occur during the TicketBAI post 3. Receipt is printed with an incorrect QR code Issue ----- `get_l10n_es_pos_tbai_qrurl()` returns None if the edi document is not accepted. This is then interpreted as `true` by the client and a QR code is printed. Solution ----- Explicitly return an empty string if the edi document is not accepted. Forward-Port-Of: odoo/odoo#227293
This fixes an issue in the website editor where background images in the banner categories section could not be replaced. The image is now applied in a way that lets users update it normally, making page customization work as expected.
Original PR description
We can't replace the image on the `grid_items` this commits applies the background image on the column to make it replaceable. task-5079842 Follow-up of task-4775259 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Payroll work entry validation no longer performs a multi-contract check that cannot apply in this version. This prevents unnecessary blocking or confusion during payroll processing while keeping the workflow aligned with supported contract rules.
Original PR description
The multi contract is not possible, so removed the check. task-5073952 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225964
Fixed an issue that could cause an error when opening the options menu on an invoice section after adding product lines. This helps users continue editing invoices and related sales lines without interruption.
Original PR description
The prop doesn't exist.
Fixed an issue where users could see an empty notification when editing properties on a product without a category. The warning message now displays correctly, helping users understand what action or setup is needed.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Create a new product without a category; 2. try to edit properties. Issue ----- An empty notification appears. Cause ----- The `_getPropertyEditWarning` override in `account_asset` introduced by PR odoo/enterprise#87807 doesn't return the value of the `super` call. This was introduced in a forward port as the logic to display the warning was changed in `web` in saas-18.3, and not requiring a return value in previous versions. Solution -------- Return the `super` call. opw-4980006 Forward-Port-Of: odoo/enterprise#94583
This fix updates demo data so the Large Cabinet barcode is attached to the right product variant, ensuring product comparison examples work as expected. It also adjusts delivery demo settings so serial numbers can be created during delivery flows, keeping sample operations consistent.
Original PR description
Since variants are created for 'Large cabinet', we need to move the barcode to one of those variants. task 5089956 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a demo data installation issue when Italian Riba payments are installed after Stripe expenses. The change ensures the demo bank partner setup works even when an extra bank journal exists, making demo environments install reliably.
Original PR description
Steps: 1. Install `hr_expense_stripe` and activate demo data 2. Install `l10n_it_riba` 3. `l10n_it_riba` demo data install fails with an error Since [this commit](https://github.com/odoo/enterprise/commit/752ffcbcd0c33e2886aa7bcec469e16d3704d7a9), an additional bank journal is created on every company by `hr_expense_stripe`, and `l10n_it_riba` demo data only expects one. task-none Forward-Port-Of: odoo/enterprise#94437
This fix ensures Discuss actions are connected to the intended data store instead of sometimes attaching to the wrong one. It prevents unexpected errors in Discuss when actions are created from local components.
Original PR description
In Discuss, actions can be defined globally (registry) or locally (components). When defined from a component, the store must be explicitly provided. If not, the constructor falls back to the owner if it is a store, or to the `mail.store` service. The fallback condition was incorrectly grouped due to missing parentheses, so the owner was always used even when a store was given. This could result in actions being bound to the wrong store, causing unexpected errors. 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 fix prevents timing issues in mail tests where message attachments could be overwritten if updates arrived before the message fully loaded. It improves the reliability of automated checks, helping reduce false failures in Odoo's validation process.
Original PR description
Before this commit, the test could experience a race condition where the load of the message and the update of the content of that message happen at the same time, if that happens and the update of the content is received by bus before the load of the message (which therefore does not contain any attachment), then the store was overriding the attachment. This commit should solve the problem in the test by waiting for the messages at the beginning of the test as well as updating the attachments in the ui and not by rpc directly. The race conditions should be fixed globally and are not only linked to this issue. fixes-runbot-66304 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227032 Forward-Port-Of: odoo/odoo#226922
Renamed spreadsheets now keep their updated name when users create another spreadsheet and return through the breadcrumb navigation. This prevents confusion by ensuring the navigation label matches the saved spreadsheet name.
Original PR description
Steps to reproduce: - Create a spreadsheet - Rename it to "My awesome spreadsheet" - Click on File -> New - Go back to "My awesome spreadsheet" from the breadcrumb => The spreadsheet is untitled. This was caused by the fact that the name was not saved in the local state of the action. Task: 4942117 Forward-Port-Of: odoo/enterprise#93163
This fix adjusts how content is displayed inside bottom sheets so options and controls fit more reliably. It helps users interact with menus, color choices, tags, and form buttons without layout issues getting in the way.
Original PR description
This commit fixes several layout issues related to the content of the bottom sheet. task-5087158 Requires: - https://github.com/odoo/enterprise/pull/94783 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents testing tools from causing a second error when a browser connection is already unavailable after a serious failure. It helps preserve the original error details, making failures easier to diagnose and reducing confusion during automated checks.
Original PR description
Cf #226267 the "error condition" on the ws socket is that it's not present at all, not that it's `None`. So when used after a fatal error (e.g. in the context of trying to take a screenshot or take a screencast) these methods *can* in some cases trigger a compound failure and lose the original error because they fail on trying to access the ws to check if it's truthy. Forward-Port-Of: odoo/odoo#227469 Forward-Port-Of: odoo/odoo#227385
Fixed an issue where users who had Shop Floor set as their default start page could see an error when logging in. The page now handles the missing app title during loading, improving reliability for manufacturing users without changing normal workflows.
Original PR description
**PROBLEM** In debug mode, we can change the default home action of a user (the action he sees when logging in). When the action `action_mrp_display` is set as the home action, there is a traceback…
**PROBLEM** In debug mode, we can change the default home action of a user (the action he sees when logging in). When the action `action_mrp_display` is set as the home action, there is a traceback after logging in. **STEP TO REPRODUCE** 1. Go in debug mode 2. Change the home action of a user to the 'Shop Floor' action (in the user form, in the preference tab). 3. log out, and log in with this user. 4. a js traceback should appear. **CAUSE** In mrp_workcenter_dialog.js, the Shop Floor action uses the `menu` service to get the name of the current app. `setCurrentMenu()` which set the current app in the `menu` service is not called before the `appName` getter is called. https://github.com/odoo/odoo/blob/5c1234085b1c1e227846b24bde55a0392779069b/addons/web/static/src/webclient/menus/menu_service.js#L29-L36 This lead to a traceback because this.menu.getCurrentApp() is `undefined`. **FIX** Workaround if the current app is undefined. We already check what is returned by `getCurrentApp()` where it is used. opw-4926317 Forward-Port-Of: odoo/enterprise#94655 Forward-Port-Of: odoo/enterprise#93043
This update prevents an error when list views calculate totals that depend on currency information. It helps ensure grouped or summarized financial values display reliably instead of failing in some column configurations.
Original PR description
`getFieldCurrencies` is called in the `aggregates` getter, while iterating on `allColumns`, trying to find the argument found from `allColumns` in `columns`, which is a subset of it. It was leading to an undefined attribute error.
The GSTR reporting check now correctly respects when e-invoicing has been excluded. This prevents users from seeing unnecessary missing e-invoice warnings for documents that should not require them.
Original PR description
Before this commit: - missing e-invoice check was shown even when e-invoice was excluded After this commit: - check is now removed if e-invoice is excluded Ref: https://drive.google.com/file/d/1srdN9_3xcdtkA7rZ9e_F-yr9qmDOlApf/view
Tax return generation now checks whether users can view the company instead of requiring permission to edit company records. This prevents Bookkeeper users from being wrongly blocked while still keeping returns inaccessible to users who cannot see the company.
Original PR description
Before:
When generating tax returns, the code checked for write access with `company.has_access('write')`. This could wrongly block users with Bookkeeper access right, who have the rights to generate returns but not to modify company records.
After:
The access check now uses `company.has_access('read')`, ensuring users with sufficient read access can generate returns while still preventing access for users without company visibility.
Forward-Port-Of: odoo/enterprise#94740Fixed a display issue in subscriptions that could prevent the “Secured by …” label under payment methods from using the intended vertical layout. This keeps the checkout/payment experience visually consistent and avoids confusing label placement for customers.
Original PR description
This PR aims to fix an issue where an xpath attribute was preventing from adding `.flex-column` to the "Secured by …" label under the payment methods. task-5081875 Requires: - https://github.com/odoo/odoo/pull/226453
Mobile shoppers now see cleaner spacing and more consistent alignment when selecting addresses and payment methods during checkout. This reduces visual clutter and makes key checkout information easier to read on small screens.
Original PR description
*: portal, payment. This PR fixes some issues regarding the mobile design of the address selector & method payment, mainly by adapting the margins and paddings in and between the components. 1. The…
*: portal, payment. This PR fixes some issues regarding the mobile design of the address selector & method payment, mainly by adapting the margins and paddings in and between the components. 1. The 'edit' icon placement was changing if there was no badge on the card (address checkout & portal page). 2. Refine the spaces in the address & billing summary on the payment method page. 3. The label 'secured by […]' is now on its own line and centered horizontally on mobile. task-5081875 Requires: - https://github.com/odoo/enterprise/pull/94884 | | Before | After | |--------|--------|--------| | 1 | <img width="1179" height="2556" alt="image" src="https://github.com/user-attachments/assets/33faf30b-3b6c-47ce-acef-12265b50df0d" /> | <img width="368" height="802" alt="image" src="https://github.com/user-attachments/assets/1432d00e-9d41-488d-b482-b64728319206" /> | | 2 | <img width="1179" height="2556" alt="image" src="https://github.com/user-attachments/assets/195da2f4-9f0e-4cc8-bb4d-df55fc887216" /> | <img width="1095" height="2040" alt="image" src="https://github.com/user-attachments/assets/046f1353-df4b-4b4b-b14c-1fe4d7db85c1" /> | | 3 | <img width="704" height="538" alt="image" src="https://github.com/user-attachments/assets/e19388fe-eccd-403b-855f-2a0b2197c87a" /> | <img width="341" height="276" alt="image" src="https://github.com/user-attachments/assets/2f9b24a0-60ee-4cf2-8206-31abed565b90" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Discuss app no longer shows the compact chat hub control when there are no chat conversations meant to appear there. This removes a redundant interface element and makes the messaging experience cleaner for users.
Original PR description
Before this commit, chat hub compact was visible in disucss app. This happens because while chat windows and bubbles are conditioned to not be shown in discuss app (with exceptions), the compact mode of chat hub was solely relying on compact mode on/off, ignoring the overall condition for whether some conversations are shown in chat hub (note: conversations in compact are still considered as "shown"). This commit adds extra condition on showing compact button to take into account chat hub showing some conversations. If no conversations are shown, then the compact mode should not be shown at all. Discuss app prevents showing of conversations in chat hub (with exceptions), as this is redundant with discuss app itself. Backport of https://github.com/odoo/odoo/pull/227162 Forward-Port-Of: odoo/odoo#227190
Project template tasks now show the Project Roles field, hide the Timesheets tab, and suppress an irrelevant analytic account warning. This makes template setup clearer and prevents users from seeing options or alerts that do not apply to project templates.
Original PR description
**Steps to reproduce:** 1. Open a task in project template. **Issue:** 1) The 'Project Roles' field is missing in project template tasks. 2) The 'Timesheets' tab is still visible, even though…
**Steps to reproduce:**
1. Open a task in project template.
**Issue:**
1) The 'Project Roles' field is missing in project template tasks.
2) The 'Timesheets' tab is still visible, even though timesheets should not be
available on project templates. 3) A confusing warning about inactive analytic accounts is shown on project template tasks.
**Current behaviour:**
- role_ids field is hidden on templates.
- Timesheets tab is shown on templates.
- Warning message about inactive analytic account is shown on templates.
**Expected behaviour:**
- role_ids field should be visible on templates.
- Timesheets tab should be hidden on templates.
- Warning message about inactive analytic accounts should not be shown on templates.
**Fix:**
1) Updated the invisible condition to correctly show `role_ids` on project
templates.
2) Updated the invisible condition hide the 'Timesheets' tab for
project templates.
3) Updated the invisible condition to disabled the analytic account warning on
project templates.
**task-5079828**This fix prevents an installation error when Indian localization demo data is used together with the withholding tax module. The module now skips incomplete purchase tax data, allowing setup to complete reliably.
Original PR description
Traceback when no `repartition_line_ids` found in tax data. Steps to reproduce:- - Install `l10n_in` module with demo data. - Install `l10n_account_withholding_tax` module. Error:- ``` File /data/build/odoo/addons/l10n_account_withholding_tax/__init__.py, line 27, in _make_demo_tax tax_repartition_lines = [line[2] for line in tax_data[purchase_taxes[0]]['repartition_line_ids'] if line[2]['repartition_type'] == 'tax'] KeyError: 'repartition_line_ids' ``` Root Cause: At [1], No `repartition_line_ids` found in `tax_data[purchase_taxes[0]]`. Solution: Select only purchase taxes having `repartition_line_ids`. [1]: https://github.com/odoo/odoo/blob/9805d09dff64de835de0c764da8c6e213d6b88aa/addons/l10n_account_withholding_tax/__init__.py#L27 Forward-Port-Of: odoo/odoo#227381
This fix prevents errors when website-related fields are configured from backend tools such as Studio. If a website pricelist is not available in that context, Odoo now safely uses the company currency instead, keeping configuration workflows from crashing.
Original PR description
Prior to this commit, the website currency was computed using the request pricelist. However, this logic assumed that the compute method could only be called from a frontend request.
However, via `web_studio`, a user can add fields linked to a website, which triggers the computation in a backend request, causing the following traceback:
```
Traceback (most recent call last):
...
File "/data/build/odoo/addons/website_sale/models/website.py", line 282, in _compute_currency_id
request and request.pricelist.currency_id or website.company_id.sudo().currency_id
^^^^^^^^^^^^^^^^^
AttributeError: 'Request' object has no attribute 'pricelist'
```
This commit fixes the issue by first ensuring that the pricelist exists and falling back to the company currency if it does not.
opw-5068581
Forward-Port-Of: odoo/odoo#227450This update corrects where country-specific salary configurator steps are handled, so the standard salary flow no longer tries to use Belgian-only fields when that Belgian module is not installed. It also fixes an offer-signing issue by ensuring employee contract version changes are saved in the right order, preventing validation errors during final signature.
Original PR description
`l10n_be_hr_contract_salary` adds a bunch of fields to the salary configurator (by way of new hr.contract.salary.personal.info records). These fields can not be filled in `hr_contract_salary` as they are not present there, thus if the employee flow tour is run with just `hr_contract_salary` installed it fails as soon as it tries to fill one of these additional fields. Move the filling of the fields to `l10n_be_hr_contract_salary` extending the base tour (technically it might be possible to move just the lang and remove the rest since that's the only required field). https://runbot.odoo.com/odoo/error/232583 Forward-Port-Of: odoo/enterprise#94792
Product tiles in the online shop now show product names and prices with better visual balance. This makes catalog pages easier to scan and preserves a clearer hierarchy between the product title and price.
Original PR description
Despite "Title" and "Price" use exactly the same font-size, the latter was perceived as "bigger". Root causes: - Price is enforced bold, while Title defaults to regular (can be set bold via options,…
Despite "Title" and "Price" use exactly the same font-size, the latter was perceived as "bigger". Root causes: - Price is enforced bold, while Title defaults to regular (can be set bold via options, but that's not obvious). - They use different font families: the default title font 'InterTight' is more condensed than the font used for the Price, making the Title look smaller. This PR: - Slightly increased the Title font size. - Slightly decreased the Price font size. Combined, these changes create a ~16% size difference, ensuring hierarchy remains clear even when misleading conditions occur (custom fonts, bold titles...). Adjusting the Price alone was risky since reducing it by ~16% would have brought it uncomfortably close to the description font-size. task-5086427 --- 19.0 | Default | Bold Title | Other fonts - No bold title | |--------|--------|--------| | <img width="333" height="431" alt="image" src="https://github.com/user-attachments/assets/915ba7c0-6148-4fd9-9d00-b44c93f35e0e" /> | <img width="336" height="430" alt="image" src="https://github.com/user-attachments/assets/b509eccc-fc0c-4823-93d9-8e9fcce5b961" /> | <img width="332" height="426" alt="image" src="https://github.com/user-attachments/assets/41b680ca-b994-4b87-ad83-09640ca32699" /> | --- This PR | Default | Bold Title | Other fonts - No bold title | |--------|--------|--------| | <img width="332" height="419" alt="image" src="https://github.com/user-attachments/assets/caa1a040-93c2-41ff-95a7-c816d7ae26da" /> | <img width="327" height="418" alt="image" src="https://github.com/user-attachments/assets/afe78b8c-9045-446c-add8-1a11dfa738e4" /> | <img width="322" height="416" alt="image" src="https://github.com/user-attachments/assets/a6460b87-6af6-417c-83e8-51828c04deb5" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The color picker is now positioned correctly when used inside the project bottom sheet. This improves the mobile-style editing experience by preventing the picker from appearing in an awkward or unusable location.
Original PR description
This commit correctly repositions the color picker in the project bottom sheet. task-5087158 Requires: - https://github.com/odoo/enterprise/pull/95001 | Before | After | |--------|--------| | <img width="402" height="691" alt="Capture d’écran 2025-09-17 à 10 15 42" src="https://github.com/user-attachments/assets/1eb10eb1-68d5-4271-957a-647fcfc14910" /> | <img width="415" height="693" alt="Capture d’écran 2025-09-17 à 10 15 59" src="https://github.com/user-attachments/assets/0c52f84e-9873-4d6a-8317-79c46b043c84" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes the naming used for the bottom sheet’s dark mode styling so it is applied consistently. The change helps keep the enterprise interface visually correct in dark mode, with minimal user impact.
Original PR description
task-5087158 Requires: - https://github.com/odoo/odoo/pull/227628
This fixes a display issue in Odoo Discuss where messages containing only attachments could appear with an empty message bubble. Users will now see cleaner conversation threads without confusing blank message areas.
Original PR description
This commit fixes the issue where messages with HTML content were incorrectly considered empty. The problem is because the isBodyEmpty is not correctly computed in message model. In this case, there will be an empty message bubble shown in the thread. To reproduce the issue: 1. Go to Discuss app. 2. Send an attachment only message. 3. There should be a message bubble with empty body shown in the thread. task-5077500 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mail icon in the top menu now uses the same hover behavior as the other menu items. This provides a more consistent and polished user experience without changing functionality.
Original PR description
This PR removes a custom `:hover` effect applied on the `mail` systray entry, which was not consistent with the items of the systray. task-4632971 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes toolbar popovers in the Website builder so they remain correctly positioned when the page is scrolled inside the editing frame. Users editing colors, highlights, or link text colors should now see the picker follow their work area reliably, reducing confusion during page design.
Original PR description
__Current behavior before commit:__ Some popovers that are toggled from the toolbar are not repositioned when the user scrolls in the website iframe. __Description of the fix:__ `this.__owl__.childEnv` is passed as `env` to `usePopover` such that the `POSITION_BUS` entry is included. Child env is used to avoid polluting the env of the parent component. __Steps to reproduce the issue on runbot:__ 1. Open the Website builder 2. Select some text 3. Click on the *Background Color* item (or *Highlight* or *Link* > *Custom* > *Text Color*) 4. Scroll the page The color picker popover doesn't follow the page scrolling. Forward-Port-Of: odoo/odoo#224090
This update adds a contributor entry to Ahkio Consulting's corporate contributor agreement record. It keeps Odoo's legal contribution records current, helping ensure submitted work is properly covered by the required agreement.
Original PR description
Description of the issue/feature this PR addresses: Add a contributor to ahkio-consulting.md --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227536 Forward-Port-Of: odoo/odoo#226311