Thursday, November 20, 2025
18 changes · 19.0
Enhancements to existing features
The stock return wizard now shows one main action button, with the other options styled as secondary actions. The cancel action is also relabeled to "Discard," and users get clearer feedback when trying to return items with zero quantity, making the flow easier to understand and use.
Original PR description
Previously, the return wizard displayed multiple primary buttons, which could confuse users and affect the clarity of actions. This commit updates the wizard to have a single primary button, with all other action buttons changed to secondary for better user experience. Additionally, some button labels have been updated for clarity: - `Cancel` → `Discard` These changes make the return wizard more consistent, intuitive, and easier to use for all types of stock operations. This commit also enables improved user error when attempting to return products with zero quantities. Task - 5144914
Resolved issues and error corrections
This change adjusts an automated test so it follows the same product-editing flow a user would use in the interface. As a result, the system now correctly detects and reports invalid event ticket settings during testing, preventing false test failures.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have a minimal database with `event_product` installed; 2. run `:TestEventProduct.test_ensure_event_service_tracking`. Issue ----- > FAIL:…
Versions -------- - 18.0+ Steps ----- 1. Have a minimal database with `event_product` installed; 2. run `:TestEventProduct.test_ensure_event_service_tracking`. Issue ----- > FAIL: TestEventProduct.test_ensure_event_service_tracking > AssertionError: ValidationError not raised Cause ----- The test works as expected with `sale_project` installed due to a `write` override of `product.product`, setting the `service_tracking` to 'no' if `type` is no longer 'service': https://github.com/odoo/odoo/blob/dc57ea4d306f8745d37f2c5d2c3d3fa4bcaf7253/addons/sale_project/models/product_product.py#L25-L30 This change still occurs without `sale_project` installed, but via the `_compute_service_tracking` method defined in `product`: https://github.com/odoo/odoo/blob/dc57ea4d306f8745d37f2c5d2c3d3fa4bcaf7253/addons/product/models/product_template.py#L181-L183 As this value is set via a compute method instead of `write`, the `_check_event_ticket_service_tracking` method isn't triggered, and no error is raised. Solution -------- Simulate a front-end flow by changing the `type` to 'consu' on a product form. This way, the constraint method does get triggered as expected. runbot-234024 Forward-Port-Of: odoo/odoo#236045
Documentation and clarification updates
This change adds a signed contributor license agreement record for Trung Tin Nguyen. It is an administrative update that confirms the contribution can be accepted under Odoo's contribution rules.
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
This update makes the Discuss app look cleaner on desktop by reducing extra header spacing, fixing a clipped badge in the sidebar, and lowering the message composer. It also aligns typing and livechat guidance with the standard chat window behavior, making the interface feel more consistent and easier to use.
Original PR description
Minor style improvements to discuss app in desktop: - less vertical padding of the header - no cropped badge on mailbox below "New meeting" in sidebar compact - composer is lower The composer was…
Minor style improvements to discuss app in desktop: - less vertical padding of the header - no cropped badge on mailbox below "New meeting" in sidebar compact - composer is lower The composer was higher to give room for "is typing" and "Tab to next livechat" features that were at bottom of composer in discuss app. They were changed to match chat window style: - "is typing" is above composer - "Tab to next livechat" is suggested in placeholder of composer Before (left) / After (right) <img width="1521" height="792" alt="Screenshot 2025-11-18 at 19 05 55" src="https://github.com/user-attachments/assets/216dd9de-601b-44fe-9169-66f50a243992" /> Before <img width="959" height="997" alt="Screenshot 2025-11-18 at 18 23 27" src="https://github.com/user-attachments/assets/9d9dfef0-8412-4a38-b0c7-7f9c66b084e5" /> After <img width="958" height="993" alt="Screenshot 2025-11-18 at 19 05 12" src="https://github.com/user-attachments/assets/cd6a9d14-e058-4159-920c-69778c6b3ec9" />
This fix restores the missing expand/collapse icon in email-style messages when quoted content is shown with a read more/less control. It improves the readability and usability of messages in the web interface by making the toggle button visible again.
Original PR description
Before this commit, when a message is of type "email" and contains parts are in foldable with more/less (like `<quote>`), the icon of the button for fold/unfold is missing. This happens because the icon is `.oi` and requires `odoo_ui_icons`. Message of type "email" have their content inside a shadow DOM, because we want to preserve the style of email inside the web client, at least in white theme. Shadow-DOM prevents the parent document to pass `odoo_ui_icons` thus the Shadow-DOM could not apply expected style on `.oi` icons. This commit fixes the issue by passing the required CSS as stylesheet to the shadow DOM, so that `.oi` icons are working inside the shadow DOM of message content of type "email". Forward-Port-Of: odoo/odoo#228741
This change prevents an error in payroll-related calculations when an employee contract does not have a start date. It makes the system handle incomplete employee data more safely, which helps tests and background updates run reliably.
Original PR description
The test_version_cron_update_no_fields from hr/tests/test_hr_employee.py didn't pass on runbot saas-18.4 due to the absence of a start date of contract leading to an error when trying to substract False to a datetime object. I added a verification in the concerned compute function in order to ensure the employee has a contract_date_start. If it's not the case, I set it to 0 as the compute method needs to compute the target field. Runbot error: 233590 Forward-Port-Of: odoo/enterprise#99815
This update makes the rating cards in Website Slides use the same background color as the rest of the page. It improves visual consistency so the interface looks cleaner and better aligned with the site theme.
Original PR description
PR #229272 sets the background color of the portal chatter to `body-bg`, aligning it correctly with the other parts of the chatter and website themes. However, `website_slides` module has a customized scss variable to change its main body background color which makes the background color for the rating cards (chatter top) being different in this module. This change sets the `--body-bg` in this customized scss to the same variable used for the background color, aligning the background colors with each other. Before: <img width="1182" height="552" alt="image" src="https://github.com/user-attachments/assets/6aba4609-e99c-48de-8af7-a97029859fab" /> After: <img width="1097" height="555" alt="image" src="https://github.com/user-attachments/assets/0d4ed53b-6d83-4eba-8499-0d38b10b4234" /> Forward-Port-Of: odoo/odoo#236527
This fix makes JSON fields more tolerant when they receive common business objects such as domains or frozen dictionaries. It reduces the risk of errors when storing and retrieving unstructured data in the system.
Original PR description
The field did not change for quite some time. It mainly serves as a way of storing and retrieving some unstructured data. Use default serialization function when assiging values to Json fields. Some business code may assign domains or frozendicts to json fields. That should not fail. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change relocates a portal-related customization from the Rating module to the Portal Rating module, where it belongs. It keeps the module structure consistent and reduces the risk of dependencies being mixed up in future updates.
Original PR description
Since #234356, `_get_allowed_message_post_params` method of the `PortalChatter` has been overridden in the `rating` module. As the `rating` has no dependency on the portal, the current change moves this override to the `portal_rating` module. Forward-Port-Of: odoo/odoo#236436 Forward-Port-Of: odoo/odoo#236249
This fixes an issue where the message composer could fail when there was no existing message linked to it. The update makes suggestion loading more reliable, preventing an internal error and improving the user experience.
Original PR description
This commit solves a runbot issue created by the debounced nature of the suggestion fetch. A composer could not have a message associated with it and was therefore failing to find the related thread. Now, the thread is set to undefined in that case since we do not need the result anyway. fixes-runbot-230311 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236262
This update makes the Swiss payroll transmission tests work independently from accounting-specific setup. It reduces test coupling, making the payroll module easier to validate and less likely to fail because of unrelated accounting configuration changes.
Original PR description
Forward-Port-Of: odoo/enterprise#99748 Forward-Port-Of: odoo/enterprise#98672
The calendar day view now keeps event titles visible instead of cutting them off on mobile devices. This makes it easier for users to quickly identify what each event is without opening it.
Original PR description
Before this commit, when the user goes to a calendar view in day to check what he have to do. He cannot see the event title properly in his mobile phone since the title is truncated. This commit makes sure the event title is not truncated to clearly see the whole event title. Before the fix: <img width="1172" height="802" alt="image" src="https://github.com/user-attachments/assets/f85a4a03-89a3-48c8-bda7-38e72854ce1f" /> After the fix: <img width="1179" height="808" alt="image" src="https://github.com/user-attachments/assets/7b0b31ba-10f5-412b-837b-8399c78c5bac" /> Forward-Port-Of: odoo/odoo#235823
This update keeps the external tax sales feature aligned with recent changes in the core Odoo community code. It helps prevent test or behavior mismatches so the sales experience remains reliable.
Original PR description
See Also: - https://github.com/odoo/odoo/pull/227241
This update adds automated coverage for mention suggestions inside channels that are limited to specific groups. It helps ensure users continue to see the correct mention behavior in these restricted discussions after future changes.
Original PR description
This commit adds a test for mention suggestions in group-restricted channels (`group_public_id`). task-5258925 Forward-Port-Of: odoo/odoo#235478
The helpdesk ticket view was updated so the status badge uses the new widget setup correctly. This keeps the interface working smoothly after an internal performance-related change and helps avoid display issues for users.
Original PR description
This commit adapts the definition of the field using the `badge_rotting` widget since that widget no longer extend to SelectionBadge widget due to a perfomance issue.
This update fixes an issue where card images could show white borders when a hover animation was applied on the website. It improves the visual presentation of image cards so they stay properly filled and look clean when users edit and preview pages.
Original PR description
Step to reproduce: 1. Open website 2. Click edit button and drop s_three_columns snippet 3. Click image and change animation option into hover 4. Some extra white space shown. Before this commit: Applying a hover animation on card images caused the `object-fit` property to unintentionally switch from `cover` to `contain`, resulting in visible white borders around the image.This happened because of the `geo_square` shape, which is automatically injected when a hover effect is applied and no user shape is chosen. This behavior was intentionally introduced in PR [1]. After this commit: Now cropped images use object-fit: contain to preserve the visible properly. and after stretch option apply it can take cover of this container. so his ensures the image fully covers its container without leaving any white gaps. [1]:https://github.com/odoo/odoo/pull/119197 task:4875770 Forward-Port-Of: odoo/odoo#215766
This change corrects missing test information in the VoIP test suite so automated HOOT runs no longer fail on invalid component data. It improves test reliability and helps ensure VoIP checks complete successfully during development and validation.
Original PR description
Before this commit, running VoIP tests in HOOT results in this error: > Global OwlError: Invalid props for component 'TabEntry': 'title' is not a string, 'phoneNumber' is not a string This is because one of the test is setup with incomplete data (no phone number). After this commit, test data is correctly set with a phone number, fixing the props validation error.
This update corrects how changes made in the document sharing wizard are saved when allowing link access. As a result, link-sharing settings are now applied properly and users can rely on the updated access options being kept.
Original PR description
This commit fix the 'action_allow_link_access' method in 'documents.sharing' model by adding the 'WRITE_VALUE_PREFIX' to the updated fields. Otherwise the changes wasn't taken into account. Task-5220965