From 9c4205b1b25904d16a1cf828de3b11c69f49d19e Mon Sep 17 00:00:00 2001 From: Breadway Date: Thu, 6 Aug 2026 08:47:05 +0800 Subject: [PATCH 1/4] clippy: fix char-comparison and map_or lints (cherry picked from commit 2e393082a744fe85f1ca1f8c6af48ce288e64b6c) --- src/bar/stats.rs | 2 +- src/main.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bar/stats.rs b/src/bar/stats.rs index 892f792..26358e0 100644 --- a/src/bar/stats.rs +++ b/src/bar/stats.rs @@ -402,7 +402,7 @@ fn read_crumbs_profile() -> Option { for line in text.lines() { if let Some(rest) = line.trim().strip_prefix("profile") { let val = rest - .trim_start_matches(|c: char| c == ' ' || c == '=') + .trim_start_matches([' ', '=']) .trim_matches('"'); if !val.is_empty() { return Some(val.to_string()); diff --git a/src/main.rs b/src/main.rs index 309a8fd..5210546 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1023,7 +1023,7 @@ impl SimpleComponent for App { let within_linger = self .media_paused_at - .map_or(true, |t| t.elapsed().as_secs() < 30 * 60); + .is_none_or(|t| t.elapsed().as_secs() < 30 * 60); self.media_last = Some(state); reveal_media(&self.media_widget, within_linger); } else { From 700fc3ed16b54aa68b88ca70b260fe738e485f18 Mon Sep 17 00:00:00 2001 From: Breadway Date: Sun, 23 Aug 2026 15:02:51 +0800 Subject: [PATCH 2/4] Unify bread-ecosystem crate pins at v0.7.4 bread-theme was already pinned to v0.7.4 while bread-utils and bread-screenshots trailed at v0.7.2, even though bread-ecosystem locks all workspace packages together as of a9754d9. Bump the two lagging pins so all three crates from that repo resolve to the same tag/commit. (cherry picked from commit f0de82aafb547134e0edc9dac8d72c01586db57c) --- Cargo.lock | 8 ++++---- Cargo.toml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d7ff339..14765ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -152,8 +152,8 @@ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bread-screenshots" -version = "0.7.2" -source = "git+https://git.breadway.dev/Breadway/bread-ecosystem?tag=v0.7.2#30517f161724132cdeb658c04cf5e490be07ee73" +version = "0.7.4" +source = "git+https://git.breadway.dev/Breadway/bread-ecosystem?tag=v0.7.4#a9754d90ed32efcc26765abd01c9f441bfb01b1e" dependencies = [ "anyhow", "bread-utils", @@ -196,8 +196,8 @@ dependencies = [ [[package]] name = "bread-utils" -version = "0.7.2" -source = "git+https://git.breadway.dev/Breadway/bread-ecosystem?tag=v0.7.2#30517f161724132cdeb658c04cf5e490be07ee73" +version = "0.7.4" +source = "git+https://git.breadway.dev/Breadway/bread-ecosystem?tag=v0.7.4#a9754d90ed32efcc26765abd01c9f441bfb01b1e" dependencies = [ "bread-shared 0.7.0", "dirs 5.0.1", diff --git a/Cargo.toml b/Cargo.toml index f5bfbb6..1825aa8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,12 +15,12 @@ bread-theme = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = # for talking to breadd's IPC socket, and bread-shared purely for the # WidgetSpec/WidgetNode wire types so we deserialize into real structs # instead of hand-parsing serde_json::Value. See src/widgets/. -bread-utils = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = "v0.7.2", features = ["bread-client"] } +bread-utils = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = "v0.7.4", features = ["bread-client"] } # v0.8.0-rc.1 carries bread_shared::widget; keep this bread tag even if # ecosystem crates move independently. bread-shared = { git = "https://git.breadway.dev/Breadway/bread", tag = "v0.8.0-rc.1" } # Capture primitives for `--screenshot` mode — see src/screenshot.rs. -bread-screenshots = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = "v0.7.2" } +bread-screenshots = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = "v0.7.4" } gtk4 = { version = "0.11", features = ["v4_12"] } gtk4-layer-shell = "0.8" relm4 = { version = "0.11", features = ["macros"] } From 3049a20be3a24fdd4fe2ee68935acdc74e1e8793 Mon Sep 17 00:00:00 2001 From: Breadway Date: Sun, 23 Aug 2026 15:07:51 +0800 Subject: [PATCH 3/4] gitignore: exclude graphify-out local tool cache --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 816e2ad..4f90dfb 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ logs/ # Internal design documents (not for distribution) aster-brief.md + +# graphify knowledge-graph output (local tool cache, not for commit) +graphify-out/ From 297207a7aad1e85fb8633983f150119f93a5239c Mon Sep 17 00:00:00 2001 From: Breadway Date: Mon, 24 Aug 2026 13:11:20 +0800 Subject: [PATCH 4/4] notifications: stop toast popups from stealing focus or blocking clicks Toasts never grab keyboard focus and pass every pointer event through to whatever's underneath, via an empty layer-shell input region. --- src/notifications/popup.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/notifications/popup.rs b/src/notifications/popup.rs index 5753b65..9c767b6 100644 --- a/src/notifications/popup.rs +++ b/src/notifications/popup.rs @@ -177,9 +177,16 @@ fn create_window() -> gtk4::Window { window.set_margin(Edge::Top, crate::BAR_MARGIN_TOP + crate::BAR_HEIGHT + 8); window.set_margin(Edge::Right, crate::BAR_MARGIN_SIDES); window.set_default_width(320); - // OnDemand so an inline-reply GtkEntry can take keys without the popup - // stealing every keystroke the rest of the time. - window.set_keyboard_mode(KeyboardMode::OnDemand); + // Toasts are purely informational for now: never grab keyboard focus... + window.set_keyboard_mode(KeyboardMode::None); + // ...and click through entirely — an empty input region means every + // pointer event passes straight to whatever's underneath instead of + // hitting the toast. + window.connect_map(|win| { + if let Some(surface) = win.surface() { + surface.set_input_region(Some(>k4::cairo::Region::create())); + } + }); crate::theme::bind_auto(&window); window }