Name: [IMP] viin_brain,viin_web_editor: UI hardening v1 (token + polish + Odoo-native + v2 seams)

State: Failed finished in 20m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #27

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: 085195903a7f661471be9f5335119775d6b194ee

Description:

                                            [FIX] viin_brain: P8 retroactive UI polish — selected highlight + breadcrumb path

Root cause for missing sidebar-active highlight: the brand-accent token
chain `--o-brain-accent: var(--o-brand-primary, var(--bs-primary))`
referenced CSS custom properties that Odoo 17 only exposes as Sass
compile-time variables, never as runtime `:root{--bs-primary}`. The
chain therefore resolved to nothing, `color-mix(in srgb, var(--o-brain-
accent) 12%, transparent)` evaluated to fully transparent, and the
`.o_brain_page_node.active > .o_brain_page_row` rule painted a
zero-alpha background — making the active page indistinguishable from
its neighbours even though the `.active` class was correctly added.

The Viindoo Odoo 17 build exposes the runtime brand colour as
`--primary` (Viindoo cyan #00bbce) plus the theme slot `--o-color-1`.
Re-chain `--o-brain-accent` to `var(--primary, var(--o-color-1))` so
the brand colour reaches every downstream token (`--o-brain-bg-hover`,
`--o-brain-bg-selected`, focus rings, presence palette, AI badge,
chip styles). Reviewer-side capture (commit binding via Visual Evidence
manifest) now shows a visible cyan tint on the selected row — pixel
sample (213, 239, 243) at 14% accent over light gray sidebar bg.

Defensive `Number()` cast in `rowClass()` keeps the active class
attached even when `activePageId` arrives as a string from URL hash
or localStorage restore (was not the original culprit but cheap to
keep).

Breadcrumb now appends the current page name as a final segment so
the visible breadcrumb reads `Vault › [Folder ›] Page` instead of
just `Vault`. `breadcrumbDisplay.fullPath` (tooltip on truncated
chains) tracks the same change so the tooltip stays consistent with
the rendered breadcrumb. Tour AC-P7-2 (root page) updated to expect
exactly 1 separator + a non-empty `.o_brain_breadcrumb_current`
segment; AC-P7-3 (truncated deep path) tooltip expectation extended
with the leaf page name.

Evidence (P8 retroactive, reviewer-side, ephemeral 24h auto-cleanup):
- session 20260503-1735-brain-ui-verify-g1-jsfix
  - shot-005-verify-g1-final-r2.png — sha256 9e438c47…
  - sidebar Welcome row paints (213, 239, 243) cyan tint vs Contracts
    row (118, 124, 129) plain gray (control sample)
  - breadcrumb header reads "Personal › Welcome"

CI gate: brain_v3_ci_check.py --strict — 8 PASS, 1 pre-existing WARN
(rule2_contenteditable in test file, unrelated). AC-1 hex grep PASS
(0 hex in components/apps SCSS).
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time:

Subbuilds Name State Detail
Build 381450 Check the quality with Pylint: from test_lint to test_pylint 19m Failed Log
Build 381451 At install tests: from account to website_twitter 134m Succeed Log
Build 381452 Post install tests: step install all modules 69m Succeed Log
Build 381453 Post install tests: from account to payment_alipay 169m Succeed Log
Build 381454 Post install tests: from payment_aps to test_viin_web_cohort 199m Succeed Log
Build 381455 Post install tests: from test_website to to_website_apps_store 79m Succeed Log
Build 381456 Post install tests: from to_website_apps_store_loc to viin_estimate_sale 88m Succeed Log
Build 381457 Post install tests: from viin_event_checkin_website to viin_project_gantt 39m Succeed Log
Build 381458 Post install tests: from viin_project_progress to website_twitter 48m Succeed Log
Build 381459 Test install all modules without demo data: from account to website_twitter 54m Succeed Log
Create Date Level Message
05/03/2026 17:55:13 INFO
Updated repository Viindoo-odoo
05/03/2026 17:55:13 INFO
Updated repository Viindoo-tvtmaaddons
05/03/2026 17:55:13 INFO
Updated repository Viindoo-erponline-enterprise
05/03/2026 17:55:13 INFO
Updated repository Viindoo-branding
05/03/2026 17:55:13 INFO
Cloned repository Viindoo-ai
05/03/2026 18:15:23 ERROR
Subbuild # 381450: odoo.addons.test_pylint.tests.test_eslint: FAIL: TestESLint.test_eslint Traceback (most recent call last): File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_eslint.py", line 67, in test_eslint self.assertEqual(process.returncode, 0, msg=f""" AssertionError: 1 != 0 : stdout: /data/build/rb-0851959-221696/viin_brain/static/tests/seams/v2_extension_seams_tests.js 34:19 error Replace `⏎············mount.classList.contains("d-none"),⏎············"canvas·mount·is·hidden·by·default·(d-none)"⏎········` with `mount.classList.contains("d-none"),·"canvas·mount·is·hidden·by·default·(d-none)"` prettier/prettier 41:13 error Replace `"canvas·mount·declares·t-ref=\"canvasMount\""` with `'canvas·mount·declares·t-ref="canvasMount"'` prettier/prettier 56:16 error Replace `"Seam·4:·ShareDialog·template·has·empty·<t·t-slot=\"collabSection\"/>"` with `'Seam·4:·ShareDialog·template·has·empty·<t·t-slot="collabSection"/>'` prettier/prettier 60:45 error Replace `"exactly·one·<t·t-slot=\"collabSection\"/>·declared"` with `'exactly·one·<t·t-slot="collabSection"/>·declared'` prettier/prettier 83:16 error Replace `"Seam·6:·AI·block·HTML·output·carries·additive·o_brain_ai_state_<status>·class",` with `⏎········"Seam·6:·AI·block·HTML·output·carries·additive·o_brain_ai_state_<status>·class",⏎·······` prettier/prettier 84:1 error Replace `········` with `············` prettier/prettier 85:9 error Insert `····` prettier/prettier 86:1 error Replace `········` with `············` prettier/prettier 87:9 error Insert `····` prettier/prettier 88:1 error Insert `····` prettier/prettier 89:9 error Insert `····` prettier/prettier 90:1 error Insert `····` prettier/prettier 91:1 error Replace `········` with `············` prettier/prettier 92:1 error Insert `····` prettier/prettier 93:1 error Replace `············` with `················` prettier/prettier 94:9 error Insert `····` prettier/prettier 95:1 error Replace `········` with `············` prettier/prettier 96:9 error Insert `····` prettier/prettier 97:1 error Insert `····` prettier/prettier 98:13 error Insert `····` prettier/prettier 99:9 error Insert `····` prettier/prettier 100:1 error Replace `····}` with `········}⏎····` prettier/prettier /data/build/rb-0851959-221696/viin_brain/static/tests/tours/brain_ux_batch_a_tour.js 126:21 error Insert `⏎···············` prettier/prettier ✖ 23 problems (23 errors, 0 warnings) 23 errors and 0 warnings potentially fixable with the `--fix` option. Perhaps you might benefit from installing the tooling found at: https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines#use-a-linter stderr:
05/03/2026 18:15:23 ERROR
Subbuild # 381450: odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
05/03/2026 18:15:23 ERROR
Subbuild # 381450: odoo.modules.loading: At least one test failed when loading the modules.
05/03/2026 18:15:23 ERROR
Subbuild # 381450: odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-0851959-221696-381450'