From c6b2d5019110f4ea3d5e2d939ea42ea110242ec3 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:36:51 +0000 Subject: [PATCH 1/4] feat: add tooltips to topbar actions for improved UX Co-authored-by: aarjava <218419324+aarjava@users.noreply.github.com> --- .Jules/palette.md | 3 + src/components/nav/topbar.tsx | 192 +++++++++++++++++++--------------- 2 files changed, 108 insertions(+), 87 deletions(-) create mode 100644 .Jules/palette.md diff --git a/.Jules/palette.md b/.Jules/palette.md new file mode 100644 index 00000000..78cc8022 --- /dev/null +++ b/.Jules/palette.md @@ -0,0 +1,3 @@ +## 2024-03-24 - Tooltips with complex Radix UI nested triggers +**Learning:** Combining multiple Radix UI triggers (like TooltipTrigger, DropdownMenuTrigger) requires careful use of `asChild` and correct nesting. Specifically, nesting `` around `` which wraps the actual ` + {/* Right Side - Actions */} +
+ {/* Notifications */} + + + + + Notifications + - {/* User Menu */} - - - + + + User menu + + - - - - - My Account - - - Profile - - - Settings - - - - Logout - - - + My Account + + + Profile + + + Settings + + + + Logout + + + - {/* Settings Link */} - -
- + {/* Settings Link */} + + + + + Settings + + + + ) } From 78e2edb9f3d78a8e6be7044aa3c83cea76b331b6 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:46:34 +0000 Subject: [PATCH 2/4] fix: address CI linting, formatting, and test failures Co-authored-by: aarjava <218419324+aarjava@users.noreply.github.com> --- .Jules/palette.md | 1 + .github/workflows/model-quality.yml | 1 + CHANGELOG.md | 6 +- FEATURES_GUIDE.md | 31 +- POLISH_FIXES_SUMMARY.md | 29 +- scripts/screenshot.ts | 43 +- scripts/screenshot_dark.ts | 61 +- src/app/api/events/annotations/react/route.ts | 162 +-- src/app/api/events/annotations/route.ts | 406 +++--- src/app/api/request-access/route.ts | 3 +- src/app/api/user/preferences/route.ts | 277 ++-- src/app/template.tsx | 30 +- src/components/ExportButton.tsx | 1 - src/components/FilterPanel.tsx | 33 +- src/components/FluxLensLogo.tsx | 5 +- .../analytics/RiskWeightedTimeline.tsx | 37 +- src/components/empty/loading-section.tsx | 9 +- src/components/events/EventAnnotations.tsx | 830 +++++------ src/components/filters/DateRangePicker.tsx | 473 +++--- src/components/overlay/modal.tsx | 1 - src/components/settings/PreferencesButton.tsx | 126 +- .../settings/UserPreferencesModal.tsx | 1283 +++++++++-------- src/components/signals/SlackSignalPanel.tsx | 408 +++--- src/components/ui/button.tsx | 2 +- src/components/ui/sheet.tsx | 8 +- src/components/ui/skeleton.tsx | 316 ++-- src/hooks/use-haptic.ts | 80 +- src/hooks/useEventAnnotations.ts | 251 ++-- src/hooks/useUserPreferences.tsx | 362 ++--- src/hooks/v102.ts | 16 +- src/lib/db/repository.ts | 2 +- src/lib/integrations/adapters/resend.ts | 138 +- src/lib/realtime/websocket.tsx | 677 ++++----- src/lib/reports/pdfGenerator.ts | 745 +++++----- 34 files changed, 3508 insertions(+), 3345 deletions(-) diff --git a/.Jules/palette.md b/.Jules/palette.md index 78cc8022..c39e195b 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -1,3 +1,4 @@ ## 2024-03-24 - Tooltips with complex Radix UI nested triggers + **Learning:** Combining multiple Radix UI triggers (like TooltipTrigger, DropdownMenuTrigger) requires careful use of `asChild` and correct nesting. Specifically, nesting `` around `` which wraps the actual ` @@ -134,18 +135,19 @@ export default function FilterPanel() { @@ -182,12 +185,14 @@ export default function FilterPanel() { Show only unresolved diff --git a/src/components/FluxLensLogo.tsx b/src/components/FluxLensLogo.tsx index a2ff4a28..be665f33 100644 --- a/src/components/FluxLensLogo.tsx +++ b/src/components/FluxLensLogo.tsx @@ -63,10 +63,7 @@ export function FluxLensLogo({ alt="FluxLens" fill sizes={`${iconPixelSize}px`} - className={cn( - 'object-contain opacity-95', - theme === 'light' && 'brightness-0' - )} + className={cn('object-contain opacity-95', theme === 'light' && 'brightness-0')} /> diff --git a/src/components/analytics/RiskWeightedTimeline.tsx b/src/components/analytics/RiskWeightedTimeline.tsx index 83750438..b8985226 100644 --- a/src/components/analytics/RiskWeightedTimeline.tsx +++ b/src/components/analytics/RiskWeightedTimeline.tsx @@ -116,8 +116,8 @@ export function RiskWeightedTimeline({ const avgConfidence = filteredEvents.length > 0 ? Math.round( - (filteredEvents.reduce((acc, e) => acc + e.confidence, 0) / filteredEvents.length) * 100 - ) + (filteredEvents.reduce((acc, e) => acc + e.confidence, 0) / filteredEvents.length) * 100 + ) : 0 return { critical, high, avgConfidence, total: filteredEvents.length } }, [filteredEvents]) @@ -214,7 +214,10 @@ export function RiskWeightedTimeline({ aria-pressed={isEnabled} aria-label={`Filter ${config.label} events`} > - + {config.label} {events.filter((e) => e.lane === lane).length} @@ -241,7 +244,9 @@ export function RiskWeightedTimeline({

No events match the current filters

+ + )} + +
+
+ {currentUserName.charAt(0).toUpperCase()} +
+ +
+