Locations Our Story How it works? Support Us Contact Us What's new?

Locating the sun's position

Stay 10 min longer
Next Sunset
How is this sunset?
Not Loading
No Sunset
It's OK
Nice
WOW!
Sunset Score
No Feed
No Sunset
OK
Nice
WOW!
How is the sunset ranked?

AI analysis plus recency-weighted viewer votes.

No FeedNo Feed
No SunsetNo Sunset
OKOK
NiceNice
WOW!WOW!
View top moments from this location
What's New
v2.0.8 May 22, 2026
  • admin/cron-logs.php: long error messages and AI reasons now show a "more/less" expand toggle instead of being hard-truncated
v2.0.7 May 22, 2026
  • frame-helpers.php: fetch_yt_frame() rewritten β€” now calls yt-dlp + ffmpeg directly on the server instead of the external api.livesunset.io service
  • frame-helpers.php: m3u8 stream URL cached in locations.m3u8_url (5-hour TTL) β€” avoids re-running yt-dlp on every frame capture
  • frame-helpers.php: proxy rotation across 10 residential proxies for both yt-dlp and ffmpeg
  • ai-config.php: removed unused FRAME_API_URL and FRAME_API_KEY constants
v2.0.6 May 21, 2026
  • scripts/analyze_sunrise.php: new cron script for sunrise quality-check pipeline using v_current_sunrises and sunrise-specific AI prompt
  • analyze-helpers.php: analyze_location_once() and build_analysis_prompt() now accept $category param β€” shared logic for both sunset and sunrise, with score_reasoning and confidence fields populated for sunrise
  • analyze_sunset.php and analyze_sunrise.php: process 1 location per run (down from 5)
  • analyze_sunset.php and run_jobs.php: web-accessible via ?key=ls_cron_2026 query string (CLI still works)
v2.0.5 May 20, 2026
  • Frame capture extracted into includes/frame-helpers.php and scripts/capture_frames.php β€” independently monitored via cron_run_logs job_type=capture_frame
  • Admin β€Ί Cron Logs: Capture Frame job now visible in filter and KPI cards
v2.0.4 May 20, 2026
  • Fix: AI analysis INSERT switched from prepared statements to direct mysqli_query (fixes sky_condition truncation error on MariaDB strict mode)
v2.0.3 May 20, 2026
  • Admin β€Ί Jobs: "Analyze Sunset" card with Run Now button β€” manually trigger AI quality-check pipeline from the dashboard
  • Admin β€Ί Cron Logs: new page showing execution history for all automated jobs (AI analysis, sunset times, timezones, weather) with KPI cards, filters, and paginated table
  • Admin β€Ί Jobs Dashboard: Cron Status strip shows last run time and success/error state per job type
  • Scripts: analyze_sunset.php and run_jobs.php replace Make.com automation with self-hosted cron jobs including full logging
v2.0.2 May 4, 2026
  • Sunrise window shortened from 2 hours to 1.5 hours after sunrise
  • Countdown chip now shows "1h 26m ago" format instead of raw minutes for longer durations
v2.0.1 May 4, 2026
  • Admin β€Ί All segmented pages (Votes, Engagement, Action Log, AI Analysis, Eval Data, Analytics) now show only data for the active inventory category
  • Admin β€Ί Category toggle: fixed-position segmented control β€” Sunset always left, Sunrise always right; selection persists via cookie across sessions
  • Admin β€Ί Sidebar logo now reflects the active category toggle
v2.0.0 May 3, 2026
  • Admin β€Ί Candidates: "Approve anyway" button on previously dismissed candidates β€” you can now re-open and add any declined video
  • Admin β€Ί Locations: Sunset Now / All Locations columns now reflect the active inventory category
  • Admin β€Ί Locations & Candidates: Time Zones coverage strip and map correctly highlight which UTC offsets are currently active
  • Admin β€Ί Add Location: category pre-selected to match the active inventory toggle
  • Various admin panel improvements and bug fixes
v1.9.0 May 2, 2026
  • Three-tier viewer score: votes are now weighted by tier β€” Tier 1 (today + Β±30 min window, Γ—1.0), Tier 2 (today, any time, Γ—0.5), Tier 3 (last 14 days not today + Β±30 min window, Γ—0.3) β€” earlier votes from the same day now contribute meaningfully
  • Score blending changed to 50% AI / 50% human (was 70/30)
  • Admin β€Ί Recent Votes: page size increased to 25 with pagination controls
  • Admin β€Ί Recent Votes: delete button added per row (confirm dialog, instant row removal)
