[FIX] viin_brand_common: restore core's QUnit leak-guard on web.layout
viin_brand_common anchored its web.layout brand title/favicon defaults on
//title and //link[@type='image/x-icon']. Core's WebSuite._check_only_call
(web/tests/test_js.py:104) rewrites web.layout's whole arch_db to a stub
containing neither node, and that write revalidates every extension of
web.layout. The recombination raised a ValidationError, leaving core's
QUnit leak-guard - the guard that stops a stray QUnit.only() from silently
disabling the whole JS suite - dead on every Viindoo 17 database.
Replace the two position="attributes" xpaths with a single
<xpath expr="//head/meta[last()]" position="after"> that sets both values
as `or` fallbacks. {head, meta[@charset]} is exactly the node set present
in both the real arch and core's stub, and meta[last()] is the latest
reachable point in it, so the defaults bind after every upstream producer -
notably website.layout's per-page title, its seo_object assignment and the
OpenGraph block - and before <title>. An anchor placed before <head>
instead lands outside it and pre-empts those producers.
Bump the manifest version 0.3.1 -> 0.3.2: Viindoo SaaS auto-upgrade selects
modules to -u by diffing the on-disk manifest version against the customer
database's ir_module_module.latest_version, and a view change only reaches
an existing database through -u. Without the bump the fix would reach fresh
installs only.
Add regression coverage: viin_brand_common/tests/test_web_layout.py (4
methods) locks the stub survival and the brand defaults; viin_brand_website
gains tests/test_website_title_not_preempted.py (3 methods) owning the
cross-module contract that the brand default never pre-empts a website
title or its OpenGraph meta. Both suites were proven RED - the first
against 33a11ec, the second against acc5474.
Close https://github.com/Viindoo/branding/issues/654
Signed-off-by: David Tran <davidtran.hp@gmail.com>
| Subbuilds | Name | State | Detail |
|---|---|---|---|
| Build 402250 | Check the quality with Pylint: from test_lint to test_pylint 19m | Succeed | Log |
| Build 402251 | At install tests: from account to website_twitter 124m | Succeed | Log |
| Build 402252 | Post install tests: step install all modules 59m | Succeed | Log |
| Build 402253 | Post install tests: from account to l10n_vn_viin_hr_payroll_meal_account 124m | Succeed | Log |
| Build 402254 | Post install tests: from l10n_vn_viin_hr_payroll_overtime to resource 139m | Succeed | Log |
| Build 402255 | Post install tests: from sale to to_erponline_utility 139m | Succeed | Log |
| Build 402256 | Post install tests: from to_event_project to to_stock_block_quantity 49m | Succeed | Log |
| Build 402257 | Post install tests: from to_stock_equipment to viin_base_ward 90m | Succeed | Log |
| Build 402258 | Post install tests: from viin_bidv_connector to viin_features_activate_stock 30m | Succeed | Log |
| Build 402259 | Post install tests: from viin_features_activate_survey to viin_mail_thread_stock_account 59m | Succeed | Log |
| Build 402260 | Post install tests: from viin_mail_thread_uom to viin_stock 39m | Succeed | Log |
| Build 402261 | Post install tests: from viin_stock_account_backdate to website_twitter 159m | Succeed | Log |
| Build 402262 | Test install all modules without demo data: from account to website_twitter 44m | Succeed | Log |
| Create Date | Level | Message |
|---|---|---|
| 08/08/2026 00:30:02 | INFO |
Updated repository Viindoo-odoo
|
| 08/08/2026 00:30:02 | INFO |
Updated repository Viindoo-tvtmaaddons
|
| 08/08/2026 00:30:02 | INFO |
Updated repository Viindoo-erponline-enterprise
|
| 08/08/2026 00:30:02 | INFO |
Cloned repository Viindoo-branding
|