- Removed auto-rotation, enabled drag/pan/zoom navigation
- Added navigation controls (zoom buttons)
- Islands placed in a grid with jitter (25° spacing)
- Clicking island opens full-screen overlay with island terrain
- Island shape rendered as SVG background (ocean, sand, grass, trees)
- Posts displayed scattered on the island terrain
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Islands now scattered across 300° world area using seeded random positions
- When clicking island, zooms to fill screen (zoom 16, pitch 0)
- Full-screen terrain overlay shows posts scattered on the island
- Posts positioned pseudo-randomly based on island seed
- Loading state while fetching island posts
- Empty state with "create first post" CTA for island owner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Islands: clicking zooms camera to island position using flyTo()
- Planets: same zoom behavior + Create Planet button with modal
- Search bar repositioned higher (top: 52px, z-index: 600)
- Removed unnecessary Create Island button (islands auto-create with profiles)
- Added zoomed overlay UI with back button, info, and post actions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When clicking an island or planet:
- Zooms into a full-screen terrain view
- Shows the island/planet surface as an interactive map
- Posts are displayed as markers on the terrain
- Back button to return to world view
- Post button for authenticated users (on own island)
Changes:
- Fixed search bar position to fixed top: 56px (below topbar)
- Removed Create Island button (islands auto-create with profile)
- Removed planet detail modal (replaced with terrain view)
- Added Island/Planet TerrainCanvas components
- Added fetchIslandPosts API function
- Added terrain CSS styles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add profile button to view user profile from island marker
- Add edit button (owner only) to modify island
- Style island action buttons with hover animations
- Fix planets API endpoint to use /planets/nearby
- Fix create planet endpoint to use /planets/create
- Match search bar positioning with map overlay (0.7rem top)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove top world nav bar
- Add Islands/Planets buttons to Map search bar
- Add Map/Planets buttons to Islands search bar
- Add Map/Islands buttons to Planets search bar
- Move search bars to fixed position just below topbar
- Compact button styling matching map design
- v0.0.107
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add world navigation bar with 3 buttons to switch between worlds
- Create IslandsWorld component: personal metaverse with floating islands
- Create PlanetsWorld component: group metaverse with orbiting planets
- Each world has full-screen immersive MapLibre visualization
- Add search functionality with icon badges in Islands/Planets views
- Always start on Map view on page load
- Add translations for EN, FR, ES
- v0.0.104
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents Islands (personal spaces) and Planets (group spaces)
architecture, API endpoints, data models, and TODO roadmap.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Display planets as ringed spheres in outer ring
- Add getPlanetColor helper for planet themes
- Planet markers show name and member count
- Click handler ready for future navigation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fetch planets alongside islands with error handling
- Add filter tabs (All/Islands/Planets)
- Show planets count in header
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add planet API functions to client.js (fetchPlanets, createPlanet, etc.)
- Add updateIsland function for island customization
- Add sociowire:create-post event listener in App.jsx
- Add planets translations (EN, FR, ES)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix race condition between content filter effect and general filter effect
- Map content filters to proper content_type values for backend
- Links → link, Image → image/picture/photo, Text → post/system/news_enriched
- Live → live/camera/stream, Video → video
- Ensure forceFetch fires moveend to trigger refetch
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use event_tags (API field) instead of tags
- Add impact-based coloring (green positive, red negative, default neutral)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update renderTagPills to accept topicImpacts and apply color classes
- Tags colored by impact: negative=red, neutral=blue, positive=green
- Add CSS for tag color classes (sw-tag-negative, sw-tag-neutral, sw-tag-positive)
- Tags display below title in post modals
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extract filename only (not full path) for deduplication
- Same image as https://domain/path/file.jpg and /path/file.jpg
were not being deduplicated because full paths differ
- Updated both PostDetailModal.jsx and markerManager.js
- Added fetchPostById to get full post data with image_urls
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
media_urls is for video files, image_urls is for images.
Updated PostDetailModal.jsx and markerManager.js to exclude
media_urls from gallery image collection.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix duplicate CSS rule that was overriding card size
- Increase scale from 0.45 to 0.52 (desktop) and 0.38 to 0.42 (mobile)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Handle _l, _m, _s size suffixes in addition to _large, _medium, _small
- Prevents carousel from showing duplicate images in different sizes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Larger padding, dot, and text for compact markers
- max-width increased from 180px to 220px
- font-size increased from 11px to 13px
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Position at 64px from top (desktop & mobile)
- z-index 830 (above FAB, below searchbar dropdown)
- Throttle map updates to 2 seconds
- Click outside to close expanded view
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Weather widget in top-left slot with compact pill display
- Click to expand 7-day forecast
- Uses apps system via Pulsar with Open-Meteo fallback
- Click outside to close expanded view
- Throttled updates (1/sec) when moving map
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add EventClustersLayer component with convex hull algorithm
- Clusters appear as organic shapes around member posts
- Only visible when Clusters filter is selected
- Add fetchEventClusters API function
- Update ContentFilters with cluster filter option
- Filter posts by cluster membership when filter active
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added detection for posts with images when content_type is empty
- Posts with images now correctly show as polaroid style instead of news
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Unknown content types (systems, news-scrapper) treated as text
- Filter "text" now includes news and unknown types
- Add KNOWN_CONTENT_TYPES set for type detection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Always dispatch live-post-deleted when stream ends (removes marker)
- If saved, also dispatch live-post-created with video post
- Add commenter avatar fetching from profile API
- Display profile pictures in live chat comments
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fullscreen video preview with gradient overlays
- Pre-live: Collapsible settings panel for title/category
- Live: Floating comments section with toggle
- Modern pill-style badges for LIVE/viewers/timer
- Camera switch and settings buttons on right side
- End stream confirmation with Save/Discard/Continue options
- Websocket events for live-post-updated/deleted already handled
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add liveData state to MapView for title/category/subCategory
- Pass initialTitle, initialCategory, initialSubCategory to LiveKitBroadcast
- Skip form in LiveKitBroadcast when data provided from PostCreateModal
- Show ready state with title/category instead of redundant form
- Fix auto-scroll only on new comment (v0.0.90)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add justCommentedRef to track when user submits a comment
- Only scroll to comments bottom when user adds new comment
- Don't auto-scroll when modal opens with existing comments
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fetch profile avatars for commenters
- Apply post category gradient to comment avatars
- Add events, friends, market to CATEGORY_CONFIG
- Fix first comment race condition with setTimeout
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Category icon shown when post has no image (with gradient background)
- Author avatar fetched from profile API and displayed
- Logo position adjusted (6px down, 1px left)
- Comments auto-open when existing comments present
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
TopBar:
- Responsive logo size (adapts to mobile)
- Logo positioned correctly (+5px down, +2px right)
- Brand text "SOCIOWIRE" visible on all sizes
- Tagline "Wired to Life" hidden on mobile
- Smaller action buttons on mobile (w-7 → w-9 responsive)
- Friends button always visible (opens login if not auth)
- Removed duplicate search bar and location button
PostDetailModal:
- Truth score block made more compact
- Comments use correct API fields (username, body)
- Comments auto-open when there are existing comments
- Fixed comment API response handling (ok at end of spread)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add unified getPostType() detection for 6 post types: link, story, picture, video, live, camera
- Create dedicated Hero components for each post type
- Quebec511 cameras now use proxy stream /live/api/stream/{id}
- Fix media URLs to use relative paths (same origin)
- Add scroll lock when modal is open
- Generic link display (domain name instead of "Read article")
- Stories with images show gallery, text-only shows gradient
- Support long text content with proper scrolling
- Add i18n keys for modal (EN/FR/ES)
- markerManager.js now dispatches React event for all post types
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove old truthBadge click handler that cycled through votes
- Add check to skip vote if already voted that way (no double-click bug)
- Fetch initial vote state and show active button
- Update button styles to show current vote
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove duplicate truth vote section (was showing 2 truth scores)
- Add thumbs up/down buttons to existing truth badge
- Fix client.js to use truth_score (final score) instead of user_score (vote effect)
- Both regular and cluster modals have voting in the badge
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add truth vote section with thumbs up/down buttons and progress rail
- Fix image gallery deduplication in map overlay (add image_urls support)
- Both regular and cluster modals now have the truth voting UI
- Score display with color-coded rail (green/amber/red)
- Interactive button feedback on vote
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Step 1: Show crosshair to pick location with confirm/cancel buttons
- Step 2: Open PostCreateModal with selected coords
- Fix createPost to use authHeaders() automatically
- Add location picker UI with hints and styled buttons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace old 3-step wizard with single-screen PostCreateModal
- Simplify handleOpenCreate function
- Connect modal submit to createPost API
- Connect Go Live button to LiveKit broadcast
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
TopBar:
- Animated gradient accent line
- Glowing logo with pulse effect
- Theme selector pills on desktop (visible again)
- Cleaner action buttons with color states
PostCreateModal:
- 4 content modes: Text, Photo, Link, Live
- Link mode with auto-preview
- Live mode with Go Live button
- Category and sub-category selection
- Image upload with gallery
- All features from old wizard in single screen
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Simplified topbar design (cleaner, more minimal)
- Created PostCreateModal.jsx for single-screen post creation
- Removed complex animated gradients from topbar
- Made logo and brand text cleaner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace complex truth rail with simple badge in post modal
- Truth score now displays like small cards (colored circle with number)
- Remove API calls that were overwriting correct truth scores
- Add vote functionality to badge (click to cycle vote)
- Fix truth score not updating due to WebSocket race conditions
- Various UI color and style improvements
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
PostCardNew:
- Photo/image: Polaroid-only layout (no duplicate card)
- Video: Play button overlay with title at bottom
- Camera/Live: TV style with LIVE badge and title overlay
- Default: Full card with header/body/footer
- Hidden header/body for media content types
Live Comments:
- Added comments panel to LiveKitViewerModal
- Optimistic UI update for instant feedback
- Auto-scroll and polling every 3 seconds
- Styled chat interface with animations
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
PostCardNew now renders different styles based on content_type:
- camera/live/stream: TV-style with red pulsing LIVE badge
- video: Card with centered play button overlay
- photo/picture/image: Polaroid white-frame style
- default: Standard gallery image
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Islands Universe:
- Grid-based positioning to prevent overlap
- Much bigger islands (120px) with detailed SVG
- Beach rings, palm trees, huts, sparkles
- Info cards with username, post count, terrain type
- Zoomed out view to see all islands
Island Viewer:
- Bigger island visualization (320-400px)
- Terrain-specific decorations (emoji)
- Add Post button for island owners
- Share Island button with native share API
Post Modal:
- Hide "Open source" button when no URL
- Changed to link instead of disabled button
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>