Skip to content

[UPG] branding-base cluster (5 modules) to Odoo 19.0 + de-brand/teal SSOT#658

Open
davidtranhp wants to merge 9 commits into
19.0from
upg/viin-brand-19-main
Open

[UPG] branding-base cluster (5 modules) to Odoo 19.0 + de-brand/teal SSOT#658
davidtranhp wants to merge 9 commits into
19.0from
upg/viin-brand-19-main

Conversation

@davidtranhp

Copy link
Copy Markdown
Contributor

Mục tiêu

Nâng cấp cụm 5 module branding-base của Viindoo lên Odoo 19.0 CE (de-brand + teal SSOT), làm nền cho theme backend viin_backend_theme (Phase 3 - sẽ bổ sung vào PR này sau, cùng 1 PR).

Base: 19.0 (fdfd1fc). Nhánh: upg/viin-brand-19-main. Chưa data-migration, không bump version (theo quy ước upgrade Viindoo Standard).

Phạm vi (5 module, thứ tự phụ thuộc)

Module Trạng thái Ghi chú chính
viin_brand UPG + FIX de-brand DB-manager an toàn tên-DB (allowlist wordmark, không đụng tên DB kể cả DB tên "Odoo"); super() hiện đại; URL v19
viin_brand_common UPG + FIX + I18N teal SSOT $o-brand-primary=#00BBCE; khôi phục brand-color family = teal (chặn leak purple/aubergine qua portal chatter); navbar AA #007F8E; ẩn doc-link www.odoo.com còn sót
viin_brand_mail UPG + FIX + I18N de-brand icon web-push (guard test_enable); help notification_type; nút email #875A7B -> #007F8E; fix 404 tên file icon
viin_brand_web UPG + I18N drop dialog.js thừa khỏi assets_unit_tests; URL v19
viin_brand_web_editor UPG + FIX re-point web_editor -> html_editor (rename v19); rename SCSS de-brand

Chất lượng đã qua (bằng chứng)

  • Code review độc lập 3 vòng trên cả 5 module -> fix hết findings tới root cause (1 CRIT / 2 HIGH / 3 MED + phát sinh mỗi vòng). Final gate: APPROVE.
  • i18n v19 non-destructive: load .po hiện có -> re-export -> reconcile diff-review (forward translation memory, không regen mù). 3 commit [I18N].
  • Acceptance 22/22 trên instance 19.0 live (addons-path verified clean).
  • Light-verify compose: 6 module (5 + portal) state=installed, 0 Traceback/ParseError, navbar rgb(0,127,142)=#007F8E (chữ trắng AA 4.744:1, KHÔNG phải #00BBCE nhạt), 0 console error, title/login "Viindoo".

Ảnh chụp navbar/DB-manager/login đã gửi trực tiếp cho reviewer.

Chờ bổ sung (cùng PR này)

  • Phase 3: module mới viin_backend_theme (theme backend 19.0 redesign + de-brand, hướng teal-darken heritage 17.0/18.0). Đang build; sẽ push tiếp vào nhánh này.
  • Lịch sử commit: 22 commit hiện tại (mỗi commit gói gọn 1 module) sẽ được consolidate về 1 commit sạch/module ở khâu chuẩn bị merge cuối (sau khi theme xong), nên có thể review trên tab "Files changed" (diff hợp nhất) ngay bây giờ.

Author các commit: David Tran <david.tran@tvtmarine.com>.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@viinbot viinbot added the 🚀 Queue PR/Commit is added in build queue label Jul 24, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@viinbot viinbot added 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 24, 2026
@viinbot

viinbot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

@davidtranhp
davidtranhp force-pushed the upg/viin-brand-19-main branch from e8f1643 to a3f008b Compare July 25, 2026 02:33
@viinbot viinbot added 🚀 Queue PR/Commit is added in build queue and removed ⚠️ Failed PR/Commit is failed when run script labels Jul 25, 2026
Comment thread viin_brand/tests/test_debrand_allowlist_sync.py Fixed
@viinbot viinbot added 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 25, 2026
@viinbot

