diff --git a/crates/owlen-core/src/session.rs b/crates/owlen-core/src/session.rs index 2afd94e..f86f1fa 100644 --- a/crates/owlen-core/src/session.rs +++ b/crates/owlen-core/src/session.rs @@ -912,30 +912,24 @@ impl SessionController { let guard = self.config.lock().await; guard .providers - .iter() - .map(|(name, _)| (name.clone(), Self::quota_from_config(&guard, name))) + .keys() + .map(|name| (name.clone(), Self::quota_from_config(&guard, name))) .collect::>() }; let now = SystemTime::now(); let mut provider_names: HashSet = quota_map.keys().cloned().collect(); - let snapshots = { - let ledger = self.usage_ledger.lock().await; - for key in ledger.provider_keys() { - provider_names.insert(key.clone()); - } + let ledger = self.usage_ledger.lock().await; + provider_names.extend(ledger.provider_keys().cloned()); - provider_names - .into_iter() - .map(|provider| { - let quota = quota_map.get(&provider).cloned().unwrap_or_default(); - ledger.snapshot(&provider, quota, now) - }) - .collect::>() - }; - - snapshots + provider_names + .into_iter() + .map(|provider| { + let quota = quota_map.get(&provider).cloned().unwrap_or_default(); + ledger.snapshot(&provider, quota, now) + }) + .collect() } // Asynchronous access to the configuration (used internally). diff --git a/crates/owlen-core/src/usage.rs b/crates/owlen-core/src/usage.rs index 3048324..d936934 100644 --- a/crates/owlen-core/src/usage.rs +++ b/crates/owlen-core/src/usage.rs @@ -167,10 +167,7 @@ impl UsageLedger { Err(_) => 0, }; - let entry = self - .providers - .entry(provider.to_string()) - .or_insert_with(VecDeque::new); + let entry = self.providers.entry(provider.to_string()).or_default(); entry.push_back(UsageRecord { timestamp: ts, diff --git a/crates/owlen-markdown/src/lib.rs b/crates/owlen-markdown/src/lib.rs index 9bef678..e1df1cb 100644 --- a/crates/owlen-markdown/src/lib.rs +++ b/crates/owlen-markdown/src/lib.rs @@ -251,7 +251,7 @@ mod tests { assert!( line.spans .iter() - .any(|span| span.style.contains(Modifier::BOLD)) + .any(|span| span.style.add_modifier.contains(Modifier::BOLD)) ); } @@ -265,6 +265,6 @@ mod tests { .find(|span| span.content.as_ref() == "code") .cloned() .unwrap(); - assert!(styled.style.contains(Modifier::BOLD)); + assert!(styled.style.add_modifier.contains(Modifier::BOLD)); } } diff --git a/crates/owlen-tui/src/chat_app.rs b/crates/owlen-tui/src/chat_app.rs index 873bf95..f18f678 100644 --- a/crates/owlen-tui/src/chat_app.rs +++ b/crates/owlen-tui/src/chat_app.rs @@ -7471,7 +7471,7 @@ impl ChatApp { } "web" => { let action = - args.get(0).map(|value| value.to_ascii_lowercase()); + args.first().map(|value| value.to_ascii_lowercase()); match action.as_deref() { Some("on") | Some("enable") => { match self.set_web_tool_enabled(true).await { @@ -8627,9 +8627,7 @@ impl ChatApp { } fn format_percent_value(percent: f64) -> String { - if percent >= 100.0 || percent == 0.0 { - format!("{percent:.0}") - } else if percent >= 10.0 { + if percent >= 10.0 || percent == 0.0 { format!("{percent:.0}") } else { format!("{percent:.1}") @@ -12690,6 +12688,7 @@ fn normalize_cloud_endpoint(endpoint: &str) -> String { } #[cfg(test)] +#[allow(clippy::items_after_test_module)] mod tests { use super::{ChatApp, ModelAvailabilityState, ModelScope, render_markdown_lines, wrap_unicode}; use crate::app::UiRuntime; diff --git a/crates/owlen-tui/src/commands/mod.rs b/crates/owlen-tui/src/commands/mod.rs index c4637b2..30e8ed0 100644 --- a/crates/owlen-tui/src/commands/mod.rs +++ b/crates/owlen-tui/src/commands/mod.rs @@ -325,6 +325,7 @@ pub fn match_score(candidate: &str, query: &str) -> Option<(usize, usize)> { } #[cfg(test)] +#[allow(clippy::items_after_test_module)] mod tests { use super::*; diff --git a/crates/owlen-tui/src/ui.rs b/crates/owlen-tui/src/ui.rs index c273bc9..2071045 100644 --- a/crates/owlen-tui/src/ui.rs +++ b/crates/owlen-tui/src/ui.rs @@ -139,7 +139,7 @@ fn usage_gauge_descriptor( } Some(GaugeDescriptor { - title: format!("{title}"), + title: title.to_string(), detail: format!("{detail} ยท {shorthand}"), percent_label, ratio, @@ -4796,7 +4796,7 @@ fn render_theme_browser(frame: &mut Frame<'_>, app: &ChatApp) { ]) }; - if left_sections.len() >= 1 { + if !left_sections.is_empty() { let search_paragraph = Paragraph::new(vec![search_line, instruction_line]) .style(Style::default().bg(palette.highlight).fg(palette.label)); frame.render_widget(search_paragraph, left_sections[0]);