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
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
Added Sync feature to only sync Recently Added Items that don't exist in the database (this will not update existing data), default interval now set to 15 Minutes
Renamed existing sync to Full sync (should function exactly the same), default interval now set to 1 day
Reworked handling of items no longer on jellyfin. Items are no longer deleted but are now marked as archived so that we can still view their items when looking at Playback Activity.
Added options to purge Archived data. This will either purge just the item (including seasons and episodes if its a show) or the item plus all related watch activity
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
needs work - currently just an api endpoint that will return geolocation data for a given IP.
ToDo:
- Display IP in session-card
- Clicking IP opens modal with geolocation info
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
Cleaned up redundant code and moved around classes to be better grouped eg routes folder
Moved endpoints to other route files to better represent their actions
Removed redundant endpoints
Renamed endpoints to be more meaningful
Added API Key authorisations to utilize the API outside of Jellystat UI (Still need to document Endpoints)
Added new column to app_config to store api keys
New API Section under settings
Updated backups route name
Changed Tasks to run based on last successful execution time in the logs table vs an interval counter that counts from startup. This prevents an issue where if a server is restarted before the interval time, the task timer essentially resets.
Fixed User Image in session card
Disabled websocket proxy
Create backup feature to store data as a json file
Modified Terminal to be more dynamic in the backend to be used by multiple modules, messages are now stored and send from server side instead of in the session.
Added username to last watched items in library activity
fixed navbar home url
Reverted stats to ut nor rely on jf_all_playback_activity as it has not been implemented yet
Added drill down views for individual items
Created view to see basic metadata for libraries
Created Table to store item metadata such as file size and codec support
Scrape and display File and library sizes
Removed a redundant view(TBH there's still alot left)
Amended some UI elements
Started work on backup code WIP (Does not work)
Changed out Nivo to recharts for stat graphs to remove <0 behaviour of charts
Fixed more sql quereis
Noticed hardcoded userid value for last-played/recently played stats, changed to dynamic admin userid due to full permission access of libraries
Created users info page when viewing user data on user tab
Added DB Procs to retrieve data for those components
Added db auto initialize to the backend in preparation for docker images, this needs work as it still crashes if it cant connect to the db
1) Created components for statistic reporting.
2) Database changes and PROC/Function creations. Still need to make MOST VIEWED LIBRARIES/CLIENTS/ MOST ACTIVE USERS dynamically load with date range (Function Creation on DB side)