<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Framework (ORM, server, tools) (framework) · Odoo Digest</title><description>Every change to the Odoo framework module across tracked versions.</description><link>https://odoodigest.com/</link><item><title>Breaking: Upgrade script migrates icons to Material Symbols</title><link>https://odoodigest.com/changes/5f1412f2/</link><guid isPermaLink="true">https://odoodigest.com/changes/5f1412f2/</guid><description>The SCSS that kept fa-* and oi-* classes working was removed when the web client switched to Material Symbols. The new upgrade_code script rewrites icon usages in XML, JS and other files of custom modules. Run it on your addons before upgrading to 20.0.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Heads-up: Domain condition warnings point to their caller</title><link>https://odoodigest.com/changes/5e692143/</link><guid isPermaLink="true">https://odoodigest.com/changes/5e692143/</guid><description>Warnings about unsupported domain values, such as NewId or records, and about upper-case operators now name the code that built the domain. Run your test suite and outdated patterns in custom modules are easy to find.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Breaking: Foreign key errors may arrive as RestrictViolation</title><link>https://odoodigest.com/changes/b5fff52e/</link><guid isPermaLink="true">https://odoodigest.com/changes/b5fff52e/</guid><description>Depending on the PostgreSQL version, foreign key violations can be raised as RESTRICT violations. The ORM now treats both the same way, and custom code catching only ForeignKeyViolation should do the same.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Fix: Increase body size limit</title><link>https://odoodigest.com/changes/d2646748/</link><guid isPermaLink="true">https://odoodigest.com/changes/d2646748/</guid><description>[FIX] iot_box_builder: increase body size limit</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Fix apt dependencies</title><link>https://odoodigest.com/changes/83855365/</link><guid isPermaLink="true">https://odoodigest.com/changes/83855365/</guid><description>[FIX] iot_box_builder: fix apt dependencies</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Fallback to single record on compute accessible records</title><link>https://odoodigest.com/changes/56970657/</link><guid isPermaLink="true">https://odoodigest.com/changes/56970657/</guid><description>[FIX] orm: fallback to single record on compute accessible records</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Ics timezone generation rejected by Outlook</title><link>https://odoodigest.com/changes/f825ff68/</link><guid isPermaLink="true">https://odoodigest.com/changes/f825ff68/</guid><description>[FIX] odoo: ics timezone generation rejected by Outlook</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Upgrade_code should not use load_module</title><link>https://odoodigest.com/changes/87f9f54b/</link><guid isPermaLink="true">https://odoodigest.com/changes/87f9f54b/</guid><description>[FIX] cli: upgrade_code should not use load_module</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Don&apos;t crash _() on a local &apos;user&apos; that is no user</title><link>https://odoodigest.com/changes/9382d11b/</link><guid isPermaLink="true">https://odoodigest.com/changes/9382d11b/</guid><description>[FIX] tools: don&apos;t crash _() on a local &apos;user&apos; that is no user</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Fix: Field.__str__ crashes on a not-yet-named field</title><link>https://odoodigest.com/changes/971f6c4c/</link><guid isPermaLink="true">https://odoodigest.com/changes/971f6c4c/</guid><description>[FIX] base: Field.__str__ crashes on a not-yet-named field</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>framework</category></item><item><title>Fix: Run the modules&apos; neutralization in dependency order</title><link>https://odoodigest.com/changes/66a7bb51/</link><guid isPermaLink="true">https://odoodigest.com/changes/66a7bb51/</guid><description>[FIX] core: run the modules&apos; neutralization in dependency order</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Fix: Trust iterators in `safe_eval`</title><link>https://odoodigest.com/changes/db11aae4/</link><guid isPermaLink="true">https://odoodigest.com/changes/db11aae4/</guid><description>[FIX] tools: trust iterators in `safe_eval`</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Add xwayland dependency</title><link>https://odoodigest.com/changes/acb6e1ae/</link><guid isPermaLink="true">https://odoodigest.com/changes/acb6e1ae/</guid><description>[FIX] iot_box_builder: add xwayland dependency</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Align PDF report runner mocking</title><link>https://odoodigest.com/changes/6159da4b/</link><guid isPermaLink="true">https://odoodigest.com/changes/6159da4b/</guid><description>[FIX] tests,base_report_*: align PDF report runner mocking</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Heads-up: upgrade_code scripts are now tested</title><link>https://odoodigest.com/changes/ea190f52/</link><guid isPermaLink="true">https://odoodigest.com/changes/ea190f52/</guid><description>Every upgrade_code script now runs in the test suite, so the scripts that rewrite custom code for new versions keep working. Use the &apos;# test: false&apos; and &apos;# test: skip&apos; markers for scripts that can&apos;t be tested this way.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Heads-up: parent_path fixed on databases with non-C collations</title><link>https://odoodigest.com/changes/cef775ff/</link><guid isPermaLink="true">https://odoodigest.com/changes/cef775ff/</guid><description>On databases with glibc collations such as en_US.UTF-8, moving a node could leave its descendants with a stale parent_path. The range now uses COLLATE &quot;C&quot;, and the parent_path index is rebuilt to match.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Performance: Batch computes survive forbidden records in prefetch</title><link>https://odoodigest.com/changes/2401b31a/</link><guid isPermaLink="true">https://odoodigest.com/changes/2401b31a/</guid><description>When the prefetch set held records the user can&apos;t read, non-stored computes fell back to one query per record. They now stay batched, which matters for portal and public pages.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Clear error for incomplete property definitions</title><link>https://odoodigest.com/changes/b6f90f80/</link><guid isPermaLink="true">https://odoodigest.com/changes/b6f90f80/</guid><description>A property definition without a name now raises the documented ValueError instead of KeyError, so create, write and import can report it.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Fix: Validate date_range input types</title><link>https://odoodigest.com/changes/e55c653b/</link><guid isPermaLink="true">https://odoodigest.com/changes/e55c653b/</guid><description>[FIX] tools: validate date_range input types</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Fix: Restore rotateClockwise with pypdf</title><link>https://odoodigest.com/changes/810213e7/</link><guid isPermaLink="true">https://odoodigest.com/changes/810213e7/</guid><description>[FIX] tools: restore rotateClockwise with pypdf</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>framework</category></item><item><title>Fix: Restore legacy PDF API with pypdf</title><link>https://odoodigest.com/changes/6caf92d9/</link><guid isPermaLink="true">https://odoodigest.com/changes/6caf92d9/</guid><description>[FIX] tools: restore legacy PDF API with pypdf</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>framework</category></item><item><title>Fix: Expose newer PDF API with PyPDF2 1.26</title><link>https://odoodigest.com/changes/e6ebad84/</link><guid isPermaLink="true">https://odoodigest.com/changes/e6ebad84/</guid><description>[FIX] tools: expose newer PDF API with PyPDF2 1.26</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>framework</category></item><item><title>Fix: Set PDF/A metadata with pypdf&apos;s API</title><link>https://odoodigest.com/changes/23d92075/</link><guid isPermaLink="true">https://odoodigest.com/changes/23d92075/</guid><description>[FIX] tools: set PDF/A metadata with pypdf&apos;s API</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Expose pypdf&apos;s Fit and Link with PyPDF2 2.12.1</title><link>https://odoodigest.com/changes/7ea27ffb/</link><guid isPermaLink="true">https://odoodigest.com/changes/7ea27ffb/</guid><description>[FIX] tools: expose pypdf&apos;s Fit and Link with PyPDF2 2.12.1</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Rotate PDF pages with pypdf</title><link>https://odoodigest.com/changes/0fb5a366/</link><guid isPermaLink="true">https://odoodigest.com/changes/0fb5a366/</guid><description>[FIX] tools: rotate PDF pages with pypdf</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Keep one2many fields as one2many in Form</title><link>https://odoodigest.com/changes/ac4df4c8/</link><guid isPermaLink="true">https://odoodigest.com/changes/ac4df4c8/</guid><description>[FIX] tests, hr_skills: keep one2many fields as one2many in Form</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category><category>hr_skills</category></item><item><title>Fix: Reduce pybuild parallelism</title><link>https://odoodigest.com/changes/e0272e98/</link><guid isPermaLink="true">https://odoodigest.com/changes/e0272e98/</guid><description>[FIX] packaging: reduce pybuild parallelism</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Fix retry with excinfo</title><link>https://odoodigest.com/changes/bcd8e82c/</link><guid isPermaLink="true">https://odoodigest.com/changes/bcd8e82c/</guid><description>[FIX] tests: fix retry with excinfo</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>framework</category></item><item><title>Heads-up: In-memory date filters now match SQL</title><link>https://odoodigest.com/changes/54236254/</link><guid isPermaLink="true">https://odoodigest.com/changes/54236254/</guid><description>filtered_domain() computed quarters in four-month groups and counted weekdays from Monday, so it could disagree with search(). Both now follow PostgreSQL. Check custom code that relied on the old in-memory results.</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>New: An AI agent skill for Odoo&apos;s git conventions</title><link>https://odoodigest.com/changes/dc211e29/</link><guid isPermaLink="true">https://odoodigest.com/changes/dc211e29/</guid><description>The repository now ships a skill for coding agents that covers commit tags, scopes, message bodies and PR target branches. It signals how Odoo expects AI tools to contribute.</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Improved: Bump virtual iot box installer version</title><link>https://odoodigest.com/changes/1a31d42c/</link><guid isPermaLink="true">https://odoodigest.com/changes/1a31d42c/</guid><description>[IMP] setup: bump virtual iot box installer version</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Harden database restoration</title><link>https://odoodigest.com/changes/f08f1b8d/</link><guid isPermaLink="true">https://odoodigest.com/changes/f08f1b8d/</guid><description>[FIX] core: harden database restoration</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Fix: Use env.cr</title><link>https://odoodigest.com/changes/c4875a6b/</link><guid isPermaLink="true">https://odoodigest.com/changes/c4875a6b/</guid><description>[FIX] l10n_tw_edi_ecpay,orm: use env.cr</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>l10n_tw_edi_ecpay</category><category>framework</category></item><item><title>Fix: Apocopate &quot;uno&quot; to &quot;un&quot; in Spanish num2words cardinals</title><link>https://odoodigest.com/changes/c9ea3051/</link><guid isPermaLink="true">https://odoodigest.com/changes/c9ea3051/</guid><description>[FIX] base: apocopate &quot;uno&quot; to &quot;un&quot; in Spanish num2words cardinals</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Guard stdnum version gate against missing metadata</title><link>https://odoodigest.com/changes/0d9d3707/</link><guid isPermaLink="true">https://odoodigest.com/changes/0d9d3707/</guid><description>[FIX] core: guard stdnum version gate against missing metadata</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>framework</category></item><item><title>Fix: Fix account groups upgrade code</title><link>https://odoodigest.com/changes/5e9830c5/</link><guid isPermaLink="true">https://odoodigest.com/changes/5e9830c5/</guid><description>[FIX] upgrade_code: fix account groups upgrade code</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Update mode only when modules are in the path</title><link>https://odoodigest.com/changes/db40b79e/</link><guid isPermaLink="true">https://odoodigest.com/changes/db40b79e/</guid><description>[FIX] core: update mode only when modules are in the path</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>New: Stack dump when a worker is killed on timeout</title><link>https://odoodigest.com/changes/394cfbb2/</link><guid isPermaLink="true">https://odoodigest.com/changes/394cfbb2/</guid><description>Before killing a worker that hit its time limit, the server now sends it SIGQUIT. The log then shows the request path and the exact line being processed, which is usually the cause of a stuck request or cron job.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Bad Studio inverse field no longer takes the server down</title><link>https://odoodigest.com/changes/ebd19ec5/</link><guid isPermaLink="true">https://odoodigest.com/changes/ebd19ec5/</guid><description>On 19.0, a Studio one2many with an invalid inverse field name crashed the registry and even the error page, leaving the server unusable.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Performance: Many2one LEFT JOINs promoted to INNER JOINs</title><link>https://odoodigest.com/changes/dfc5e84e/</link><guid isPermaLink="true">https://odoodigest.com/changes/dfc5e84e/</guid><description>The ORM now adds a hint that lets PostgreSQL turn LEFT JOINs on optional many2one fields into INNER JOINs for positive conditions. This gives the query planner more join orders to choose from.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>19.0</category><category>framework</category></item><item><title>Improved: Display SIRET and SIREN by default</title><link>https://odoodigest.com/changes/f9d7b0e4/</link><guid isPermaLink="true">https://odoodigest.com/changes/f9d7b0e4/</guid><description>[IMP] tools: display SIRET and SIREN by default</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Point links to latest</title><link>https://odoodigest.com/changes/2ba418df/</link><guid isPermaLink="true">https://odoodigest.com/changes/2ba418df/</guid><description>[FIX] *: point links to latest</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>20.0</category><category>base</category><category>l10n_fr_pdp</category><category>l10n_in</category><category>l10n_mr</category><category>l10n_vn_edi_viettel_pos</category><category>l10n_vn_edi_viettel_stock</category><category>mail_plugin</category><category>framework</category></item><item><title>Heads-up: Related non-stored many2many fields get no relation table</title><link>https://odoodigest.com/changes/259f7682/</link><guid isPermaLink="true">https://odoodigest.com/changes/259f7682/</guid><description>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.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><category>18.0</category><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Improved: Adapt issue template to 20 release</title><link>https://odoodigest.com/changes/657999df/</link><guid isPermaLink="true">https://odoodigest.com/changes/657999df/</guid><description>[IMP] github: adapt issue template to 20 release</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Fix broken format in export xid assertion</title><link>https://odoodigest.com/changes/26758e84/</link><guid isPermaLink="true">https://odoodigest.com/changes/26758e84/</guid><description>[FIX] base: fix broken format in export xid assertion</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item><item><title>Fix: Preserve integer zeroes in currency amounts</title><link>https://odoodigest.com/changes/b2b693c4/</link><guid isPermaLink="true">https://odoodigest.com/changes/b2b693c4/</guid><description>[FIX] tools: preserve integer zeroes in currency amounts</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><category>19.0</category><category>20.0</category><category>framework</category></item><item><title>Other: Update .weblate.json</title><link>https://odoodigest.com/changes/8f040467/</link><guid isPermaLink="true">https://odoodigest.com/changes/8f040467/</guid><description>[I18N] *: update .weblate.json</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><category>20.0</category><category>framework</category></item></channel></rss>