v1.8.9 May 2, 2026
  • Viewer score algorithm: votes now filtered to Β±30 min of the current UTC time-of-day and last 14 days only β€” score reflects what the sky looks like right now, not historical averages from different times of day
  • Admin β€Ί Locations β€Ί Sunset Now: timezone column removed, new Detailed Rankings column shows individual qualifying votes (time ago, score, country flag) plus an "all votes β†’" debug link
  • Admin β€Ί Votes: Debug button added to Recent Votes and Top Locations tabs β€” opens per-location vote breakdown
  • Admin β€Ί new Location Votes debug page: shows all 14-day votes, highlights the ones counting toward the current score, displays live viewer score and active UTC window
  • Vote scoring logic centralised into ls_vote_score_where() / ls_vote_in_window() β€” single source of truth for both the scorer and all admin displays
v1.8.7 May 2, 2026
  • Controls panel: buttons made more prominent (higher contrast border/text), link buttons (About/The tech/Support) background unified with icon buttons
  • Support button heart icon now filled red
  • Location hint right gradient aligned to controls border β€” eliminates the seam between the location tiles and controls areas
v1.8.6 Apr 30, 2026
  • Mobile portrait: tapping the Sunset Score bar now opens an inline score info panel (blended / AI / viewer scores + AI reason) below the bar, replacing the location grid β€” tap βœ• to return to locations
  • Mobile portrait: How it works and Our Story modals capped at 80vh with scrollable body so the close button is always visible
  • Mobile menu: Support Us link added to the hamburger menu
v1.8.5 Apr 30, 2026
  • Sidebar redesigned: height reduced 5%, controls panel widened to 270px, new bottom row with About / The tech / Support link buttons replacing the old footer nav
  • Our Story modal: rewritten copy, inline links to What's New and How it works
  • How it works modal: new modal added explaining the app flow, tech stack, and support link
  • Version badge moved to left column, now reads "What's new?" and opens the changelog
  • Sidebar background opacity adjusted to 0.70
v1.8.4 Apr 30, 2026
  • Fixed presentation-mode switching to an old sunset on tab return β€” checkPresentationSwitch() now waits 250ms for stale tile fade-out animations to complete before reading the location list
v1.8.3 Apr 30, 2026
  • Cloudinary delivery URLs for location and quality-check thumbnails now use w_300,q_auto,f_auto (automatic format and quality) everywhere they are rendered β€” YouTube-hosted thumbnails are unchanged
  • Sunset Score chip under the location name shows the word label (e.g. OK, WOW!) instead of a numeric x/5; portrait bar matches
v1.8.2 Apr 30, 2026
  • Vote rate limit is session-only (same location + PHP session within 30 minutes) β€” removed IP-based cooldown that could block unrelated visitors behind the same proxy; no cooldown when session id is missing or shorter than 8 characters
v1.8.1 Apr 30, 2026
  • Sunset Score slide-in panel redesigned β€” clearer vertical flow, accessible heading, three boxed scores (Blended composite with muted β€œ/ 5”, AI scan, Viewers), labelled 1–5 legend with larger icons, and a button CTA to view top moments on the location page
  • Blended ranking: AI plus decay-weighted viewer votes; the composite drives list sorting and on-screen chips where available
  • One vote per location per 30 minutes (session when possible, otherwise IP), with clearer in-panel messaging when you have already voted β€” run db/user_votes_session_id.sql on the database before relying on session-based limits
  • Admin location lists and map sort by blended score, with AI vs viewer breakdown where relevant
v1.8.0 Apr 29, 2026
  • Horizontal scroll hint arrows on the location strip β€” a right arrow appears when there are enough cameras to overflow, a left arrow appears after scrolling right, and both fade when no longer needed
  • Clicking the scroll hint arrows scrolls the location strip by ~280px; arrows auto-hide when content does not overflow
  • Sunset score icon (vote emoji) shown as a small rounded-square badge in the top-right corner of each location tile
  • Sunset score icon also shown inside the Sunset Score pill on the main video header
  • Score badge tooltips on desktop β€” hovering the tile icon shows the score label (e.g. "WOW!", "Nice", "No Sunset") to the left of the badge
  • Corrected score 2 label from "No Sun" to "No Sunset" across the entire app
v1.7.9 Apr 26, 2026
  • Video switch throttle reduced from 3s to 1s β€” cameras switch more responsively on user click
  • Fix v_current_sunsets view: quality score staleness now uses a 6-hour window instead of UTC midnight, preventing all scores from resetting at 00:00 GMT
v1.7.8 Apr 26, 2026
  • New admin Eval Data page: manually tag sunset snapshots (0–5 scale) to build a human-labelled test set stored in prompt_test_set
  • Eval Results tab: comparison table of prompt evaluation runs with exact match %, within-1-point %, and mean error; per-score breakdown cards with drift and accuracy bars
  • Detail view for each eval run: image grid with human vs AI score badges, AI reason text, and filter buttons by score level and error type
