Commit Graph

388 Commits

Author SHA1 Message Date
Your Name bc9700d522 Use published_at for pruning and search radius 2025-12-29 22:39:05 -05:00
Your Name 0bd4988ad7 Adjust map radius and fetch limits 2025-12-29 22:25:59 -05:00
Your Name a9bc4d02e6 fix: tighten search bar layout 2025-12-28 23:48:41 -05:00
Your Name 972ba1afe5 feat: refine create flow and island UI 2025-12-28 22:50:32 -05:00
Your Name 909715c2d7 Improve map UX, theming, and privacy page 2025-12-27 14:50:18 -05:00
Your Name 55ecfbd34e Fix fakalyzer UI and realtime updates 2025-12-26 21:11:22 -05:00
Your Name b8ac7d2010 Enhance analytics, map overlay, and UI fixes 2025-12-26 19:21:04 -05:00
Your Name 6417194d90 Limit visible posts to 45 2025-12-26 02:34:30 -05:00
Your Name 453e17b6eb Always push history for modal back behavior 2025-12-26 02:32:21 -05:00
Your Name f6cda99b4c Fix back button closing modal 2025-12-26 02:27:39 -05:00
Your Name 8adab752ff Cap visible posts at 60 2025-12-26 02:01:26 -05:00
Your Name 09562d8876 Raise smart feed request limit to 60 2025-12-26 02:00:38 -05:00
Your Name 2eb182fccc Restrict map to bounds-only posts 2025-12-26 01:48:59 -05:00
Your Name d7bf3e22cb Show fallback posts when bounds empty 2025-12-26 01:40:11 -05:00
Your Name 68cb21fc23 Relax map bounds filter and add radius fallback 2025-12-26 01:34:25 -05:00
Your Name 92e9cfc566 Send zoom to smart feed and rely on reco 2025-12-26 01:16:13 -05:00
Your Name e15c78e950 Backfill smart feed with posts when sparse 2025-12-26 01:10:59 -05:00
Your Name 5685668d18 Debounce map fetch and cap feed size 2025-12-26 01:01:39 -05:00
Your Name 903622e523 Refine search picks and cap map fetch 2025-12-26 00:49:01 -05:00
Your Name 252c6b3891 Adjust search behavior and add GA tag 2025-12-26 00:41:20 -05:00
Your Name 81c64999c4 Filter map results when picking search suggestions 2025-12-26 00:28:12 -05:00
Your Name 43fefaf235 Limit visible posts in map view 2025-12-26 00:24:40 -05:00
Your Name 40b1924a77 Cap smart feed results and add search fetch 2025-12-26 00:20:04 -05:00
Your Name 80b266ca56 Add post visibility controls and island profile avatar 2025-12-25 23:29:52 -05:00
Your Name 1fcff38e56 Add asset privacy controls for post images 2025-12-25 22:37:10 -05:00
Your Name d06819181e Wire islands API and avatar uploads 2025-12-25 21:54:59 -05:00
Your Name e1e5999617 Close fullscreen modal on back 2025-12-25 21:28:27 -05:00
Your Name 406d1f5886 Add Keycloak Google SSO login UI 2025-12-25 21:19:10 -05:00
Your Name 35fb6cf5b7 Ensure topbar pill contains icons 2025-12-25 17:43:54 -05:00
Your Name a2bc6ad608 Tighten topbar dock padding 2025-12-25 17:37:56 -05:00
Your Name e34838bc1b Adjust topbar height and modal truth rail 2025-12-25 17:12:24 -05:00
Your Name 5a9c49ab87 Use event date for modal and tighten truth rail 2025-12-25 17:09:03 -05:00
Your Name 3d7a33b06e Add truth rail and remove duplicate modal content 2025-12-25 16:39:10 -05:00
Your Name c4b7f6cb90 Normalize map image URLs 2025-12-25 02:29:55 -05:00
Your Name 8fa842ecb7 Refine sociowall feed and post media fallbacks 2025-12-25 00:45:15 -05:00
Your Name ffeaee6e88 Improve post modal auth flow and share handling 2025-12-24 23:02:11 -05:00
Your Name 40bc03d90d Add map clustering with priority pins 2025-12-24 14:59:14 -05:00
Your Name eca8c6c270 Improve map fetch, search UX, and filters 2025-12-24 14:30:44 -05:00
Your Name e38238d199 Fix: Offset upward for new posts and clear filters on pick
1. New post pin offset upward
   - Changed from {x: 0, y: 0} to {x: 0, y: -80}
   - Negative Y = moves UP on screen
   - Compensates for anchor:bottom positioning
   - Pin now appears at crosshair position

