Ecosystem-wide feature/hardening ideas surfaced during the 2026-09 audit #15
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Consolidated list of feature ideas and hardening gaps noticed while auditing the sibling GTK4/layer-shell apps (breadclip, breadcrumbs, breadcast, breadlock, breadmon, breadpad, breadpaper, breadsearch, breadshot, breadhelp) plus bread-ecosystem's shared crates and bos-settings, on 2026-09-05. Not bugs: each of these is either a documented "not implemented yet" gap, an explicit "not done in this PR" note left in a merged PR's own description, or a natural extension of an existing pattern. One issue, checklist-style, grouped by repo. File individual issues against the relevant repo's project when someone picks one up.
Status (re-verified 2026-09-09): two items were already resolved (struck through below). The five still-open items now have their own tracked issues: BSET-8, CRUMB-10, ECO-21, ECO-22, CLIP-5. The two items left unchecked with no spin-out (breadlock blur, breadcrumbs live-NM CI test) are intentionally kept here as low-priority ideas.
bread-ecosystem (shared crates / CI)
CI never runsRESOLVED by ECO-5 (bread-theme's own test suite.check.yml, PR #8), which merged into main on 2026-09-04, before this audit was written.check.ymlrunscargo clippyandcargo test --workspace --locked, then again with--features gtk, onmainand everyfeature/**andfix/**branch.bread-themeis a workspace member, so its full suite (including the ECO-6 bind lifecycle tests and the ECO-16 regression test) runs on every push. The original note only looked atdev-bread-theme.yml.cargo fmt --checkisn't gated anywhere yet. (tracked: ECO-21) Both ECO-5 (bread-ecosystem's owncheck.yml) and BSET-3 (bos-settings') added clippy and test CI but explicitly left fmt ungated because the trees aren't fmt-clean (27 files in bread-ecosystem, more in bos-settings). Worth a follow-up pass tocargo fmt --alleach repo once and then gate it, so drift stops accumulating.bread-themehas no API to write pywal's owncolors.jsoncache format from an in-memoryPalette. (tracked: ECO-22) breadpaper's PAPER-2 fix (sync_focused_global) has to shell out to a secondwal -isubprocess just to keep~/.cache/wal/colors.jsonin sync with a per-output palette that's already computed in memory, because there's nobread_theme::write_wal_cache(&palette)-style helper. The PR body flags this explicitly: "bread-theme exposes no API to write pywal's cache format, hand-rolling it is fragile." Adding one would let breadpaper (and any future consumer) drop a subprocess spawn.breadlock
background.bluris accepted but unimplemented. Per the README: "background.bluris not implemented, the key is accepted and logs a warning; the surface is drawn unblurred." A hyprlock-style live blur-of-desktop would need awlr-screencopycapture behind the lock surface, a real, previously-scoped feature that just hasn't been built yet. Kept as an idea, not spun out (large feature, pure visual polish).breadclip
ignore_rules(the copied-secret heuristic) isn't user-configurable. (tracked: CLIP-5) CLIP-3's PR body notes the original spec called for user-configurable match rules (MIME/app/regex, documented inEVENTS.md); what shipped is a fixed heuristic with no config surface, "simpler, and documented as such." Worth a[ignore]config section for users who want to add or relax patterns (e.g. an internal ticket-ID format that trips the Luhn/OTP heuristics as a false positive).breadcrumbs
status/connect/switchagainst live NM, first-connect PSK verification, 802.1x,watchreacting within a second, captive portal detection) explicitly marked "needs doing on hermes", i.e. still manual only. The existingtests/common/fake_nm.rs(an in-process D-Bus fake) covers unit-level D-Bus shape, but nothing exercises the CLI against a realNetworkManagerin CI. Kept as an idea, not spun out (real NM in CI is infra-heavy; a scripted local smoke test on hermes is the better near-term move).Config/Statefiles have no locking. (tracked: CRUMB-10)config.rs'sConfig::save()andstate.rs'sState::save()do a plain read-modify-write with no flock/lockfile.breadcrumbs watch(long-running) and a concurrent one-shotbreadcrumbs add/forget/profile setinvocation can race on the samebreadcrumbs.toml/state.toml, with whicheverfs::writelands last silently winning. Worth a lockfile (flockon a sidecar.lock) givenwatchis meant to run continuously in the background while the user issues one-shot commands.Non-interactive secret input.RESOLVED by CRUMB-6 (PR #7):--password-stdinonadd, documented in the README, with a regression test (add_password_stdin_reads_secret_without_argv_or_warning). CRUMB-8 (PR #8) added thejoin <ssid>command as the follow-on for connect-by-ssid with no password argument. Both merged 2026-09-05.bos-settings
8080/tcp... or a service name likeOpenSSH", but the hardened backend validator (firewall.rs, kept strict fromf7b114f) is port-only and rejectsOpenSSH. Either loosen the backend to the already-availableutil::valid_cli_value(still argv-safe, blocks flag/;/control injection) or drop the service-name hint from the UI, currently sitting inconsistent between the two.breadcast
No specific gaps surfaced beyond the bug filed separately (CAST-4): the discovery/pipeline/HTTP-server code was unusually thorough about bounding blocking calls and handling malformed input, so nothing to add here for now.