- Fixed getTimeAgo(), getTimeRemaining(), and getRemainingClass() functions
- Database stores UTC timestamps but frontend was treating them as local time
- Added logic to append 'Z' to timestamps without timezone info to force UTC interpretation
- Now properly shows 48-hour countdown instead of incorrect 52-hour or 28-hour values
- Affects both main app (app-mapbox.js) and admin panel (admin.js)
- Corrected API endpoint URLs from /api/admin/profanity/words to /api/admin/profanity-words
- Fixed profanity test endpoint from /api/admin/profanity/test to /api/admin/test-profanity
- Updated data handling to match actual API response format
- Fixed profanity test results display to match API analysis structure
- All CRUD operations for profanity words now working correctly
- Added tab-based admin interface with separate Profanity Filter tab
- Implemented custom word management (add/delete words with severity levels)
- Added profanity filter testing interface for real-time validation
- Integrated with profanity database API endpoints
- Added comprehensive CSS styling for new UI components
- Full admin interface for managing custom profanity words and categories
Security improvements:
- Auto-logout after 30 minutes of inactivity
- Session warning 5 minutes before expiry with option to extend
- Activity-based session extension on user interaction
- Session validation on page load and API calls
- Periodic session validity checks every minute
- Secure cleanup of tokens and timers on logout
- Protection against expired session usage
This prevents unauthorized access if admin leaves session open or if tokens are compromised.
- Updated all static asset URLs to use iceymi.b-cdn.net CDN
- Changed favicon, CSS, and JS file references in index.html, admin.html, and privacy.html
- API calls remain pointed to origin server for dynamic content
- Ready for CDN deployment with proper cache separation
- Enhanced mobile responsiveness across entire site and admin panel
- Optimized layouts, font sizes, and spacing for screens ≤768px and ≤480px
- Made forms, tables, maps, and buttons touch-friendly
- Added responsive breakpoints for better mobile experience
- Added persistent reports functionality
- Added 'persistent' column to database with automatic migration
- Updated cleanup logic to preserve persistent reports (no auto-expiration)
- Added admin panel toggle for marking reports as persistent
- Added persistent report count to admin dashboard stats
- Visual indicators with lock/unlock icons for persistent status
- Improved admin panel UI
- Standardized header button styling and sizing
- Added 'Return to Homepage' button for better navigation
- Enhanced mobile responsiveness for admin interface
- Fixed table layouts and button arrangements for mobile devices
- Backend API enhancements
- New PATCH endpoint for toggling persistent status
- Updated admin routes to include persistent field
- Backwards compatible database migration