github andrew-codes/playnite-web v12.0.0

latest release: v12.0.1
one day ago

12.0.0 (2025-10-13)

Features

BREAKING CHANGES

    • IMPORTANT: remove extension settings config.json file prior to
      upgrading. This file may be found:
      %USER%\AppData\Roaming\Playnite\ExtensionData\ec3439e3-51ee-43cb-9a8a-5d82cf45edac\config.json.
  • Retired MQTT messaging in favor of GraphQL API with WebSocket
    subscriptions
    • MQTT messages are used solely to handle cover art
    • Requires Postgres database via DATABASE_URL environment variable
    • Requires SECRET environment variable for JWT-based authentication
    • Playnite plugin now uses GraphQL for all communication with web app

Major Features:

Database & Multi-Tenancy:

  • Implemented Prisma/Postgres relational schema with User, Library,
    Release, Platform, Feature, Tag, CompletionStatus, Playlist, Asset,
    SiteSettings, and UserSetting models
  • Enabled multi-tenant support allowing multiple users with multiple
    Playnite libraries per application instance
    • Added database migrations support for schema evolution

GraphQL API & Real-time Subscriptions:

  • Replaced MQTT with GraphQL as primary programmatic interface
  • Implemented WebSocket-based GraphQL subscriptions for real-time
    updates
  • Playnite plugin now authenticates via GraphQL, publishes library
    updates, and subscribes to web app changes
  • Added mutations for remote control: start, restart, and stop releases

Authentication & Authorization:

  • Implemented JWT-based authentication with secure cookie and header
    support
    • Added protected routes middleware for auth-gated pages
    • Improved sign-in/out flows with proper navigation handling
  • Added CSRF protection with Helmet CSP and configurable allowed origins
    • Site admin and user settings pages with role-based access

UI/UX Improvements:

  • Restored and enhanced game filtering and navigation
  • Fixed layout issues including double scrollbars and grid sizing
  • Improved SSR error handling with better error UI components
  • Reduced layout shift and initial API calls for better performance
  • Updated help page styles and minor UI tweaks throughout
  • Automatic game cover art retrieval from IGN (requires matching game
    names)

Library Sync & Real-time Updates:

  • Improved library sync reliability with proper ordering and conditional
    publishing
  • Immediate reflection of changes between Playnite desktop app and web
    interface
    • Better handling of entity collection changes and updates
    • Fixed game asset path resolution and image slug generation

Testing & CI Infrastructure:

  • Comprehensive Cypress test suite updates (e2e, component, visual
    regression)
    • Added code coverage reporting with GitHub Actions integration
    • Dockerized e2e test flow with proper sharp/vips dependencies
    • Fixed flaky test timing and removed obsolete tests
    • Enabled SWC for faster builds and test execution
    • Added Lighthouse audits for performance monitoring

Docker & Deployment:

  • Optimized multi-stage Dockerfile for web app with alpine base
  • Improved Docker build times for development
  • Packaged Prisma client with correct binary targets
  • Proper asset copying and environment variable handling

Performance & SSR:

  • Fixed server-side rendering errors across multiple routes
  • Proper use of compression middleware
  • Optimized MUI component rendering and interaction timing
  • Reduced unnecessary data fetching on initial page load
  • Improved database connection management in development

Developer Experience:

  • Updated Nx workspace configuration and cleanup
  • Better Prisma connection handling in dev environment
  • Fixed linting errors and removed dead code
  • Improved CI workflow reliability

This release represents a fundamental architectural shift from
MQTT-based messaging to a modern GraphQL API with PostgreSQL
persistence, enabling multi-tenant support, improved real-time
synchronization, and a more maintainable codebase.

Don't miss a new playnite-web release

NewReleases is sending notifications on new releases.