From 86826984028671c68a613d1c478b94abaa8717d3 Mon Sep 17 00:00:00 2001 From: Breadway Date: Sat, 13 Jun 2026 11:29:53 +0800 Subject: [PATCH] Fix prod-readiness issues flagged in audit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix XDG config dir logic in config/mod.rs (was double-nesting and had /home/user hardcode) - Replace /home/user hardcodes in breadbar.rs and hyprland.rs with config::config_dir() - Fix /home/user hardcode in packages.rs (uses /root fallback for .local/state path) - Remove eprintln! from GTK callback in packages.rs (no stderr at runtime) - Fix YAML parse error in branding.desc (missing space after sidebarTextHighlight key) - Add .gitignore (Rust target/, ISO artifacts, editor/OS junk, secrets) - Delete state.rs (dead code — never mod'd in main.rs) - Add brightnessctl, grim, slurp to packages.x86_64 (used by keybinds) - Rename can-you-begin-a-composed-beacon.md → DESIGN.md Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 37 +++++++++++++++++++ ...ou-begin-a-composed-beacon.md => DESIGN.md | 0 bos-settings/src/config/mod.rs | 13 ++++--- bos-settings/src/state.rs | 11 ------ bos-settings/src/ui/views/breadbar.rs | 4 +- bos-settings/src/ui/views/hyprland.rs | 3 +- bos-settings/src/ui/views/packages.rs | 4 +- .../etc/calamares/branding/bos/branding.desc | 2 +- iso/packages.x86_64 | 5 +++ 9 files changed, 56 insertions(+), 23 deletions(-) create mode 100644 .gitignore rename can-you-begin-a-composed-beacon.md => DESIGN.md (100%) delete mode 100644 bos-settings/src/state.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5294b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# Rust build artifacts +/target/ +**/*.pdb + +# Editor / IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ +.direnv/ + +# OS artifacts +.DS_Store +Thumbs.db +desktop.ini + +# Environment / secrets +.env +.env.local +*.env.* +secrets/ +*.pem +*.key +*.p12 + +# archiso build artifacts (these are large and reproducible) +/iso-build/ +/iso-out/ +*.iso +*.img + +# Runtime / logs +*.log +logs/ +*.pid +*.sock diff --git a/can-you-begin-a-composed-beacon.md b/DESIGN.md similarity index 100% rename from can-you-begin-a-composed-beacon.md rename to DESIGN.md diff --git a/bos-settings/src/config/mod.rs b/bos-settings/src/config/mod.rs index da3b8eb..bd0c4af 100644 --- a/bos-settings/src/config/mod.rs +++ b/bos-settings/src/config/mod.rs @@ -15,10 +15,13 @@ pub fn save(path: &Path, val: &T) -> Result<(), Box PathBuf { - let home = std::env::var("HOME").unwrap_or_else(|_| { - std::env::var("XDG_CONFIG_HOME") - .map(|p| PathBuf::from(p).parent().unwrap_or(Path::new("/")).to_string_lossy().to_string()) - .unwrap_or_else(|_| "/home/user".to_string()) - }); + // Honour XDG_CONFIG_HOME if set; otherwise fall back to $HOME/.config. + if let Ok(xdg) = std::env::var("XDG_CONFIG_HOME") { + let p = PathBuf::from(xdg); + if p.is_absolute() { + return p; + } + } + let home = std::env::var("HOME").unwrap_or_else(|_| "/root".to_string()); PathBuf::from(home).join(".config") } diff --git a/bos-settings/src/state.rs b/bos-settings/src/state.rs deleted file mode 100644 index e0e760e..0000000 --- a/bos-settings/src/state.rs +++ /dev/null @@ -1,11 +0,0 @@ -pub struct AppState { - pub current_view: String, -} - -impl AppState { - pub fn new() -> Self { - Self { - current_view: "snapshots".to_string(), - } - } -} diff --git a/bos-settings/src/ui/views/breadbar.rs b/bos-settings/src/ui/views/breadbar.rs index 9f1ceb7..dd49a52 100644 --- a/bos-settings/src/ui/views/breadbar.rs +++ b/bos-settings/src/ui/views/breadbar.rs @@ -3,10 +3,10 @@ use gtk4::{Box as GBox, Button, Label, Orientation, ScrolledWindow, TextView}; use std::path::PathBuf; fn css_path() -> PathBuf { - let home = std::env::var("HOME").unwrap_or_else(|_| "/home/user".to_string()); - PathBuf::from(home).join(".config/breadbar/style.css") + crate::config::config_dir().join("breadbar/style.css") } + pub fn build() -> GBox { let path = css_path(); let existing_css = std::fs::read_to_string(&path).unwrap_or_default(); diff --git a/bos-settings/src/ui/views/hyprland.rs b/bos-settings/src/ui/views/hyprland.rs index 0ed704d..49ac07e 100644 --- a/bos-settings/src/ui/views/hyprland.rs +++ b/bos-settings/src/ui/views/hyprland.rs @@ -23,8 +23,7 @@ fn get_monitors() -> Vec { } fn hypr_path(name: &str) -> std::path::PathBuf { - let home = std::env::var("HOME").unwrap_or_else(|_| "/home/user".to_string()); - std::path::PathBuf::from(home).join(".config/hypr").join(name) + crate::config::config_dir().join("hypr").join(name) } pub fn build() -> GBox { diff --git a/bos-settings/src/ui/views/packages.rs b/bos-settings/src/ui/views/packages.rs index 6b3aedc..1281c44 100644 --- a/bos-settings/src/ui/views/packages.rs +++ b/bos-settings/src/ui/views/packages.rs @@ -8,7 +8,7 @@ use std::io::{BufRead, BufReader}; use std::process::{Command, Stdio}; fn read_installed() -> HashMap { - let home = std::env::var("HOME").unwrap_or_else(|_| "/home/user".to_string()); + let home = std::env::var("HOME").unwrap_or_else(|_| "/root".to_string()); let path = std::path::Path::new(&home) .join(".local/state/bakery/installed.json"); @@ -132,7 +132,7 @@ pub fn build() -> GBox { Ok(mut child) => { std::thread::spawn(move || { let _ = child.wait(); }); } - Err(e) => eprintln!("bakery update failed: {e}"), + Err(_) => {} // bakery not found; button is a no-op } }); diff --git a/iso/airootfs/etc/calamares/branding/bos/branding.desc b/iso/airootfs/etc/calamares/branding/bos/branding.desc index d3034ab..ff72dd7 100644 --- a/iso/airootfs/etc/calamares/branding/bos/branding.desc +++ b/iso/airootfs/etc/calamares/branding/bos/branding.desc @@ -26,4 +26,4 @@ style: sidebarBackground: "#3b4252" sidebarText: "#eceff4" sidebarTextSelect: "#5e81ac" - sidebarTextHighlight:"#eceff4" + sidebarTextHighlight: "#eceff4" diff --git a/iso/packages.x86_64 b/iso/packages.x86_64 index 32c97d4..6abc179 100644 --- a/iso/packages.x86_64 +++ b/iso/packages.x86_64 @@ -69,6 +69,11 @@ calamares-qt6 # Bread ecosystem — sourced from [breadway] repo bakery +# Input / screen utilities +brightnessctl +grim +slurp + # Utilities sudo git