Thursday, September 11, 2025
18 changes · master
Resolved issues and error corrections
This fixes unstable automated tests around sending chat commands with Enter. The change avoids timing issues by using the send button in tests, helping keep chat-related validation reliable without changing the user experience.
Original PR description
\* = crm_livechat, im_livechat Back-port of 3fc3e4fbbd846dc8f65938a0bfbddbebf2abc403 Enter after typing a command will either send the message when the suggestion list is not opened yet, or select the suggestion. This can either be fixed by waiting for the suggestion list to be opened, closing it, and then pressing enter, or by simply clicking on the send button which is what is done here as the way the message is sent is irrelevant for these tests. https://runbot.odoo.com/odoo/runbot.build.error/230977 Forward-Port-Of: odoo/odoo#225968 Forward-Port-Of: odoo/odoo#225874
This fix ensures that mail conversation threads stop showing a loading error once messages have been successfully fetched after a retry. Users who temporarily lose connection can continue reading older messages without seeing an outdated failure warning.
Original PR description
**Description of the issue this PR addresses:** When a thread fails to fetch its messages (e.g., due to a network error), the `hasLoadingFailed` flag is set to `true`. However, even if the next fetch…
**Description of the issue this PR addresses:** When a thread fails to fetch its messages (e.g., due to a network error), the `hasLoadingFailed` flag is set to `true`. However, even if the next fetch attempt succeeds, the flag is not reset. As a result, the UI may continue to show an error state even though the data has successfully loaded. **Steps to Reproduce:** - Open a thread with many messages. - Go offline. - Scroll up to load older messages → failure message appears. - <img width="311" height="68" alt="image" src="https://github.com/user-attachments/assets/e18832cb-5d37-4add-a126-fdc301131721" /> - Go back online and click Retry → messages load successfully. - Scroll again → failure message still appears, even though you’re online. - <img width="311" height="68" alt="image" src="https://github.com/user-attachments/assets/e18832cb-5d37-4add-a126-fdc301131721" /> **Current behavior before PR:** After a failed attempt to fetch messages in a thread, the `hasLoadingFailed` flag remains set to `true`. Even if the user goes back online and the subsequent fetch succeeds, the UI continues to show a failure state. **Desired behavior after PR is merged:** After a successful fetch of a thread’s messages, the `hasLoadingFailed` flag is reset to `false`, ensuring the UI no longer shows a failure state once the data has been correctly loaded. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226145 Forward-Port-Of: odoo/odoo#222001
Compact sidebar items in Discuss now appear centered, keeping avatars and click areas properly aligned. This fixes a small visual and usability issue for users navigating conversations in the compact sidebar.
Original PR description
Items were not centered, so the avatar and click zone was off-centered. This commit centers the avatar to fix the issue. Before / After <img width="56" height="578" alt="Screenshot 2025-09-10 at 14 34 09" src="https://github.com/user-attachments/assets/400de8c1-6a87-49d3-823e-157048962bca" /> <img width="59" height="578" alt="Screenshot 2025-09-10 at 14 34 21" src="https://github.com/user-attachments/assets/c4dd72cb-04e9-40df-8e13-f0fe39643c3a" />
The messaging menu no longer jumps or flickers when users hover over notifications with longer text. This keeps unread or important indicators visible while allowing the mark-as-read action to appear without changing the notification layout.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/225145 PR above made a few visual changes, one of which was to show mark as read button in messaging menu item in addition to keeping the badge unread /…
Follow-up of https://github.com/odoo/odoo/pull/225145 PR above made a few visual changes, one of which was to show mark as read button in messaging menu item in addition to keeping the badge unread / important on hover. This is motivated by the fact that item is considered important thanks to this badge, and when hovering it it gives a wrong impression the item is no longer important when this is just on hover. Solution of PR above was to keep display of badge even when mouse-hovering, so mouse hover shows both the badge and the mark as read button. However, if the notification item text takes almost a full single line, mouse-hovering made the item grow bigger due to being on 2 lines forced by mark as read button on hover. This flicker is not great UX. This commit fixes the issue by keeping badge and mark as read button visible on hover, but the mark as read button now overlaps the notification item text rather than collide. As a result, the text part of notification item doesn't change its visual of lines and word break per line just on mouse hovering. Before / After  
The Point of Sale settings screen now displays the preparation capacity field correctly when order timing management is turned off. This avoids a confusing layout issue for users configuring restaurant or order preparation options.
Original PR description
In this commit: -------------- - The preparation capacity field was not properly displayed when manage orders by time is disabled, now we have added a additional class to make ui proper. task: 5077509
This fixes an issue where animated text in a website footer could remain hidden when the footer was configured to slide over the page. Website visitors now see footer animations as intended, improving the consistency of published pages.
Original PR description
Before this commit, using animation on text within the footer elements would not work if the footer was set on "slide over". The formula used to compute when to start the animation was incorrect. This commit fixes the formula. Steps to reproduce: - Set the Footer slideout to "Slide Over" - Set the Animation of an element to "On Appearance" - Save (when scrolling down, the animated element stay hidden)
This fix prevents a website setup dropdown from closing too quickly in Safari. Users creating a new website can now select the intended website type without the menu disappearing before their choice is registered.
Original PR description
Problem In Safari, when selecting a website type from the dropdown, the menu closes immediately before the selection registers, so the user cannot choose an option. Steps to reproduce 1. Open Odoo in Safari. 2. Navigate to Website > Create new website. 3. At the step "I want [dropdown] for my ...", click the dropdown. 4. Try to select a website type (e.g., blog, store). 5. Notice the dropdown closes immediately and the selection is not made. Cause Safari’s `focusout` event fires before `document.activeElement` updates, causing premature closing. Fix Delay the dropdown closing with `setTimeout` and apply only for Safari using `isBrowserSafari`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an error that could appear when creating group time off in hours while another request already overlaps the same period. Instead of a system traceback, users will receive the intended clear warning message, reducing confusion for HR teams.
Original PR description
Issue: When generating a new group time off, if the leave type uses "hour" as the request unit (e.g., unpaid or extra hours), and there is a conflicting leave request for the same time period, a traceback occurs. Steps to Reproduce: - Generate a group time off using this leave type. - Ensure there is an existing leave request that overlaps with the requested time. - Observe the traceback error. Root Cause: The translation function _ is invoked incorrectly in the error message, and there are typos in the message text. Task ID: 5068412 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Full-day time off requests taken using an hourly time off type now display as a full day instead of incorrectly appearing as a half day. This improves clarity for employees and managers reviewing leave calendars and helps avoid confusion about time off balances.
Original PR description
Steps to reproduce: - Go to Time Off - Create a time off type that can be taken in hours - Take a full day of leave using this type of time off - The time off will be displayed as half a day, even though it is a full day Reason: The check to display the time off as half a day did not check that the time off starts in the afternoon, which caused the issue. How it was fixed: The condition now checks if the time off starts in the afternoon so that the display is correct. Task ID: 5072255
The Uruguay localization app now points users directly to the Uruguay-specific documentation instead of a general fiscal localization page. This makes it easier for businesses using the Uruguay localization to find the relevant guidance quickly.
Original PR description
Description of the issue/feature this PR addresses: The website link in the `l10n_uy` manifest was pointing to a generic documentation page. Current behavior before PR: Link in manifest points to `https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations.html` Desired behavior after PR is merged: Link in manifest points to `https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/uruguay.html` Forward-Port-Of: odoo/odoo#226169 Forward-Port-Of: odoo/odoo#225460
This fix restores the transparent grayscale color options in the website editor’s custom color filter. Business users editing website sections can now reliably select these transparent gray filters again, avoiding confusing or missing color choices.
Original PR description
Following the [refactor] of the html_builder, [addition] of the transparent grayscale, and this [commit], we had an issue when the transparent grayscale wasn't displayed as needed because it wasn't…
Following the [refactor] of the html_builder, [addition] of the transparent grayscale, and this [commit], we had an issue when the transparent grayscale wasn't displayed as needed because it wasn't added to 'EDITOR_COLOR_CSS_VARIABLES', which later were used to save colors together with the theme color prefix, i.e., --hb-cp-'color'. Steps to see the issue: - Open website and start editing - Drop a s_cover snipper and click on it - Click on the "Filter" option and select "Custom" - Click on "Color Filter" and go to the "Custom" tab -> Transparent Grayscale isn't displayed correctly. This commit copies [1], which was lost in the refactor. [refactor]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 [addition]: https://github.com/odoo/odoo/commit/55c58bf45165e3a3eafcbaecc516e7c1d19809a6 [commit]: https://github.com/odoo/odoo/commit/eb12451a169c752034abb5d4aab9926c19067ebf [1]: https://github.com/odoo/odoo/commit/5490c126f42bd1729ba0d4b4103d7284ba7ab8c0 Forward-Port-Of: odoo/odoo#225931
Duplicated Team Basic website blocks now keep images editable, so users can select them and adjust image options as expected. This prevents a confusing editing issue when reusing team snippets and helps maintain a smoother website-building workflow.
Original PR description
[FIX] html_builder, *: enable image options on duplicated team snippet *: html_editor Steps to reproduce the problem: - Drop the "Team Basic" snippet. - Duplicate it. -> When you click on an image of…
[FIX] html_builder, *: enable image options on duplicated team snippet *: html_editor Steps to reproduce the problem: - Drop the "Team Basic" snippet. - Duplicate it. -> When you click on an image of the duplicated block, the image is not selected and you can not change the options related to it. The problem is that the `o_editable_media` class does not appear on the images of the duplicated snippet as it is a system class. This commit removes the `o_editable_media` class from the system classes. Indeed, it was added by [1] to avoid the closest savable to be marked as dirty when this class was added. However, this class is added during the `normalize` and since [2], the mutations done at the `normalize` do not trigger the adding of the `o_dirty` class anymore. [1]: https://github.com/odoo/odoo/commit/c20dfb73528d60a079d73564504646fe7d1d4272 [2]: https://github.com/odoo/odoo/commit/7c5cdb6d70eea29dec4ba126e62eeb93c6e6eeb2 Related to task-4367641 Forward-Port-Of: odoo/odoo#226051
The wishlist checkout test now allows more time to complete, reducing false failures when the process is slower than expected. This helps keep automated quality checks stable without changing the customer-facing shopping experience.
Original PR description
Increase timeout for wishlist tour. As it was taking too long to complete. runbot-229616 Forward-Port-Of: odoo/odoo#225357 Forward-Port-Of: odoo/odoo#219653
Odoo now shows a user-friendly message when someone adds an XML encoding declaration while editing a view. This prevents a confusing technical error and helps administrators understand how to correct the view before saving.
Original PR description
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User…
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User Interface > Views` Create or edit any view. - Enter the `view name` and select `view type`. - In the Architecture field, declare encoding as: `<?xml version='1.0' encoding='utf-8'?>`. - Attempt to save the view. **Error:** `ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.` **Root Cause:** The [1] call raises a ValueError when the XML declaration includes an encoding attribute. This low-level error is not handled and results in an ungraceful failure. [1]- https://github.com/odoo/odoo/blob/bf4ccb21f6c9c8bcda9c6f94d844c89296523954/odoo/tools/translate.py#L281 This commit ensures raising an UserError, improving the error message clarity. sentry-6505918596 Forward-Port-Of: odoo/odoo#226396 Forward-Port-Of: odoo/odoo#205324
This fix restores the intended layout of the quick-create area in bank reconciliation. Users should again see the fields sized and arranged correctly, reducing confusion when entering reconciliation details.
Original PR description
In commit[1] the css handling the grid-template-columns was removed, breaking the quick-create layout. task-5079288 Follow-up of task-4749379 [1]: odoo/enterprise@f9725d7b01cbd1235f022821a6861adb2955e49e
A timesheet grid test now uses a consistent calendar timezone so results do not vary depending on demo data. This helps keep automated checks stable without changing how scheduling works for users.
Original PR description
The test `test_create_from_future_template` was failing with demo data due to timezone differences. Demo companies often have a resource calendar with a non-UTC timezone (e.g., Europe/Brussels). In that case, calling `action_create_from_template` schedules tasks via `_scheduling`, which computes the task start/end in local time and stores them in `UTC`, shifting the expected hours. Without demo data the company calendar timezone itself is already `UTC`, so the test passed. This change enforces the company resource calendar timezone to `UTC` at the start of the test to ensure consistent behavior regardless of demo fixtures. No change in scheduling logic, only a test stabilization. [runbot-231452](https://runbot.odoo.com/odoo/error/231452)
Fixed an issue that could prevent payroll payment report CSVs from being generated when an employee had multiple bank accounts with a 100%/0% salary split. Reports can now include the 0% split account without causing an error, helping payroll teams complete payments reliably.
Original PR description
-When generating a payment report CSV for user with multiple bank accounts that have a salary split of 100%/0%, a trace-back occurs. -The logic has been adjusted so that bank account of 0% split percentage can be included in the payment report.
The Colombian withholding certificate report no longer shows a confusing compliance message. This makes the report clearer for users while preserving legal compliance with DIAN requirements.
Original PR description
Before PR: - retention reports showed a confusing message which was intended to show compliance with DIAN. After PR: - the confusing message has been removed. Omitting this message does not affect legal compliance. Task Id: 4859088