Tuesday, December 9, 2025
16 changes · master
Resolved issues and error corrections
The table picker now keeps focus on choosing table size when it is opened inside an existing table. This prevents arrow keys from unexpectedly moving users to nearby table cells, making table editing more predictable.
Original PR description
Description of the issue this PR addresses: Current behavior before PR: When the table picker was open inside a table, pressing the up/down arrow keys incorrectly moved the selection to the cell above or below. Desired behavior after PR is merged: While the table picker is open, arrow up/down no longer navigate between table cells. task-5349547 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238012 Forward-Port-Of: odoo/odoo#236886
The editor command menu now recognizes “title” as a search term for heading options. This makes it easier for users to find and insert main headings when creating or editing content.
Original PR description
#### Desired behavior after PR is merged: - `title` is added to the list of keywords in `powerbox_items`, allowing `/title` to display the `heading (H1–H3)` commands in the powerbox. task-5367576 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238062
The HR demo data now uses a fixed past contract date for Mitchell Admin instead of a date based on the current year. This prevents demo payroll setup from failing around the start of a new year, making test and demonstration environments more reliable.
Original PR description
Before this commit, the relative date used to generate Mitchell Admin's contract was always at January 1st of the current year, making the payroll demo data install fail when at the start of the year. This commit sets a fixed year in the past for Mitchell's contract. runbot error 234623 and 234612 Forward-Port-Of: odoo/odoo#238711
The Argentine stock delivery guide report now includes the required note that the document is not valid as an invoice. It also avoids repeating the report name and number, making the document clearer and more compliant for business use.
Original PR description
The mention "Document not valid as an invoice" is missing in the delivery guide report. And we shouldn't duplicatethe report name and number. opw-5004345 Forward-Port-Of: odoo/odoo#234506
This fix prevents the HTML editor from crashing when a user applies color to a selected link in certain edge cases. It keeps the editor selection valid after hidden formatting markers are cleaned up, making link styling more reliable.
Original PR description
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the…
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the selection at: https://github.com/odoo/odoo/blob/bee7fc1f955c52a88b527ad9a2ddf0021529bbc7/addons/html_editor/static/src/main/font/color_plugin.js#L247-L247 and then call `getFonts()`, which internally uses `this.dependencies.split.splitAroundUntil()`. If the selection is on a `feff` node, `splitAroundUntil()` can clear those nodes because `splitElement()` inside it dispatches to `clean_handlers` with the selected element containing the `feff`. Since the preserved cursor offset refers to the node before the `feff` was removed, restoring it throws: `The offset x is larger than the node's length (y).` Solution: After `splitAroundUntil()`, adjust the preserved cursor offsets if the nodes were mutated to ensure they remain valid. Steps to reproduce: It is difficult to reproduce manually, but the issue occurs when coloring a link with the selection on a `feff`. A test case replicating the situation can be based on the original failing template in the customer’s database. opw-4953943 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238922 Forward-Port-Of: odoo/odoo#234328
New employees will no longer receive timesheet entries linked to another employee's future time off. The fix ensures only company-wide time off is considered when creating these initial timesheets, improving accuracy in project time tracking.
Original PR description
**Steps to reproduce** 1. Have a future `resource.calendar.leaves` without a `calendar_id` but with a `resource_id`. To achieve this, you can for example install Payroll and Attendance, create a contract with the work entry source being attendances and with no working schedule. Then, create a time off in hours for that employee and validate it. In that case, the `hr.leave` has no `resource_calendar_id` as computed in `_compute_resource_calendar_id`. This leads to a `resource.calendar.leaves` record without a `calendar_id` once the time off is validated. 2. Create a new employee. A timesheet corresponding to the previously created time off is created. **Change** Make sure only global time offs are considered. opw-5248992 Forward-Port-Of: odoo/odoo#237773
This update fixes an issue in the two-factor authentication area where custom domain parameters could be handled incorrectly after recent database query changes. It helps keep login-related behavior consistent for organizations using customized authentication settings.
Original PR description
Missed during introduction of SQL aliases. Probably introduced in the meantime by another PR. runbot-234541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The IoT Box startup process now waits until the device time has been synchronized before starting the Odoo service. This helps avoid reliability issues caused by incorrect system time during startup, especially after outages or first boot.
Original PR description
To make the IoT Box more resilient in case of time sync issues, we make the service start after the time sync one.
The chat window now handles cases where a conversation channel has been deleted instead of crashing. This improves reliability for users working with chat and messaging, with no expected change to normal workflows.
Original PR description
Before this PR, the chat window could crash if it tried to display a deleted channel. This PR avoids the crash using optional chaining. task-5404568
This update resolves an issue that previously blocked users from creating new Amazon accounts for new companies. The fix ensures that the system correctly handles the absence of warehouses and stock locations when a new company is initially set up, allowing for seamless account creation.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738
Forward-Port-Of: odoo/enterprise#101465This update resolves a failing test related to the layout of a key report. The team has switched from using XML-based actions to Python dictionaries, requiring a change in how test comparisons are made. This ensures the report layout functions correctly.
Original PR description
In this commit, we change the comparision for `xml_id` in test_action_send_report test with the view_id instead because the we are removing the action xml and replacing it with the python dict action instead. So it's better to compare the view_xml_id instead task-5366725
This update corrects a minor issue in the Swiss payroll module (l10n_ch_hr_payroll_elm_transmission_5_3) by adding a required group to the teleworking field. This ensures accurate data transmission to tax authorities, complying with Swiss regulations and preventing potential reporting errors.
Original PR description
Forward-Port-Of: odoo/enterprise#101691
This update ensures that the 'Night' and 'Nights' labels used in the sale renting module are fully translatable. The team took a pragmatic approach to avoid a potential translation issue, initially delaying full translation to monitor for any inconsistencies with website language settings.
Original PR description
Not sure why the existing `SINGULAR_LABELS` is lazy translated whereas the not single units (i.e. `self._fields['unit']._description_selection(self.env))[self.unit]`) is not, so we assume that in this case it's fine to not lazy translate both "Night" and "Nights" and see if a bug pops up later on (maybe via mismatching website language?) opw-5392109 Forward-Port-Of: odoo/enterprise#101613
This update corrects a styling issue within the VoIP module by explicitly defining the input type for browser elements. Previously, browsers treated plain input fields as text, causing some styles to be missed. This ensures consistent and correct styling for VoIP input fields, improving the user experience.
Original PR description
Even though a browser treats a plain <input> as a text field by default, the CSS selector cannot "see" that default behavior. Input without `type="text"` will miss some style, for example: https://github.com/odoo/odoo/blob/4f5594a911c1960f620d902d507e563cdab167b9/addons/web/static/src/webclient/webclient.scss#L163-L177 we add input type in this commit to apply those style.
This update corrects the visual alignment of buttons within the account journal views for the Be Codabox localization module. This ensures a cleaner and more professional user experience for users managing financial data. The change improves the overall usability of the system.
Original PR description
This commit aims to fix the alignment of codabox buttons in the account journal views. task-5269488
This update corrects a bug preventing the automatic installation of localized payroll account modules (e.g., l10n_xx_hr_payroll_account) when a corresponding country company wasn't yet defined. The fix removes a dependency check that caused the modules to fail to install, ensuring they are correctly added to new Odoo instances.
Original PR description
Steps to reproduce: 1. Run odoo for a fresh database with -i hr_payroll_account,l10n_xx_hr_payroll (except for us). 2. The corresponding l10n_xx_hr_payroll_account won't be installed. Cause: The l10n_xx_hr_payroll_account had 'countries': ['xx'] in their manifest, but there is no company from that country yet. When installing modules, the framework first checks if there can be modules to auto-install as well, but since the demo data with the company of the country does not yet exist, there is no such company. Hence, the module is not installed. Fix: Remove all occurrences of 'countries': ['xx'] for modules that are auto-installed and that depend on other modules with countries already defined in their manifest. Task: 5384292