FileTree:
- Add ARIA labels to new file button
- Add role="button", tabIndex, and keyboard navigation (Enter/Space) for file/folder items
- Add aria-label for expand/collapse folder states
- Add aria-expanded attribute for folders
- Add focus ring styles (focus:ring-2 focus:ring-accent)
- Add aria-hidden to decorative icons
SearchInFilesPanel:
- Add ARIA labels to close button and search button
- Add aria-label to search input
- Add aria-live="polite" to results count badge
- Add keyboard navigation (Enter/Space) to search results
- Add focus ring styles to search results
- Add role="button" to clickable result items
- Add aria-label to case sensitive checkbox
- Add aria-hidden to decorative icons
AIChat:
- Add aria-live="polite" to chat messages area
- Add role="log" to messages container
- Add aria-label to message input textarea
- Add aria-label to send button
- Add role="note" to keyboard shortcut hint
- Add aria-hidden to decorative icons
Successfully merged latest changes from main while preserving all bug fixes:
Preserved Bug Fixes:
- window.spark null checks in AIChat.tsx (line 36-38)
- window.spark null checks in Toolbar.tsx (line 28)
- window guard in CodeEditor.tsx minimap (line 49)
- Ref type fix in ConsolePanel.tsx
- Checkbox type fixes in NewProjectModal.tsx
- Window guards in use-mobile.ts, sidebar.tsx
- Silent error handling in tailwind.config.js
New Features from Main:
- Enhanced AI prompt with code completion support
- Code syntax highlighting in AI responses
- Improved editor styling and scrollbar customization
- New education, analytics, and collaboration panels
- PostHog and Sentry integration
- Passport authentication
- Asset library and certification features
All merge conflicts resolved with both security fixes and new features intact.
This commit addresses 21+ bugs identified in the codebase scan:
High Severity Fixes:
- Add window.spark null checks in Toolbar.tsx and AIChat.tsx to prevent crashes
- Fix ref type mismatch in ConsolePanel.tsx by using scrollIntoView pattern
- Fix checkbox type casting in NewProjectModal.tsx (handle 'indeterminate' state)
Medium Severity Fixes:
- Add window guards for SSR safety in use-mobile.ts hook
- Add window guards in CodeEditor.tsx for minimap configuration
- Add window guards in sidebar.tsx for keyboard event listeners
- Remove console.error from AIChat.tsx (already has toast notifications)
- Replace console.error with silent fallback in tailwind.config.js
These improvements enhance:
1. Runtime safety - no more crashes from undefined window.spark
2. Type safety - proper handling of Radix UI checkbox states
3. SSR compatibility - all window accesses are now guarded
4. User experience - better error handling with toast notifications
All changes maintain backward compatibility and existing functionality.