Thursday, October 9, 2025
33 changes · 19.0
Enhancements to existing features
Payslips that were previously shown as “Validated” will now appear as “Done”. This aligns the payslip status wording with the related payrun status, making payroll screens more consistent for users.
Original PR description
If the payslip status is "validated", the display status for the payslip is "Validated". The display has been changed to "Done" to match with the payrun's status.
The Stripe payment code was reorganized to keep related checkout and payment form behavior in the same area. This is an internal improvement that should make future payment updates easier to maintain without changing the customer payment experience.
Restaurant point-of-sale demo data now shows selected products with colors that differ from their categories. This helps customers see during onboarding that product colors can be customized independently, making menu setup easier to understand.
Original PR description
In this commit: ------------------ - We’ve added random colors to the below products in onboarding to help customers understand that they can choose different colors for products than the selected pos category. ### Products assigned new colors: - Water - Green Tea - Fanta - Bacon Burger - Pasta 4 Formaggi - Chicken Curry Sandwich - Club Sandwich - Sushi Lunch Combo task: 5103944
The point of sale product editor now shows the name of a color variant when users hover over it. This makes it easier for staff to identify the correct product option quickly and avoid confusion when colors look similar.
Original PR description
In this commit: --------------- - We will display variant names when hovering over them from edit product popup on UI for color variants. task: 5095570
The bank configuration card now uses an adjusted background color when dark mode is enabled. This improves visual consistency and readability for users configuring online bank synchronization in dark mode.
Original PR description
This commit will change the background color of the dark mode of the configure bank cart. no task id
Odoo's core memory cleanup settings were adjusted to match changes in Python 3.13 and 3.14. This helps keep the system aligned with newer Python behavior and supports stable performance as the platform evolves.
Original PR description
The thresholds were changed in 3.13: threshold0 = 2000 instead of 700 There are only 2 collections instead of 3 since 3.14 and the second collection is processed incrementally. https://github.com/python/cpython/blob/3.14/InternalDocs/garbage_collector.md --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update reorganizes how the Accounting app decides when a journal entry needs confirmation before validation. It keeps the same user experience while making future customizations easier and less costly to maintain.
Original PR description
## Description of the issue/feature this PR addresses: This PR refactors the `action_validate_moves_with_confirmation` method to improve its extensibility. Currently, the conditions that determine…
## Description of the issue/feature this PR addresses: This PR refactors the `action_validate_moves_with_confirmation` method to improve its extensibility. Currently, the conditions that determine whether an `account.move` requires a confirmation dialog before posting (e.g., future-dated moves) are hardcoded within the action method itself. This design limits extensibility, as customizing the confirmation criteria requires overriding the entire action. This approach leads to code duplication and increases the maintenance burden for custom modules. To address this, the validation logic is decoupled and extracted into a new, protected helper method: `_get_moves_requiring_confirmation`. This change improves the modularity of the `account` module and provides a clean extension point for developers, without altering the existing user-facing behavior. ## Current behavior before PR: The logic for identifying moves that require confirmation is tightly coupled with the `action_validate_moves_with_confirmation` method. Customizing these conditions necessitates a complete override of the method, which is not ideal for maintainability. ## Desired behavior after PR is merged: The confirmation logic is isolated in a new, dedicated `_get_moves_requiring_confirmation` method. This provides a clear and standard extension point, allowing developers to modify the confirmation criteria by simply overriding this new method. This promotes cleaner code, reduces duplication in custom modules, and improves overall maintainability. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
Clearing browser data in Chrome could cause Live Chat to run into an error in the background. This update adds a safeguard so the feature handles that browser event cleanly, improving reliability for users.
Original PR description
**Steps to reproduce:** Install 'Live Chat' Open Chrome Log in as 'Admin' Clear browser data **Current behavior before PR:** Clearing data triggers a storage event where the key parameter is null. An event listener attempts to call a method on this null key, leading to a runtime error. **Desired behavior after PR is merged:** A check has been added to ensure the key is not null, preventing the error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230298
Miscellaneous changes
This update adjusts the Mail module's automated test behavior so saving email HTML content waits for the save action to be available before proceeding. It helps reduce false test failures in Odoo's validation systems, improving release reliability without changing day-to-day user functionality.
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#230375 Forward-Port-Of: odoo/odoo#227484
This update adjusts payroll accounting tests to match recent changes in how employee contract information is stored. It helps keep automated checks reliable without changing day-to-day payroll features for users.
Original PR description
Explanation: hr.contract is reworked into hr.version runbot-229897 Forward-Port-Of: odoo/enterprise#90357
An automated accounting reports test was adjusted to match the updated top bar behavior. This prevents a test from manually opening a menu that now opens automatically, helping keep quality checks reliable without changing user functionality.
Original PR description
As the dropdown of embedded actions of the top bar is now automatically opened when the top bar is enabled and there is only one visible action (see https://github.com/odoo/odoo/pull/208005), we remove a step that would manually open that dropdown. task-5072899
This fixes an issue where custom hour or half-day options could be unintentionally cleared when employees changed the type of time off request. It helps users keep their intended leave settings when switching between compatible time off types, reducing mistakes and rework.
Original PR description
- made the value of checkboxes for `request_unit_half` and `request_unit_hours` stay the same when switching between timeoffs that can have hourly type task-id: 5085389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228981
The AI Copywriter dialog now shows its alternative writing mode labels in the user's selected language. This improves localization consistency and makes the tool clearer for non-English users.
Original PR description
Description of the issue/feature this PR addresses: The alternativemodes on the AI Copywriter dialog are not translated Current behavior before PR: <img width="1079" height="250" alt="image" src="https://github.com/user-attachments/assets/fced9432-b557-44de-9b7c-a31547b7a16b" /> Desired behavior after PR is merged: <img width="1078" height="250" alt="image" src="https://github.com/user-attachments/assets/1499836a-924e-425c-b328-27a378eae62a" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a small formatting issue in the sales timesheet invoicing wizard that could cause errors for some customized systems. It improves compatibility for businesses using custom integrations or Python-based view processing without changing normal user workflows.
Original PR description
Versions -------- - 17.0+ Issue ----- Some customizations may parse XML views using Python, in which case the `date_start_invoice_timesheet` field could return an error, as the `options` attribute uses a Javascript boolean `true`. Solution -------- Use `'true'`, which will get parsed as `true` in JS via `archParseBoolean`. Forward-Port-Of: odoo/odoo#230278
This fixes an issue in Firefox where users could accidentally type into a website search bar while editing a page. The change keeps the search bar stable during editing, preventing accidental content changes and matching behavior seen in other browsers.
Original PR description
It's possible to type something inside of a searchbar while in the edit mode on Firefox, which is not the expected behavior and which is not the case in other browsers, for example, Chrome. Steps to see the issue: - Open Website and start editing - Drop a searchbar - Click on the input - Type something => It will remove the searchbar and add text to the searchbar button. This happens because of the different behavior on Chrome and Firefox of `pointer-events`. The searchbar input has `pointer-events` set to `none` and in Chrome it blocks any activity on the input, including `beforeinput` events, but Firefox doesn't. This commit fixes this problem making the searchbar input not `contenteditable`. task-5144517
This fix prevents selected start and end hours from changing when an employee switches between hourly time off types. It helps avoid accidental changes to leave requests and keeps the requested time accurate.
Original PR description
- made `request_hour_from` and `request_hour_to` stay unchanged when switching between time off types task-id: 5085389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue in the Recruitment app where some demo job offers showed a warning and blocked users from editing their properties. The affected demo jobs now use the current company automatically, so configuration works as expected.
Original PR description
Steps to reproduce: - Go to the Recruitment app - Open the configuration panel for the demo offer for CTO, Consultant, Experienced Developer or Human Resources Manager - Click on the cogwheel - Select "Edit properties" - A warning appears and you can't edit properties Reason: The definition of the job demo data sets the "company_id" field to False, which causes an error when you try to edit the properties. How it was fixed: By removing the explicit value of False for the field "company_id", it will auto assign the field to the current company and allow the properties to be edited correctly. Task ID: 5093032 Forward-Port-Of: odoo/odoo#227633
fix an accidental change during a forward port from "Out of Contract" to "Out of version" task-5075058 Forward-Port-Of: odoo/enterprise#94144
Original PR description
fix an accidental change during a forward port from "Out of Contract" to "Out of version" task-5075058 Forward-Port-Of: odoo/enterprise#94144
Creating a new website page while using mobile view no longer causes an error. This helps website editors work reliably across device previews without being interrupted by a technical traceback.
Original PR description
Steps to reproduce: 1.open website. 2.switch to mobile view. 3.click new button and select new page option 4.a traceback occurs. Before this commit: Creating a new page in mobile view raised a traceback because contentDocument was undefined due to an incorrect selector. After this commit: The issue is resolved by using the correct querySelector value, ensuring that contentDocument can be accessed properly. Forward-Port-Of: odoo/odoo#227218
Forum navigation now has more consistent breadcrumb and heading typography. This makes forum pages easier to scan and creates a more polished experience for visitors.
Original PR description
This commit fixes typography in the forum by refining the style of breadcrumbs and headings, making navigation more consistent. | Before | After | |--------|--------| | <img width="369" height="104" alt="Screenshot 2025-09-16 at 10 54 29" src="https://github.com/user-attachments/assets/545ade80-beb9-4846-a83a-6cccbaff66d5" /> | <img width="341" height="106" alt="Screenshot 2025-09-16 at 10 53 54" src="https://github.com/user-attachments/assets/f8752432-c1ea-4f63-a48c-eb1b2a4316d4" /> | task-5079831 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents Odoo from recreating the default employee administrator record during updates. It helps companies that have already configured their own HR administrator avoid unwanted default data returning after upgrades.
Original PR description
The `employee_admin` is a default admin option. Later when clients set up their work flow they set up their own admin employee. This record is not present, and it doesn't make sense recreate it with every update. 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#230250 Forward-Port-Of: odoo/odoo#228117
The AI attachment handling now recognizes PDFs that are labeled with an alternate PDF format marker. This helps prevent valid PDF attachments from being missed when their file type is stored slightly differently.
Original PR description
## FIX Extend the PDF detection condition in `_get_attachment_content` to handle attachments with mimetype 'application/pdf;base64' in addition to 'application/pdf'.
Payroll calculations now retrieve payslip line information in a more targeted way, avoiding unnecessary system-wide cache refreshes. This should reduce extra processing and help keep payroll computations more reliable and efficient without changing user workflows.
Original PR description
Before this commit, when a compute needed to fetch the payslip lines values, we need to flush all to be able to correctly get the values thanks to a sql query. The problem is the `flush_all` will invalidate all recordset in cache and will do more than expected. This commit converts the sql query made to fetch the payslip lines values into a read_group to be able to remove the flush_all and let the orm invalidates the recordset/fields needed to correctly get what we want.
Navigation items no longer appear focused simply because the user hovered over them before an update. This prevents confusing visual focus states and keeps keyboard-style navigation indicators aligned with the user's actual focus.
Original PR description
This commit fixes an issue where some navigation items would be focused after a patch if it was hovered before. Now navigation items are not set as active when hovered, only if the container already was navigable. This commit also remove the "focus" class from any navigable items when the focus moves to a target that's outside of navigatable container. Task: [5145033](https://www.odoo.com/odoo/project.task/5145033) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The AI assistant now considers planned activities from the chatter alongside existing messages when building its prompt context. This helps produce responses that better reflect upcoming tasks and commitments recorded on a business record.
Original PR description
Append any planned activities to the chatter messages to be sent as a part of the prompt's context with the rest of the messages. task-id-5079055 Forward-Port-Of: odoo/enterprise#95764
Manual bank account creation now assigns the new journal to the same company as the online bank connection. This prevents errors when a user's current environment company differs from the bank connection's company.
Original PR description
Before this commit, when a user does a manual bank account creation, we didn't pass the company id for the journal creation. It implies that we use the environment value which is problematic because it could be different from the one account online link one leading to an error. The aim of this commit is ensuring that we pass, as company_id the same value as the one we have on account online link. no task id
This fix ensures Indian payroll template setup data is copied with all required fields. It prevents missing payroll configuration values when templates are loaded, helping reduce manual correction during setup.
Original PR description
in this commit, fixes issue when load template data fields
values didn't get copy.
issue:
missing fields in list of whitelisted_fields.
task-5155428The rental schedule once again shows products grouped as expected, fixing a regression introduced when the schedule became editable. This helps users navigate rental lines more easily and keeps the schedule view consistent with prior behavior.
Original PR description
This commit restores the `group_expand` functionality for the product field in the rental schedule, which was inadvertently removed in [^1] when the schedule was made editable. [^1]: https://github.com/odoo/enterprise/pull/88689
This fix ensures spreadsheet-related tests load the complete charting tools they need. It prevents later tests from failing unpredictably when specialized chart types such as treemap or geo charts are required.
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/web#id=5003595&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#96697
A typo was corrected in the Attendance app’s department grouping option. This helps users reliably group attendance records by department when reviewing employee attendance data.
Original PR description
- Fixed typo in groupby for 'department' task-id - 5109185 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228334
Creating a goal from an employee appraisal now correctly assigns the goal to the employee being appraised instead of the current user. Goals created directly from the Goals menu no longer prefill employee or manager fields, reducing incorrect records and cleanup work.
Original PR description
If you go on _appraisals -> any employee -> goals smart button -> new_, it will populate the employee field with the current user. Instead, the field should be filled by the appraisal's user. If the goal is created from the "Goals" menu item directly, then no user / manager should be put by default in the goal's fields. I changed the field's default value to use the employee already passed in the context. I also added some tests to make sure the bug doesn't happen again. task-5048292 Forward-Port-Of: odoo/enterprise#93522
Related: https://github.com/odoo/design-themes/pull/1167 Related: https://github.com/odoo/industry/pull/1204 Related: https://github.com/odoo/enterprise/pull/96645
Original PR description
Related: https://github.com/odoo/design-themes/pull/1167 Related: https://github.com/odoo/industry/pull/1204 Related: https://github.com/odoo/enterprise/pull/96645
Related: https://github.com/odoo/design-themes/pull/1167 Related: https://github.com/odoo/industry/pull/1204 Related: https://github.com/odoo/odoo/pull/230615
Original PR description
Related: https://github.com/odoo/design-themes/pull/1167 Related: https://github.com/odoo/industry/pull/1204 Related: https://github.com/odoo/odoo/pull/230615