2. Clear filters when picking post from suggestions
   - When clicking a post in search results
   - Set mainFilter and subFilter to "All"
   - Ensures the post is visible
   - No more "post hidden by filters" issue

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 20:27:48 -05:00
Your Name 366cfc0417 Fix: Auto-adjust filters on search and fix post pin position
1. Auto-clear category filters when searching
   - When user searches, set mainFilter and subFilter to "All"
   - Ensures search results are visible regardless of category
   - No more hidden results due to filter mismatch

2. Fix post pin offset after creation
   - New posts (< 10 seconds old) have NO smart offset
   - Respects crosshair position chosen by user
   - Pin appears exactly where user aimed
   - Older posts still get smart offset to avoid overlaps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 20:20:55 -05:00
Your Name 964a133f5b Feature: Intelligent zoom and fix dropdown z-index
1. Fixed dropdown z-index
   - Set .map-overlay-top z-index to 500
   - Now dropdown appears above filter buttons (z-index: 300)

2. Intelligent zoom when searching
   - 1 result: Zoom to that post (zoom level 14)
   - Multiple results: Calculate bounding box and fitBounds()
   - Shows all matching posts together on map
   - Padding of 100px on all sides
   - MaxZoom 15 to avoid zooming too close

When you search and press Enter, the map automatically adjusts
to show all matching results optimally.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 20:13:02 -05:00
Your Name b013a71ea6 Feature: Add clear button and fix dropdown z-index
Changes:
1. Added clear (X) button in search bar
   - Only appears when there's text
   - Clears search query AND filters
   - Clean X icon with hover effect

2. Fixed dropdown z-index
   - Changed from z-index: 50 to z-index: 9999
   - Now appears above all other UI elements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 20:05:32 -05:00
Your Name 797859ac80 Feature: Add search filtering on Enter key
Users can now:
1. Type a query and press Enter (without selecting a suggestion) to filter posts on the map
2. When picking a post suggestion, it navigates AND filters by that post's title
3. When picking a city/place, it navigates but clears the filter

Changes:
- SmartSearchBar: Added onSearch prop, triggers on Enter with no active item
- MapView: Added handleSearch() to set searchQuery for filtering
- Posts are automatically filtered by usePostsEngine's matchesSearch()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 16:10:06 -05:00
Your Name 9d906fb4a4 Fix: Simplify marker DOM structure for better map anchoring
Removed intermediate sw-simple-pin-container div that was causing
issues with MapLibre GL marker positioning. The root element is now
directly a flex container, which should fix pins staying at screen
position instead of following map geography during pan/rotation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 16:03:58 -05:00
Your Name 266292eba2 Final polish: Remove duplicate buttons, fix pin anchoring
1. Remove Duplicate Buttons (MapView.jsx):
   - Removed "My spot" and "New wire" buttons from map-top-actions
   - These functions already available in SmartSearchBar icons
   - Cleaner UI, less clutter

2. Fix Pin Anchoring - Pins Stay Fixed Now! (markerManager.js):
   - Root element now has fixed dimensions: width:40px, height:52px
   - Pin container positioned absolute bottom:0 (ensures correct anchor point)
   - Hover card uses bottom:100% instead of fixed pixel value
   - Transform includes translateY(-6px) for proper spacing
   - Result: Pins remain perfectly fixed at geographic position during zoom/pan

Pin DOM structure now:
```
<div root style="width:40px;height:52px"> (anchor bottom here)
  <div container style="position:absolute;bottom:0">
    <circle>image</circle>
    <triangle>point</triangle>
  </div>
  <div hover-card style="bottom:100%">preview</div>
</div>
```

The key: Root has explicit height, pin container at bottom,
so MapLibre anchor:"bottom" aligns triangle point with lat/lon

Tested: Pins now stay locked to position on zoom/pan 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 15:48:01 -05:00
Your Name 28e760d616 Major UX improvements: Smart search, navigation, fixed markers
1. Smart Search Integration (MapView.jsx, SmartSearchBar.jsx):
   - Replace simple search bar with SmartSearchBar component
   - Suggestions appear on focus (popular cities/regions)
   - Suggestions update as user types (debounced 150ms)
   - Click suggestion → fly to location with appropriate zoom
   - Search triggers even with empty query for popular results