viinbot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

…e allowlist + on-disk drift guard, web dependency, modern super(), v19 URLs)

Signed-off-by: David Tran <david.tran@tvtmarine.com>
…de #007F8E/#005E68, de-brand, i18n, robust title/favicon re-home, PWA/webmanifest de-brand, content-palette scope, security+robustness hardening + compile guards)

Signed-off-by: David Tran <david.tran@tvtmarine.com>
@davidtranhp
davidtranhp force-pushed the upg/viin-brand-19-main branch from a3f008b to b55799a Compare July 25, 2026 06:05
@viinbot viinbot added 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed ⚠️ Failed PR/Commit is failed when run script 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 25, 2026
@viinbot

viinbot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

… chrome at AA + white foregrounds, web-push icon, email button color, ir_mail_server help, i18n, hardening + contrast guards)

Signed-off-by: David Tran <david.tran@tvtmarine.com>
…og wordmark guard, edition widget, i18n)

Signed-off-by: David Tran <david.tran@tvtmarine.com>
…or rename, primary-button de-brand SCSS)

Signed-off-by: David Tran <david.tran@tvtmarine.com>
@viinbot viinbot added 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 25, 2026
@viinbot

viinbot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

Adds the behavior-guard test layer for the theme, wired into web.assets_unit_tests
(Hoot) and web.assets_tests (tours), driven by tests/test_tours.py:

* Hoot - viin_theme service: setScheme dark/light flips documentElement data-bs-theme
  + persists the color_scheme cookie; setDensity compact flips data-viin-density +
  viin_density cookie; 'auto' resolves via a mocked matchMedia and re-resolves on OS flip.
* Hoot - StatusBarField (D6) stepper: getStepInfo maps a mid-pipeline record to
  done/current/upcoming markers; clicking a stage still fires core selectItem -> web_save
  (presentation-only patch must not break click-to-change).
* HttpCase tours: instant dark toggle + reload persistence; density compact + reload
  persistence (single-session location.reload, expectUnloadPage); home-menu fuzzy search
  + keyboard launch; mobile ViinBottomNav single-chrome + slot navigation (375x667 touch).

All assert observable state (RED-on-behavior-removal); no assertion is a code snapshot.
23/23 green on 19.0 CE (17 Python/tours + 6 Hoot).
@viinbot viinbot added 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed ⚠️ Failed PR/Commit is failed when run script 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 25, 2026
@viinbot

viinbot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

…d list, kanban, text utilities)

A live acceptance review found several dark-mode surfaces still rendering
compiled light-mode colors that do not scheme-flip. Re-point them (dark-scoped,
so light mode is untouched) to the runtime scheme props, at the correct layer:

* Form: record title / headings -> var(--emphasis-color); field values/inputs
  -> var(--body-color) (core .oe_title uses a compiled $headings-color hex).
* Light form labels: brand-purple leak -> neutral var(--secondary-color) (grey,
  matches the mockup and the dark label tier).
* Teal FOREGROUND on dark (nocontent link, bulk-selection count, active notebook
  tab, statusbar done glyph, many2one o_form_uri links): compiled #007F8E (3.69:1)
  -> lighter dark teal #4FD4E2 (~9.9:1). Teal fills + the rail accent untouched.
* Dialog titles + any var-based heading: flip --heading-color -> var(--emphasis-color)
  at the scheme engine (core $headings-color-dark is 'inherit', never flips).
* Grouped-list header + the Bootstrap .text-body/.text-muted utilities: these are
  compiled with light values + !important into the dark bundle, so relit with
  !important in dark (.text-muted spares .btn-light/.btn-secondary chips); also
  fix the stale --body-color-rgb in the dark scheme.
* Overdue/rotting kanban card: core's static light-pink bg -> a dark-red color-mix
  so its text is readable in dark (light mode keeps the pink).
