GTK4 control panel for BOS (Bread Operating System)
Find a file
Breadway 3dfc9d56f3 Reconcile the redesign with the f7b114f privileged-command hardening
The redesign branch was cut before "Harden privileged command operands
against injection" landed on main; the rebase conflicts in users.rs,
power.rs, firewall.rs and capabilities/default.json were resolved to
keep the stricter side of each:

- users.rs: keep `chpasswd_input` / `valid_chpasswd_password` (validates
  the *password* for `:` / newline, which the redesign's inline checks
  missed) and `may_delete_user` (refuses root / the current user);
  fold in the redesign's `--` argv separators and GECOS control-char
  stripping on top.
- power.rs: keep `charge_threshold_write` (validates `which` ∈
  {start,end} and clamps) + `util::run_with_stdin` for the tee pipe,
  plus its test; take the redesign's brightness clamp.
- firewall.rs: keep the port-only `valid_firewall_rule` /
  `valid_rule_number` allowlist from f7b114f. NOTE: the redesign's
  Firewall UI hint advertises service names ("OpenSSH") which this
  validator rejects — either loosen it to `util::valid_cli_value` or
  drop the service-name hint. Left strict pending that call.
- capabilities/default.json: keep `opener:default` removed (nothing in
  the frontend or backend uses the opener plugin); add the four
  `core🪟*` perms the redesign's custom Titlebar needs.

Drops `util::valid_username` / `util::valid_cli_value` (added by the
redesign, now unused — every call site uses the stricter f7b114f local
validator) and the unused `use super::util` in firewall.rs.
2026-08-31 18:01:57 +08:00
.forgejo/workflows CI: single-trunk model — dev triggers on main, beta becomes RC-tag-triggered 2026-07-31 11:05:29 +08:00
frontend Settings redesign: hub-based navigation, plus hardening and bug fixes 2026-08-31 16:04:02 +08:00
packaging Drop pacman packaging, bakery-only; fix broken Tauri build path in CI 2026-07-23 10:43:23 +08:00
src Reconcile the redesign with the f7b114f privileged-command hardening 2026-08-31 18:01:57 +08:00
.gitignore gitignore untracked .freebuff/ and graphify-out/ local tool state 2026-08-31 16:04:02 +08:00
AGENTS.md Use Arch package name webkit2gtk-4.1; track AGENTS.md 2026-08-15 22:03:30 +08:00
bakery.toml Use Arch package name webkit2gtk-4.1; track AGENTS.md 2026-08-15 22:03:30 +08:00
CONTRIBUTING.md CONTRIBUTING.md: document single-trunk + RC-tag release model 2026-07-31 11:08:41 +08:00
LICENSE Extract bos-settings into its own repo; add Appearance/Startup Apps/Display editors 2026-07-04 23:31:18 +08:00
README.md Harden settings: split breadcrumbs secrets, typed exec, new panels 2026-08-15 21:47:00 +08:00

bos-settings

System settings app for BOS (Bread Operating System) — Tauri 2 + Svelte 5. Configures every bread* app's config plus core system settings (network, sound, power, users, firewall, snapshots, packages, AUR, firmware, Hyprland display/appearance/autostart) non-destructively.

Distributed via bakery. There is one long-lived branch, main; see CONTRIBUTING.md for the single-trunk / RC-tag release model shared across the bread ecosystem.

Building

The Svelte frontend lives in frontend/, the Rust backend in src/ (this repo's crate is not named src-tauri). cargo tauri build runs the frontend build hook; a plain cargo build does not.

cd frontend && npm ci && npm run build
cd ../src && cargo build --release

Dev (Vite + cargo tauri dev):

cd src && cargo tauri dev

Packaging / releasing

Bump src/Cargo.toml (and frontend/package.json) version, then follow CONTRIBUTING.md: work lands on main via feature/ / fix/ branches (every push to main publishes a bakery dev build). Tag vX.Y.Z-rc.N for beta, vX.Y.Z for the signed stable release. Do not push to a dev branch — there isn't one.