mirror of
https://github.com/andrew-codes/playnite-web.git
synced 2026-01-09 07:53:44 +08:00
BREAKING CHANGES:
- 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.
Closes #715
Closes #765
Closes #772
Closes #761
Closes #768
Closes #763
Closes #762
Closes #760
Closes #769
Closes #716
Closes #766
Closes #764
Closes #767
Closes #770
Closes #775
Closes #776
Clsoes #682
Closes #588
Closes #682
Closes #709
BREAKING CHANGES
4 lines
62 B
Plaintext
Executable File
4 lines
62 B
Plaintext
Executable File
/.yarn/releases/* binary
|
|
/.yarn/plugins/**/* binary
|
|
text=auto
|