Wednesday, September 23, 2026
3 changes · master
Code cleanup and technical improvements
The messaging menu now determines which tabs to show more directly and avoids a brief counter mismatch while messages are loading. This helps prevent selected tabs, such as bookmarks, from disappearing unexpectedly during message updates while keeping the change mostly internal.
Original PR description
Before this PR, the menu reads its tabs from two relations, allTabs and visibleTabs. Each tab fills them from its own side, with messagingMenuAsTab and messagingMenuAsVisibleTabs, two eager computes…
Before this PR, the menu reads its tabs from two relations, allTabs and visibleTabs. Each tab fills them from its own side, with messagingMenuAsTab and messagingMenuAsVisibleTabs, two eager computes returning the singleton menu, the second one only while the tab can be shown app wide. There is only one menu, so allTabs ends up holding every tab record, and visibleTabs the shown ones. The second commit turns allTabs and visibleTabs into computeds over the records of the tab model, so that the four relation fields and the two computes that maintain them go. Note that messagingMenuAsTab also hosted the counters catch-up of a tab made after initializeCountersFetcher ran, which moves to an onChange on the tab, in _catchUpCounter. The first commit comes with it. The counter of a tab is one message short while a message from the tab's own fetch sits in the store without being linked to the tab yet, and a memoized visibleTabs makes activeTab recompute inside that window: a tab hiding itself on a zero counter reads as hidden there, and the tab the user selected is dropped for the first visible one. Three tests fail on the memoization without that commit: "unbookmark all", "sidebar: change active" and "can search messages".
This update replaces an outdated internal testing helper with its current supported equivalent in the website and HTML builder test suites. It helps keep developer tests reliable and aligned with the latest platform standards without changing customer-facing website builder behavior.
Original PR description
Since commit [1] deprecated `patchWithCleanup`, we need to use `patch` instead of it. [1]: https://github.com/odoo/odoo/commit/05ff795907445f0310d0e47fff19d084f034af77
This update replaces an outdated internal testing helper in the AI website module with its supported alternative. It helps keep the module maintainable and aligned with current platform standards without changing customer-facing behavior.
Original PR description
Since commit [1] deprecated `patchWithCleanup`, we need to use `patch` instead of it. [1]: 05ff795907445f0310d0e47fff19d084f034af77