Non-stored related many2many fields no longer get a relation table, the same as non-related ones. Before, two such fields could end up sharing a table, so reading one filled the other.
The amount due on journal entries is now computed live in the form. It also fixes unsaved invoice lines disappearing when an outstanding credit was added before saving.
The video tab now accepts direct video file URLs, for example from a CDN, not only the eight supported platforms. It is behind the allowVideoFile flag, which the website builder enables.
Odoo 20's light user type is wired into the standard apps. Companion commits limit light users in stock, MRP and maintenance to the Shop Floor and Barcode apps. Check custom access rules and group checks against the new light groups.
New l10n_vn_hr_payroll and l10n_uz_hr_payroll modules. The Uzbek one adds salary, pension, severance and social tax accounts. The payroll engine itself is in Enterprise.
A search view date filter can now name an end field: <filter date="date_start" end_date="date_stop"/>. Its periods then match records that overlap the searched period, not only the ones starting in it. Useful for custom models with start and end dates.
Reports that repeat the same barcode or QR code on every page now render each image once per transaction. The benchmark shows about 600× faster rendering on a 900-page report.
Low-balance warnings, auto-refill and credit purchases are now managed on one page served by the IAP server, instead of being split between the database and IAP.
Searching archived records through a relation, such as archived BoMs by an archived product, returned nothing. The ORM now keeps archived records in the inner search when the outer domain asks for them.
YoutubePlugin was never registered and called a route that does not exist. Pasting a YouTube URL still works through VideoPlugin. Remove any custom code that imports YoutubePlugin or YOUTUBE_URL_GET_VIDEO_ID.
A new "Disable RPC Cache" debug menu item sets cache=0 in the URL, so cached RPCs go to the network. It helps profile menus and actions whose slowness the cache hides.