2. Navigation to Cities (MapView.jsx):
   - New handlePickSuggestion() function
   - Extracts coords from suggestion (supports coords array or lat/lon)
   - Uses map.flyTo() with smart zoom levels per type:
     * Cities: zoom 11
     * Regions: zoom 7
     * Posts: zoom 16
     * Profiles: zoom 14
   - Clears search after navigation

3. Fixed Marker Anchoring (markerManager.js):
   - Changed anchor: "center" → "bottom"
   - Markers now stay fixed at geographic position
   - Pin design: circle image + triangular point (52px height)
   - Point positioned at exact lat/lon location
   - No more drifting when map moves!

4. Improved Pin Design:
   - Circle (32px) with category color background
   - White border + shadow for visibility
   - Triangular point (16px) below circle
   - Image inside circle if available
   - Hover card positioned above pin (bottom: 58px)
   - Smooth transitions on hover/click

Mobile-friendly: Works on cellphone without console, visual feedback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 15:39:58 -05:00
Your Name 069072dc14 Fix: Allow search suggestions with empty query for popular results
Changes:
- Comment out early return when query is empty
- Allow recoSearch to be called with empty/trimmed query
- Backend returns popular cities/regions when query is empty
- Enables showing suggestions immediately on focus (UX improvement)

Backend test confirms it works:
$ curl "http://localhost:8081/api/suggestions?q="
Returns: 6 popular suggestions (Montreal, Quebec City, Toronto, etc.)

$ curl "http://localhost:8081/api/suggestions?q=to"
Returns: Toronto, Seattle, Boston

Now users will see suggestions as they type + popular items on focus

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 15:30:45 -05:00
Your Name c659c0267d Fix: Hide PWA install button when installed, improve clustering, add debug logs
Fixes three major issues:

1. PWA Install Button (TopBar.jsx):
   - Import isRunningAsPWA() and canInstall() from pwaInstall.js
   - Add state to track if button should be shown
   - Listen to beforeinstallprompt and appinstalled events
   - Hide button when app is already installed or running as PWA

2. Search Suggestions Debug (SmartSearchBar.jsx, recoSearch.js):
   - Add console.log statements to trace search flow
   - Track: search query, results count, errors
   - Helps diagnose why suggestions don't appear
   - recoSearch: Log each endpoint attempt and response

3. Clustering Improvements (usePostsEngine.js, postPriority.js):
   - Reduce maxFullCards: 15 → 12 (fewer full cards)
   - Increase clusterRadius: 0.0015 → 0.002 (~200m for better grouping)
   - Increase minScoreForCard: 35 → 50 (stricter threshold)
   - Reduce default recoScore: 50 → 40 (lower baseline)
   - Add console.log for prioritization results
   - Result: More posts shown as simple markers, less clutter

Debug logs will be visible in browser console to diagnose issues

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 15:23:44 -05:00
Your Name 76adb74833 Add intelligent post clustering and simple markers
Implement smart prioritization system to reduce map clutter:
- Create priority scoring based on reco score, category, freshness, distance, engagement
- Cluster nearby posts and show best post as full card, others as simple markers
- Simple markers: circular icons with category colors, hover preview, click to expand
- Max 15 full cards displayed, rest shown as compact markers
- Optimize search debounce: 220ms → 150ms for faster suggestions

New files:
- postPriority.js: Scoring and clustering algorithm

Updated:
- markerManager.js: Add createSimpleMarkerForPost() with hover cards
- usePostsEngine.js: Use prioritizePosts() to separate full cards vs simple markers
- SmartSearchBar.jsx: Faster debounce (150ms), increased limit to 12 suggestions

Result: Less visual clutter, better UX with prioritized content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 15:15:53 -05:00
Your Name 6d94b6ac12 Fix PWA: hide install prompt when already installed or running as PWA
- Add isRunningAsPWA() detection (standalone mode, iOS, Android)
- Add localStorage tracking to remember installation state
- Skip prompt if already running as PWA or previously installed
- Increase auto-prompt delay from 5s to 10s for better UX
- Export canInstall() to check installation availability
- Mark as installed when appinstalled event fires

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 15:03:09 -05:00