Daily updates from Odoo
Tuesday, July 28, 2026
4 changes
Code cleanup and technical improvements
This update simplifies how the Social app handles translated text in comment streams. It is an internal cleanup that keeps behavior the same while making the code easier to maintain.
Original PR description
This commit removes a `env._t`. `_t` is env independant.
The UrbanPiper point of sale integration was updated as part of Odoo's Owl 3 migration. This keeps the module aligned with the newer platform framework and helps preserve stability without changing business functionality.
Original PR description
As part of the Owl 3 migration, this pr aims to replace onWillUpdateProps hook with the appropriate Owl 3 alternatives.
This update modernizes internal grid and Gantt view code by replacing deprecated frontend tools and cleaning up related documentation. Users should not see functional changes, but the work helps keep timesheet, planning-style grid displays, and Gantt views easier to maintain and evolve.
Original PR description
See commit messages for details. Intended merge method: `rebase-ff`
This refactor updates several Enterprise modules to use the current web framework reference system after older compatibility mechanisms were removed. It helps keep AI, Knowledge, Planning, Spreadsheet, Stock Barcode, and Map features maintainable and aligned with the latest platform architecture, with no intended change to business workflows.
Original PR description
The `t-custom-ref` directive and the compat `useRef` / named-ref mechanism were removed from the web compatibility layer. Migrate the last enterprise usages to native Owl 3 `t-ref` + signals,…
The `t-custom-ref` directive and the compat `useRef` / named-ref mechanism were removed from the web compatibility layer. Migrate the last enterprise usages to native Owl 3 `t-ref` + signals, following the community removal patterns.
t-custom-ref -> native t-ref:
- ai: readonly_voice_transcription, voice_transcription
- knowledge: embedded_clipboard, readonly_foldable_section (editableDescendants -> `t-ref="this.editableDescendantRefs.<name>"`)
- web_map: map_popover (rootRef signal field)
- spreadsheet_edition: calendar_button (buttonRef signal + resolveRefEl)
- planning: planned_date_range_with_allocated_hours (xpath selector now matches the migrated `web.DateTimeField` root `t-ref`)
compat useRef -> signal refs:
- stock_barcode: StockBarcodeFormRenderer used `useRef("compiled_view_root")`; FormRenderer now owns `rootRef = signal.ref()` (bound by the form compiler), so use the inherited `this.rootRef` and read it through resolveRefEl.
- web_map: MapCard used `useRef("root")`; use the `this.rootRef` signal it inherits from Card (bound in Card's template).