Tuesday, October 28, 2025
7 changes · 19.0
Enhancements to existing features
This update simplifies how website builder options are defined and shared across related tools, making it easier for teams to maintain and extend builder features. It affects website features such as live chat, appointments, and rental search, with no expected direct disruption for end users.
Original PR description
The commit: 1. use static property to configure a builder option 2. introduce the concept of dependencies to access the plugin's shared in builder option 3. make a plugin context the same for Plugin,…
The commit:
1. use static property to configure a builder option
2. introduce the concept of dependencies to access the plugin's shared
in builder option
3. make a plugin context the same for Plugin, BuilderOption and
BuilderAction to have the same API in each class.
Before this commit, to define an option, we had to define a javascript
object that would contain the information of the option within the
`builder_options` resource.
```js
class MyPlugin extends Plugin {
resources: {
builder_options: [
{
selector: "div.selector",
template: "my.owlTemplate",
cleanForSave() {}
// ... other option props
}
]
}
}
// For a custom component
class MyPlugin extends Plugin {
resources: {
builder_options: [
{
selector: "div.selector",
template: MyCustomComponent,
cleanForSave() {}
// ... other option props
}
]
}
}
class MyCustomComponent extends BaseOptionComponent {
// ...
}
```
When building anything for the builder, there is 3 classes that are
important: `Plugin`, `BaseOptionComponent`, `BuilderAction`.
In practice, the option object defined in builder_options feels
strange. On the other hand, making the configuration of the option as
a static property of the component somehow feels simpler as everything
related to that option is defined in the same class.
```js
class MyPlugin extends Plugin {
resources: {
builder_options: [MyCustomComponent]
}
}
class MyCustomComponent extends BaseOptionComponent {
static template = "my.owlTemplate";
static selector = "div.selector";
static cleanForSave(context) {}
// ...
}
```
To have the same mental context in the 3 important class, they all
share the same API (`dependencies`, `dispatchTo`, `getResource`, ...)
(see `Editor.getPluginContext`)
To access a plugin shared method, it's now the same for `Plugin`,
`BuliderAction` and `BaseOptionComponent`:
```js
class MyCustomComponent extends BaseOptionComponent {
static selector = "mySelector";
static dependency = "myPlugin";
myMethod() {
this.dependencies.myPlugin.pluginMethod();
}
}
```
To access a resource, dispatch, ...:
```js
class MyCustomComponent extends BaseOptionComponent {
static selector = "mySelector";
myMethod() {
const resource = this.getResource('myResource');
}
}
```
Forward-Port-Of: odoo/enterprise#94102The website HTML builder’s internal option framework was streamlined so developers can define and reuse builder behavior more consistently. This makes future website editing features easier to maintain and extend, with limited direct impact on end users.
Original PR description
1. use static property to configure a builder option 2. introduce the concept of dependencies to access the plugin's shared in builder option 3. make a plugin context the same for Plugin, BuilderOption and BuilderAction to have the same API in each class. See https://github.com/odoo/odoo/pull/220746 Forward-Port-Of: odoo/odoo#220746
The Colombian reports module test coverage was updated to match new account grouping rules. This is an internal quality improvement that helps ensure trial balance reports continue to be validated correctly without changing day-to-day user workflows.
Original PR description
task-5165175
The Colombian localization now includes predefined account groups to make accounting reports easier to read and better organized. This improves report presentation for new configurations without changing existing customer-defined account groups.
Original PR description
For nicer reports. task-5165175 PR note: no explicit upgrade script, because it likely will cause a mess if users already have `account.group`s defined.
The product information popup in Point of Sale now appears after a shorter long press on a product card. This makes the interaction feel quicker and closer to common mobile behavior, improving usability for sales staff on touch devices.
Original PR description
Before this PR, in order to reach the product information on the frontend, the user had to longpress the product card for 2 secondes. This PR aims to reduce the time necessary to display the product info popup, getting closer to what is done by most mobile OS can provide. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes the accounting tax calculation helper automatically extract records from the grouping key. It reduces the chance of manual handling errors and makes related tax grouping behavior easier to maintain.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233228 Forward-Port-Of: odoo/odoo#231947
Demo data for WhatsApp accounts has been added back. This helps teams evaluate and demonstrate WhatsApp-related features more easily in demo or test environments.
Original PR description
Purpose of this commit, Adding back the demo data for whatsapp accounts. revert: https://github.com/odoo/enterprise/pull/97138 task-5172791 Forward-Port-Of: odoo/enterprise#98135