- 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.
- Moved user module initialization logic to a dedicated method, initializeUser, for better organization and readability.
- Added console logging to track the initialization process and check for the availability of the UserModule.
- Ensured that the user module is only created if it does not already exist, improving performance and preventing redundant instances.
- Implemented refreshAllData function in CycleCountdown to update cycle data on timezone changes.
- Enhanced refreshTimeDisplays method in huntarrUI to refresh logs, cycle countdown timers, and other UI elements affected by timezone changes.
- Added logging for better tracking of timezone refresh operations across modules.
- Updated settings_manager.py to clear timezone cache and refresh logger formatters when timezone settings change.
- Updated the apply_timezone function to improve handling of timezone settings.
- Enhanced error handling and logging for system file updates.
- Added checks for write access to /etc before attempting to update system timezone files.
- Ensured that the TZ environment variable is sufficient for timezone handling across different environments.
- Implemented health check endpoint for Docker and orchestration systems.
- Added graceful shutdown configuration in Docker Compose and application code.
- Enhanced shutdown handling in main application and background tasks for improved diagnostics.
- Updated Dockerfile to include health check command.
- Introduced readiness check endpoint for Kubernetes-style orchestration.
- Addressed the issue of multiple sidebars displaying simultaneously, causing navigation confusion.
- Updated the flash prevention script in new-main.js to ensure only the relevant sidebar is shown based on the current section.
- Added detailed implementation requirements and testing instructions to ensure proper functionality across devices.
- Updated the logic for displaying the Settings sidebar based on the current section, aligning it with Requestarr's approach.
- Removed the flash prevention script from the HTML template, allowing the main JavaScript to manage sidebar visibility.
- Added console logs for better debugging and tracking of sidebar state changes.
- Added a new check for settings form initialization violations to prevent empty content display due to HTML comments.
- Updated violation scanning commands to reflect the new order and added checks for settings form initialization.
- Enhanced debugging instructions for settings forms to ensure proper initialization flow and content verification.
- Updated the web server to prioritize HUNTARR_PORT over PORT for better consistency in configuration.
- Added a new notifications section in the frontend, including UI elements for managing notification settings.
- Implemented functionality to initialize notifications and handle user interactions for enabling/disabling notifications.
- Enhanced the settings form to include options for notification levels and Apprise URLs, along with a test notification feature.
- Clarified Docker and local testing instructions, specifying port usage (Docker: 9705, Local: 9706).
- Enhanced error checking instructions for both environments.
- Updated violation scanning commands to reflect new port usage for local testing.
- Removed _detect_synology_nas() method completely
- Simplified _configure_connection() to use basic PRAGMA settings
- Removed HUNTARR_SYNOLOGY_OPTIMIZATIONS environment variable support
- Removed all Synology-specific detection and optimization logic
- Back to stable 8.0.4 database approach with simple settings:
* synchronous=NORMAL, cache_size=10000, busy_timeout=30000
* No platform-specific detection or complex optimizations