[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).
| 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'
|