Daily updates from Odoo
Tuesday, August 4, 2026
4 changes
1 change
Code cleanup and technical improvements
The live chat helpdesk information panel was simplified by removing a repeated check around the Open tickets section. This reduces the chance of display issues and adds test coverage to keep the helpdesk ticket information stable for users.
Original PR description
Enterprise counterpart of "[FIX] crm_livechat, *: prevent crash in the info panel", which explains why the condition of the caller goes away. This commit drops the same condition on the "Open tickets" block, and covers that block with a test. https://github.com/odoo/odoo/pull/280430
3 changes
Code cleanup and technical improvements
The VOIP audio manager now tracks changes to call and audio settings in a cleaner way, ensuring observers are properly cleaned up when no longer needed. This reduces the risk of hidden background work building up over time without changing the user-facing calling experience.
Original PR description
Enterprise counterpart of "[REF] mail: drop the onChange queue for owl effects", which explains the API. Before this commit, the audio manager observes three fields by name and drops the dispose function each observer returns, so nothing ever stops those observers. This commit turns the three observers into dependency lists on the rtc and settings records, keeping `initialRun: false`: the refresh at the end of setup does the initial sync. The records dispose these observers. The audio manager tests take the real store: a fake store has no record to observe. One of them counted the calls to `enumerateDevices` to know that the status was refreshed, and with the real store there are two audio managers, the one of the voip service and the one the test builds, both enumerating the devices. That test counts the refreshes of its own manager instead. https://github.com/odoo/odoo/pull/279818
This update renames internal enrollment-related campaign fields to make their purpose clearer and easier to maintain. It also adds safeguards around the enrollment uniqueness field so future campaign setup is more reliable, with no intended change to user-facing behavior.
Original PR description
In order to ease understanding, prepare future changes and ease grep through code, rename enroll-specific fields on campaign model * domain -> enroll_domain * unique_field_id -> enroll_unique_field_id No functional change should come with this PR. Task- Prepares Task-
VoIP configuration such as credentials, device number, and do-not-disturb timing is now read from the dedicated user settings record instead of a mixed local settings area. This aligns VoIP with the newer settings structure, making preferences clearer and easier to maintain without changing the visible user experience.
Original PR description
Before this commit, the voip columns of res.users.settings were read off store.settings, the record that mixed the server row with the local preferences of the device. Reminder that the mail counterpart of this commit splits the two: res.users.settings becomes a record of its own, reached from its owner, store.self_user.res_users_settings_id, and store.settings keeps only the local preferences. This commit declares the voip columns on that record, sends them through _store_settings_fields, and reads a credential, the device number and the do-not-disturb time off it. Note that the field declarations sit in core/common, reachable from every bundle, while the behavior stays in core/web. https://github.com/odoo/odoo/pull/279128