- Set light theme as default for new users
- Change light theme background from #e5e7eb to #f8fafc (brighter)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Change Password popup modal in Island profile
- Convert avatar URLs to small variant (160x160) for thumbnails
- Add toSmallImageUrl utility function in client.js
- Update markerManager, IslandViewer, FriendsList, TopBar to use small images
- Backend now stores small variant for avatar uploads
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 'validated' to the list of accepted URL params for email verification,
since Keycloak sends validated=1 instead of verified=1.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Weather posts display as compact blue pills with emoji + temperature
- Weather posts forced to 'simple' type (never full card) to avoid duplicates
- Parse temperature from title when not available in data
- Z-index set to 10 (just above regular posts, below UI elements)
- Add fetchWeatherPosts and fetchMapPins API functions
- Add Weather modal components (WeatherModal, HourlyForecast, DailyForecast)
- Add DayNightTerminator component for map
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reset saveError and isSaving when opening create form
- Clear error when navigating between steps
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix removeMediaFromGallery -> removeMediaUrlAtIndex function reference
- Update create post floating UI styling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reduced width to 320px
- Removed teal accent, using light gray instead
- Improved text contrast for blue theme
- Darker background for better readability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Centered stacked layout at screen center
- Purple accent color instead of blue
- Compact padding and smaller fonts
- Glass effect with blur and transparency
- Theme support (dark/light/blue)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add long-press (1 second) on map to open create post popup
- Add close button (X) to mode selector and create post popups
- Improve create post popup design with glass-morphism effect
- Fix chat: mark messages as read when received in open chat
- Fix avatar styling for guest users (remove nested circles)
- Add userId to auth context for stable chat identification
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add WebSocket-based chat with presence indicators
- Add message delivery status (sending/sent/read)
- Add notification badges for unread messages
- Add body scroll lock on mobile to prevent keyboard issues
- Add visibility change handling to refresh data on browser resume
- Add internationalization (i18n) with English/French support
- Add timezone-aware message timestamps
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When a post was deleted while viewing it, the map interactions (drag, zoom)
were not being restored, leaving the map frozen.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Set autoWidenRef.current = true when user changes filter to prevent auto-widen
- Time filter now stays as user selected when changing category/subcategory
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use useDualCamera for device enumeration and reliable switching
- Auto-update LiveKit video track when camera swaps during live
- Only show switch button if device has 2 cameras
- Better camera unavailable state handling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add elapsed time counter (MM:SS) in header and stats
- Add comments section with real-time input
- Fix camera switch to work during live (replaceVideoTrack)
- Send comments to backend on finalize for saving
- Show comment count in end stream dialog
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add button to toggle front/back camera
- Shows spinner while switching
- Works before and during live stream
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update favicon and icons with new 2026 branding
- Fix video content display - skip hero replacement for video posts
- Add video_url to asset resolution in client.js
- Update LiveKit broadcast with egress recording
- Fix auth context and topbar styling
- Update PostCard and map styling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Prevent data: URLs from being sent to backend (crash browsers)
- Only send properly uploaded asset URLs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed KC_URL default to www.sociowire.com/auth to ensure all OAuth
flows go through the same domain, fixing cross-subdomain SSO issues.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Works on any domain (www.sociowire.com, us2.sociowire.com, etc.)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add clearBadTokens() to remove tokens with wrong issuer
- Exclude /auth routes from service worker caching
- Prevents black page when tokens from old auth config are stored
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wrap whoami/refreshProfile calls in try/catch
- Add .catch() handlers for async auth operations in useEffect
- Prevents React crash when API calls fail during SSO
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The service worker was using cache-first strategy for ALL requests
including API calls, causing stale data to be served indefinitely.
Now API routes (/api/*, /ws) are always fetched fresh.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>