Monday, August 31, 2026
32 changes · master
Resolved issues and error corrections
The Sales dashboard buttons now display correctly when selected, with no clipped top border. Cart-related buttons also have a consistent width, making the dashboard look more polished and easier to scan.
Original PR description
Fix the top border of the dashboard buttons being cut off when selected. Also set a consistent width for all cart buttons using CSS. Enterprise PR: https://github.com/odoo/enterprise/pull/129874 **Before:** <img width="655" height="171" alt="before_sale1" src="https://github.com/user-attachments/assets/e86716b7-3eba-4e7a-a5ed-510a3bc0ef46" /> **After:** <img width="591" height="189" alt="after_sale" src="https://github.com/user-attachments/assets/fff6565e-bd1f-4f94-9089-5a951b60f5bd" />
This fix removes an unnecessary testing dependency from the base import module. It helps keep automated checks more reliable and easier to maintain without changing everyday user workflows.
Original PR description
Removes the hard dependency on `test_tools` and forces the tests of `test_cloc` to run on `base_import_module` (`allow_inherited_tests_method`). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Self-order preparation receipts now include the customer name when it was entered for the order. This helps staff identify and prepare orders more accurately, reducing confusion during service.
Original PR description
The customer name is written in `floating_order_name` which is never passed to the preparation receipt in self order. This commit fixes it. Forward-Port-Of: odoo/odoo#285219 Forward-Port-Of: odoo/odoo#284454
The rental dashboard buttons now display correctly when selected, with their top borders no longer visually cut off. This provides a cleaner and more consistent dashboard appearance for users managing rentals.
Original PR description
Fix the top border of the dashboard buttons being cut off when selected. The community PR adding CSS to ensure all buttons have the same size also implicitly applies to this dashboard. Community PR: https://github.com/odoo/odoo/pull/285700 **Before:** <img width="541" height="178" alt="before_rental" src="https://github.com/user-attachments/assets/61c72e16-0de6-4324-9460-c4dc547c1ed0" /> **After:** <img width="574" height="182" alt="after_rental" src="https://github.com/user-attachments/assets/20b0bd60-7d07-4b9a-bac7-18f8b6672e54" />
This update fixes the placement of add and remove suggestion buttons in the timesheet assistant so they stay within the visible border. It improves the visual polish and usability of the assistant without changing its functionality.
Original PR description
This commit ensures that the buttons to add/remove suggestions fit the border. task-6492978 Forward-Port-Of: odoo/enterprise#129345
LinkedIn posts now show hashtags correctly in the feed view. This helps users review and manage social content as it will appear, reducing confusion when monitoring published or scheduled posts.
Original PR description
Task-6323897 Forward-Port-Of: odoo/enterprise#124233
The mail testing setup now better matches what the real server sends when edited messages include mentions. This helps prevent misleading test results and supports more reliable message editing behavior over time.
Original PR description
Before this commit, the mock of /mail/message/update_content sends "avatar_128" and "name" for every mentioned partner, where python sends _store_avatar_fields, that is the avatar access token and write_date, plus the dynamic name fields. So a test that edits a message with mentions fills the store with a key the server never sends, and misses the ones it does.
This update stabilizes an automated test for the website countdown feature by ensuring time is handled consistently during testing. It reduces false test failures, helping development and release checks run more reliably without changing customer-facing behavior.
Original PR description
Since revamp of the countdown [1], this test fails sometimes. This happens because the countdown schedules its renders on the exact start of the next second (1000 - Date.now() % 1000 => 000 ms), and…
Since revamp of the countdown [1], this test fails sometimes. This happens because the countdown schedules its renders on the exact start of the next second (1000 - Date.now() % 1000 => 000 ms), and because hoot uses performance.now() for timers, but Date.now() for date, which can differ by a fraction of a millisecond [2]. So unless time is frozen, we can have such an issue: - we advance time by a second - `performance.now() + offset` triggers an interval function execution - countdown uses Date.now(), which might still be on the previous second => test fails as the seconds didn't update. This is fixed by freezing time. Also, for readability we add two helpers to read hours and seconds. [1]: https://github.com/odoo/odoo/commit/2ff879a3532b97a424400cad63fd32ef05e2d7f4 [2]: https://stackoverflow.com/questions/30795525/performance-now-vs-date-now#:~:text=On%20non%2DFirefox%20browsers%2C%20Date.now()%20is%20accurate%20to%20~1ms%20and%20performance.now()%20is%20accurate%20to%20~0.1ms%20unless%20in%20certain%20cases.%20If%20you%27re%20using%20Firefox%2C%20the%20accuracy%20is%20down%20for%20both%20to%202ms.%20They%20are%20both%20extremely%20fast
This fixes a mismatch that caused the HTML editor to calculate text contrast differently in Community and Enterprise. Users get more consistent readable text colors, and tests now align across both editions without tying the editor to unrelated control panel styling.
Original PR description
Since https://github.com/odoo/enterprise/commit/91a97dd1b9085ba348d0ecb4479cf96422ed4168, the ContrastPlugin resolved a different background in community and in enterprise, and thus adjusted the same…
Since https://github.com/odoo/enterprise/commit/91a97dd1b9085ba348d0ecb4479cf96422ed4168, the ContrastPlugin resolved a different background in community and in enterprise, and thus adjusted the same content to a different color on each side: it read `--o-control-panel-background-color`, which enterprise now maps to `$o-webclient-background-color` (#f8f9fa) while community keeps `$o-view-background-color` (#FFFFFF). White text on white was therefore darkened to rgb(183, 183, 183) in community and to rgb(178, 178, 178) in enterprise, and the editor tests could only pass on one side. That variable was never the control panel's business: it was exposed as a CSS variable by https://github.com/odoo/odoo/commit/26a85df9df766f2f56431b491cf692488d426524 for the sole use of the plugin, at a time when it happened to be the background the editable is drawn on. Rename it to `--o-html-editor-background-contrast`, declare it in html_editor for both the backend and the frontend, and default it to the view background. The plugin no longer depends on a design decision that is not its own, and any context rendering the editor on another background can override it. The control panel gets its plain SCSS value back, as nothing was overriding the variable. The colors expected by the tests are the same again on both sides, which partially reverts https://github.com/odoo/odoo/commit/443fdc2edc017ba872b411df79f91df4afdd3951: only its test changes are undone, its website SCSS change is kept.
The uninstall wizard no longer forces module cards into a fixed height, preventing tiny scrollbars when extra module information is shown. This improves readability in debug mode while keeping the normal view unchanged.
Original PR description
Before this commit, the module cards shown in the uninstall wizard had a fixed height. That height was just enough for the app icon, so as soon as a card had a bit more text than expected, the text no longer fitted and a small scrollbar appeared inside the card. This is what happened in debug mode, where the technical name of the module is displayed under its title: the extra line did not fit and every card ended up with its own tiny scrollbar. This commit removes that fixed height. The cards now simply take the height they need, which is the same as before in the normal case, and slightly taller in debug mode instead of scrolling. task-6518056 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a recurring task series is ended by deleting its latest task, remaining tasks now correctly stop showing as recurring. This prevents users from seeing a misleading recurring-task option when no future tasks will be created.
Original PR description
**Problem:** Deleting one task of a recurrence suite ends the recurrence, but the tasks that stay behind keep the "Recurrent" option ticked. They look recurrent while no recurrence exists any more,…
**Problem:** Deleting one task of a recurrence suite ends the recurrence, but the tasks that stay behind keep the "Recurrent" option ticked. They look recurrent while no recurrence exists any more, so closing one of them never produces the next occurrence. **Steps to reproduce:** 1. Create a project with "Recurring Tasks" enabled 2. Create a task, tick "Recurrent" and mark it as done 3. Repeat on each generated occurrence until 3 or 4 tasks exist 4. Delete the last generated task 5. Open one of the tasks left in the suite **Current behavior:** The remaining tasks still show "Recurrent" ticked, but marking one as done creates no new occurrence and the recurring tasks smart button is empty. **Expected behavior:** Ending the recurrence should turn the "Recurrent" option off on every task that was part of it. **Cause of the issue:** `unlink` deletes the `project.task.recurrence` when the last task of the suite is removed, and `recurrence_id` is set to NULL on the other tasks by the database. Nothing resets their `recurring_task` boolean, so it stays `True` with no recurrence behind it. The two other places that end a recurrence, `write` and `action_unlink_recurrence`, already clear the flag on the whole suite. **Fix:** Aligning `unlink` with those two paths keeps a single meaning for `recurring_task`: it is only ticked while a recurrence actually exists. The suite has to be read before the recurrence is deleted, since the one2many is empty afterwards, and the tasks of the batch being deleted are left out so that no write lands on records that are about to disappear. opw-6425292 Forward-Port-Of: odoo/odoo#282535
This change fixes a memory cleanup issue in Planning and Appointment pages by properly releasing pop-ups and confirmation messages when they are no longer needed. It helps keep pages stable during continued use without changing day-to-day workflows.
Original PR description
*: planning, appointment Same page-global Bootstrap Data.elementMap leak pattern as community's carousel_hook.js fix: a Bootstrap 5 component (Modal, Toast, Tooltip) is created but dispose() is never called when the owning element tears down, so the (now detached) element stays permanently retained in memory. Fixed in planning's shift-detail Modal (no destroy() at all), planning's calendar Toast (disposed alongside the Popovers that already were), and appointment's "link copied" Tooltip - all three now go through community's new `getOrCreateBootstrapInstance` helper (@web/public/utils), which centralizes the get-or-create-and-register-cleanup pattern. Each of these is bounded to a single page-level element (unlike the original pos_self_order carousel, mounted repeatedly across thousands of tests), so no separate before/after measurement was done here.
The Enterprise search bar styling now matches the shared Odoo design instead of maintaining a separate version. This gives users a more consistent interface and reduces maintenance complexity behind the scenes.
Original PR description
The round styling of the search bar was defined here, as xpaths over web.SearchBar / web.SearchBarMenu plus two scss files, so community and enterprise had two visibly different search bars. There is not much reason for them to differ, so the enterprise look becomes the only one and is written directly on the base templates, in community. It also removes two annoyances: hoot tests often load web without web_enterprise, so the actual styling inside tests moves even further away from reality, and xpath attribute edition always adds complexity to the code so it ends up less readable and harder to customize without issues. See https://github.com/odoo/odoo/pull/285589
Card side panels now only round the outer corners, removing small visual notches where the panel meets the rest of the card. This makes card layouts, such as event date blocks, look cleaner while preserving existing image clipping behavior.
Original PR description
Before this commit, the aside of a card inherited the card's rounding on all four corners. Its right side is glued to the card's body, so the two right corners were rounded for nothing, which was visible as a notch on every aside having its own background, e.g. the date block of the event kanban cards. This commit only rounds the two left corners, using the card's own variables. The children of the aside keep inheriting these values, so images are still clipped the same way. task-6512312
Updated the WhatsApp integration so proxy requests send their required details in the format the server expects. This helps subscription checks receive the right information and avoids failed or inconsistent WhatsApp connection flows.
Original PR description
The calls to the WhatsApp proxy sent their parameters as a JSON body, which a `type='http'` route does not unpack into its arguments, so the proxy needed a decorator to read them back before `check_subscription` could see `db_uuid`. Send them as form fields instead. `requests` encodes a dict as `application/x-www-form-urlencoded` and sets the header itself, so the routes fill their arguments on their own and the decorator goes away on the proxy side. Forward-Port-Of: odoo/enterprise#129815
This update improves the reliability of Odoo's automated tests by ensuring temporary changes made during tests are properly cleaned up. It also adds safer browser behavior in tests and makes progress bar behavior easier to extend, reducing the risk of hidden issues reaching users.
Original PR description
- https://github.com/odoo/enterprise/pull/129495 See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves how automated tests clean up temporary changes, reducing the risk that one test affects another. It helps keep quality checks more reliable across areas such as IoT, Point of Sale, Spreadsheets, and VoIP, without changing customer-facing behavior.
Original PR description
- https://github.com/odoo/odoo/pull/284948 See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a visual inconsistency where some screens, such as Project Tasks, showed the old view switcher style when they copied the control panel to add extra buttons. The Enterprise styling now loads early enough so copied panels keep the intended rounded appearance, providing a more consistent interface across installed apps.
Original PR description
| //////////// | Projects view | Project tasks view | |--------|--------|--------| | Master | <img width="274" height="122" alt="image"…
| //////////// | Projects view | Project tasks view | |--------|--------|--------| | Master | <img width="274" height="122" alt="image" src="https://github.com/user-attachments/assets/c72473b4-e5dd-4c59-be9b-9be4b4a030fa" /> | <img width="362" height="127" alt="image" src="https://github.com/user-attachments/assets/2a130494-d8c9-4316-be16-d0dc00213b49" /> | | This PR | <img width="294" height="117" alt="image" src="https://github.com/user-attachments/assets/75d3d21f-6e6c-4dc9-8aca-96a9f4002015" /> | <img width="384" height="154" alt="image" src="https://github.com/user-attachments/assets/2a8c66f8-0c80-488d-a459-2e3760c3e745" /> | Some screens don't use the standard control panel directly, they make their own copy of it to add extra buttons. Project tasks is one of them. Since Commit[^1], the Enterprise styling of the view switcher was added to the control panel too late, so those copies were made before it existed and never got it. Their switcher kept the default look instead of the new rounded one. The manifest already had a rule to add the file early, but it came after the line pulling in the whole search folder. The first mention of a file wins, so that rule was silently ignored. Moving it above makes it apply. Whether it shows depends on which apps are installed: e.g `accountant` loads `web_enterprise` early and hides the problem, which is likely why it went unnoticed. [^1]: https://github.com/odoo/enterprise/commit/91a97dd1b90 task-6518773
This fix makes an internal mail test more reliable by ensuring it waits for the correct mention suggestion list instead of an unrelated status update. It helps prevent false failures in automated checks, supporting smoother releases without changing user-facing behavior.
Original PR description
Before this commit, the test "select @ mention from the suggestion list being filtered" could fail on runbot, on the check that follows the first "@": Failed to find 2 of ".o-mail-Composer-suggestion" (Timeout of 10 seconds). Found 0 instead. This happens because the test holds a render open on ImStatus, a component the member list renders as well as the composer. The composer tells the server that the user is typing, the bus sends the status back, and the member list re-renders its ImStatus with another class. The hold catches that render, the one that also brings the suggestions on screen. This commit gives the children of NavigableList an inNavigableList environment flag, and holds the render only on an ImStatus that has it. https://runbot.odoo.com/odoo/error/946282 Forward-Port-Of: odoo/odoo#285280 Forward-Port-Of: odoo/odoo#284484
Calendar invitation files now include the meeting video link in a standard URL field. This helps recipients and calendar apps surface the correct online meeting link more reliably.
Original PR description
Add the meeting's videocall_location as a URL property in generated iCalendar (.ics) invitation files. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#283934 Forward-Port-Of: odoo/odoo#283562
Belgian payroll meal voucher reports no longer crash when an employee has no meal voucher amount for a month. The report now keeps the employee line with a zero total, helping payroll teams complete reporting even during full-month sick leave or corrected payslips.
Original PR description
**Steps to reproduce:** - In a belgium company - Put an employee in sick time off during a whole month - Generate a mealvoucher report for this month Another steps to reproduce: - Create a payslip for an employee that has mealvoucher input > 0 - Mark the payslip as paid - Put the mealvoucher input at 0 for the employee - Correct the payslip - Generate a mealvoucher for the payslip month **Current behavior:** Crash **Expected behavior:** The line should show lorie poiret in the report with 0 total. It is debatable to either filter out the 0 line from the report or not as it is not a standardized report and that all providers has their interpretation. We decided to show it. task-6487876 Forward-Port-Of: odoo/enterprise#128716
This fix closes a gap that allowed a newly created fiscal year to fully contain an existing fiscal year without being flagged as overlapping. Businesses get more reliable accounting period setup and avoid conflicting fiscal year definitions that could affect reporting.
Original PR description
Before this commit: - The current constraint for overlap check allows if we define a new, larger fiscal year that completely swallows an existing smaller one (e.g., creating Aug 2025 - Nov 2026 when Sept 2025 - Oct 2026 already exists). After this commit: - The constrain domain was changed to consider the above missed case. no task Forward-Port-Of: odoo/enterprise#128942
Swiss payroll employee records now show only Switzerland-specific certificate options instead of mixing in generic employee certificate values. This reduces confusion for payroll teams and helps users select the correct certificate type for Swiss localization workflows.
Original PR description
The certificate field on the employee model was being extended by the swiss localization to add the swiss-specific certificates. This was done using selection_add on the field which was causing the selection to also show the original values defined on the base employee model. We don't want to see the original values but only the swiss ones when we operate in the swiss localization. At the same time, we can't just override the field (without using selection_add) because a warning is triggered. Other possible solustions like using the result of a function or changing the type of the field to Many2one to use a domain are either not working on a record-per-record basis or not stable compliant. The only working solution for stable is to keep the selection_add working and filter the results in the views using the filterable_selection widget. Task: 5948460 Forward-Port-Of: odoo/odoo#250046
The accounting dashboard now shows the Import File button for credit card and cash journals, not just bank journals. This makes file-based transaction imports available wherever the journal is configured to use them, reducing confusion for users managing non-bank payment accounts.
Original PR description
The "Import File" button on the dashboard card only shows up for bank journals. Credit card journals are treated the same way as bank journals pretty much everywhere else: the dashboard card itself,…
The "Import File" button on the dashboard card only shows up for bank journals. Credit card journals are treated the same way as bank journals pretty much everywhere else: the dashboard card itself, the statements list, the "Transaction Feeds" setting on the journal form (where you can pick the file import option), and even `create_document_from_attachment` in this module, which already accepts them. So you end up with a credit card journal set to import files but nothing on its card to actually do it, and people assume the feature is simply not there. Show the button on credit card journals too. Steps to reproduce: - Install account_bank_statement_import_csv (or any other import format) - Create a "Credit Card" journal and set its Transaction Feeds to the file import option - Go to the Accounting dashboard - The bank journal card has an "Import File" button, the credit card one doesn't --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#129546
This fixes an access problem that could prevent Belgian payroll leave allocations from being validated correctly. The change ensures the validity check has the required permissions, reducing interruptions for HR payroll workflows.
Original PR description
A sudo was missing in the check of the validity of the allocation. Forward-Port-Of: odoo/enterprise#129652
This fix ensures that views edited in Odoo Studio keep characters from languages such as Chinese and Arabic readable instead of converting them into code-like symbols. It improves the editing experience for multilingual users without changing business workflows.
Original PR description
Currently, when we combine the arch for the base views in the xml editor, we encode the text using the etree default of us-ascii. This causes special characters (chinese, arabic, etc.) to be converted to html codes. To rectify this issue, we set the encoding of the string to unicode. ### Before <img width="739" height="334" alt="before" src="https://github.com/user-attachments/assets/ad77fc47-08a0-42ed-b34b-d033779e9fc2" /> ### After <img width="673" height="334" alt="after" src="https://github.com/user-attachments/assets/1dae36c6-46d1-4189-b448-790aee18f319" /> opw-6325841 Forward-Port-Of: odoo/enterprise#128336
This change corrects how Odoo handles static file paths on Windows. It prevents path separator differences from breaking access to static resources, helping Windows deployments behave consistently.
Original PR description
In commit 31aad6c, path normalization was added which also resulted in `/` being converted into `\` on Windows. There the `path.split('/')` did not work.
This commit changes the `'/'` to `os.sep` to fix the issue.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#285265
Forward-Port-Of: odoo/odoo#285216French VAT report submissions now handle account holder names longer than the official XML limit by splitting them into two fields. This helps prevent filing errors when a company or holder name exceeds 35 characters.
Original PR description
The XSD for XML-EDI does not allow strings longer than 35 for TitulaireDesignation This commit splits the holder name in 2 parts when it is more than 35 characters task-6476440 Forward-Port-Of: odoo/enterprise#129513 Forward-Port-Of: odoo/enterprise#128239
The Swedish tax report now shows Field 42 amounts as positive when appropriate, instead of incorrectly displaying them as negative. This helps Swedish companies review and submit tax reporting figures with the correct presentation.
Original PR description
**Steps to reproduce:** - Install the `l10n_se` module and switch to a SE Company. - Navigate to Invoicing > Configuration > Taxes. - Create a tax and set the tax grid to `se_42`. - Create and…
**Steps to reproduce:** - Install the `l10n_se` module and switch to a SE Company. - Navigate to Invoicing > Configuration > Taxes. - Create a tax and set the tax grid to `se_42`. - Create and confirm an invoice for a Swedish customer using this tax. - Navigate to Reporting > Tax Report. - Check the amount of `Fält 42` under `Block E`. **Observation:** The `Fält 42 – Övrig försäljning m.m.` field shows the amount as negative instead of positive. **Root Cause:** At [1], the `se_42` formula is missing the negative sign. These lines were missed by the `tax_tag_invert` revamp done in https://github.com/odoo/odoo/commit/17a6117ed88c29b5bc4db0c872bcdbc109a7d98b. **Fix:** This commit adds the missing negative sign to the `se_42` formula, ensuring that the amount for `Fält 42` is displayed as positive in the Swedish tax report, similar to [2]. [1]: https://github.com/odoo/odoo/blob/a56038c97e807388772ccc3a794cf0bf658a2076/addons/l10n_se/data/account_tax_report_data.xml#L356-L368 [2]: https://github.com/odoo/odoo/commit/b8125f38e80c1977eedda5fc6b9466ece5e9fd89 opw-6457529 Forward-Port-Of: odoo/odoo#281925
Romanian SAF-T (D406) exports now use the required file version 2.0 instead of 2.4.8. This helps ensure generated declaration files match the expected regulatory format and reduces the risk of submission issues.
Original PR description
**Steps to reproduce:** - Install the `l10n_ro_saft` module and switch to the RO Company. - Navigate to Accounting > Reporting > General Ledger. - Click the gear icon > SAF-T (D406 Declaration). - Open the generated XML file and check the `AuditFileVersion` node. **Observation:** The `AuditFileVersion` node is set to `2.4.8`. **Expected behavior:** The `AuditFileVersion` node should be set to `2.0` (confirmed with the PO [1]) **Root Cause:** At [2], the `file_version` value is incorrectly set to `2.4.8` instead of `2.0`. [1]: https://www.odoo.com/mail/message/1144385840 [2]: https://github.com/odoo/enterprise/blob/ce2ad80c91aea27b143a80018aa73ed10d16cdbe/l10n_ro_saft/models/account_general_ledger.py#L179-L183 opw-6452918 Forward-Port-Of: odoo/enterprise#127935
The UAE audit file reporting module now opens the company details form correctly from the General Ledger warning. This prevents an error that blocked users from completing missing company information during accounting report review.
Original PR description
Currently, an error occurs when trying to fill in the company details from the General Ledger. Steps to Reproduce: - Install `l10n_ae_faf` with demo data. - Switch to the `AE Company`. - Go to…
Currently, an error occurs when trying to fill in the company details from the General Ledger. Steps to Reproduce: - Install `l10n_ae_faf` with demo data. - Switch to the `AE Company`. - Go to `Accounting` > `Reporting` > `Ledgers` > `General Ledger`. - Click on `your company` in the company details warning. `AttributeError: The method 'account.report.action_fill_company_details' does not exist` In this commit, the company details warning was added to the l10n_ae_faf module, similar to account_saft. However, the action_fill_company_details method is only defined in account_saft, which is not a dependency of l10n_ae_faf. Therefore, when the user clicks on "your company" to open the company form [1], the method is not available and an error is raised. This commit ensures that action_fill_company_details is added to l10n_ae_faf so that clicking on `your company` opens the company form, as it does in account_saft. [this commit]: https://github.com/odoo/enterprise/commit/dffc4412df42507457810a0895be3b8f4dc7ec3f [1]- https://github.com/odoo/enterprise/blob/c8c2f13b7fd17e215044fc62774f2b4a378aaf8c/l10n_ae_faf/static/src/components/general_ledger/filters/warnings.xml#L3-L10 sentry-7676719103 Forward-Port-Of: odoo/enterprise#128327
This fixes an issue where text entered in the Translation dialog could disappear after the user dragged the dialog window. Users can now move the dialog without losing unsaved translation changes, reducing rework and confusion.
Original PR description
Step to reproduce: - have atleast two language and install sale - open any product, hover over product, and click on Translation button - Enter a value for one of language - drag the dialog Observation: - we lose the data, we just entered and fallback to original data Cause: - Inputs used `t-att-value="term.value"`, bound to original data. Since this content is passed to Dialog via slot, it is rendered/patched as part of Dialog's render cycle, - Dragging updates Dialog's state, triggering a patch that re-evaluated the slotted template and reset input values (which comes from `term.value`) Fix: - bind value to `updatedTerms[term.id] ?? term.value` so edits survive patches triggered by the parent Dialog opw-6431521 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#284890 Forward-Port-Of: odoo/odoo#283514