Commit Graph

439 Commits

Author SHA1 Message Date
canastack-platform e74bb448b0 v2: 3D globe on zoom-out (#223) + colored news-cluster zones (#224)
- useMapCore: MapLibre v5 globe projection in style spec (auto flat on zoom-in)
- EventClustersLayer: per-cluster color by dominant impact (green/red) or stable
  per-event hue; opacity/width scale with post_count; enabled by default
- MapView: clusterZonesEnabled state + search-bar toggle
(#222's 24h default + filter-follows-map-move already present in source)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 15:45:49 +00:00
Your Name 1eaa2f0ac9 Fix auto-retry and time filter pool clearing
- Fixed auto-retry: now retries if 0 posts in first 15s after page load
- Fixed time filter: now clears post pool when timeHours changes
- Removed buggy initialLoadRef-based retry that never triggered

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 19:00:26 +00:00
Your Name 3ee536f24f Add auto-retry mechanism for initial post loading
When fewer than 5 posts load on initial page visit, automatically
retry up to 2 times with 800ms delay. Helps with timing issues
where fetch completes before map is ready.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 18:45:19 +00:00
Your Name 53b6426a34 Fix engagement for news posts (guid-based)
News posts have id=0, causing early returns in engagement handlers.
Fixed by checking both postId and post?.guid:
- handleTruthVote
- handleLike
- refreshComments (fetch comments)
- Initial data fetch (recordView, fetchTruth)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 20:17:49 +00:00
Your Name fca617681a Add news post creation support
- Add createNewsPost function in client.js to call /api/news/post
- Update PostCreateModal to use createNewsPost for news mode
- News posts support text + images via core-api

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 19:09:16 +00:00
Your Name 498b41a2bf feat: SEO-friendly share URLs for news posts
- News posts now share as /news/slug-shortguid
- Native posts still use /p/id
- Short guid (8 chars) appended to slug for uniqueness

Example: /news/quebec-vows-protect-aerospace-55217e2d

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 05:27:12 +00:00
Your Name cd9ab30ab7 feat: Add app_id parameter to engagement functions for proper routing
All engagement functions (like, truth vote, share, view, comment)
now accept app_id in addition to guid. This enables the backend
to route requests to the correct system based on app_id.

- news-global → routes to news-app (ES-based)
- no app_id → routes to native post system (PostgreSQL/YCQL)

Future apps can be routed based on their app_id.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 04:46:10 +00:00
Your Name 5d5fae63c5 feat: Add guid support to all engagement functions for app posts
- Updated getId() in usePostsEngine.js to use guid for posts with app_id
- Added guid parameter to togglePostLike, votePostTruth, recordPostView,
  recordPostShare, createPostComment, fetchPostComments
- Updated PostDetailModal.jsx to pass guid for all engagement actions
- Updated markerManager.js to pass guid for comments

This enables proper engagement tracking for news/app posts that use
guid identifiers instead of numeric post_id.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 04:41:59 +00:00
Your Name a3e72c56ee Fix AppStore: English text, robust subscription loading
- Change hardcoded French to English (All, Marketplace, etc.)
- Handle subscription fetch failure gracefully (not logged in)
- Fix 'Failed to fetch' error when user not authenticated

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:19:31 +00:00
Your Name 987920a5e4 Add App Store integration to TopBar and wire up Apps category
- Add App Store button (puzzle piece icon) in TopBarNew
- Import AppStore component in App.jsx and add modal state
- Pass onOpenAppStore handler to TopBar
- PostCreateModal already has Apps category with app selector

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 19:26:34 +00:00
Your Name b3fc07b001 feat(frontend): add external apps UI components
- AppStore for browsing and subscribing to apps
- SubscribeModal with consent flow
- ExtAppPostCard for rendering app posts
- CreateAppPost for posting to subscribed apps
- MySubscriptions for managing subscriptions
- useExtAppFeed hook for fetching app posts
- extAppsApi client for all API calls

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 19:04:08 +00:00
Your Name 6d92a984ca fix: chat window mobile height overflow and keyboard handling
- Fix chat window going off-screen on mobile (was editing wrong file ChatWindow.jsx instead of ChatWindowNew.jsx)
- Add max-h-[65dvh] constraint to prevent overflow
- Replace scrollIntoView with scrollTop to prevent parent scroll
- Add keyboard detection with visualViewport API to move chat above keyboard
- Add missing translations for chat status (sending, sent, read)
- Add common.offline translation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 05:55:22 +00:00
Your Name e650cf2cae Move My Position button inside search bar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:17:01 +00:00
Your Name 7c09a62170 Fix: Prevent browser zoom on map - only map zoom should work
- Add user-scalable=no to viewport meta
- Add touch-action: none to map containers and markers
- Prevents pinch-zoom triggering browser zoom instead of map zoom

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 02:09:24 +00:00
Your Name afd620da68 Fix search suggestions dropdown visibility
- Add top: 100% to dropdown to position below search bar
- Increase z-index to 9000 to ensure visibility above map elements
- Add overflow: visible to parent containers to prevent clipping

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 01:27:50 +00:00
Your Name ce76c57902 fix: Skip time filter when showing search results
When user searches, show all matching results regardless of time filter.
The time filter should only apply to normal map browsing, not explicit searches.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 01:17:03 +00:00
Your Name 33e7213ca9 fix: Use ref instead of stale closure for search state check
The load() function was using searchQuery from a stale closure,
causing it to skip fetches even after search was cleared.
Now uses searchResultsRef which is always current.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 00:57:35 +00:00
Your Name 3e780268ba feat: Islands v116 - Search bar fixes and island post improvements
- Fix search bar: single X button, form submit for Enter key
- Fix search clearing to properly refetch normal posts
- Hide native browser search cancel button with CSS
- Add island post support with island_username context
- Interactive island terrain with click-to-place posts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 00:51:57 +00:00
Your Name 90e9f79fcd v116: Interactive island terrain with click-to-place posts
- Island terrain now interactive like a map
- Click anywhere on your island to place a post at that position
- Pending post marker shows where you clicked with confirm/cancel buttons
- Posts saved with island_x and island_y coordinates (0-100%)
- PostComposer accepts islandX/islandY and includes in payload
- Posts display at their saved coordinates, fallback to random if not set
- Added translations for new UI elements (EN/FR)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 23:26:06 +00:00
Your Name fa90d7426b v115: Use existing FAB for island posts with island_username context
- FAB (+) button now context-aware - includes island_username when on island
- PostComposer accepts islandUsername prop and includes in payload
- Removed custom post buttons from island terrain view
- Global __activeIslandContext set when viewing an island
- App.jsx handles sw:openPostCreator event for island posts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 23:15:56 +00:00
Your Name 717e5f64a1 v114: Add owner badge on islands + floating create post button
- "Mon île" badge appears on user's own island with home icon
- Floating FAB button to create post when viewing own island
- Badge has pulse animation to stand out
- FAB positioned bottom-right with pop animation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 23:06:33 +00:00
Your Name e1956b1383 v113: Enable map navigation + full-screen island terrain view
- 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>
2026-01-24 23:01:29 +00:00
Your Name 6422aeebfe v112: Scatter islands randomly + full-screen terrain zoom with posts
- 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>
2026-01-24 22:52:05 +00:00
Your Name b6b176271b v111: Implement in-map zoom for islands/planets + create planet modal
- 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>
2026-01-24 21:10:13 +00:00
Your Name e8af1a6a08 feat: Add terrain zoom view for Islands and Planets
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>
2026-01-24 20:57:41 +00:00
Your Name 36626fa091 feat: Add profile/edit icons to island markers, fix planets API
- 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>
2026-01-24 20:46:03 +00:00
Your Name ef075ccb9b feat: Move world nav buttons into search bars
- 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>
2026-01-24 20:12:43 +00:00
Your Name 9706d673c3 feat: Add 3 separate worlds system (Map, Islands, Planets)
- 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>
2026-01-24 19:53:32 +00:00
Your Name ac99f0f1e4 docs: Add islands-planets agent context file
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>
2026-01-24 18:44:42 +00:00
Your Name 8e11dc732f chore: Bump version to 0.0.103, fix planet filter tabs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 08:16:58 +00:00
Your Name 5ffec6bcec feat: Add planet markers to IslandUniverse map
- 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>
2026-01-24 07:49:55 +00:00
Your Name 7faf0b180b feat: Add planets fetch and tabs UI to IslandUniverse
- 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>
2026-01-24 07:43:01 +00:00
Your Name a1ef3cf6ff feat: Add universe tabs and planet marker CSS
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 07:37:12 +00:00
Your Name 733296dd59 feat: Add planets API and translations (safe incremental)
- 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>
2026-01-24 07:34:45 +00:00
Your Name c50c61ff36 fix: content filter triggers immediate refetch on change
- 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>
2026-01-23 16:49:07 +00:00
Your Name 3a469dfa8d Fix tags display in PostDetailModal
- 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>
2026-01-23 03:03:46 +00:00
Your Name 9e6f3f8029 feat: add impact-colored tags to post modals
- 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>
2026-01-22 14:45:25 +00:00
Your Name 91e024e156 Fix image gallery deduplication for absolute vs relative URLs
- 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>
2026-01-21 23:02:54 +00:00
Your Name 3a29812319 Fix gallery to use image_urls only, not media_urls
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>
2026-01-21 21:07:26 +00:00
Your Name 081fba7244 Increase card sizes and improve gallery deduplication
- Polaroid scale: 0.58/0.48 (desktop/mobile)
- Handle _l, _m, _s suffixes in gallery deduplication

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:00:49 +00:00
Your Name 848f19d02b Increase map card size (scale 0.52/0.42)
- 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>
2026-01-21 20:48:11 +00:00
Your Name cc3baf8c29 Fix image gallery deduplication for short suffixes
- 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>
2026-01-21 20:45:03 +00:00
Your Name 61654601ff Increase compact map marker size
- 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>
2026-01-21 20:42:56 +00:00
Your Name 2a9ec02d1c Fix map cards, share URL, and post modal issues
- Fix share URL format (/p/ instead of /post/)
- Reduce map card size (scale 0.45/0.38)
- Add polaroid tilt effect via CSS variable
- Fix card positioning above pointer
- Improve gallery image deduplication
- Fix save error handling in post edit

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:38:52 +00:00
Your Name 30c962e95e fix: Weather widget positioning and z-index
- 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>
2026-01-21 10:38:06 +00:00
Your Name 3c3a6639e4 feat: Add weather widget with apps system
- 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>
2026-01-21 10:18:34 +00:00
Your Name e635d0e7f6 feat: Add event clusters visualization with lake-like zones
- 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>
2026-01-21 07:44:07 +00:00
Your Name da4fde9185 Fix template selection for posts with images but empty content_type
- 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>
2026-01-21 01:53:39 +00:00
Your Name dd5954caad fix: improve content filtering for unknown types
- 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>
2026-01-20 16:57:44 +00:00
Your Name 4b3bbe01ef Show 'Wired to Life' tagline on mobile (v0.0.95)
- Remove hidden class, show on all screen sizes
- Smaller text (7px) and dot (1px) on mobile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 07:42:56 +00:00