v1.7.7 Apr 25, 2026
  • All timers (location poll, transfer countdown) are fully paused when the tab goes to the background and cleanly restarted on return β€” eliminates the black-blink and surprise-switch on tab return
  • Transfer modal progress bar rewritten with wall-clock timing (Date.now) instead of tick-counting, so browser-throttled background ticks can never batch and fire multiple switches at once
  • On tab return: if last sync was more than 1 minute ago, a location refresh fires immediately (so presentation mode can switch without waiting up to 60 more seconds)
v1.7.6 Apr 25, 2026
  • Presentation mode no longer uses a background timer β€” switching to the #1 stream is now driven by the 60s heartbeat poll, so passive-tab return can never trigger an unwanted immediate video switch
  • Tab-return now initialises lastSyncAt to page-load time, preventing a spurious switch on first return within 5 minutes
  • Debug panel (?debug=1): tooltips on all variables and timestamps, +1min clock button that also fires the presentation check, Close button, and xxx keyboard shortcut to toggle the panel
v1.7.5 Apr 25, 2026
  • Tab return no longer force-reloads the video unless 5+ minutes have passed since the last sync β€” fixes "Video unavailable" flicker when quickly switching tabs
  • Switching streams is now throttled to once per 3 seconds; clicking a camera too fast shows a subtle "Slow down…" hint over the video
  • New admin Action Log page: real-time view of user actions (last 30 min) from tmp_user_views, with per-session drill-down, server IP badge, and a toggle to hide/show the streaming server's own heartbeats
v1.7.4 Apr 25, 2026
  • When you return to the tab, the app now runs a single ordered step: refresh locations β†’ switch to the top-ranked stream if needed β†’ reset poll and presentation timers, with guards to stop overlapping YouTube loads that could flicker or fail
  • Tweaked desktop YouTube player positioning (less top crop from the negative margin)
v1.7.3 Apr 25, 2026
  • Presentation Mode now always switches to the #1 ranked live sunset (never down the list) every 5 minutes, and it no longer turns off when you change locations β€” only the toggle disables it
  • Engagement analytics: heartbeats are now split into foreground (tab visible) vs background (tab hidden) minutes
  • AI Analysis: added an Accuracy tab comparing recent user votes vs the closest AI check (with local camera timezone times), and expanded internal AI details (scene_description + scene_reasoning) in the admin UI
v1.7.2 Apr 24, 2026
  • Database: the v_current_sunsets view now treats a camera’s quality score as 1 for each new day until a fresh scan runs, so yesterday’s score no longer carries into the live-sunset list. The view definition is checked in as db/v_current_sunsets.sql for documentation.
v1.7.1 Apr 22, 2026
  • Fixed blank screen when returning to the tab after hours away β€” the app now silently switches to the best live sunset immediately instead of showing the transfer modal
  • YouTube player is un-stalled on tab focus if it paused itself in the background
  • Fresh location data is fetched instantly on tab return instead of waiting for the next 60-second poll
v1.7.0 Apr 22, 2026
  • Presentation Mode β€” auto-switches to a higher-ranked sunset every 5 minutes via the transfer modal; starts on by default and turns off when you manually pick a camera
  • Redesigned sidebar controls β€” SVG icons, consistent button size, bordered pill style with hover and active states
  • Music button turns amber when playing; Vote button disables with a green βœ“ badge after voting and unlocks on camera switch
  • Country flag now shown on desktop next to the location name (was mobile-only)
  • "Streaming sunsets 24/7" tagline is now a link to the locations page
  • Country name shorthand dictionary β€” long names like "United States Virgin Islands" are automatically shortened
  • Sidebar height reduced 10%, location cards aspect-ratio locked, controls column widened to fit all four buttons in one row
  • Auto/presentation mode toggle added to mobile header controls
  • Removed auto-opening vote popup at the 1-minute sunset mark
  • Local time and temperature chips hidden (temporarily)
v1.6.2 Apr 17, 2026
  • Cleanup: location tile HTML is now generated in PHP only β€” the duplicate JavaScript renderer is gone, so server-side and live-poll inserts always produce identical markup with zero risk of drift
v1.6.1 Apr 17, 2026
  • Initial page load now renders the location list server-side β€” no more "loading" placeholder tiles, the sidebar is fully populated on first paint
  • Polling for fresh data starts 60 seconds after page load instead of immediately (the embedded payload covers the first minute)
