From ceeef351fd5fffd6c3f557edc2dde9ae98a1246b Mon Sep 17 00:00:00 2001 From: KaraZajac Date: Tue, 17 Feb 2026 21:37:52 -0500 Subject: [PATCH] UI updates --- Cargo.lock | 2 +- src/ui/captures_list.rs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50ec070..1529f73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -444,7 +444,7 @@ dependencies = [ [[package]] name = "kat" -version = "1.0.2" +version = "1.1.0" dependencies = [ "anyhow", "atty", diff --git a/src/ui/captures_list.rs b/src/ui/captures_list.rs index 069ff9e..b08ccbb 100644 --- a/src/ui/captures_list.rs +++ b/src/ui/captures_list.rs @@ -314,8 +314,22 @@ fn render_vulnerability_panel( capture.model.as_deref(), capture.region.as_deref(), ); + let vuln_found = capture.status == CaptureStatus::EncoderCapable || !vulns.is_empty(); let mut lines = Vec::new(); + + // When we can encode, the encryption is broken — complete emulation is available. + if capture.status == CaptureStatus::EncoderCapable { + let emu_style = Style::default() + .fg(Color::Green) + .add_modifier(Modifier::BOLD); + lines.push(Line::from(Span::styled( + " Encryption is broken — Complete emulation of the keyfob is available", + emu_style, + ))); + lines.push(Line::from(Span::raw(""))); + } + if vulns.is_empty() { let has_meta = capture.year.is_some() || capture.make.is_some() @@ -350,9 +364,10 @@ fn render_vulnerability_panel( } } + let border_color = if vuln_found { Color::Green } else { Color::Yellow }; let block = Block::default() .borders(Borders::ALL) - .border_style(Style::default().fg(Color::Yellow)) + .border_style(Style::default().fg(border_color)) .title(" Vulnerability "); let inner = block.inner(area); frame.render_widget(block, area);