Follow-ups from the PR #527 UX review of the DCI security-warning systray item (spp_dci_compliance/static/src/components/security_warning/). None is a regression; the item simply never rendered on Odoo 19 before #527, so this is its first UX pass. All out of scope for a bug-fix PR.
- Navbar icon contrast.
security_warning.xml uses fa-exclamation-triangle text-danger on the dark navbar. Sampled against the navbar blue the contrast ratio is roughly 1.25:1, far below the 3:1 WCAG 1.4.11 minimum for meaningful graphics; the icon is distinguishable by hue only, which docs/principles/ui-design.md calls out. Odoo core does it the other way round: white systray icon, coloured counter badge. Drop text-danger from the icon and let the text-bg-danger pill carry severity.
- Keyboard navigation.
DropdownItem is imported and registered but never used; the "View DCI Settings" call-to-action is a bare <button> inside the dropdown panel with no arrow-key handling and no close-on-select. Make it a DropdownItem.
- Stale badge. Warnings load once in
onWillStart and nothing re-fetches, so after an administrator turns a setting off the badge keeps the old count until a full reload (the e2e spec has to reload to observe the change). Cheapest fix: this.actionService.doAction({...}, {onClose: () => this.loadWarnings()}).
- Polish:
state.message is fetched and never rendered; heading reads singular "DCI Security Warning" while listing several; inline style="min-width: 350px; max-width: 450px;" belongs in a .scss; every <li> carries border-bottom including the last, doubling the panel divider; toggler mixes fa-exclamation-triangle while rows use fa-warning.
- Architecture (optional): the item costs one JSON-RPC round trip per backend page load for administrators. Shipping the summary in
session_info would remove the request and keep the group gate in one place.
Refs: #450, #527 (review notes in the internal workspace, pr527-expert-review.md).
Follow-ups from the PR #527 UX review of the DCI security-warning systray item (
spp_dci_compliance/static/src/components/security_warning/). None is a regression; the item simply never rendered on Odoo 19 before #527, so this is its first UX pass. All out of scope for a bug-fix PR.security_warning.xmlusesfa-exclamation-triangle text-dangeron the dark navbar. Sampled against the navbar blue the contrast ratio is roughly 1.25:1, far below the 3:1 WCAG 1.4.11 minimum for meaningful graphics; the icon is distinguishable by hue only, whichdocs/principles/ui-design.mdcalls out. Odoo core does it the other way round: white systray icon, coloured counter badge. Droptext-dangerfrom the icon and let thetext-bg-dangerpill carry severity.DropdownItemis imported and registered but never used; the "View DCI Settings" call-to-action is a bare<button>inside the dropdown panel with no arrow-key handling and no close-on-select. Make it aDropdownItem.onWillStartand nothing re-fetches, so after an administrator turns a setting off the badge keeps the old count until a full reload (the e2e spec has to reload to observe the change). Cheapest fix:this.actionService.doAction({...}, {onClose: () => this.loadWarnings()}).state.messageis fetched and never rendered; heading reads singular "DCI Security Warning" while listing several; inlinestyle="min-width: 350px; max-width: 450px;"belongs in a.scss; every<li>carriesborder-bottomincluding the last, doubling the panel divider; toggler mixesfa-exclamation-trianglewhile rows usefa-warning.session_infowould remove the request and keep the group gate in one place.Refs: #450, #527 (review notes in the internal workspace,
pr527-expert-review.md).