- Implement event handlers for 'playback_started', 'playback_ended' and 'media_recently_added'
- Add API routes to manage event webhook status
- Create user interface components for easy webhook configuration
- Update webhook manager to properly trigger events
- Add translations for new UI elements
task manager implementation to start/stop tasks WIP
implemented socket client for internal communication between threads - needs more testing as connection string is hardcoded
added loopback in ws server to pass through toast ws messages from threads - needs more testing
fixed potential bug during config fetch function when syncing
changed frontend activity elements to use server-side paging
Bug in MaterialReactTable causing page index to reset was found aswell as a bug that prevents expanding subrows when using manual pagination. Solution is WIP
Added a busy loader to activity tables
Added Dynamic API loader framework for Emby/Jellyfin switching, Emby API is still WIP, DO NOT USE as per #133
Reworked ome pages for correct url mapping of emby external links
Added IS_JELLYFIN flag to config endpoint to indicate if server is displaying Emby or Jellyfin Data
Fix for #218 Require Login set to false still displays Login Page until reload
New feat: Grouped Recently added Episodes under Seasons and Episode count on Home page. Toggle to revert back to ugrouped display will be added later
Added middleware to infer param types in API to simplify value checks, eg bool or numeric parameters
Changed Dockerfile as previos file was failing to build consistently
removed some unused packages
added compression to json payloads
changed vite ports to 3000 to not break existing builds
backend and frontend both use port 3000 now
Added JS_USER and JS_PASSWORD to env variables so that these credentials can be used to access jellystat incase of forgotten credentials
Added swagger implementation + swag doc auto-generator
Reworked Tasks and logging to prevent overlapping tasks from executing. This is done by reworking the logging process so that the task state is stored and accurately tracked allowing us to check for currently running tasks.
Backup and sync tasks also reworked to reduce code redundancy and allow for better error handling
Websockets finally fixed and implementation has begun
Added Toast notifications
Made changes to sync process
Data calls are now paginated at 200 items per call
Recursive search added to account for items within subfolders
Reduced API calls by recursive calls on entire library vs per library/show/season
New:
Added automated tasks for Sync and Backups - Backups run every 24hrs, Sync runs every 10 minutes
Added switcher to switch between 12hr/24hr time formats
Added sorting to Activity Tables
Added Version Checking and indicators
Added logging on Tasks + Log Page
Added Recently Added view to Home page
Added background images to item banners
Added Proxy for Device Images in session card
Changed Navbar to be a side bar
Fixes:
Fixed Jellyfin API returning Empty folder as library item
CSS File to add breakpoints to bootstrap-width
Other:
Various CSS changes
Temporarily removed Websockets due to Proxy Errors
Changed Activity View Playback conversion function to more accurately display Playback Duration
Backend changes to sum Playback Durations to show more accurate information in thee collapsed summarized view
Added SSL proxying on the server side so that HTTP content can be served with HTTPS content
Changed css colors from hardcoded values to use variables
Changes to websockets to be able to work with SSL/Proxies
WIP support of 12/24Hr time format in activities tables (Not working yet)
WIP added version checker to be able to check for available updates from GitHub (Not working yet)
added button to upload backups to jellystat
Added Jellystat Logo to favicon + navbar
Removed unused imports and functions in the project
Removed unnecessary console.log files
Backend and frontend changes to have an activity view per user/ item or library
Switched over to MUI for the tables as the library provides alot of solutions such as pagination or sorting built in
Reworked info components to allow for Activity-Table component to be reusable and remove redundant components