diff --git a/.gitleaks.toml b/.gitleaks.toml index 1d91e9d8e..10ff56186 100644 --- a/.gitleaks.toml +++ b/.gitleaks.toml @@ -14,4 +14,6 @@ paths = [ '''docs/security/.*''', # Test fixtures use obvious dummy keys (e.g. "xai-secret-123"), not real secrets. '''tests/.*''', + # Ignore uv.lock lockfiles entirely, they contain hashed checksums that trip the square-access-token regex + '''uv\.lock''', ] diff --git a/.jules/palette.md b/.jules/palette.md index 512bd9eea..d95afb2a8 100644 --- a/.jules/palette.md +++ b/.jules/palette.md @@ -4,3 +4,7 @@ ## 2026-07-14 - Scrubber Keyboard Accessibility **Learning:** Adding keyboard event listeners (like `onKeyDown`) to custom interactive elements (like a `div` acting as a scrubber/slider) doesn't automatically expose those shortcuts to screen readers. **Action:** Always add `aria-keyshortcuts` to custom ARIA widgets (like `role="slider"`) to announce available keyboard commands (e.g., "ArrowLeft ArrowRight Home End") when the element receives focus. + +## 2026-07-27 - Focus States for Interactive Elements +**Learning:** Custom buttons and interactive UI elements missing explicit focus indicators (e.g., `focus-visible:ring`) can severely degrade keyboard navigation experiences for a11y users, as focus changes become invisible. +**Action:** Always add `focus:outline-none focus-visible:ring-2 focus-visible:ring-[#6af2de]/40` (or similar brand color) classes to all interactive elements (` diff --git a/apps/web/src/components/dashboard/DashboardCanvasView.tsx b/apps/web/src/components/dashboard/DashboardCanvasView.tsx index 2fa7a9ad4..18b4cbb72 100644 --- a/apps/web/src/components/dashboard/DashboardCanvasView.tsx +++ b/apps/web/src/components/dashboard/DashboardCanvasView.tsx @@ -159,7 +159,7 @@ export default function DashboardCanvasView({ video, onClose, onExtractEvents }: > @@ -318,7 +318,7 @@ function RailReopen({ label, onClick, side }: { label: string; onClick: () => vo