v1.6.0 Apr 17, 2026
  • Unified the page-load and polling APIs β€” locations, weather, and per-camera local time now come from a single /api/get-locations.php JSON call (down from three separate endpoints)
  • Sidebar now refreshes every minute with a smart diff β€” sort order, countdowns, temperatures and quality scores update silently, new cameras fade in, expired ones fade out, no full reload
  • Camera no longer auto-switches when its countdown hits zero β€” instead, the next sunset is offered (via the existing transfer modal) only when the current camera actually drops out of the live window
  • Per-camera weather lookups collapsed into a single batched query, removing the N+1 round-trip on page load
v1.5.6 Apr 17, 2026
  • Camera switch curtain holds 250ms longer (550ms total) so the new YouTube stream is fully ready before being revealed
v1.5.5 Apr 17, 2026
  • Fixed the YouTube iframe drifting a few pixels to the right after a camera switch (forced display:block on the iframe so jQuery can't make it inline)
v1.5.4 Apr 17, 2026
  • Cleaner camera switch on mobile β€” black curtain over the player while YouTube swaps the embed, then a 200ms reveal with location info appearing in sync
v1.5.3 Apr 17, 2026
  • Snappier camera switch β€” player hides instantly on click and fades back in over 200ms once the new stream starts playing
v1.5.2 Apr 17, 2026
  • Fixed video player nudging slightly to the right after switching cameras (iframe was being rendered as inline)
  • Tuned the camera-switch crossfade β€” a touch of breathing room so the new feed eases in (200ms out, 800ms in)
  • End-of-sunset transfer modal now overlays only the video player area instead of the full screen, and always sits above other UI
v1.5 Apr 17, 2026
  • Mobile portrait support β€” LiveSunset now works on phones in portrait mode
  • Portrait layout includes a location info bar, Sunset Score strip, and a camera grid below the video
  • Country flag now appears next to the location name in the mobile info bar
  • Sunset Score bar redesigned β€” tighter spacing closer to the video, with score icons aligned to the pill on the same row
  • Locations grid now scrolls vertically on mobile β€” every camera is reachable, not just the first 9
  • Smooth fade transition between cameras hides the brief YouTube logo flash when switching
  • "Locations" item in the mobile menu now opens the full /locations directory page
  • Admin Votes β€” main KPI changed from average ranking to "WOW / NICE %" (votes scored 4 or 5 in the last 30 days), with the same metric on the monthly chart
v1.4 Apr 12, 2026
  • URL sync β€” address bar updates to /#city-country-id as you watch each camera, enabling shareable links
  • Direct hash navigation β€” visiting livesunset.io/#city-country-id jumps straight to that camera if it's live
  • "Not active" modal β€” if the requested camera is not in the current window, a friendly prompt offers to view the location page or watch a live sunset instead
  • Browser back/forward now navigates between previously watched locations
  • Virtual pageviews sent to Plausible on every location switch for per-camera analytics
  • "View location info and historical sunsets" link replaces the old "Rank and contribute" CTA in the Sunset Score panel
v1.3 Apr 11, 2026
  • Individual camera pages β€” each location now has its own page at /{city}-{country}
  • Most Beautiful Sunsets showcase β€” top-scored screenshots highlighted per camera
  • Recent Sunsets β€” 30 days of captures with page-by-page navigation
  • Sunset Score History chart β€” 30-day daily averages with colour-coded score icons
  • Nearby Cameras section β€” other cameras in the same country with preview thumbnails
  • New /locations directory β€” browse all active cameras in one place
  • Dynamic sitemap.xml β€” all camera pages now indexed by search engines
  • SEO improvements β€” canonical tags, Open Graph, Twitter Card, and JSON-LD on all pages
v1.2 Apr 9, 2026
  • Feeds that go offline can now be temporarily hidden and re-enabled without losing any data
  • Fixed location names showing a leading comma when no region is set (e.g. Tokyo, Japan)
  • Various admin and AI analysis improvements
v1.1 Apr 7, 2026
  • Live thumbnails are now scraped directly from the video stream for cameras where YouTube doesn't return a live thumbnail
  • Current sunsets filter corrected β€” no more stale sunsets appearing hours after they passed
v1.0 Apr 4, 2026
  • Back after 5 years β€” LiveSunset is alive again!
  • AI now analyses each live camera feed and ranks sunset quality 1–5
  • Sunset Score panel β€” tap the chip to see the AI reasoning, scan time, and ranking
  • Real YouTube thumbnails replace the old country stock photos
  • Redesigned vote modal β€” bigger icons, blurred backdrop, click outside to close
  • Sunsets are now sorted by a mix of quality score and proximity to sunset time
  • Admin panel rebuilt with locations, votes, jobs, and analytics sections
  • Mobile bottom bar is more compact