* .o_web_client color-scheme: core's invalid 'bright' ($o-webclient-color-scheme)
  -> light/dark per the app toggle, so native scrollbars/controls match the scheme.

All light-on-light / dark-on-light-chip cases verified non-regressed; light mode
unchanged. 13 source-invariant guards added (TestReviewA11yFixes). Live re-verify:
form/dialog/list/kanban/labels/links all clear AA in dark; 36/36 theme tests green.
@viinbot viinbot added 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed ⚠️ Failed PR/Commit is failed when run script 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 25, 2026
@viinbot

viinbot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

…kend) + keep public login light

Dark mode is a LOGGED-IN per-user choice applied to the backend only; public pages and the
default state stay LIGHT. Two parts:

1. Public/default-light: remove login.scss's `@media (prefers-color-scheme: dark)` block - the
   PUBLIC pre-auth login must not darken from the visitor's OS. The login now always renders the
   light split-screen. Guard test_public_login_never_os_darkens bans re-adding it.

2. Complete the backend dark-mode AA coverage the earlier commit started, all dark-scoped
   ([data-bs-theme=dark]) so light mode is untouched. Odoo 19 CE core dark mode leaves many
   surfaces on compiled light values that never scheme-flip; re-point them to the runtime scheme
   props at the layer each is read:
   - Backgrounds via the core CSS var (fixes the whole family at once): grouped-kanban
     --Kanban-background/--KanbanGroup-background; form o2m list --ListRenderer-thead/tfoot-bg-color;
     breadcrumb --breadcrumb-bg; a GLOBAL .bg-view --background-color flip (view-surface utility on
     ~14 surfaces incl. search panel + calendar container + inputs) - beats .bg-view's !important
     WITHOUT an !important war since re-pointing its own local var; messaging systray
     --mail-MessagingMenu-bg (core set it light in its OWN dark stylesheet); search-panel list-group.
   - Text utilities compiled light + !important: .text-body/.text-muted/.text-900 relit WITH
     !important (sparing .btn-light/.btn-secondary light chips); --body-color-rgb flipped for dark.
   - Per-surface: search-panel active row (core hardcodes .text-black), field-selector chain part,
     pivot cells/headers (beat core's o-hover-text-color mixin), chatter header, command-palette
     footer, settings form (--settings__* vars + .settings bg + section titles).
   - Calendar: re-point --fc-* tokens on the .fc element itself (FullCalendar declares them there,
     so an ancestor rule loses) -> dark grid + readable day names/dates.
   - .o_web_client color-scheme: correct core's invalid 'bright' ident to light/dark per the app
     toggle (fixes native scrollbars/controls + the getComputedStyle skew).

REVERTED a mis-step from the prior iteration: a global .text-success/.text-info dark flip that,
being unscoped, lost contrast on light surfaces (selected rows/subtle alerts) - core's marginal
~3.7-3.9:1 values are accepted known-minors (like white-on-color badges), not regressed.

Live getComputedStyle-verified (the review browser runs force-dark, so screenshots are unreliable):
all primary daily screens (home/list/form/kanban/pivot/settings/dialog/dropdowns/command-palette/
search-panel/activities+messages menus/calendar/chatter) are AA-clean in dark, regression reverted,
0 console errors, light mode unchanged. ~24 source-invariant guards (TestReviewA11yFixes) protect
the intent; 52/52 theme tests green (Python /viin_backend_theme + Hoot bracket).
@viinbot viinbot added 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script ⚠️ Failed PR/Commit is failed when run script and removed ⚠️ Failed PR/Commit is failed when run script 🚀 Queue PR/Commit is added in build queue 🚀 Building PR/Commit is start building all step in script labels Jul 26, 2026
@viinbot

viinbot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

@davidtranhp Viindoo Test Suite has failed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚠️ Failed PR/Commit is failed when run script

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants