- Added cleanup logic for stale localStorage flags in user.js to prevent interference with user data loading.
- Improved timestamp formatting for Plex linking status in user.js, ensuring better readability.
- Updated index.html to refine redirection logic based on Plex linking state, allowing for smoother user experience.
- Modified plex_auth_routes.py to ensure proper navigation without triggering localStorage redirects during Plex authentication callback.
- Updated user.js to include credentials in fetch requests for user data and Plex status, ensuring proper session handling.
- Improved the Plex linking process with better error handling and user feedback during authentication.
- Modified index.html to streamline redirection logic based on Plex linking state.
- Enhanced user_section.html for improved modal styling and user experience during Plex account linking.
- Refactored plex_auth_routes.py to simplify the callback handling and improve user redirection after Plex authentication.
- Updated the user.js file to include a setup_mode flag in the Plex link request, aligning it with the existing setup implementation.
- Refined login.html to ensure consistent redirection behavior after successful login and Plex PIN creation.
- Modified plex_auth_routes.py to return a redirect URL in the response for successful Plex login and account linking, improving user experience during authentication.
- Implemented state management features in the UI, allowing users to enable/disable tracking of processed media with a reset interval configuration.
- Added event listeners for state management interactions, including a reset functionality and dynamic display updates based on user selections.
- Introduced a migration process for state management data when instance names change, ensuring data integrity and continuity.
- Enhanced logging for better tracking of state management changes and migration success or failure.
- Updated sidebar display logic to show the Requestarr sidebar for specific sections, improving user navigation.
- Refined comments for clarity regarding sidebar visibility based on the current section.
- Adjusted styling in the Swaparr Developer Credit Section for better visual consistency and user experience.
- Introduced mandatory page refresh on section changes to address caching issues and ensure fresh data display.
- Added guidelines to prevent complex cache management systems and endless refresh loops using an `isInitialized` flag.
- Implemented localStorage usage for storing target sections to facilitate navigation post-refresh.
- Updated debugging strategies to monitor refresh behavior and initialization status effectively.
- Implemented logic to navigate to a specific section after a page refresh using localStorage.
- Improved user experience by allowing section changes to refresh the page only if initiated by the user.
- Added logging for better tracking of section switches and initialization status.
- Implemented special handling for the Swaparr enabled toggle to refresh the Apps section after saving settings.
- Added a new method to refresh the Apps section, ensuring the currently selected app settings are reloaded when the Swaparr toggle changes.
- Improved logging for better tracking of changes and actions related to the Swaparr settings.
- Simplified the Swaparr section by removing the unnecessary header while retaining the auto-save functionality comment.
- Improved the overall structure of the Swaparr section for better readability and maintenance.
- Added a dedicated Swaparr section to the UI, enhancing user navigation and experience.
- Implemented auto-save functionality for Swaparr settings, allowing for real-time updates and improved user interaction.
- Updated the settings form handling to accommodate Swaparr-specific fields and structures.
- Enhanced logging for better debugging and tracking of settings changes related to Swaparr.
- Updated the Swaparr settings in the UI to conditionally render based on the global Swaparr setting, improving user experience.
- Removed unnecessary disabled states and opacity adjustments for toggle switches, simplifying the code.
- Enhanced the updateSwaparrFieldsDisabledState function to regenerate forms dynamically, ensuring accurate visibility of Swaparr sections across different app types.
- Improved logging to reflect changes in Swaparr visibility state during updates.
- Introduced state management options allowing users to enable or disable tracking of processed media.
- Added UI elements for configuring state management mode, reset intervals, and displaying state status.
- Implemented event listeners for state management interactions, including reset functionality and dynamic display updates based on user selections.
- Enhanced user experience by providing clear information on state management settings and their effects on media processing.
- Added recovery_key_rate_limit table to track failed attempts by IP address
- Implemented 15-minute lockout after 3 failed recovery key attempts
- Rate limiting applies to both /auth/recovery-key/verify and /auth/recovery-key/reset endpoints
- Successful attempts clear the rate limiting for that IP
- Added cleanup of expired rate limit entries in database maintenance
- Enhanced logging with IP addresses for security monitoring
- Prevents brute force attacks on recovery keys while maintaining usability
- Modified the password reset process to keep the recovery key valid, allowing users to manually generate a new one if needed.
- Updated the success message to inform users that two-factor authentication has been disabled and the recovery key remains valid until a new one is generated.
- Added a check to skip authentication for specific login and API paths, reducing unnecessary processing.
- Adjusted logging levels for connection success messages in the background process and configured apps in settings manager to debug, improving log clarity and reducing verbosity.
- Updated countdown CSS to use data attributes for the refreshing state instead of the non-standard :contains selector, improving compatibility.
- Enhanced dropdown styling for resume and pause actions by using data attributes, ensuring consistent UI behavior.
- Removed obsolete JavaScript file references in the HTML template, consolidating functionality into main scripts for better organization.
- Removed the backend timezone cache clearing functionality, simplifying the process when users change their timezone settings.
- Introduced a new method in the frontend to reload state management displays directly, enhancing user experience by automatically reflecting timezone changes.
- Updated related functions to ensure accurate state management data is fetched and displayed for each application instance.
- Implemented a new method to refresh timezone displays in the huntarrUI when settings change.
- Introduced a global function to trigger the refresh from settings forms, enhancing user experience.
- Added backend support to clear the timezone cache upon user timezone changes, ensuring accurate state management across applications.
- Introduced a global function to refresh the scheduling timezone display when settings change.
- Implemented logic to clear existing timer intervals before setting a new one for server time updates.
- Enhanced the settings form to trigger the timezone refresh upon relevant changes, improving user experience.
- Simplified logging of timezone cache clearing by removing redundant messages.
- Updated comments to clarify the purpose of timezone cache clearing and timestamp conversion.
- Enhanced timestamp conversion logic in log routes to accurately convert UTC timestamps to user-specific timezones.
- Removed unnecessary timezone caching in CleanLogFormatter, as logs are now stored in UTC, eliminating the need for formatter refreshing.
- Updated timestamp parsing logic to trim whitespace and handle unexpected formats more gracefully.
- Enhanced error logging for better debugging of timestamp formatting issues.
- Adjusted the timestamp conversion function to reflect that logs are already stored in the correct timezone, simplifying the process.
- Updated the timezone selection process to apply changes immediately upon selection.
- Added event listener for timezone changes that triggers auto-saving of settings and refreshes time displays and logs.
- Enhanced user feedback by displaying a message during log refresh after timezone updates.
- Removed unnecessary section header and wrapper div from the notifications section.
- Streamlined the HTML structure to enhance readability and maintainability.
- Updated input retrieval logic to check both the main container and the notifications container for notification settings.
- Introduced a helper function to streamline the process of getting input values, improving code clarity and maintainability.
- Ensured that apprise URLs are processed from the correct container, enhancing the robustness of the settings form functionality.
- Updated HTML structure by removing the unnecessary wrapper div for the settings form.
- Changed JavaScript selectors to target the new structure, ensuring functionality remains intact.
- Removed unused CSS properties related to the settings form for a cleaner layout.