- fixed long callback_data for device deletion (use shortened HWID)
- fixed variable used to pass branch name during build
- improved error handling and logging when sending notifications
- updated PURCHASE_BLOCKED and REG_BLOCKED as additional access mode properties
- improved node information display in notifications
- migrated to custom remnapy library for Remnawave API (replacing python-sdk)
- added build information in error notifications
- added block for repeated synchronization of all users
- added middleware to retry failed tasks
- added cache for subscription retrieval
- improved trial period handling
- added user name formatting for safe display
- optimized broadcast sending and deletion tasks
- fixed retrieval of recently registered users
- fixed payment gateway logic (YooMoney, Cryptomus, Heleket)
- fixed synchronization of UUID, traffic_limit_strategy, and tag
- fixed external_squad type for translation (msg-user-sync-subscription)
- removed certain buttons for expired subscriptions in user editor
- excluded self from recently interacted users lists
- fixed settings class update on invalid input
- fixed referral reward calculation respecting user level
- fixed subscription renewal calculation from current time when expired
- refactored payment gateways
- improved performance
- fixed translations
- implemented deletion of own devices for users
- added basic button for connecting via subscription page
- added support for subscription connection via miniapp (by maposia)
- added informational button in main menu for inactive subscriptions
- implemented compatibility with local Remnawave panel
- added support for caddy token for Remnawave API
- moved "Back to menu" button to keyboards + added button in several places for easier navigation
- added error notifications for webhook handling
- made minor cosmetic improvements
- refactored Docker files
- created docker-compose for production
- updated dependencies
- fixed .env.example
- refactored the project structure to support dependency injection (DI)
- implemented Dishka as the main DI container
- integrated TaskIQ for asynchronous task processing
- adapted existing components to the new structure