Thursday, September 17, 2026
34 changes · master
Resolved issues and error corrections
This fixes an issue where saved filter settings could fail to load when their stored text included leading or trailing spaces. The change makes filter handling more tolerant, helping users avoid errors caused by harmless formatting differences.
Original PR description
task-6578010 Forward-Port-Of: odoo/odoo#288643 Forward-Port-Of: odoo/odoo#288528
This fixes an error that could appear when users reopened an attendance record from the calendar view. The attendance popover now loads the information it needs to show warnings properly, preventing a disruptive traceback in My Attendances.
Original PR description
Steps to reproduce:- 1. Create an attendance record on calendar view and save it 2. Now try to open that record, and you get traceback `Error: Name 'source_stale' is not defined` Cause:- The "My Attendances" calendar popover shows a stale-source warning banner using invisible="not source_stale" and invisible="source_attendance_id". Both fields were declared at the <calendar> level only, not inside <popover>, so the popover's Card renderer never fetched them, raising error. Fix:- Declare the two fields as direct children of <popover> so their values are included in the popover's record data. task-6577810 Forward-Port-Of: odoo/odoo#288524
The Discuss thread header now avoids showing a selection highlight when no action is currently active. This prevents items such as Attachments from appearing selected by mistake, reducing confusion for users.
Original PR description
The `o_switcher` style, shared with the control panel view switcher, renders its sliding background unconditionally and places it from `--SwitchButtons-activeIndex`, which is only set when one of its buttons is active. An action group can have no active action at all: the variable stays unset, `left` falls back to `auto` and the background sits on the first action, making it look selected. This was visible on `Attachments` in the Discuss thread header. Keep the generic switcher style as is and hide that background in ActionList when none of its actions is active. <img width="944" height="534" alt="switcher-before-after" src="https://github.com/user-attachments/assets/914cc215-4ef1-4974-a3e2-432f6be9356c" /> Forward-Port-Of: odoo/odoo#288060
The messaging menu search now uses the same search field design as other Discuss areas. This gives users a clearer focus indicator and more consistent visual feedback when searching messages.
Original PR description
The messaging menu search rolled its own markup, with the border on a wrapper and none on the input, so it had no focus contour or background unlike every other Discuss search. Render SearchInput instead. Its term stays owned by MessagingMenuUIState, whose signal is handed to useSearch(), so there is a single term and nothing to keep in sync. <img width="700" height="548" alt="discuss-search-focus-before-after" src="https://github.com/user-attachments/assets/9150d1ef-dd13-4e66-8cc4-c6dabc140f08" /> Forward-Port-Of: odoo/odoo#288391
The website builder now stops a warning timer once style updates finish loading successfully. This prevents misleading warning messages during normal AI website editing and helps keep diagnostics focused on real issues.
Original PR description
Commit [1] made the promise of reloading css bundles race with a timeout promise that logs a warning if CSS reload is not confirmed. However, even if the bundles reloaded on time, the warning was still logged as the timeout was never canceled. [1]: 769ebc02784d2bdebbfb3189e87426994fd87c8f Forward-Port-Of: odoo/enterprise#131722
The marketing automation menu is now hidden when a user is viewing a record that has not been saved yet. This prevents users from trying to add incomplete records to campaigns, reducing confusion and avoiding invalid actions.
Original PR description
This commit fixes an issue with the marketing_automation's new cogMenu. If the form view we are opening is not yet created we have a resId set to False. This is not a normal behavior to try and add a not fully created record to a campaign. Thus we hide the dropdown if there's no resId on the currently opened record. task-6559148 Forward-Port-Of: odoo/enterprise#131828
This fixes where users are sent after archiving or deleting an AI agent. The redirect now uses the correct AI Agent app reference, helping users return to the right place without navigation errors.
Original PR description
Use the ai_agentic namespace when redirecting after archiving or deleting an agent. task-id-6497307 Forward-Port-Of: odoo/enterprise#131833
Field service auto-planning no longer fails when an employee has multiple neighboring shifts at the same time. The system now checks travel time against the furthest relevant previous or next shift, helping schedules generate reliably in more complex planning situations.
Original PR description
This commit fixes a traceback occuring when travel times were checked with the neighboring shifts in the auto-plan. It may be possible that a resource has multiple shifts at the same time, in which case we should use the travel time with the further previous/next shift. task-6579763 Forward-Port-Of: odoo/enterprise#131845
Fixes a crash in Odoo Studio when users open the report settings from the cog icon in debug mode. This makes it possible to access the related report configuration form reliably, reducing disruption for users editing reports.
Original PR description
On the report editor in debug mode, click on the cog to open the ir.action.report form view Before this commit, there was a crash After this commit, there is no crash task-6531172
This update improves how text from Odoo templates is prepared for translation by excluding punctuation, icons, and standalone symbols that should not be translated. This helps translators focus on meaningful text, improving translation quality and consistency across several apps without changing core business workflows.
Original PR description
## [FIX] *: better translations in templates This commit aims to provide better translatable strings from static XML templates. To do so, it includes the following changes: - isolated strings that are not meaningful to a translation, such as punctuation or special characters (e.g. "?" for field tooltip marker, "-" to separate tips, or a "x" button to close a panel); - add `t-translation="off"` to strings that are not supposed to end up in translatable strings, such as the aforementioned characters; - a few simplifications for the affected templates have also been applied to the changed nodes when possible, to enforce semantics or to improve readability. - Enterprise: https://github.com/odoo/enterprise/pull/100330 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves how text in interface templates is prepared for translation by excluding punctuation, symbols, and other non-meaningful characters. It helps translators focus on useful text, improving translated screens without changing business workflows.
Original PR description
## [FIX] *: better translations in templates This commit aims to provide better translatable strings from static XML templates. To do so, it includes the following changes: - isolated strings that are not meaningful to a translation, such as punctuation or special characters (e.g. "?" for field tooltip marker, "-" to separate tips, or a "x" button to close a panel); - add `t-translation="off"` to strings that are not supposed to end up in translatable strings, such as the aforementioned characters; - a few simplifications for the affected templates have also been applied to the changed nodes when possible, to enforce semantics or to improve readability. - Community: https://github.com/odoo/odoo/pull/236100
The wording for a French e-reporting configuration option was restored because the previous change made its meaning too narrow. This helps users understand that the setting also covers choosing not to send data to the public invoicing portal, reducing confusion during setup.
Original PR description
When we removed the pilot phase setting from the view, we changed that setting to only mean Enable e-reporting. But that's a mistake. In fact people are also choosing not to send to the PPF, so the previous sentence was still right. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288518
Fixed a mobile Point of Sale issue where scrolling the product list could accidentally open the product information popup. This prevents interruptions during touchscreen use and makes browsing products smoother for cashiers.
Original PR description
Steps to reproduce: - Open the PoS in mobile mode (touch device) - Swipe the product list up and down a few times Issue: The product info popup sometimes opens while scrolling, as if a product had been long pressed. Cause: Since the product card long press listens to pointerdown/pointerup, a touch that turns into a scroll ends with a pointercancel and never a pointerup, so the long press timer survives the gesture. The debounced onScroll handler is the only other canceller, but when the list is still scrolling from a previous swipe the debounce is already armed, its leading call is skipped and the continuous scroll events keep delaying the trailing call past the long press duration. Fix: Cancel the long press on pointercancel, like pointerup. opw-6514079 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288135 Forward-Port-Of: odoo/odoo#287835
Users can now find and select both service and goods taxes when searching for taxes on product sales or purchase tax fields. This prevents valid tax choices from being hidden and gives businesses more flexibility when configuring product taxes.
Original PR description
With this commit:- - We remove the tax-scope filter from the Search more taxes in the product page's tax fields (Sales taxes and Purchase taxes). - The purpose of doing so is that we should not restrict the user from using service taxes in goods and vice versa. task-6527424 Forward-Port-Of: odoo/odoo#288187
The Mail app now only shows followers who are actually subscribed to receive messages in the recipient list. This prevents users from seeing people listed as recipients when they will not receive the message, reducing confusion in chatter communications.
Original PR description
Before this commit, a follower not subscribed to "Messages" message subtype would still show up in the recipients list (the `To: ` line). This happens since [1] introduced the followers badge on the recipient list, without taking into account the subscription of the followers. This commit fixes the issue by using the `recipientsCount` field, which holds the count of followers subscribed to the "Messages" subtype (except self). [1] https://github.com/odoo/odoo/pull/255498 task-6545679 Forward-Port-Of: odoo/odoo#287214
Long bill reference text in outstanding credit or debit sections is now shortened visually so it stays within the page layout. This keeps Credit Notes and Vendor Bills easier to read and prevents confusing display issues when references are unusually long.
Original PR description
The "Outstanding credits" or "Outstanding debits" sections of a Credit Note or Vendor Bill will overflow when the "Bill Reference" is too long. We resolve this by applying the text-truncate class.…
The "Outstanding credits" or "Outstanding debits" sections of a Credit Note or Vendor Bill will overflow when the "Bill Reference" is too long. We resolve this by applying the text-truncate class. Steps to Reproduce: 1. Create a new 19.0 db and load demo data. 2. Accounting -> Vendors -> Refunds -> RBILL/2026/09/0001 3. Click the entry in the Outstanding credits section. 4. Enter a long "Bill Reference" value, e.g. asdf asdfasfasdfasdfasdfasdfasdfasdfasdfasdfasdf. 5. Go back to the Credit Note and observe the text overflow. opw-6558982 <img width="1254" height="1162" alt="bill_reference_long" src="https://github.com/user-attachments/assets/8c762b50-65a8-44bf-9a28-bd34887d5928" /> <img width="1620" height="1294" alt="overflow" src="https://github.com/user-attachments/assets/f5c47404-fb7f-4715-8815-cabe5dda3805" /> <img width="1586" height="1159" alt="truncated" src="https://github.com/user-attachments/assets/2a80f656-0a12-4805-9c1d-fd20379655ce" /> Forward-Port-Of: odoo/odoo#288389
Payroll version pages now display the full details for employee-related warnings instead of omitting them. This helps payroll teams understand and resolve employee issues without missing important context.
Original PR description
`_compute_issues()` looked up `warning_details` using `version` keys for warnings keyed by `hr.employee`, dropping the issue details. Use `version.employee_id` as the lookup key when `warning.model_name` is `'hr.employee'`. Task: 6483048
This update adjusts HR forms so structure type information is not hidden where it is still needed. It helps preserve clarity for users managing employees and contract templates while avoiding an unintended form change.
Original PR description
- hide `structure_type_id` on employee and contract template form views task-6569952 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes redundant code in the web test mock server that had no effect on behavior. It helps keep the codebase cleaner and easier to maintain without changing any user-facing functionality.
Original PR description
`record[fieldName] = record[fieldName]` does nothing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Spreadsheet actions now preserve approved rich formatting in help messages instead of showing it as escaped plain text. This ensures users see action guidance as intended while keeping existing safeguards for missing action details.
Original PR description
Current behavior before PR: - `navigateTo` cleans up the action description using `JSON.parse(JSON.stringify(...))`. - This removes Owl's `markup()` wrapper from the `help` field. - As a result, the trusted HTML is converted to a plain string and gets escaped instead of being rendered. Desired behavior after PR is merged: - Pass the action description directly to doAction. - `_preprocessAction` already provides defensive fallbacks for individual fields, such as `action.domain || [] and action.display_name || action.name || "".` - Therefore, undefined fields or missing keys are handled safely without the need for the JSON round-trip. - This preserves the trusted markup in the help field and renders the HTML correctly. Task: [6428217](https://www.odoo.com/odoo/project/2328/tasks/6428217) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#286191
This fix prevents an error from appearing when a user clicks a shared Sign document link while still editing a website page. It improves the website editing experience by safely handling pages that do not have the usual editable record information.
Original PR description
# How to reproduce - Go to Sign > Templates - Upload a PDF & click on Share - Copy the link - Go to a page with a EditInBackend systray item (e.g. a Product or Event page) - In the editor, add the…
# How to reproduce - Go to Sign > Templates - Upload a PDF & click on Share - Copy the link - Go to a page with a EditInBackend systray item (e.g. a Product or Event page) - In the editor, add the copied link to a button or some text - Save - While still in editor mode, click the link # The issue A traceback is shown # Cause The traceback is caused by the call to this function : https://github.com/odoo/odoo/blob/f8c29412e71af098b2949f485a8011b01b64b368/addons/website/static/src/services/website_service.js#L336 In our case, `this.currentWebsite.metadata.mainObject` is undefined, so trying to access `.model` throws. `mainObject` is undefined because the sign link opens an XML file, which does not have any metadata associated to it : https://github.com/odoo/odoo/blob/f8c29412e71af098b2949f485a8011b01b64b368/addons/website/static/src/services/website_service.js#L150-L155 The call to `getUserModelName` is done by the `EditInBackendSystrayItem` component which subscribes to the "CONTENT-UPDATED" event : https://github.com/odoo/odoo/blob/f8c29412e71af098b2949f485a8011b01b64b368/addons/website/static/src/client_actions/website_preview/edit_in_backend.js#L33 However, this method should not be called by the bus because the sign page does not have this systray item. The issue is, the display of the component is managed by the `WebsiteSystrayItem`, based on the `hasEditableRecordInBackend` getter : https://github.com/odoo/odoo/blob/f8c29412e71af098b2949f485a8011b01b64b368/addons/website/static/src/client_actions/website_preview/website_systray_item.js#L10 https://github.com/odoo/odoo/blob/f8c29412e71af098b2949f485a8011b01b64b368/addons/website/static/src/client_actions/website_preview/website_systray_item.xml#L9 And the re-render of that component that would remove the `EditInBackendSystrayItem` component is triggered by a call to `renderAndAdapt`, which is also subscribed to "CONTENT-UPDATED" : https://github.com/odoo/odoo/blob/f8c29412e71af098b2949f485a8011b01b64b368/addons/website/static/src/components/navbar/navbar.js#L48 So the destroy of the `EditInBackendSystrayItem`, which should remove the listener that calls `getUserModelName` is trigerred AFTER the call to that function is already done opw-6443794 Forward-Port-Of: odoo/odoo#281763
This fixes an issue where clearing an embedded code snippet on a website page did not persist after saving, causing the old embed to reappear on reload. Empty embeds are now properly removed, so editors see the expected empty-content message instead of stale content.
Original PR description
Scenario: - drop embedded code snippet - edit it to add a value - edit it to put it empty - save Result: on reload the embed is not removed and the old value is restored In 18.2, setting it empty would work and you would see an info alert: "Your Embed Code snippet doesn't have anything to display. Click on Edit to modify it." Fix: delete the embed field if it is saved empty. opw-5454289 Forward-Port-Of: odoo/odoo#251537
This fixes an intermittent issue in Point of Sale automated checks where receipt printing failure scenarios could move ahead too quickly on busy systems. The change makes these checks more stable, reducing false failures in validation pipelines without changing customer-facing POS behavior.
Original PR description
The fast-payment tours with automatic receipt printing configure an unreachable printer to exercise the printing-failure path. Once the failed print settles, FeedbackScreen arms a 1500ms timer that auto-navigates to the next order (iface_print_auto). The tour needs to detect the resulting error dialog, confirm it, then click the validation button, all before that timer fires. On a fast machine this comfortably fits, but on a loaded CI runner the sequence can take longer than 1500ms, so the auto-navigation happens first, unmounting the feedback screen before the tour can click ".button.validation" and causing a step timeout that could not be reproduced locally. Click on the feedback screen background right after confirming the dialog to call stopAutomaticSkip() and cancel the pending timer, removing the race entirely. This mirrors the pattern already used in test_automatic_receipt_printing. runbot-946191 Forward-Port-Of: odoo/odoo#288593 Forward-Port-Of: odoo/odoo#284690
The Norwegian eVAT report now lists tax code details in a consistent order every time it is generated. This prevents random test failures and helps ensure the report output remains reliable and predictable.
Original PR description
The Norwegian tax report is built from ordered elements, but the summary detail per tax code is appended from a list that is quasi-directly calculated straight from PostgreSQL. The query does not request a specific result order causing indeterminism (it depends on the query plan chosen: hash vs. sort aggregate, parallel workers) when the whole XML tree is compared against a golden copy in tests. An explicit ORDER BY clause is added to the taxes query. The chosen key is the tax_code, because these can be casted for integer natural sort. The produced XML tree can be compared in its entirety without random failures. REF Runbot; https://runbot.odoo.com/odoo/error/939532 Forward-Port-Of: odoo/enterprise#131702 Forward-Port-Of: odoo/enterprise#131307
Swiss payroll users can now save draft hourly payslips without losing a manually entered wage factor. This prevents incorrect resets to zero and reduces the need to re-enter payroll data.
Original PR description
**Steps to reproduce:** 1. Create a draft Swiss ELM payslip for an hourly-paid employee with no automatic hourly work-entry/input 2. In the Wages tab, manually update the `Factor` (`rate`) field of the `Hourly Salary` line 3. Save the payslip **Issue:** The manually entered `Factor` is reset to `0.00` **Cause:** - `l10n_ch_swiss_wage_ids` is a stored computed field without explicit `readonly=False`, causing manual modifications to the line values to be discarded during field recomputation on save. opw-6536243 Forward-Port-Of: odoo/enterprise#131636 Forward-Port-Of: odoo/enterprise#130824
Updates to employee working schedules now create clearer leave allocation messages. The message correctly shows the related contract and includes the details of what changed, helping HR teams understand and audit schedule updates more easily.
Original PR description
When modifying an employee's working schedule via the wizard, the logged chatter message on the leave allocation incorrectly evaluated the contract name to "False" and lacked details on the changes made. This PR fixes the problem by calculating and logging the necessary details regarding the changes.
The Nilvera e-invoice integration now keeps the amount-in-words note fully in Turkish when invoices use a foreign currency. This avoids mixed-language wording such as English currency subunits appearing in Turkish e-invoices, helping keep documents compliant and clear.
Original PR description
### Issue before this commit: When generating a Nilvera e-invoice in a foreign currency (e.g., EUR), the amount written in words inside the <cbc:Note> tag contained a mix of languages. While the…
### Issue before this commit: When generating a Nilvera e-invoice in a foreign currency (e.g., EUR), the amount written in words inside the <cbc:Note> tag contained a mix of languages. While the numbers were correctly translated to Turkish, the currency subunit label was fetched using the customer's language. This resulted in a partially translated string (like "... SIFIR CENTS") instead of the expected fully Turkish text (like "... SIFIR SENT"). ### Steps to reproduce the issue: 1. Download Accounting and l10n_tr_nilvera_einvoice 2. Create an API KEY: https://docs.google.com/document/d/1EUzvTBnSm9-VwIfBsX299MHGXIVys-uijnsJ1fpz7vI/edit?tab=t.0#heading=h.e6i8a29lff5t 3. Go to a turkish client on the Accounting tab and click on 'Verify' for the Nilvera status 4. Go to currencies and activate EUR (be sure there is also the translation for currency subunit) 5. Go to invoices, create one for the Turkish customer you already verified setting the currency as EUR and send it with Nilvera 6. See that current output is <cbc:Note>YALNIZ : BEŞYÜZDÖRT EUR SIFIR CENTS</cbc:Note> (Turkish numbers with English subunit) but the expected output is <cbc:Note>YALNIZ : BEŞYÜZDÖRT EUR SIFIR SENT</cbc:Note> (Fully Turkish text) ### Cause of the issue: The issue occurs because the currency_subunit_label field is not translated but fetched using the language of the customer in the invoice. ### Reason to introduce the fix: To ensure that the amount in words inside the <cbc:Note> tag is completely formatted in Turkish, complying with Nilvera and local e-invoicing requirements, regardless of the customer language. opw-6523794 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288122 Forward-Port-Of: odoo/odoo#287630
The add-to-cart notification now correctly shows loyalty reward progress again when shoppers add eligible products to their cart. This helps customers see their discount or loyalty progress at the right moment, reducing confusion during checkout.
Original PR description
Versions -------- - master Steps ----- 1. Install eCommerce and Discounts & Loyalty (demo data). 2. On the shop, add a Furniture product to the cart. Issue ----- No progress bar in the add to cart notification. Cause ----- The patch on `ItemAddedNotification` was not migrated along bb606bbe6330 and still declares its prop through the static `props`, which Owl no longer reads. Solution -------- Declare the prop through its own `useProps` call in a patched `setup`, and read it from `this.loyaltyProps` in the template. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Long product names on smaller printed labels can now wrap onto a new line instead of being cut off with an ellipsis. This makes printed labels easier to read and keeps label behavior consistent with the previous version.
Original PR description
In 19.0, long names wrap to a newline, while in masters everything is clipped to one line with ellipsis. This commit will increase the height for title fields on smaller labels so they behave the same as on 19.0 and can still wrap --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Installing Fleet Stock directly now also enables the required batch transfer access for internal users. This prevents the settings page from accidentally triggering a Fleet Stock uninstallation prompt, making setup safer and smoother.
Original PR description
If stock_fleet is installed directly without enabling batch transfers beforehand, stock.group_stock_picking_batch is not enabled for internal users. When opening the settings, the onchange on group_stock_picking_batch unchecks module_stock_fleet, and saving triggers the uninstallation wizard of stock_fleet. This commit fixes the issue by enabling stock.group_stock_picking_batch for base.group_user in the post_init_hook of stock_fleet. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Austrian point-of-sale setup test data now uses the updated currency reference. This keeps automated checks aligned with the latest shared currency data and helps prevent false failures during validation.
Original PR description
In this commit: ------- - Update the currency ID to 2 when creating the PoS configuration for the Austrian localization, reflecting the corresponding currency data change in the related PR. Task-6576886
After archiving or deleting an AI agent, users are now sent to the correct agent page. This prevents a broken or incorrect navigation path and keeps agent management workflows smooth.
Original PR description
Use the ai_agentic namespace when redirecting after archiving or deleting an agent. task-id-6497307
Odoo no longer crashes when a user clicks an embedded file link whose attachment has since been deleted. Instead, the editor handles the missing file safely, keeping records with HTML fields usable even when old links are stale.
Original PR description
Clicking a stale /web/content/<id> link in an HTML field crashed the client after the related attachment had been deleted. **Steps to reproduce:** 1. Open any record with an HTML field (e.g. Project…
Clicking a stale /web/content/<id> link in an HTML field crashed the client after the related attachment had been deleted. **Steps to reproduce:** 1. Open any record with an HTML field (e.g. Project > Task description). 2. Upload a file into the HTML field to embed an attachment link. 3. Save the record. 4. Delete the uploaded attachment from Chatter > Files, or from Settings > Technical > Attachments. 5. Reopen the record and click the embedded file link. **Client Error:** `TypeError: Cannot destructure property 'mimetype' of '(intermediate value)' as it is undefined at LinkPopover.loadAsyncLinkPreview` `TypeError: Cannot destructure property 'type' of '(intermediate value)' as it is undefined at LinkPopover.updateDocumentState` When the attachment is missing, ormService.read returns an empty array, so fetchAttachmentMetaData returned undefined instead of entering its catch block. LinkPopover then crashed while destructuring that result in loadAsyncLinkPreview and updateDocumentState. Return a safe fallback metadata object when the attachment cannot be found so both code paths keep working without crashing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#279281
This fixes a display issue in Discuss call settings where the selected speaker could be shown with the microphone name when Chrome reports matching default device IDs. Users now see the correct device name in the dropdown, reducing confusion when choosing audio devices for calls.
Original PR description
Steps to reproduce: - Have an input audio device and an output audio device with different names but same device ID. Using Chrome, if the OS only sees one of each, both should have "default" as device ID. (alternatively, modify the code at `updateDevicesList` to simulate having devices of that kind). - Select those devices in the call settings UI, then open the settings UI dropdown again. => The "input" device is properly shown but the "output" device shows the "input" device names (while in fact this is the right one selected in the inner dropdown). This happens since [1]. Before that there were native `<select>` nodes that filtered devices by kind before rendering each option, and the "default" value of Chrome was not really handled. [1]: https://github.com/odoo/odoo/commit/93d0931fba1f467de265200b6a0463cf7edf9534 Related to task-6533808 Forward-Port-Of: odoo/odoo#288537 Forward-Port-Of: odoo/odoo#288285