Monday, September 21, 2026
2 changes · master
Enhancements to existing features
This change introduces a lighter user profile for inventory-related work, allowing users to perform normal stock actions while only seeing the Shopfloor and Barcode apps. It also broadens maintenance equipment access so users can view equipment more easily across the maintenance area.
Original PR description
* : stock,mrp,maintenance Light users can do every action normal users can do, the difference is that they only have 2 apps, shopfloor and barcode. Task: 6469225 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#286681
The AI website builder can now add JavaScript when HTML and CSS alone cannot meet a user's request, enabling richer interactive page elements. Added safeguards review generated scripts, track AI-made page changes, and let users pause scripts while editing or translating content.
Original PR description
This commit enables ai to add javascript to the page, when it's needed. By default, scripts are added as a last resort. Firstly, AI tries to satisfy the user's prompt with HTML/CSS changes, and when…
This commit enables ai to add javascript to the page, when it's needed. By default, scripts are added as a last resort. Firstly, AI tries to satisfy the user's prompt with HTML/CSS changes, and when it's not possible, we allow AI to add javascript. Because static analysis of custom js scripts is quite limited, a dedicated LLM safety reviewer is introduced to validate proposed code. To ensure safety, the review fails if any vulnerability or suspicious pattern is detected, or if the reviewer call itself fails. In addition, to make sure ai scripts don't mess up the history, and that we properly clean up everything that ai generated, we prompt AI to wrap every part of the code that changes the DOM interactively in a wrapper `__aiProtectMutations`, which handles mutations done right after this call, so we can easily track the changes made by ai script, in order to easily reset modifications made by ai before saving the page, or when entering the edit mode. Also, in the edit mode this wrapper ignores the mutations made by the script. To make it more-or-less work acceptably, we stop the execution of ai generated scripts on entering the translation. Also, we add a builder option to pause the execution of the ai scripts in a snippet, so users can easily edit it. We prompt AI not to hardcode strings on state change, but instead have a few different blocks with necessary text and show/hide them with d-none. This way we show every text block when scripts don't run to be able to edit them. task-6144157