Wednesday, September 2, 2026
8 changes · 18.0
Resolved issues and error corrections
This fixes a cleanup issue in the HTML editor where file-related event handlers could remain active after an editor was closed. Removing these leftover handlers helps prevent gradual memory use and performance issues when editors are opened repeatedly.
Original PR description
FilePlugin registered its click, keydown and pointerdown handlers with raw `addEventListener`, so they were never removed when the plugin was destroyed. The pointerdown one is bound to the document, which outlives the editable, leaking a handler per editor instance. Use `addDomListener` so Plugin.destroy() removes them. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Selecting a company or contact suggestion now correctly returns the form to its saved state after the record is updated. This prevents users from seeing save or discard buttons that no longer do anything, reducing confusion during partner data entry.
Original PR description
Steps to reproduce: 1) open partner form view 2) type in the name field 3) select a suggestion from the autocomplete dropdown Issue: The record is enriched and saved, but the form still displays the save/discard buttons, and clicking them does nothing. The record dirty indicator is driven by 2 signals 1) `model.root.dirty`, which is cleared by save() call earlier in the onSelect() 2) the state `fieldIsDirty` of the `FormStatusIndicator` The second indicator is set to true when the user types in an input field, and selecting an option never clears it. The `setDirty` prop no longer exists, and therefore was deadcode. This commit emits `FIELD_IS_DIRTY` bus event, which is the only way to update the second indicator. With that, the indicator goes back to saved state once the record is updated. task-6475332
On mobile devices, opening a full-screen image preview now hides the editor toolbar so the preview controls remain accessible. This makes viewing and managing images easier and prevents the editing interface from interfering with the preview experience.
Original PR description
When displaying the full screen image preview lightbox on mobile, the toolbar remains displayed. Because of this, the toolbar of the lightbox cannot be accessed. This commit hides the toolbar when a lightbox is displayed. task-6370220
The server now handles requests with overly long addresses more gracefully, even when request details are not available. This avoids an internal error while returning the correct rejection response, improving reliability for edge-case traffic.
Original PR description
- When the request URI is too long, the HTTP server rejects the request before parsing the headers. As a result, `self.headers` is not available when the WebSocket compatibility code in `send_header()` and `end_headers()` is executed. - Access `self.headers` safely to avoid an AttributeError while handling the 414 response. **opw-6501275** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#285870
Reference fields now show a clearer placeholder for the record selector, helping users notice when a required linked record is still missing. This prevents incomplete selections from being saved and then disappearing after a page refresh.
Original PR description
Steps to reproduce: 1. Install Sign. 2. Open the form view of a document. 3. Select a model in the "Link to" (Reference) field, but leave the record empty. 4. Save and refresh the page. Issue: -…
Steps to reproduce:
1. Install Sign.
2. Open the form view of a document.
3. Select a model in the "Link to" (Reference) field, but leave the record empty.
4. Save and refresh the page.
Issue:
- After refreshing, the selected model is cleared because the reference value is invalid.
Cause:
- A reference field is only valid when it contains both a model and a record ID. However, the record selector has no placeholder, making it easy to overlook and save an incomplete value.
Solution:
- Add a default placeholder to the record selector of reference fields to make it more visible.
<table>
<tr>
<th>Before</th>
</tr>
<tr>
<td>
<img src="https://github.com/user-attachments/assets/3ba34b77-f901-4d3e-9768-5acaf2e673b8" alt="Before" width="100%">
</td>
</tr>
<tr>
<th>After</th>
</tr>
<tr>
<td>
<img src="https://github.com/user-attachments/assets/1fe54b89-221f-4d28-bd2b-0a3c706d5746" alt="After" width="100%">
</td>
</tr>
</table>
opw-6426339Link previews in chatter now allow more time for slow websites to respond and handle timeout errors safely. This prevents users from seeing errors when adding links, improving reliability when logging notes or messages.
Original PR description
Currently, a `ConnectionError` occurs when a read timeout is encountered while reading the response stream. Steps to produce an error: - Install 'contacts` module and Open any contact - Click `Log note` in chatter and add link `https://www.twitter.com/your-page` Error: `ConnectionError: HTTPSConnectionPool(host='x.com', port=443): Read timed out.` This is because the timeout is set to `3` seconds, which may not be sufficient for the link previewer to read the response. This commit fixes the above issue by increasing the request timeout to `10` seconds, giving the link previewer sufficient time to read the response. Also wraps the response chunk reading in a try block to gracefully handle `RequestException` and return `False` instead of raising an exception. Sentry-7341079383
The Demo payment provider will no longer be activated in test mode unless a payment journal is available. This prevents background payment processing errors in databases where the default bank journal has been removed.
Original PR description
Currently an exception is generated when the scheduled action `Payment: Post-process transactions` tries to create a `account.payment` record without `journal_id` as the following step: - Create a…
Currently an exception is generated when the scheduled action `Payment: Post-process transactions` tries to create a `account.payment` record without `journal_id` as the following step: - Create a new DB without demo data and install `website_sale` module - Delete `Bank` Journal from Invoicing - Install `Demo` payment provider - Go to the website shop and create an order with the demo payment provider - Error will occur in the log when `Payment: Post-process transactions` schedule is running Error: ``` NotNullViolation: null value in column "journal_id" of relation "account_payment" violates not-null constraint DETAIL: ... ``` The issue occurs because the `Demo` payment provider is automatically created from the demo XML with its state set to `Test`. The field `journal_id (Payment Journal)` is mandatory when the provider is in the `Test` or `Enabled` state. However, this field cannot be assigned because the associated `Bank Journal` has been deleted. As a result, an error is raised during `payment post-processing` when the system attempts to create an `Account Payment` record with a missing required field. This commit fixes the above issue by not automatically setting the `Demo` payment provider state as `Test` during creation; instead, it sets the state through the `post_init_hook`. It will make sure the `Demo` provider is set to `Test` state when `journal_id` is set. sentry-7526177028
This update ensures the Indian stock localization loads the accounting-related stock component it needs. It prevents test and setup failures caused by a missing field, improving reliability without changing business workflows.
Original PR description
The view 'l10n_in_ewaybill_stock.view_picking_form_inherit_ewaybill' is broken in single-app tests because it depends on stock.picking:country_code. That field is provided by module 'stock_account' through auto_install relationship. 'stock_account' auto_installs with 'stock' and 'account' installed. This condition exists on stable so it's safe to add this dependency. The dependency is added to l10n_in_stock because it seemed like the logical place where 'account' and 'stock' functionality comes together. [l10n_in_ewaybill_stock] ──[depends]──> [l10n_in_stock] [l10n_in_stock] ──[depends]──> [stock] [l10n_in_stock] ──[depends]──> [l10n_in] ──[depends]──> [account_tax_python] ──[depends]──> [account] REF Runbot: https://runbot.odoo.com/odoo/error/945482 Forward-Port-Of: odoo/odoo#284990