Wednesday, October 8, 2025
25 changes · saas-18.3
Resolved issues and error corrections
Website settings now catch invalid domain entries before they cause a system error. Users receive a clear validation message instead of encountering an unexpected crash when saving malformed website domains.
Original PR description
Currently, an error occurs when user tries to save an invalid domain. Steps to replicate: - Install `website_sale`. - Go to `Settings > Website`. - In the domain field, give value as `[`. (any normal URL with a square bracket will also work). - Save and error will occur. Error: `ValueError: Invalid IPv6 URL` Cause: - The error happens because `config.get_base_url()` returns a malformed URL (like containing stray `[`), which makes urljoin [1] raise the error. Solution: - The solution prevents error by adding a constraint and raising a user-friendly `ValidationError` if the URL is invalid. [1]: https://github.com/odoo/odoo/blob/77398aefc291d33264b039e38681f0cd8f65483f/addons/website_sale/models/res_config_settings.py#L135 sentry-6805151048 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223336
This fix makes a CRM automated tour select the intended customer and wait until the opportunity name is ready before continuing. It reduces false test failures caused by timing issues, helping keep CRM changes validated more reliably.
Original PR description
The problem here is twofolds: - After odoo/odoo#206314 the field being searched is filtered on `is_company` which means it's literally impossible to find the partner we create as that field defaults…
The problem here is twofolds: - After odoo/odoo#206314 the field being searched is filtered on `is_company` which means it's literally impossible to find the partner we create as that field defaults to `False`. - Before that PR, since we just `click` the first link we find in the dropdown, we might get a random company which exists in the database (if any) or we might hit the "create" option. In the latter case we have a non-zero chance of clicking `o_kanban_add` before the client has had the time to `name_create` the record, set the partner, call the onchange, and return with the opportunity's name, leading to an attempt to create a nameless opportunity and a "missing required field" error Selecting the very specific partner we created (correctly this time) and then actually waiting for the opportunity's name to be set should resolve the issue, and make problems in that step show up in the right location in the future rather than hit some sub-sub-sub-symptom 20 steps later. https://runbot.odoo.com/odoo/error/229719 Forward-Port-Of: odoo/odoo#230251
Users with restricted access rights will now see the correct page title when previewing copied links. This avoids generic “Odoo” previews caused by permission checks, making shared links clearer and more useful.
Original PR description
Users without access for specific actions cannot see the right preview information, using sudo like the search for generic action but on specific model solve the issue. Steps: - Login with a user without window actions access - Copy a link somewhere to have preview dialog Actual result: - Preview title is Odoo due to access error Expected result: - Preview title is the one of the page opw-4933194 Forward-Port-Of: odoo/odoo#222435
The barcode scanning dialog now closes safely if a user goes back or presses Esc before the camera preview finishes loading. This prevents an unexpected error message and keeps the scanning workflow smoother for users.
Original PR description
Steps to reproduce: 1. Install `barcode` 2. Barcode > 'click to scan' 3. Before the camera preview loads, click the back button of the dialog Issue: A traceback occurs: `OwlError: The following error occurred in onMounted: 'Cannot set properties of null (setting 'srcObject')' ` Cause: Clicking the back button triggers `onWillUnmount`, which clears the stream and sets `this.videoPreviewRef.el` to null. However, some asynchronous functions in `onMounted` are still pending and try to access the video element, leading to a crash. Solution: Add a safe check based on component status before accessing `this.videoPreviewRef.el` opw-5055566 Forward-Port-Of: odoo/odoo#229937 Forward-Port-Of: odoo/odoo#226068
The Indian withholding tax workflow now checks whether any records were selected before continuing. If nothing is selected, users receive a clear error instead of running into an unexpected failure.
Original PR description
We need to first check if active_ids exist and get usererror if there are no active_ids present. [Link to Runbot Error builds](https://runbot.odoo.com/web#id=74407&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190579 Forward-Port-Of: odoo/odoo#190324
This fix prevents a crash when certain web interaction steps finish without returning a value. It makes the website behavior more reliable for users and safer for developers building interactive features.
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 Forward-Port-Of: odoo/odoo#229029
Event invitation and notification emails now format event description links more safely. This prevents Gmail from breaking the event URL, helping recipients access event pages without confusion.
Original PR description
When website_event is installed an anchor tag is added inside the event description which is guaranteed to break the url in the gmail client. We now quote the description appropriately so that there's no confusion. task-5092759 Forward-Port-Of: odoo/odoo#228359
This update changes how the AI module calls internal functions to make customizations easier and align behavior with a newer Odoo version. It is a minor internal fix that helps reduce compatibility issues for future overrides without changing the user experience.
Original PR description
To ease the override and compatibility with what is done in 19.0, we call the function with kwargs instead of args.
This fixes the appraisal skills list on mobile so users can scroll horizontally to see the justification field and the add or remove buttons. It restores access to important appraisal editing controls and removes unused styling that was no longer needed.
Original PR description
Horizontal scrolling has been disabled on the appraisal skills list. An unwanted side effect of that is that the justification field along with the add and remove buttons are not visible on mobile. This PR re-enables the scrolling and removes some dead css. task-5001344 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230310 Forward-Port-Of: odoo/odoo#222161
Dashboard treemap charts no longer restart their animations unnecessarily when their underlying data has not meaningfully changed. This makes spreadsheet dashboards feel steadier and less distracting for users while preserving normal chart updates when data actually changes.
Original PR description
Charts animations are played every time the chart data changes in dashboards. But the treemap data contains callbacks, which mess up the deepEqual we use to check if the data changed, since new callbacks are created each time. This adds an argument to deepEqual to ignore functions. Task: [5003595](https://www.odoo.com/odoo/2328/tasks/5003595) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents Point of Sale test failures in setups where country information is required by installed localizations. It ensures automated checks are more reliable without changing day-to-day user behavior.
Original PR description
Before this commit, some tests would fail when localizations requiring a country were installed, because the created company did not have a country set. runbot-233158 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230114
This fix ensures spreadsheet-related tests load the full chart library they depend on. It prevents later tests from failing unpredictably when charts such as treemap or geo charts are needed, improving test reliability without changing user-facing behavior.
Original PR description
Some tests were loading Chart.js using loadJS, without the corresponding bundle. That means that the test that comes after could fail if they required treemap/geo charts, as they weren't loaded in ChartJs. Task: [5003595](https://www.odoo.com/odoo/2328/tasks/5003595)
This fix makes automated checks for the mail HTML editor use a more reliable save action instead of clicking a save button that may still be disabled. It helps reduce false failures in Odoo's testing pipeline, supporting more stable releases without changing everyday user behavior.
Original PR description
This commit tries to solve runbot issues with mail html fields widget. It seems clicking on the save button manually is not generating a call to the backend. This could be due to the fact the button is not enabled due to the data being invalid. Therefore using the clickSave util could be useful in those situation since waiting that the button becomes enabled. This solution is not 100% sure to fix the issue in all cases but manually disabling the button is creating the issue we can observe in those runbots. There is a good chance it might work. fixes-runbot-231582 fixes-runbot-233049 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227484
The Point of Sale automated tour now waits longer for the system to load when many localizations are installed. This reduces false test failures in slower setups without changing day-to-day user functionality.
Original PR description
Loading the PoS with all the localizations installed can take up to 15s to load, so we increase the timeout of the first step of the generic tour to 20s to make sure it doesn't fail. runbot-233059 Forward-Port-Of: odoo/odoo#229925
This fix ensures separators in the Email Marketing showcase template remain visible in received emails. It improves the consistency of email layouts by preserving separator height, showing them only where appropriate, and applying border colors correctly.
Original PR description
Problem: When adding the `s_showcase` template in email marketing and saving, the separator is not properly rendered in the received email. Cause: The separator is implemented as an empty `<div>` with `display: inline-block` and `height: 100%`. In emails, this can collapse to 0px, making the separator invisible. Additionally, `border-<position>-color` was not applied correctly in some cases. Solution: - Lock the computed height of empty separator elements so they remain visible. - Restrict visibility of separators to desktop screen sizes where columns are stacked horizontally. - Fix rendering of `border-<position>-color`. Steps to reproduce: 1. Open a new email marketing. 2. Add the `s_showcase` template. 3. Test-send the email. 4. Observe that the separator is not visible. opw-5077992 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226350
This fixes Mexican electronic invoicing so legal names containing the ü character are kept correctly instead of having the accent removed. It helps ensure invoices match SAT-recognized customer or company names and reduces validation issues.
Original PR description
Previous commit (#95207) removed accents for names including character ü which indeed is a recognized character for SAT opw-5125107 Forward-Port-Of: odoo/enterprise#96043
Fixes an issue in the HTML editor where undoing an image rotation, resize, or drag required several Ctrl+Z actions. Users can now return an edited image to its starting state with a single undo, making content editing more predictable and efficient.
Original PR description
**Current behavior before PR:** - When rotating, resizing, or dragging an image using the transform container, pressing Ctrl+Z did not revert the image to its initial state (when the transform container was opened). - Instead, it required multiple undo operations to return to the initial state. **Desired behavior after PR is merged:** - Pressing Ctrl+Z now correctly reverts the image to its initial state in a single undo, after a transformation. task-5114320 Forward-Port-Of: odoo/odoo#228720
Users can now open the Options tab for survey questions from the Questions and Answers menu without encountering an error. This restores normal access to survey answer choices and avoids disruption when managing survey content.
Original PR description
Currently, you cannot view a survey question's option through the 'Questions and Answers' menu.
### Steps to reproduce
* install and open 'survey'
* access all survey questions from the menu 'Questions and Answers' > 'Questions'
* open any question and try to view the 'Options' tab
You will be met with the following traceback:
```
EvalError: Can not evaluate python expression: ({'referenceValue': parent.session\_speed\_rating})
Error: Name 'parent' is not defined
```
### Cause
'parent' here refers to a survey container record and works only inside sub-views of relational fields.
opw-5026204
---
Backport of 89b502614e4b185cf722c733f42f9a646aaed564
Forward-Port-Of: odoo/odoo#225840A safeguard was added to avoid a rare division-by-zero error during electronic invoice calculations when very small amounts round down to zero. This helps keep invoice processing stable and protects against future edge cases without changing normal business behavior.
Original PR description
[FIX] account_edi_ubl_cii: float comparison safeguard. This fix solves a potential issue where the `delivered_qty * price_unit` is too close to zero making it pass the float comparison check, later we divide against the same product, but this time wrapped in `curency.round` which may round it to zero, resulting in a division by zero error. Whilst I found no functional way to reproduce the issue as the value of price_unit should already be zero when we get here but, the fix is to simply safeguard from potential future changes. Ticket [link](https://www.odoo.com/odoo/project.task/5013588) opw-5013588 Forward-Port-Of: odoo/odoo#230236
This fixes an issue in the Turkish Nilvera integration where some server errors could fail to display correctly because the system referenced the wrong response field. Businesses using this integration should now receive the intended error message instead of an unexpected failure.
Original PR description
The http response object doesn't have a `code` attribute, this commit fixes this typo which has already been fixed in 19.0 as a part of #222869 task-5050516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228088
Stock quantity lines are no longer incorrectly highlighted in red for every product for regular stock users. The warning color now appears only when a product has an expired removal date, making the list clearer and helping users focus on items that need attention.
Original PR description
Description of the issue/feature this PR addresses: For stock users (not admins), the stock quantities list view display red lines for every product. Current behavior before PR: <img width="2243" height="217" alt="image" src="https://github.com/user-attachments/assets/330c591c-6ef4-46cb-8336-fa39fb483333" /> Desired behavior after PR is merged: Red lines are only displayed for products with a removal date and a removal date < current date <img width="2241" height="290" alt="image" src="https://github.com/user-attachments/assets/fe37adc7-e736-447e-a21e-e2fae984e074" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228992
The employee private address section now keeps city, state, and ZIP fields aligned on the same row. This improves readability and makes the employee form look cleaner and more consistent.
Original PR description
Wrap private address city, state, and zip fields in a flexbox container to ensure proper horizontal alignment on the employee form view. task-5082714
This update fixes the layout of private address details on the employee form. City, state, and ZIP code now line up horizontally, making the form easier to read and use.
Original PR description
Wrap private address city, state, and zip fields in a flexbox container to ensure proper horizontal alignment on the employee form view. task-5082714
The time off request summary card now formats hour-based leave values more clearly. This prevents overly long text in the side panel, making requests easier for employees and managers to review.
Original PR description
On a time off request, there is a summary on the side. Problem: if we have time off in hours, the display is not adapted and the text is too long. This commit fixes the issue to display the hours correctly. task-5092855 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
Fixes the display of time off warning messages so they appear consistently when employees create leave requests, including the India-specific sandwich leave alert. This reduces confusion by ensuring important alerts are visible in the right place with proper spacing.
Original PR description
Issue: The sandwich leave alert for l10n India was incorrectly shown folded when creating a new time off entry for Indian companies. Additionally, the leave_type_increases_duration alert lacked proper top margin, causing inconsistent spacing. Steps to Reproduce: - For the sandwich alert: When shown, it appears folded automatically when creating a new time off entry (only for Indian companies). - For leave_type_increases_duration: When displayed, it lacks top margin. Fixes: - Moved the sandwich leave alert to the header alongside other alerts for consistency. - Adapted margins for all alerts. Task ID: 5071899 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr