What's New

Recent updates and improvements to Luminography

πŸͺ΅

Behind-the-scenes reliability work to make issues easier to catch and diagnose.

  • Server-side errors are now captured with Serilog, writing to both the console and a daily rolling log file (logs/errors-YYYYMMDD.txt).
  • The full solution now builds with zero warnings and zero errors after a pass cleaning up nullable-reference and Razor component warnings.
🎀

A new Voice Control page (left nav, /voice) lets you speak a theme name and instantly switch any display β€” no need to open Edit Screen.

  • Uses the browser's built-in Web Speech API β€” no API key or third-party service required.
  • A dropdown selects which screen to target when you have multiple displays registered.
  • Common command words ("switch to", "show me", "go to") are stripped before matching, so natural phrases like "show me the weather" work as expected.
  • Theme change is persisted to the database and broadcast via SignalR β€” the display switches immediately.
  • Status area shows real-time feedback: Listening, Matched theme name, or No theme matched.
  • A history panel shows the last five voice-dispatched theme changes with screen name, theme, and time.
  • Requires Chrome or Safari; Firefox shows a friendly unsupported message.
🚦

A new Traffic theme displays a full-screen live traffic map centered on your configured location.

  • Uses the Google Maps JavaScript API with a TrafficLayer β€” roads are color-coded green (clear), amber (slow), and red (heavy) in real time.
  • Custom dark map style keeps the traffic colors vivid and easy to read from across the room.
  • Traffic data updates automatically as conditions change β€” no manual refresh needed.
  • Top-left legend shows the color key; top-right badge shows a live pulse indicator.
  • Bottom overlay shows your location name and a live ticking clock.
  • Uses the existing Google Maps API key β€” no additional setup required.
πŸ“œ

A new On This Day theme cycles through historical events that occurred on today's date, powered by Wikipedia's free API.

  • Wikipedia article thumbnail fills the screen with a slow Ken Burns zoom and a cinematic dark overlay.
  • The event year is displayed in large amber type; the description appears below in an elegant serif font.
  • Events are shuffled on each load so the screen always shows a fresh selection.
  • Fades between events on each timer tick (respects the global Rotation Speed setting).
  • No API key required β€” pulls directly from Wikipedia's public REST API.
⚑

Admin pages now feel faster and more responsive on first load.

  • No more frozen pages β€” the Home, Screens, and Schedules pages are immediately interactive when they appear. Previously, the page looked ready but clicks did nothing until the server connection finished warming up.
  • Home page stats show pulsing placeholder dashes while loading, then snap to live counts β€” instead of the whole page stalling.
  • Screens and Schedules show a spinner while data loads, so the page appears instantly rather than waiting on the database.
  • Database queries now run once per visit instead of twice β€” eliminating a redundant server round-trip that happened on every page load due to Blazor's prerender phase.
πŸ•ΉοΈ

The Arcade theme received a full retro CRT treatment layered over the rotating game artwork.

  • CRT scanlines β€” a repeating horizontal line pattern gives the display an authentic old-monitor feel.
  • Dark vignette β€” edges fade to black like a real CRT screen.
  • Animated neon border β€” cycles through magenta, cyan, yellow, and orange with a glowing inset shadow.
  • Cyan corner brackets frame the display in classic arcade style.
  • HUD bar β€” top bar shows a live 1UP score, High Score, and Level that advance with each image rotation.
  • Flashing title card β€” "READY!", "PLAYER 1", "GAME ON!" and similar messages pulse in the center briefly on each cycle.
  • INSERT COIN β€” yellow step-blinking text at the bottom completes the look.
πŸ“°

A new Latest News theme cycles through top headlines from NewsAPI.org one article at a time.

  • Full-screen background image pulled from each article with a Ken Burns slow zoom.
  • Dark gradient overlay surfaces the source name, relative publish time, headline, and a two-line description.
  • Progress dots at the bottom show position within the current batch of headlines.
  • Articles auto-advance every 12 seconds (respects the global Rotation Speed setting).
  • A πŸ“° Latest News badge appears top-right in a frosted glass pill.
  • Requires a free NewsAPI.org API key configured in appsettings.json.
πŸ–ΌοΈ

A new Library section (left nav) replaces the old Manage Photos page with a proper media management hub.

  • Click-to-upload zone accepts JPEG, PNG, and WEBP files up to 20 MB each.
  • Responsive photo grid shows thumbnail, original filename, and upload date.
  • Hover a card to reveal a delete button; or click cards to multi-select and bulk delete.
  • Upload progress bar and toast notifications for success and per-file errors.
πŸ”Œ

A new External Apps page (left nav) provides a reference hub for every third-party API the app uses.

  • Cards for TMDB, ESPN, Unsplash, Google Calendar, Spotify, NASA APOD, NewsAPI, Open-Meteo, Google Maps, JokeAPI, Open Trivia DB, and SendGrid.
  • Each card shows a color-coded status badge: Active, No key required, Needs setup, or Stub.
  • Theme pills show which display themes each service powers.
  • Direct links to each service's developer portal or documentation.
πŸ“§

Transactional email is now live via SendGrid. Account emails that were previously no-ops now actually send.

  • Email confirmation links sent on new account registration.
  • Password reset links and one-time codes for the forgot-password flow.
  • Implemented all three IEmailSender<ApplicationUser> methods required by ASP.NET Core Identity.
  • API key is loaded from appsettings.json β€” never hard-coded.
🎬

The "Now Playing" badge on the Movies theme was overlaid on top of the poster art, partially obscuring it. It is now positioned above the poster image in a dedicated flex row.

  • Badge sits in its own horizontal band with a bottom border separating it from the poster below.
  • Poster fills the remaining height without any overlay obstruction.
🎨

The admin interface got a visual refresh β€” warmer tones, cleaner layout, and a distinct branded sidebar.

  • Amber accent palette β€” buttons, nav hover/active states, and focus rings all use a warm amber (#f59e0b family) via Radzen CSS variables.
  • Lavender-white page background (#eef2f7) gives the UI an airy, light feel.
  • Sidebar has a branded "πŸ“Ί Luminography" header in amber, with pill-style active nav links.
  • Indigo/violet is reserved as the editorial accent β€” hero taglines, CTA banners, changelog tags, and in-content links β€” keeping chrome and content visually distinct.
πŸ–ΌοΈ

Theme selection on the Edit Screen page was replaced with visual card thumbnails β€” a colored gradient preview with an emoji icon and label for each theme.

  • Themes are grouped by category: Movies, Sports, Entertainment, TV & Art, Weather, and Other.
  • The active theme is highlighted with an indigo border and glow.
  • Cards have a press animation for tactile feel on touch screens.
πŸ“±

People near a trivia display can now scan a QR code and play along on their phone in real time.

  • QR code overlay appears in the corner of the Trivia display showing the join URL.
  • Mobile players navigate to /trivia-play/{device-id} and immediately see the current question.
  • Players tap an answer β€” buttons turn green (correct) or red (wrong) when the host reveals the answer.
  • Questions and answer reveals are pushed via SignalR, so phones stay in sync with the display with no polling.
  • Player count badge on the Trivia display shows "πŸ‘₯ N playing" in real time as people join or leave.
🎬

Movie poster themes (Favorites, Trending, Top Rated, Upcoming) now use a cinematic flash-to-black between posters instead of a plain crossfade.

  • A black overlay fades in over the current poster, the image swaps, then the overlay fades out β€” mimicking a theater cut.
  • Fully compatible with the existing Ken Burns slow-zoom animation.
  • ImageComponent gained a FlashToBlack parameter so individual themes can opt in or stay with crossfade.
πŸ“ˆ

A new Markets display theme shows live stock index quotes in a dark terminal-style layout.

  • Index cards display the current price, point change, percent change, and a day-range bar showing where the price sits between the daily low and high.
  • A market-status badge in the header shows Open, Pre-Market, After Hours, or Closed with a colored dot.
  • Quotes refresh every 60 seconds with a live countdown timer in the footer.
  • Gains are highlighted in green, losses in red, using a monospace font for the financial aesthetic.
πŸ”­

A new NASA APOD theme pulls today's Astronomy Picture of the Day from NASA's public API and fills the screen with it.

  • Image slowly zooms with a Ken Burns effect over a 60-second loop.
  • A gradient overlay at the bottom surfaces the title, date, and a truncated explanation.
  • Copyright attribution is shown when the image is credited to a photographer.
  • Video APODs are gracefully handled with a fallback state instead of a broken embed.
πŸ—ΊοΈ

A new Map theme displays a full-screen Google Maps satellite view with a location name overlay at the bottom.

  • The satellite iframe fills the entire display with no chrome or controls visible.
  • A gradient overlay shows the location name, region, and GPS coordinates in a clean typographic layout.
  • The API key is loaded from server configuration β€” no credentials in markup.
An unhandled error has occurred. Reload πŸ—™

Rejoining the server...

The session has been paused by the server.

Failed to resume the session.