- Add Server Log tab with DataTable display of server activity logs
- Fix keyboard navigation bug in agents tab
- Add execution history viewer for selected agents
- Improve policy tree widget functionality by adding single device operations
- Integrate logging notifications into TUI
- Add TextualNotificationHandler to setup.py
- Display ERROR/WARNING/CRITICAL logs as toast notifications
- Remove terminal output to prevent interference with TUI
- Logs still written to Loxide.log file
closes#45
Security Vulnerabilities Patched
RUSTSEC-2025-0009 - Some AES functions may panic when overflow checking is enabled
RUSTSEC-2024-0336 - rustls::Connection::Common::complete_io could fall into an infinite loop based on network input
closes#47
Security Vulnerabilities Patched
RUSTSEC-2025-0009 - Some AES functions may panic when overflow checking is enabled
RUSTSEC-2024-0336 - rustls::Connection::Common::complete_io could fall into an infinite loop based on network input
- Add table editors for Policy Prep workflow
- 'Add to policy' remains a placeholder
- Apply planned tweaks:
- Replace ballot checkbox with ✓ for selection
- Relocate loading screen text to bottom:
'Building Path exclusions and publisher lists...
This may take a moment for large datasets.'
- Ensure interaction with all tables before allowing review steps
- Move excessive logging to debug level
- Add Step 0 to explain process before user begins
Notes:
Further discussion needed on enforcing table interaction before review.
1. Added compatibility check, LoxideLibs will now abort the entire program if OS is not linux or windows.
2. Changed the python data extraction compatibility layer, LoxideLibs was calling the extract data function twice, causing very slight overhead. I have now changed this so that the function returns a Struct that is now easily extractable via dot method notation.
Refactored Progress Bar to remove multiprogress bar and only draw one instance. #36 is still open and not fixed with this push, but I believe this is the way to fix the issue.
Also implemented an Arc Mutex on the progress bar so it can be controlled via different threads.
Changed date math so that the last date from the first response from the API is the minimum value for the progress bar. This gives true progress percentages from the first date to the last date on the last request. #36
It still locks the GIL, but this is the ground work for the non blocking GUI. Python objects are converted to Rust objects in the beginning of the function call so they can be sent to threads safely.
closes#34
Removed a lot of unwraps, most remaining unwraps will likely stay in the code, as it will be expected behavior to panic and crash rather than a system level abort/exit event
- Consolidated all system/user config logic into configmanager.py
- Removed duplicate loaders from setup.py and TUI.py
- Eliminated .env redundancy; now only stores WORKING_DIR
- Clarified boundaries: system config immutable, user config mutable
- Updated TUI to use save_user_config()
- Removed all deprecated/legacy config functions and aliases