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

State: Failed finished in 19m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #27

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: 536043f80d03e1832249d5bd4fa78cb9c85e49b0

Description:

                                            [FIX] viin_brain: P11 BrainFormSidebar visible — display:contents wrapper

Pre-existing P11 gap surfaced by P8 round 3 capture verification:
BrainFormSidebar (panel/rail/strip layout modes) was completely
invisible on every bridge form (HR Employee, Sale Order, CRM Lead,
Project Task) despite the bridge XML hook + form_compilers registry
entry + OWL component being correctly wired.

Root cause:
- brain_form_sidebar_compiler.js wraps the OWL component instance in
  <div class="o_brain_form_sidebar_container">, then appends that
  wrapper alongside the chatter container under
  parentEl(o_form_sheet_bg) — exactly matching mail's chatter pattern.
- The wrapper had NO matching CSS rule in brain_form_sidebar.scss.
- Default block layout: width:100% + display:block.
- The form's flex-flow row container (.o_form_view.o_xxl_form_view,
  form_controller.scss:1099) treated the wrapper as a full-width row
  child, pushing the actual sidebar (.o_brain_form_sidebar.--{panel,
  rail,strip}) off the visible flex track. On standard desktop this
  put the sidebar below the page content, frequently off-viewport.

Fix:
- Add display:contents on .o_brain_form_sidebar_container so the
  wrapper participates in DOM but disappears from layout — its single
  child .o_brain_form_sidebar.--{mode} becomes the direct flex sibling
  of o_form_sheet_bg and o-mail-Form-chatter, matching the layout
  intent expressed in the compiler's append() call.

Verified via Visual Evidence MCP session 20260503-1931-brain-ui-p8r3-batch4
on Sale Order S00007 at 1600x1100 viewport (≥SIZES.XXL → rail mode):
- shot-002: rail collapsed (44px vertical "BRAIN" label) on far right
  alongside chatter
- shot-003: rail expanded (320px panel) showing "Brain · Knowledge
  linked to this record" header + "PAGES MENTIONING THIS RECORD"
  section + empty state + "+ Create a note about this record" CTA —
  matches mockup P11 (docs/brain/mockups/v3/screenshots/P11.png)
  structurally.

Brain v3 CI: 8 PASS / 1 pre-existing WARN (rule2 contenteditable).
AC-1 hex grep: 0 violations (display:contents is a CSS keyword, no
literals introduced).

Refs PR #27.
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time:

Subbuilds Name State Detail
Build 381470 Check the quality with Pylint: from test_lint to test_pylint 19m Failed Log
Build 381471 At install tests: from account to website_twitter 134m Succeed Log
Build 381472 Post install tests: step install all modules 64m Succeed Log
Build 381473 Post install tests: from account to payment_alipay 175m Succeed Log
Build 381474 Post install tests: from payment_aps to test_viin_web_cohort 205m Succeed Log
Build 381475 Post install tests: from test_website to to_website_apps_store 84m Succeed Log
Build 381476 Post install tests: from to_website_apps_store_loc to viin_estimate_sale 94m Succeed Log
Build 381477 Post install tests: from viin_event_checkin_website to viin_project_gantt 39m Succeed Log
Build 381478 Post install tests: from viin_project_progress to website_twitter 53m Succeed Log
Build 381479 Test install all modules without demo data: from account to website_twitter 54m Succeed Log
Create Date Level Message
05/03/2026 19:45:37 INFO
Updated repository Viindoo-odoo
05/03/2026 19:45:37 INFO
Updated repository Viindoo-tvtmaaddons
05/03/2026 19:45:37 INFO
Updated repository Viindoo-erponline-enterprise
05/03/2026 19:45:37 INFO
Updated repository Viindoo-branding
05/03/2026 19:45:37 INFO
Cloned repository Viindoo-ai
05/03/2026 20:05:35 ERROR
Subbuild # 381470: 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-536043f-221698/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-536043f-221698/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 20:05:35 ERROR
Subbuild # 381470: odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
05/03/2026 20:05:35 ERROR
Subbuild # 381470: odoo.modules.loading: At least one test failed when loading the modules.
05/03/2026 20:05:35 ERROR
Subbuild # 381470: odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-536043f-221698-381470'