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: