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

State: Failed finished in 19m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #658

Committer: David Tran

Committer Email: david.tran@tvtmarine.com

Commit: 8dac1d67605dfc39f7ff3a02d791038c9730c3dc

Description:

                                            [FIX] viin_backend_theme: complete dark-mode AA coverage (opt-in, backend) + 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).
                                            

Branch: 19.0

Age:

Up-time: