Improves usability of the user list for smaller screens with responsive
detail views and filter controls.
- Added collapsible detail rows to show key user info (Status, Traffic, Expiry, etc.) via toggle button.
- Adjusted table column visibility using Bootstrap (`d-none`, `d-md-table-cell`).
- Updated JS event handlers and column indices for responsive layout support.
- Replaced filter button group with a hamburger dropdown on mobile/tablet.
- Used Bootstrap responsive display classes to toggle between dropdown and full button set.
- Optimized card header space for smaller devices.
Revamps the entire user deletion process to resolve critical performance bottlenecks that caused the web panel and database to freeze when removing multiple users.
- **Backend:** Core scripts (`kickuser.py`, `remove_user.py`) and the database layer are re-engineered to handle multiple users in a single, efficient batch operation using MongoDB's `delete_many`.
- **API:** A new `POST /api/v1/users/bulk-delete` endpoint is introduced for batch removals. The existing single-user `DELETE` endpoint is fixed to align with the new bulk logic.
- **Frontend:** The Users page now intelligently calls the bulk API when multiple users are selected, drastically improving UI responsiveness and reducing server load.
Refactored the web panel's user link generation to resolve a major performance bottleneck. Previously, fetching links for N users would trigger N separate script executions, causing significant delays from process startup overhead.
- Introduced a new bulk API endpoint (`/api/v1/users/uri/bulk`) that accepts a list of usernames and calls the backend script only once.
- Updated the frontend JavaScript in `users.html` to use this new endpoint, replacing N parallel API calls with a single one.
- Cleaned up the `wrapper_uri.py` script for better readability and maintainability.
- Display total user count in the card header.
- Add a new '#' column to the user table showing the row number.
- Sort the user list alphabetically by username (case-insensitive) using Jinja filter before rendering.
- Update JavaScript column index references (`td:eq(n)`) to reflect the added '#' column.
- Implemented multi-user selection and deletion with confirmation.
- Added filter buttons (All, Not Active, Enable, Disable) with client-side logic.
- Fixed "Select All" checkbox to only affect visible users after filtering.
- Implemented real-time username validation (alphanumeric only).
- Added a disable to prevent submit validation error
- Ensured that select all deselect button, work with filters and sorting
- Improve UI to be more intuitive.
-Improved responsivity buttons in smaller devices