75 Commits

Author SHA1 Message Date
Andrew Smith
092356f037
docs: update to documentation (#913)
- **docs: update readme build status**
- **test: better wait on images to load**
- **docs: fix volume mount in docker compose docs**
2025-12-25 18:42:30 -05:00
Andrew Smith
f4a31c00da
docs: update docker compose file 2025-12-24 11:32:40 -05:00
Andrew Smith
71eb339b5a
feat: move library sync to processor, optimize cover art retrieval (#903)
Library syncs can lock the web app. Syncs now occur async by offloading a message to be consumed by sync-library-processor (formerly game-assets-processor). E2E sync tests are now against the processor, to be removed from playnite-web-app. New snapshot mechanism used for local dev and e2e tests; allows a database to be snapshotted and restored.

next/image is used to optimze cover art and platform images.

BREAKING CHANGE: game-assets-processor renamed to sync-library-processor to reflect its new responsibilities; refer to new docker-compose sample for deployment. This will require users to sync their libraries again after updating.
2025-12-24 11:28:30 -05:00
j-kendrick0
1fed790437 docs: fixed link formatting
Fixed a link formatting error.
2025-11-09 16:36:27 -08:00
j-kendrick0
92ca4fbca7 docs: broken link
Fixed another broken link.
2025-11-09 16:34:51 -08:00
j-kendrick0
066a22eeed docs: deleted rfc.md, fixed links, updated contributor guidelines
- Deleted rfc.md, we determined this file isn't needed.
- Updated contributor guidelines to include more details and clarity around the various types of contribution.
- Fixed some broken links caused by renaming the directory.
2025-11-09 16:28:33 -08:00
j-kendrick0
f25fd52fdd docs: renamed directory, moved CONTRIBUTING back to main docs folder
- Renamed back to CONTRIBUTING.md
- Moved the file back to main docs folder
- Renamed folder back to "docs"
2025-11-08 16:32:56 -08:00
j-kendrick0
1b6fbda944 docs: moved MQTT plugin guide to documentation directory
Moved the MQTT plugin guide to be in the main documentation directory.

Fixes #889
2025-11-06 19:00:21 -08:00
Andrew Smith
ac0198973b
docs: new troubleshooting topic, updated folders, updated README. (#886)
- Added a new Troubleshooting topic for documenting common problems and
their solutions. Included information about what to do if you discover a
security vulnerability.
- Deleted dedicated SECURITY.md file, added note about security to
Getting Started section of main README file.
- Renamed folders in the documentation directory to make it easier to
quickly scan folder names and navigate the repo, i.e. changed “guides”
to “user-guides”.
- Deleted the “design” folder and the README.md file it contained,
because the README was an empty file, making it effectively an empty
folder. Did this to streamline folder structure by eliminating
redundancy.
- Updated the main README file to add punctuation and reword some
content. Updated the Getting Started section to add more details about
where to find information. Added notice about submitting a security item
to the Getting Started section.
- Fixed a small typo (missing word) in the setup guide.

Fixes #858 
Fixes #857
2025-11-05 09:22:08 -05:00
j-kendrick0
22f2bbfec7 Documentation: New Troubleshooting topic, updated folders, updated README.
- Added a new Troubleshooting topic for documenting common problems and their solutions. Included information about what to do if you discover a security vulnerability.
- Deleted dedicated SECURITY.md file, added note about security to Getting Started section of main README file.
- Renamed folders in the documentation directory to make it easier to quickly scan folder names and navigate the repo, i.e. changed “guides” to “user guides”.
- Deleted the “design” folder and the README.md file it contained, because the README was an empty file, making it effectively an empty folder. Did this to streamline folder structure by eliminating redundancy.
- Updated the main README file to add punctuation and reword some content. Updated the Getting Started section to add more details about where to find information. Added notice about submitting a security item to the Getting Started section.
- Fixed a small typo (missing word) in the setup guide.
2025-11-03 23:19:35 -08:00
Andrew Smith
d4a7e8c700
tweak codex created documentation 2025-10-28 10:46:11 -04:00
Andrew Smith
f853396718
docs: add playnite web mqtt plugin guide 2025-10-28 10:46:10 -04:00
Andrew Smith
6765024aad
remove semaphore and leverage multi-insert SQL 2025-10-15 12:01:12 -04:00
Andrew Smith
c0f6b96c76
control concurrent db connections 2025-10-15 11:47:03 -04:00
Andrew Smith
7bbbcb1c5b
docs: compose file specifies games database 2025-10-12 16:59:48 -04:00
Andrew Smith
feb9f4af64
feat: migrate to GraphQL API with Postgres, multi-tenant architecture
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
2025-10-07 12:16:26 -04:00
andrew-codes
bc8958e9b2 [skip ci] docs: automated update to docs
skip-checks: true
2025-02-12 16:22:06 +00:00
andrew-codes
c03a35c42e [skip ci] docs: automated update to docs
skip-checks: true
2025-02-10 14:32:54 +00:00
andrew-codes
df54211228 [skip ci] docs: automated update to docs
skip-checks: true
2025-02-09 01:18:36 +00:00
andrew-codes
334ee10be7 [skip ci] docs: automated update to docs
skip-checks: true
2025-02-05 20:30:04 +00:00
andrew-codes
8aad05dc98 [skip ci] docs: automated update to docs
skip-checks: true
2025-01-31 00:04:08 +00:00
andrew-codes
199f121a72 [skip ci] docs: automated update to docs
skip-checks: true
2025-01-30 22:37:09 +00:00
andrew-codes
6536f73723 [skip ci] docs: automated update to docs
skip-checks: true
2024-11-26 20:31:29 +00:00
Andrew Smith
0909013a73 file mode changes 2024-10-27 15:57:32 +00:00
andrew-codes
03128e27b3 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-27 14:38:37 +00:00
Andrew Smith
c2d3d5c190 filemode only changes 2024-10-27 14:36:08 +00:00
andrew-codes
3172d46d99 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-27 14:26:59 +00:00
Andrew Smith
57fe7d6018 whitespace 2024-10-27 14:12:19 +00:00
andrew-codes
a0f72bed1c [skip ci] docs: automated update to docs
skip-checks: true
2024-10-27 14:06:38 +00:00
Andrew Smith
8c521ed0c9 docs: ✏️ update generated docs
 Closes: #598
2024-10-27 14:04:22 +00:00
Andrew Smith
78da8c1ad6 whitespace 2024-10-26 21:35:33 +00:00
andrew-codes
4ee1ff5463 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-26 21:26:59 +00:00
Andrew Smith
b159d1f96f upgrade node version 2024-10-26 21:25:46 +00:00
Andrew Smith
d5e3d3f41d whitespace 2024-10-26 21:19:27 +00:00
andrew-codes
302ad07149 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-26 21:11:43 +00:00
Andrew Smith
baa6d2885a docs: whitespace 2024-10-26 17:52:10 +00:00
andrew-codes
298d5f5776 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-26 15:16:52 +00:00
Andrew Smith
3a95b109d8 whitespace 2024-10-26 15:15:35 +00:00
andrew-codes
cb7cb6b30b [skip ci] docs: automated update to docs
skip-checks: true
2024-10-25 14:06:01 +00:00
Andrew Smith
8320c28404 docs: stop release 2024-10-25 13:48:55 +00:00
andrew-codes
6a6ffcfb1e [skip ci] docs: automated update to docs
skip-checks: true
2024-10-25 13:18:09 +00:00
Andrew Smith
2ce2f82c3d enable x11 forwarding 2024-10-24 13:28:03 +00:00
andrew-codes
63646325a3 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-22 15:06:45 +00:00
andrew-codes
7d156b81b9 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-20 19:50:07 +00:00
andrew-codes
260f37a758 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-20 14:06:00 +00:00
andrew-codes
694cd7c0cb [skip ci] docs: automated update to docs
skip-checks: true
2024-10-18 01:37:59 +00:00
andrew-codes
3b4a8232c9 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-16 20:37:01 +00:00
andrew-codes
5c6af0b442 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-16 20:23:50 +00:00
andrew-codes
69c8ea7dc5 [skip ci] docs: automated update to docs
skip-checks: true
2024-10-16 20:21:30 +00:00
andrew-codes
36d64e4dfa docs: automated update to docs
skip-checks: true
2024-10-16 20:19:48 +00:00