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: 95d08c88645eaf25449445f57469dfabc74354d1

Description:

                                            [IMP] viin_brain: P6 brand parity + P9 ShareDialog polish (round 3 sprint 2)

P6 Properties — scope brand cyan to .o_brain_app .btn-primary
- Add explicit cascade override in _app_shell.scss (Bootstrap 5.1.3
  compiles .btn-primary to hex literals so --bs-primary scope override
  has zero effect; explicit property cascade is the only safe approach).
- Switch '+ Add property' button class btn-light → btn-primary so it
  picks up the brand accent. Hover via color-mix() (same darkening
  visual as $darken-10% on Bootstrap baseline).
- Scope is .o_brain_app to prevent leak into form/list views in sibling
  apps that share global Bootstrap tokens.

P9 ShareDialog — iOS-style switch + dynamic title
- Replace native <input type='checkbox'> for 'Public link' with OWL
  CheckBox component using Bootstrap 5 form-switch class (matches
  Odoo 17 boolean_toggle_field iOS-pill pattern).
- Load page name via Promise.all alongside share-link search; render
  Dialog title 'Share <Page Name>' via dialogTitle getter (was
  hardcoded 'Share this page').
- onToggleLink signature updated for OWL CheckBox onChange contract
  (passes value, not DOM event).

Evidence (visual-evidence MCP, ephemeral):
- Session 20260503-2016-p8r3-sprint1-final shot-005: P11 CRM Lead
  ID=13 form sidebar rail mode renders with Brain stat buttons.
- Session 20260503-2031-p8r3-sprint2-polish shot-002: P11 Project Task
  ID=1 form sidebar rail mode renders with Brain Pages + Brain Note
  stat buttons.
- Session 20260503-2031 shot-005: P9 ShareDialog title 'Share Welcome'
  + iOS-switch toggle render confirmed.
- Round 3 deferred items documented in phase-8-retroactive-evidence.md.

AC-1 hex grep PASS, brain_v3_ci_check.py --strict 8 PASS / 1
pre-existing WARN (rule2 contenteditable baseline = 14, unchanged).

Refs PR #27.
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time:

Subbuilds Name State Detail
Build 381480 Check the quality with Pylint: from test_lint to test_pylint 18m Failed Log
Build 381481 At install tests: from account to website_twitter 138m Succeed Log
Build 381482 Post install tests: step install all modules 74m Succeed Log
Build 381483 Post install tests: from account to payment_alipay 159m Succeed Log
Build 381484 Post install tests: from payment_aps to test_viin_web_cohort 194m Succeed Log
Build 381485 Post install tests: from test_website to to_website_apps_store 89m Succeed Log
Build 381486 Post install tests: from to_website_apps_store_loc to viin_estimate_sale 94m Succeed Log
Build 381487 Post install tests: from viin_event_checkin_website to viin_project_gantt 39m Succeed Log
Build 381488 Post install tests: from viin_project_progress to website_twitter 53m Succeed Log
Build 381489 Test install all modules without demo data: from account to website_twitter 58m Succeed Log
Create Date Level Message
05/03/2026 21:05:39 INFO
Updated repository Viindoo-odoo
05/03/2026 21:05:39 INFO
Updated repository Viindoo-tvtmaaddons
05/03/2026 21:05:39 INFO
Updated repository Viindoo-erponline-enterprise
05/03/2026 21:05:39 INFO
Updated repository Viindoo-branding
05/03/2026 21:05:39 INFO
Cloned repository Viindoo-ai
05/03/2026 21:25:05 ERROR
Subbuild # 381480: 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-95d08c8-221699/viin_brain/static/src/components/share_dialog/share_dialog.js 56:35 error Replace `⏎············?·_t("Share·%s",·this.state.pageName)⏎···········` with `·?·_t("Share·%s",·this.state.pageName)` prettier/prettier /data/build/rb-95d08c8-221699/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-95d08c8-221699/viin_brain/static/tests/tours/brain_ux_batch_a_tour.js 126:21 error Insert `⏎···············` prettier/prettier ✖ 24 problems (24 errors, 0 warnings) 24 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 21:25:05 ERROR
Subbuild # 381480: odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
05/03/2026 21:25:05 ERROR
Subbuild # 381480: odoo.modules.loading: At least one test failed when loading the modules.
05/03/2026 21:25:05 ERROR
Subbuild # 381480: odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-95d08c8-221699-381480'