Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bluetui for openSUSE:Factory checked in at 2025-10-27 14:40:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bluetui (Old) and /work/SRC/openSUSE:Factory/.bluetui.new.1980 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bluetui" Mon Oct 27 14:40:12 2025 rev:6 rq:1313682 version:0.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/bluetui/bluetui.changes 2025-10-22 12:22:00.289930482 +0200 +++ /work/SRC/openSUSE:Factory/.bluetui.new.1980/bluetui.changes 2025-10-27 14:42:15.689025695 +0100 @@ -1,0 +2,8 @@ +Thu Oct 23 11:17:41 UTC 2025 - Muhammad Akbar Yanuar Mantari <[email protected]> + +- Update to version 0.7.1 + * Make helper banner responsive + * Fix display issue on light theme terminal + * Update the layout to center the centent + +------------------------------------------------------------------- Old: ---- bluetui-0.7.tar.gz New: ---- bluetui-0.7.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bluetui.spec ++++++ --- /var/tmp/diff_new_pack.gUOVYY/_old 2025-10-27 14:42:17.709111009 +0100 +++ /var/tmp/diff_new_pack.gUOVYY/_new 2025-10-27 14:42:17.713111179 +0100 @@ -17,7 +17,7 @@ Name: bluetui -Version: 0.7 +Version: 0.7.1 Release: 0 Summary: TUI for managing bluetooth devices License: GPL-3.0-or-later @@ -27,7 +27,7 @@ Source1: vendor.tar.zst BuildRequires: cargo-packaging BuildRequires: dbus-1-devel -BuildRequires: rust >= 1.75.0 +BuildRequires: rust >= 1.78.0 Requires: bluez %description ++++++ bluetui-0.7.tar.gz -> bluetui-0.7.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluetui-0.7/Cargo.lock new/bluetui-0.7.1/Cargo.lock --- old/bluetui-0.7/Cargo.lock 2025-10-21 00:07:58.000000000 +0200 +++ new/bluetui-0.7.1/Cargo.lock 2025-10-22 21:45:09.000000000 +0200 @@ -173,7 +173,7 @@ [[package]] name = "bluetui" -version = "0.7.0" +version = "0.7.1" dependencies = [ "async-channel", "bluer", @@ -865,9 +865,12 @@ [[package]] name = "indoc" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] [[package]] name = "instability" @@ -884,9 +887,9 @@ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -1151,9 +1154,9 @@ [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "option-ext" @@ -2034,9 +2037,9 @@ [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" [[package]] name = "unicode-segmentation" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluetui-0.7/Cargo.toml new/bluetui-0.7.1/Cargo.toml --- old/bluetui-0.7/Cargo.toml 2025-10-21 00:07:58.000000000 +0200 +++ new/bluetui-0.7.1/Cargo.toml 2025-10-22 21:45:09.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "bluetui" -version = "0.7.0" +version = "0.7.1" authors = ["Badr Badri <[email protected]>"] license = "GPL-3.0" edition = "2024" @@ -12,7 +12,9 @@ [dependencies] async-channel = "2" bluer = { version = "0.17", features = ["full"] } -crossterm = { version = "0.29", features = ["event-stream"] } +crossterm = { version = "0.29", default-features = false, features = [ + "event-stream", +] } futures = "0.3" ratatui = "0.29" tokio = { version = "1", features = ["full"] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluetui-0.7/Readme.md new/bluetui-0.7.1/Readme.md --- old/bluetui-0.7/Readme.md 2025-10-21 00:07:58.000000000 +0200 +++ new/bluetui-0.7.1/Readme.md 2025-10-22 21:45:09.000000000 +0200 @@ -1,7 +1,7 @@ <div align="center"> <img height="125" src="assets/bluetui-logo-anim.svg"/> <h2> TUI for managing bluetooth on Linux </h2> - <img src="https://github.com/user-attachments/assets/f9fc4677-fcea-4c94-ac2e-94f5f0301e63"/> + <img src="https://github.com/user-attachments/assets/f937535d-5675-4427-b347-8086c8830e23"/> </div> ## 💡 Prerequisites diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluetui-0.7/Release.md new/bluetui-0.7.1/Release.md --- old/bluetui-0.7/Release.md 2025-10-21 00:07:58.000000000 +0200 +++ new/bluetui-0.7.1/Release.md 2025-10-22 21:45:09.000000000 +0200 @@ -1,3 +1,9 @@ +## v0.7.1 - 2025-10-22 + +- Make helper banner responsive +- Fix display issue on light theme terminal +- Update the layout to center the centent + ## v0.7 - 2025-10-21 - Use help banner instead of the popup diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluetui-0.7/src/app.rs new/bluetui-0.7.1/src/app.rs --- old/bluetui-0.7/src/app.rs 2025-10-21 00:07:58.000000000 +0200 +++ new/bluetui-0.7.1/src/app.rs 2025-10-22 21:45:09.000000000 +0200 @@ -251,7 +251,11 @@ let render_new_devices = !selected_controller.new_devices.is_empty() | selected_controller.is_scanning.load(Ordering::Relaxed); - let adapter_block_height = self.controllers.len() as u16 + 6; + if !render_new_devices && self.focused_block == FocusedBlock::NewDevices { + self.focused_block = FocusedBlock::PairedDevices; + } + + let adapter_block_height = self.controllers.len() as u16 + 4; let paired_devices_block_height = selected_controller.paired_devices.len() as u16 + 4; @@ -263,14 +267,14 @@ Constraint::Length(paired_devices_block_height), Constraint::Fill(1), Constraint::Length(adapter_block_height), - Constraint::Length(1), + Constraint::Length(2), ] } else { [ Constraint::Fill(1), Constraint::Length(0), Constraint::Length(adapter_block_height), - Constraint::Length(1), + Constraint::Length(2), ] }) .margin(1) @@ -302,9 +306,9 @@ let widths = [ Constraint::Length(10), Constraint::Length(10), - Constraint::Length(10), - Constraint::Length(10), - Constraint::Length(14), + Constraint::Length(5), + Constraint::Length(8), + Constraint::Length(12), ]; let rows_len = rows.len(); @@ -323,28 +327,12 @@ .bottom_margin(1) } else { Row::new(vec![ - Cell::from("Name").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Alias").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Power").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Pairable").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Discoverable").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), + Cell::from("Name"), + Cell::from("Alias"), + Cell::from("Power"), + Cell::from("Pairable"), + Cell::from("Discoverable"), ]) - .style(Style::new().bold()) .bottom_margin(1) } }) @@ -374,11 +362,7 @@ } }), ) - .style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }) - .highlight_symbol(" ") + .flex(ratatui::layout::Flex::SpaceAround) .row_highlight_style(if self.focused_block == FocusedBlock::Adapter { Style::default().bg(Color::DarkGray).fg(Color::White) } else { @@ -479,8 +463,8 @@ let mut widths = vec![ Constraint::Max(25), - Constraint::Length(10), - Constraint::Length(10), + Constraint::Length(7), + Constraint::Length(9), ]; if show_battery_column { @@ -501,24 +485,11 @@ .bottom_margin(1) } else { Row::new(vec![ - Cell::from("Name").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Trusted").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Connected").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Battery").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), + Cell::from("Name"), + Cell::from("Trusted"), + Cell::from("Connected"), + Cell::from("Battery"), ]) - .style(Style::new().bold()) .bottom_margin(1) } } else if self.focused_block == FocusedBlock::PairedDevices { @@ -574,11 +545,7 @@ } }), ) - .style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }) - .highlight_symbol(" ") + .flex(ratatui::layout::Flex::SpaceAround) .row_highlight_style(if self.focused_block == FocusedBlock::PairedDevices { Style::default().bg(Color::DarkGray).fg(Color::White) } else { @@ -609,6 +576,7 @@ //New devices + let mut max_name_width = 20; if render_new_devices { let rows: Vec<Row> = selected_controller .new_devices @@ -618,6 +586,9 @@ if let Some(icon) = &d.icon { format!("{} {}", icon, &d.alias) } else { + if d.alias.len() > max_name_width { + max_name_width = d.alias.len(); + } d.alias.to_owned() } }]) @@ -625,7 +596,10 @@ .collect(); let rows_len = rows.len(); - let widths = [Constraint::Length(25), Constraint::Length(20)]; + let widths = [ + Constraint::Length(20), + Constraint::Length(max_name_width.try_into().unwrap()), + ]; let new_devices_table = Table::new(rows, widths) .header({ @@ -637,22 +611,13 @@ .style(Style::new().bold()) .bottom_margin(1) } else { - Row::new(vec![ - Cell::from("Address").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - Cell::from("Name").style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }), - ]) - .style(Style::new().bold()) - .bottom_margin(1) + Row::new(vec![Cell::from("Address"), Cell::from("Name")]) + .bottom_margin(1) } }) .block( Block::default() + .padding(Padding::horizontal(1)) .title({ if selected_controller.is_scanning.load(Ordering::Relaxed) { format!(" Scanning {} ", self.spinner.draw()) @@ -683,11 +648,7 @@ } }), ) - .style(match self.color_mode { - ColorMode::Dark => Style::default().fg(Color::White), - ColorMode::Light => Style::default().fg(Color::Black), - }) - .highlight_symbol(" ") + .flex(ratatui::layout::Flex::SpaceAround) .row_highlight_style(if self.focused_block == FocusedBlock::NewDevices { Style::default().bg(Color::DarkGray).fg(Color::White) } else { @@ -720,32 +681,66 @@ // Help let help = match self.focused_block { - FocusedBlock::PairedDevices => Line::from(vec![ - Span::from("k,").bold(), - Span::from(" Up"), - Span::from(" | "), - Span::from("j,").bold(), - Span::from(" Down"), - Span::from(" | "), - Span::from("s").bold(), - Span::from(" Scan on/off"), - Span::from(" | "), - Span::from(self.config.paired_device.unpair.to_string()).bold(), - Span::from(" Unpair"), - Span::from(" | "), - Span::from(" or ↵ ").bold(), - Span::from(" Dis/Connect"), - Span::from(" | "), - Span::from(self.config.paired_device.toggle_trust.to_string()).bold(), - Span::from(" Un/Trust"), - Span::from(" | "), - Span::from(self.config.paired_device.rename.to_string()).bold(), - Span::from(" Rename"), - Span::from(" | "), - Span::from("⇄").bold(), - Span::from(" Nav"), - ]), - FocusedBlock::NewDevices => Line::from(vec![ + FocusedBlock::PairedDevices => { + if frame.area().width > 103 { + vec![Line::from(vec![ + Span::from("k,").bold(), + Span::from(" Up"), + Span::from(" | "), + Span::from("j,").bold(), + Span::from(" Down"), + Span::from(" | "), + Span::from("s").bold(), + Span::from(" Scan on/off"), + Span::from(" | "), + Span::from(self.config.paired_device.unpair.to_string()).bold(), + Span::from(" Unpair"), + Span::from(" | "), + Span::from(" or ↵ ").bold(), + Span::from(" Dis/Connect"), + Span::from(" | "), + Span::from(self.config.paired_device.toggle_trust.to_string()).bold(), + Span::from(" Un/Trust"), + Span::from(" | "), + Span::from(self.config.paired_device.rename.to_string()).bold(), + Span::from(" Rename"), + Span::from(" | "), + Span::from("⇄").bold(), + Span::from(" Nav"), + ])] + } else { + vec![ + Line::from(vec![ + Span::from(" or ↵ ").bold(), + Span::from(" Dis/Connect"), + Span::from(" | "), + Span::from("s").bold(), + Span::from(" Scan on/off"), + Span::from(" | "), + Span::from(self.config.paired_device.unpair.to_string()).bold(), + Span::from(" Unpair"), + ]), + Line::from(vec![ + Span::from(self.config.paired_device.toggle_trust.to_string()) + .bold(), + Span::from(" Un/Trust"), + Span::from(" | "), + Span::from(self.config.paired_device.rename.to_string()).bold(), + Span::from(" Rename"), + Span::from(" | "), + Span::from("k,").bold(), + Span::from(" Up"), + Span::from(" | "), + Span::from("j,").bold(), + Span::from(" Down"), + Span::from(" | "), + Span::from("⇄").bold(), + Span::from(" Nav"), + ]), + ] + } + } + FocusedBlock::NewDevices => vec![Line::from(vec![ Span::from("k,").bold(), Span::from(" Up"), Span::from(" | "), @@ -760,8 +755,8 @@ Span::from(" | "), Span::from("⇄").bold(), Span::from(" Nav"), - ]), - FocusedBlock::Adapter => Line::from(vec![ + ])], + FocusedBlock::Adapter => vec![Line::from(vec![ Span::from("s").bold(), Span::from(" Scan on/off"), Span::from(" | "), @@ -776,15 +771,23 @@ Span::from(" | "), Span::from("⇄").bold(), Span::from(" Nav"), - ]), + ])], FocusedBlock::SetDeviceAliasBox => { - Line::from(vec![Span::from(" ").bold(), Span::from(" Discard")]) + vec![Line::from(vec![ + Span::from(" ").bold(), + Span::from(" Discard"), + ])] } FocusedBlock::PassKeyConfirmation => { - Line::from(vec![Span::from(" ").bold(), Span::from(" Discard")]) + vec![Line::from(vec![ + Span::from(" ").bold(), + Span::from(" Discard"), + ])] } }; - frame.render_widget(help.centered().blue(), help_block); + + let help = Paragraph::new(help).centered().blue(); + frame.render_widget(help, help_block); // Pairing confirmation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluetui-0.7/src/handler.rs new/bluetui-0.7.1/src/handler.rs --- old/bluetui-0.7/src/handler.rs 2025-10-21 00:07:58.000000000 +0200 +++ new/bluetui-0.7.1/src/handler.rs 2025-10-22 21:45:09.000000000 +0200 @@ -198,7 +198,10 @@ } } } - FocusedBlock::NewDevices => app.focused_block = FocusedBlock::Adapter, + FocusedBlock::NewDevices => { + app.focused_block = FocusedBlock::Adapter; + app.new_devices_state.select(None); + } _ => {} }, @@ -211,14 +214,16 @@ } else { app.focused_block = FocusedBlock::NewDevices; } + app.reset_devices_state(); } } FocusedBlock::PairedDevices => { app.focused_block = FocusedBlock::Adapter; + app.paired_devices_state.select(None); } FocusedBlock::NewDevices => { app.focused_block = FocusedBlock::PairedDevices; - app.reset_devices_state(); + app.new_devices_state.select(None); } _ => {} }, ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/bluetui/vendor.tar.zst /work/SRC/openSUSE:Factory/.bluetui.new.1980/vendor.tar.zst differ: char 7, line 1
