github ChaoticSi1ence/SlimBrave-Neo v2.0.0
v2.0.0 - Three-state permissions, reworked GUI, collapsible TUI

7 hours ago

The UI overhaul.

Nothing you have breaks. Every saved config and all five presets build byte-identical policy to v1.9.5 — verified against the actual v1.9.5 code, not assumed.

Three-state permission settings

The eight Default*Setting content-setting keys were checkboxes that only ever wrote block. "Ask" wasn't expressible at all. If you wanted Brave to prompt for location rather than hard-refuse it, SlimBrave couldn't say that.

They're now selectors offering the values Chromium actually accepts, defaulting to Not managed so nothing changes until you choose.

The legal values are not uniform, and this release doesn't guess:

Setting Options
Web Notifications, Location Access, Motion Sensors Allow / Ask / Block
WebUSB, Web Serial, WebHID, Local Fonts, Multi-Screen Ask / Block only

Chromium has no Allow state for those last five. Offering one would write a value the browser rejects.

Windows GUI

A fixed window with three independently scrolling columns. The old layout computed a window height and reflowed two columns into three on short displays. That constant was wrong — 1140 against a measured 1144 — and the safety net then produced exactly the scrollbar the constant existed to prevent. The new layout deletes that whole class of bug.

  • One-click preset buttons across the top, with a status line.
  • Re-sync Registry re-reads live policy into the UI without restarting.
  • Presets are embedded in the script, so the buttons work even if you used the one-line install and have no Presets/ folder. A test asserts the embedded copies still match the JSON files, so they can't drift.

TUI (Linux and macOS)

Collapsible categories, each header carrying a live count of what it's managing — so a folded section still tells you whether anything inside it is set.

On launch, the folds reflect what's already applied. A clean machine opens on a short overview; a configured one opens on exactly the sections it's enforcing. Nothing is stored — it's derived from the policy read at startup.

  • / searches as you type. A match inside a folded section is revealed, so a fold can never hide a result.
  • PageUp/PageDown and Home/End, none of which were bound before.
  • ? for a key overlay.
  • Fold markers fall back to ASCII when the terminal's codeset can't encode them — curses raises UnicodeEncodeError past the except curses.error guard, which would have crashed the app on a plain VT100.

Also fixed

A latent IndexError: KEY_UP from the button row indexed the selectable-row list unguarded. Harmless before, reachable the moment a search returns no matches.

Under the hood

Tests went 278 → 372, including three-way parity between the PowerShell and Python feature tables, the embedded-preset drift check, and a property test that the cursor is never left on a hidden row after any fold or filter change.

Verifying this release

7873407c5b30b8310dc2956971584b6437b28fcacc09b166d466ed08b9513c9e  SlimBrave.ps1
29bf69edbe2fb5cea22dd1be4900ab643bc08d0f70a1a5366caa57471e0219bc  slimbrave-linux.py
1d01de4d1bfba2b8908bb1c0b7dba70418ff6583c6dc505c963454d2b2d211a0  slimbrave-mac.py
Get-FileHash -Algorithm SHA256 .\SlimBrave.ps1
sha256sum slimbrave-linux.py     # Linux
shasum -a 256 slimbrave-mac.py   # macOS

Tags are not signed — there's no maintainer signing key published yet, so don't read an unsigned tag as a sign of tampering. See SECURITY.md.

macOS is best-effort. It's covered by CI and the test suite, but the Configuration Profile approval flow ends in a GUI step no test can reach. Please open an issue if something breaks.

Don't miss a new SlimBrave-Neo release

NewReleases is sending notifications on new releases.