feat(readarr): add the system UI

The system tab renders the tasks table, the queued events table and the log list, and overlays the log details, tasks, queued events, task start confirmation and updates popups.

SystemUi and SystemDetailsUi ship together because SystemUi::accepts covers every block that only SystemDetailsUi draws. Landing them apart would advertise five blocks that nothing renders.

Log level extraction is pulled into a named function so it can be unit tested directly: the level only ever reaches the output as a colour, and the rendered snapshots are plain strings that discard it.
This commit is contained in:
Dark-Alex-17 committed 2026-09-08 09:51:55 -06:00
1 parent 24c5dedd0c
commit 70441259a0
31 files changed
+2156 -47

No files matched your search

+3
View File
@@ -25,6 +25,7 @@ use super::{
use crate::ui::readarr_ui::blocklist::BlocklistUi;
use crate::ui::readarr_ui::downloads::DownloadsUi;
use crate::ui::readarr_ui::root_folders::RootFoldersUi;
use crate::ui::readarr_ui::system::SystemUi;
use crate::ui::utils::{extract_monitored_disk_space_vec, extract_monitored_root_folders};
use crate::{
app::App,
@@ -44,6 +45,7 @@ mod history;
mod library;
mod readarr_ui_utils;
mod root_folders;
mod system;
#[cfg(test)]
#[path = "readarr_ui_tests.rs"]
@@ -66,6 +68,7 @@ impl DrawUi for ReadarrUi {
_ if BlocklistUi::accepts(route) => BlocklistUi::draw(f, app, content_area),
_ if HistoryUi::accepts(route) => HistoryUi::draw(f, app, content_area),
_ if RootFoldersUi::accepts(route) => RootFoldersUi::draw(f, app, content_area),
_ if SystemUi::accepts(route) => SystemUi::draw(f, app, content_area),
_ => (),
}
}