Tuesday, December 30, 2025
7 changes · saas-19.1
Enhancements to existing features
This update enhances the AI voice transcription feature with a redesigned user interface and significant backend improvements. The changes include a more responsive mobile experience, optimized audio processing, and a refined transcription workflow for better accuracy and usability.
Original PR description
This PR introduces a bunch of UI/UX improvments as well as some refactoring to the existing behaviours. Among the UI improvments, it adds: - a new `AudioVisualizer` component which can be sized…
This PR introduces a bunch of UI/UX improvments as well as some refactoring to the existing behaviours. Among the UI improvments, it adds: - a new `AudioVisualizer` component which can be sized dynamically, - uses the standard `blockquote` block for rendering transcriptions, - Completely change the controls of the component on mobile to make it more reactive and usable. Specifically by making the navigation and configuration controls use the `Dropdown` component when on mobile, - The transcription visuals are now divided in three main steps: listening step to add the "AI is listening..." text, delta step where the transcription bits are added to the current paragraph, and the completed step which happens on longer breaks to create a new paragraph. As for the refactoring: - Removal of all the embedded states, keeping them internal to the component and using standard browser API's to observe changes (i.e. the `MutationObserver` to notify changes on the summary), - The component now relies on the descendents to apply changes during the transcription process, getting rid of the ids, - Splitting of the `VADAudioRecorder` into separate classes: `AudioProcessor` and `RealtimeClient`. Performing audio recording, and WebSocket operations respectively, - Making the audio processing, and websocket operation rely on singletons to avoid issues when the editor has to be reloaded in case of synchronisation issues, - The audio processing was also simplified, and merged with the `PCM16AudioProcessor` using two new events: "vad" for client voice detection, and "audio" for sending the regular audio information. The buffer size was tweaked from 6000 to 2400, to prevent early cut-off of the audio by the server_vad. All the pre-filtering of the audio was also removed which improves the overall quality of the transcript. task-5153836
This update enhances the demo data within the Odoo Enterprise system to facilitate thorough testing of Mexican payroll features, specifically CFDI validation and the new 'CFDI batch generation' functionality. A realistic working schedule, mirroring common practices in Mexican companies, has been incorporated to improve the accuracy of testing and validation.
Original PR description
Update the DEMO DATA so we can validate CFDI's and XML for all the PAC's and to test the new "CFDI batch generation" feature. Create a new working schedule, this schedule it's the most used in MX companies. target: 19.0 task-5239031 Forward-Port-Of: odoo/enterprise#100557
This pull request enhances the user experience of the Odoo website builder by refining the visual design and usability. Specifically, it addresses issues with column alignment, improves image placement options, and adds subtle UI adjustments for better clarity and accessibility.
Original PR description
*: html_editor, website, website_forum This commit improves the UI and UX of the website builder. - Replace the trash icon with a cross icon for removing a card. - Add tooltips to several options (show header, scroll down button colors). - Force the highlight dropdown background to stay light in dark mode for better visibility. - Slow down the text animation on tooltips below the text area when creating a new forum post. - Center the label of the "file upload" field in forms. - Add more spacing between "unlink" and "advanced options" in the link popover. task-5353509 Forward-Port-Of: odoo/odoo#239226
Resolved issues and error corrections
This update resolves a technical issue where validation errors in the Point of Sale (POS) system weren't being properly communicated. The fix ensures that errors detected during validation are correctly propagated, preventing the system from incorrectly proceeding without addressing potential problems. This improves the reliability of POS transactions.
Original PR description
This PR is related to https://github.com/odoo/enterprise/pull/101365. In the above PR, a l10n test fails because an error is not correctly propagated by the method overriding `finalizeValidation`. In fact, the method `OrderPaymentValidation.shouldHideValidationBehindFeedbackScreen` requires the return value of `finalizeValidation` to determine whether an error occurred or not. https://github.com/odoo/odoo/blob/9e04aadb83d482d05fc2fa66fa3c3bebb6ac1528/addons/point_of_sale/static/src/app/utils/order_payment_validation.js#L96-L99 In the methods overriding `finalizeValidation`, if the return value is not propagated, the potential error is lost and the `shouldHideValidationBehindFeedbackScreen` will attempt to move onto the next screen anyway. (related to) opw-5171035 Forward-Port-Of: odoo/odoo#239448
This update fixes a problem where reward lines weren't appearing correctly in restaurant orders when switching between the POS and the backend. The fix ensures reward lines are properly created and maintained, preventing them from disappearing after switching between systems. This improves the accuracy of order totals and customer rewards.
Original PR description
pos*: point_of_sale, pos_restaurant_loyalty Steps to reproduce: - Open a table in the Restaurant UI. - Click the Course button. - Add products that trigger a reward line creation. Issues: - The reward line is not visible in the order. - After switching to the backend and returning to the POS, no order lines are visible for that order. Fixes: - Ensure the reward line is created within the proper course. - Prevent deletion of the reward line when switching between backend and POS. Task: 5215920 Forward-Port-Of: odoo/odoo#241007 Forward-Port-Of: odoo/odoo#233919
This update corrects a bug in the Manufacturing app where user-provided serial numbers were being overwritten by a default serial number. Now, when a list of serial numbers is entered, it's correctly used, ensuring accurate tracking of products with unique serials. This improves the reliability of production orders.
Original PR description
### Context: In the Manufacturing app, users can create Manufacturing Orders to create multiple products while assigning a unique serial number to each. Users can either generate a list of serial…
### Context:
In the Manufacturing app, users can create Manufacturing Orders to
create multiple products while assigning a unique serial number to each.
Users can either generate a list of serial numbers starting from a
first serial number, or provide a list of serial numbers themselves.
### Issue:
When providing a list of serial numbers without modifying the first
serial number field (`mrp.production.serials.lot_name`), the inputted
list is not used. Instead, another list starting with the unmodified
`lot_name` is generated and used.
### Cause:
In the `MrpProductionSerials.action_apply` method, the serial numbers
are updated if the first serial number field (`self.lot_name` in the
following code snippet) is left unchanged. This behavior overwrites
the list of serial numbers provided by the user.
https://github.com/odoo/odoo/blob/ac6960dc553088894e688bcc0f4a49245aa02d6c/addons/mrp/wizard/mrp_production_serial_numbers.py#L63-L67
### Steps to reproduce:
1. Install *Manufacturing* (`mrp`)
2. In Settings > Inventory, toggle *Lots & Serial Numbers*
3. Create a product tracked *By Unique Serial Number*
4. Create a Bill of Materials for the product
- The BoM is required but its content is not relevant.
Adding a single component with a quantity of one is enough.
5. Update the quantity of the component to be able to produce two products.
6. In *Manufacturing*, create a new *Manufacturing Order*.
- Select the product and set the quantity to 2, then *Confirm*
7. Click *Generate Serial* or *Produce All*
8. **Do not** modify the *First SN* field, but write two serial numbers
(one per line) in the field below, then click *Apply*.
9. Click the *Serial Numbers (2)* smart button. The serial numbers we
used in step 8 were overwritten by the default *First SN* and its following SN.
### Solution:
This commit addresses the second bug described in https://github.com/odoo/odoo/commit/20158a115ef3dfb9fe2dd5103d3bed7e87e37940 without ever renaming
the serial numbers used for the MO. Now, the `product_id.next_serial`
matches a serial number from the list of provided/generated serial numbers.
The list of serial numbers is sorted to correctly handle cases such as:
```
First SN (self.lot_name) = '0000001'
self.serial_numbers = ['0000003', '0000002', '0000001']
```
In this scenario, we expect the *First SN* of the next MO to start at '0000004'.
The `else` clause of the condition was removed, as it would only be executed
if the `stock.sequence_production_lots` were removed. In that case,
`next_by_code('stock.lot.serial')` would return `False`, preventing
`lot_name` (or `next_serial`) from being updated correctly.
### Reason for second commit
The issue fixed by the first commit was replicated by https://github.com/odoo/odoo/commit/2548fd8d7f3b53a62089ac9122bd17524500ea1a in the subcontracting module (`mrp_subcontracting`).
The first commit fixes the issue in the Manufacturing app (`mrp`), while the second commit fixes the issue in the subcontracting module (`mrp_subcontracting`). The fix and the test are similar in both commits.
opw-5373745
Forward-Port-Of: odoo/odoo#238678This update fixes an issue where search suggestions were hidden behind product categories when using the 'Grid' layout. The fix ensures that search suggestions are always visible and accessible for users, improving the product discovery experience. This was caused by a conflict in how the grid layout managed z-index values.
Original PR description
Steps to reproduce: =================== - Add a product categories block with a search bar in the inner content of the block, like "s_product_list". - Drag a "Search" snippet inside of the block in…
Steps to reproduce: =================== - Add a product categories block with a search bar in the inner content of the block, like "s_product_list". - Drag a "Search" snippet inside of the block in top of products categories - Change the layout to "Grid" & Save. - Type in the search bar to trigger autocomplete suggestions. -> The suggestions appear behind the product categories and are not visible. Cause: ====== When a searchbar snippet is placed inside a section using grid mode, the autocomplete dropdown was hidden behind sibling grid items. This occurred because the grid layout applies inline z-index to each column (via `_placeColumns` `in grid_layout_utils.js` (See [1])), creating stacking contexts that trapped the dropdown. So once you change to grid mode layout `_toggleGridMode` function will be triggered which will call `_placeColumns` that will assign z-index; (See [2]) Solution: ========= Override the inline z-index on grid items containing a searchbar [1]: https://github.com/odoo/odoo/blob/d4411c27b469e5dcc526b5b1f8ea4498f2b08567/addons/web_editor/static/src/js/common/grid_layout_utils.js#L225 [2]: https://github.com/odoo/odoo/blob/d4411c27b469e5dcc526b5b1f8ea4498f2b08567/addons/web_editor/static/src/js/common/grid_layout_utils.js#L138 opw-5392011 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241478 Forward-Port-Of: odoo/odoo#239607