fix(b4-bugs): external-EOI cache collision + stage-gate regression test + search popover opacity
Three B4 bug fixes shipped together:
- **#4 Upload-signed-copy blank body** — ExternalEoiUploadDialog used
queryKey=['interests', interestId] but didn't unwrap the {data} envelope
while the parent InterestDetail (same key) does, so opening the dialog
clobbered the cache with a wrapped shape and blanked the detail page
("Unknown Client" + empty tab body). Dialog now unwraps to match.
- **#2 Legacy-stage canonicalization regression test** — new integration
test locks in the external-EOI advance gate: canonical pre-EOI stages
(enquiry/qualified/nurturing) advance to 'eoi' on upload; at-or-past-EOI
stages stay put while metadata still writes. 7/7 passing. Backfill
script intentionally not shipped — dev DB is test data, prod cutover
is manual.
- **#3 Global-search dropdown translucent rows** — defensive opaque
background on the popover wrapper (bg-white dark:bg-popover) guards
against the subtle transparency UAT captured on the Berths page.
Live-browser repro still needed to identify the exact bleeding row;
this defense makes the surface unambiguously solid in light mode
regardless of which class wins tailwind-merge.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -318,7 +318,13 @@ export function CommandSearch() {
|
||||
role="listbox"
|
||||
aria-label="Search results"
|
||||
className={cn(
|
||||
'absolute top-[calc(100%+4px)] left-0 z-50 rounded-md border bg-popover shadow-lg overflow-hidden',
|
||||
// Explicit white/popover background pair guards against subtle
|
||||
// transparency artifacts UAT 2026-05-24 captured (rows on the
|
||||
// Berths page bled through to the table behind even though
|
||||
// bg-popover resolves opaque on paper). bg-white wins the
|
||||
// tailwind-merge race so light mode is unambiguously solid;
|
||||
// dark mode falls through to bg-popover via the dark: prefix.
|
||||
'absolute top-[calc(100%+4px)] left-0 z-50 rounded-md border bg-white dark:bg-popover shadow-lg overflow-hidden',
|
||||
// Desktop: anchored to the input width, capped on viewport
|
||||
'w-full max-w-[min(720px,calc(100vw-2rem))]',
|
||||
// Mobile (<lg): full-screen sheet so cramped phone widths
|
||||
|
||||
Reference in New Issue
Block a user