Tuesday, February 3, 2026
19 changes · saas-18.4
Resolved issues and error corrections
Users can now star eligible persistent inbox messages even when those messages are not linked to a discussion thread. This makes it easier to mark important notifications, such as sign requests, for later follow-up.
Original PR description
**Description of the issue this PR addresses:** Starring a message should depend on whether the message is persistent and whether the current user is allowed to star it, not on whether the message is attached to a thread. **Current behavior before PR:** Some persistent messages (such as user notifications) can be displayed in Inbox without an associated thread. In such cases, the star action was unavailable even though the message itself was valid and persistent. **Desired behavior after PR is merged:** This change removes the dependency on thread presence when determining whether a message can be starred. As a result, users can now star persistent messages without a thread, including Inbox notifications such as sign requests. task-[5473438](https://www.odoo.com/odoo/project/1519/tasks/5473438) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244204
When an applicant is refused, the system now links the refusal note with the actual email sending action. This makes it easier for recruitment teams to confirm whether a refusal email was sent successfully.
Original PR description
Before this commit, applicant refusals were logged in the chatter separately from sending the mail, making impossible to see if the mail was correctly sent or not.
This fixes issues in the website editor color picker where selecting white could reset the color slider to red, and dragging outside the picker could close the palette unexpectedly. Users can now choose custom gradient and snippet colors more reliably without losing their selection flow.
Original PR description
**Current behavior before PR:** In editor's custom gradient picker, if `#FFFFFF` is picked from the very top of picker area, the color slider is reset to color `red`. This happens because when moving picker pointer to the top of area, `selectedColor` prop is updated to `#FFFFFF`, which calls `onWillUpdateProps` callback. As result, `convertRgbToHsl` sets hue value 0 for `#FFFFFF`, setting color slider to red. **Desired behavior after PR is merged:** This commit ensures that in `onWillUpdateProps` callback, `setSelectedColor` should not get called if `newSelectedColor` is the same as `this.colorComponents.cssColor` to prevent updating UI twice while picking the color. task-5170041 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245319 Forward-Port-Of: odoo/odoo#236644
This fixes an issue in the website editor where changing a tab style could accidentally overwrite the background color of a column placed inside the tab. Business users can now design tabbed content with nested columns without losing their chosen visual styling.
Original PR description
Steps to reproduce: =================== 1- Drop the block tab snippet 2- Inside one of the tab panes, drop a Columns snippet. 3- Select background_color for one of the columns 4- Change tab style to…
Steps to reproduce: =================== 1- Drop the block tab snippet 2- Inside one of the tab panes, drop a Columns snippet. 3- Select background_color for one of the columns 4- Change tab style to tab -> The background color of the inner column is overridden. Cause: ====== When the "Tabs" snippet style is set, a `.card` class is added to its container (See [1]) A generic CSS rule, intended to style these tabs, was targeting any `.card` element with a `.card-body` child. (See [2]) However, the Columns snippet also uses a `.card > .card-body` structure (distinguished by a `data-vxml` attribute). This caused the overly broad tab-styling rule to incorrectly cascade and override the background color of the nested column. Solution ======== The SCSS selector has been made more specific so that works if `card-body` class doesn't have any parent class with class `card` and has attribute `data-vxml` [1]: https://github.com/odoo/odoo/blob/4cb3ffc09507fdfdb1aeabb70b2c93105f992700/addons/website/static/src/snippets/s_tabs/options.js#L149 [2]: https://github.com/odoo/odoo/blob/4cb3ffc09507fdfdb1aeabb70b2c93105f992700/addons/web/static/src/scss/bootstrap_review_frontend.scss#L55 opw-5394480 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241118
Video link previews in Mail now display thumbnails that fully fill their preview area. This removes unwanted blank spaces, giving users a more consistent and polished experience when sharing video links.
Original PR description
**Purpose of this PR:** Before this commit, video thumbnails from youtube left blank spaces in the container, creating inconsistent layouts across different video links. After this commit, thumbnails consistently fill the entire container, ensuring uniform appearance for all video link previews. **Before/After:** <img width="533" height="407" alt="image" src="https://github.com/user-attachments/assets/ce2ba872-27b7-4be5-9d85-fbbe6f272e14" /> <img width="481" height="386" alt="image" src="https://github.com/user-attachments/assets/523f5d16-2983-49c1-9dcc-01adb4284e56" /> task-5424534 Forward-Port-Of: odoo/odoo#244176
The website search window now closes automatically when a user enters edit mode. This prevents it from getting in the way so editors can drag and add content snippets normally.
Original PR description
Steps to reproduce: 1. Go to the Website. 2. Click the search icon in the header. 3. When the search modal opens, click 'Edit' to enable website editing. 4. Attempt to add a snippet. Observed behavior: - Snippets cannot be added while the global search modal remains open. Expected behavior: - Snippets should be draggable and added normally in edit mode. This commit ensures that the global search modal is closed when entering edit mode, preventing it from blocking add snippet. task-5421051
This fix prevents color overlays on video backgrounds from disappearing when a website block is selected and saved again. It helps keep edited web pages looking consistent and avoids unexpected visual changes after routine page edits.
Original PR description
The color filter applied to a video background would disappear after selecting the block and saving the page again. Steps to reproduce: =================== 1. Enter Edit mode on the website. 2. Drag…
The color filter applied to a video background would disappear after selecting the block and saving the page again. Steps to reproduce: =================== 1. Enter Edit mode on the website. 2. Drag and drop a snippet (e.g., "Intro"). 3. Set a video background for the block and apply a color filter. 4. Save the page. 5. Enter Edit mode again, click the block to select it, and Save. -> The color filter is removed from the video background. Cause: ====== Selecting the block triggers the `toggleBgImageClasses()` function. This function attempts to determine the background configuration. Since a video background is used, there is no standard image URL, so the code proceeds to call `setImageBackground` with an empty URL ([1]). This update process involves re-applying the color filter via the `selectFilterColor` action. However, the current background image style (the filter color) was not being passed to this function during this specific update flow. Consequently, the function assumed no filter existed and removed it ([2]). Solution: ========= Retrieve the current `filterColor` (which exists in background-image style) and pass it explicitly when calling the apply function. [1]: https://github.com/odoo/odoo/blob/fa482e36bc36809e55b6a11ebcc5bb130f20fd31/addons/html_builder/static/src/plugins/background_option/background_image_option.js#L18-L20 [2]: https://github.com/odoo/odoo/blob/fa482e36bc36809e55b6a11ebcc5bb130f20fd31/addons/html_builder/static/src/plugins/background_option/background_image_option_plugin.js#L170 opw-5448696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update simplifies the subscription plan view by removing irrelevant order line details like sections and discounts. The change focuses only on subscription products, making the plan configuration easier to understand and use for users. This improves the overall user experience and reduces confusion.
Original PR description
The subscription plan view was displaying all order line types, including sections, notes, and discount lines, which added unnecessary clutter. This update filters the order lines to display only actual subscription products, improving clarity and usability in the plan configuration. task-5404614 Forward-Port-Of: odoo/enterprise#106076 Forward-Port-Of: odoo/enterprise#101796
This update fixes an issue where lengthy reconciled names on bank statements were being displayed as a long list of commas. The change involves repositioning a text truncation element, resulting in a cleaner and more readable statement line display. This enhances the user experience when reviewing financial transactions.
Original PR description
When we have a lot of reconciled names, it can happens that you just have a long list of comma. It's because the text truncate was misplaced. This commit will fix this by moving the text truncate no task id Forward-Port-Of: odoo/enterprise#105674
This update resolves an issue where outdated account synchronization records could cause problems, preventing new connections. By focusing on fresh, uninitialized links, the system is now more stable and reliable for account synchronization. This ensures a smoother experience for users.
Original PR description
Prevent reusing stale account.online.link records that have a provider_type set, which can leave an unusable row and block new connections. By adjusting the search domain in action_new_synchronization, we only reuse clean, uninitialized links. opw-5868438 opw-5867799 Forward-Port-Of: odoo/enterprise#105187
This update fixes a confusing error message users received when the IoT box or a connected device was unavailable. The PR now includes the device ID in the error, allowing for clearer distinction between issues with the IoT box and individual devices. This improves troubleshooting and user experience.
Original PR description
Currently, whether the device is disconnected from the iot box or the iot box itself is unreachable the user gets "Failed to reach IoT Box for device [id]" For websocket the [id] here was "undefined". This PR adds the device id as expected and makes the error message more clear, making a difference between iot box disconnections and device disconnections. task-5496890
This update resolves a test failure related to a date selection field in the EC accounting module. The test was failing because the date range was restricted, and 2021 was no longer a valid option. A simple change to the selection method ensures the test uses the correct 'frozen selection', addressing a potential future issue with long-running servers.
Original PR description
The selection field of the dividend_fiscal_year has a restricted range based on dates, which has implication for the frozen dates in the test. That is why the test will fail today: 2021 is not anymore in the selection. But, suppose however that you have a server running for 3 years, it could be problematic as well. (quite theoretical however) So we can simply make the selection field selection in the wizard a lambda method and that way also in the test, it will take the 'frozen selection'. build error 237681 https://runbot.odoo.com/odoo/runbot.build.error/237681 Forward-Port-Of: odoo/enterprise#106132
This update fixes a bug that occurred when users copied and then undid slot duplication in the Planning module. The issue was triggered when a previously deleted record was involved in the undo process, resulting in an error message. Now, the system verifies record existence before deletion, ensuring a smoother user experience.
Original PR description
### Steps to reproduce: - Install Planning - Navigate to the gantt view for planning slots - Copy previous week's slots - Delete one of the newly copied records - Undo the copying action - Notice an Error is raised that a record doesn't exist ### Cause: When undoing the copy process we unlink all the newly created records but if the user has already deleted one of them it will trigger an error that this record doesn't exist and it has already been deleted ### Fix: We check the existence of the records before deleting them. opw-5490327 Forward-Port-Of: odoo/enterprise#105530
This update fixes a display issue where the 'Next Booking Start' time was not showing for rooms with upcoming bookings. The change removes a filter that prevented the system from correctly calculating the next available time, ensuring users always see accurate booking information. This improves the usability of the room scheduling feature.
Original PR description
Steps to reproduce:
1. Install `room`
2. Create a room.
3. Create a booking for the current time (so the room becomes occupied).
4. Create another booking for tomorrow.
5. Open the list view of rooms.
Current Behavior:
- The `Next Booking Start` field is empty for the created room, despite Having future bookings.
Cause:
- The method `_compute_next_booking_start` filters the rooms using `self.filtered('is_available')`. Since the room is currently occupied (due to the active booking), the room is excluded from the query entirely.
Solution:
- Remove the `is_available` filter from the search domain. The next booking start time is now calculated for all rooms, regardless of whether they are currently available or occupied.
opw-5360101
Forward-Port-Of: odoo/enterprise#102129This update resolves a problem that prevented the l10n_be_hr_payroll_fleet module from installing correctly when automatic module installation was skipped. The fix ensures the necessary dependencies are met, preventing errors during demo data creation and improving the module's stability.
Original PR description
Steps to reproduce: 1. Install l10n_be_hr_payroll_fleet with --skip-auto-install and demo data. 2. Traceback when creating demo data because driver_employee_id is missing on the model fleet.vehicle Cause: The module depends on fleet instead of hr_fleet so hr_fleet is only auto installed. Thus, when skipping auto install, the field driver_employee_id doesn't exist. Fix: Change the dependency from fleet to hr_fleet to force the module to be installed. Runbot error: https://runbot.odoo.com/odoo/runbot.build.error/237909 Task: 5875410 Forward-Port-Of: odoo/enterprise#106199
This update ensures that product prices within Odoo Enterprise are stored with a minimum level of precision. This change addresses a technical issue identified in previous testing and improves data accuracy for product costing and reporting. It primarily impacts the core accounting functionality.
Original PR description
Fix tests, related to https://github.com/odoo/odoo/pull/243987 task-4895014 Forward-Port-Of: odoo/enterprise#106073 Forward-Port-Of: odoo/enterprise#104728
This update corrects the Odoo Enterprise system to reflect recent changes on the Swiss Federal Tax Administration website. The import of tax rates for payroll has been adjusted to use the new URLs provided by the FTA, ensuring accurate tax calculations for Swiss businesses.
Original PR description
Due to recent updates on the Federal Tax Administration website, the single-canton import feature was made temporarly unavailable, this PR adjusts the new URLs for downloading the tax rates Forward-Port-Of: odoo/enterprise#106288
This update corrects a minor error in the XML code for the invoice and withhold views, specifically an extra closing tag. This ensures the system generates properly formatted invoices, preventing potential issues with reporting and accounting. The fix improves the stability and accuracy of the EC tax reporting functionality.
Original PR description
Currently, the `account_move_form_invoice_and_withhold_view` contains an invalid closing group tag (`</group>>`) introduced by PR [1], at [2]. The extra `>` results in malformed XML. This commit removes the stray character and restores a properly closed `</group>` tag. [1]: https://github.com/odoo/enterprise/pull/77592 [2]: https://github.com/odoo/enterprise/blob/7c574d758ff5b1404b808cc647d4a2ae40f5f0c0/l10n_ec_edi/views/account_move_views.xml#L79 **No task Id** Forward-Port-Of: odoo/enterprise#106104
This update resolves a test failure within the Enterprise module's web_studio functionality. The change prevents unintended behavior when updating configuration settings, ensuring consistent test results and stability during installation.
Original PR description
Updating the fieldsets of `DEFAULT_FIELDS_TO_EXECUTE` in place changes the behaviour of `test_23_export_hardcoded_models_and_fields` if that test runs after `_compute_excluded_fields` has been executed for one reason or an other, which apparently does not occur during post_install but *does* occur during at_install, and so fails in the "full" enterprise test running everything in a single job. https://runbot.odoo.com/odoo/error/238451 https://runbot.odoo.com/odoo/error/238449 https://runbot.odoo.com/odoo/error/238497 Forward-Port-Of: odoo/enterprise#106110