Repository navigation
Releases: 0then0/batterybridge
Release list
BatteryBridge v0.4.0
Changed
- Stopping or restarting the service (including OS shutdown and reboot, which it
cannot tell apart) no longer writes "no limit" to native thresholds. Linux
sysfs, Lenovo conservation mode and IntelBCLMkeep the saved limit; a
temporary top-up or target is replaced by it. Gates, forced discharge, the
MagSafe light and the idle-sleep override are still always released. Before this
change every orderly stop cleared Linux thresholds, so upgrading a package
or rebooting briefly lifted the limit. - Each hardware release now has an explicit scope (daemon-held overrides or
everything). Pause and Reset release everything; Reset is acknowledged only
after the hardware accepted it and the empty policy was saved. Cleanup steps
are independent, and a failure names every step that failed. - Debian and RPM removal now starts a stopped service, runs
batterybridge reset,
stops the service and checks it exited cleanly before disabling it. Failure stops
removal. - After macOS wake, status reports that hardware state is unverified until the
first reconciliation finishes. Sleep preparation steps no longer skip each other. - Shutdown refuses queued requests with an explicit error instead of dropping them
(the request is read first, and the drain is limited to five seconds). batterybridge statuslabels the saved limit as configuration and prints the
device's own threshold readback separately where the driver exposes it.- The app's colors now follow the icon's greens in light and dark themes instead of blue,
and the tray icon is plain white (a black template on macOS, which the menu bar
recolors). The app icon is a horizontal battery with a limit marker. - The paused-control message lists what pause releases and that a restart ends it,
in all seven languages.
Fixed
- A failed reconciliation (for example an unreadable battery percentage) no longer
writes "no limit" to a native threshold; it releases daemon-held overrides and
re-applies the saved threshold. Previously it cleared Linux and Lenovo limits until
the next successful 30-second check. - Selected items in drop-down lists keep readable text in both themes.
- The app no longer silently drops an action issued while another request is
running or leaves the previous success banner in place; it shows a message. - Service troubleshooting names the correct socket group for Debian and RPM packages.
Compatibility
- IPC (version 3) and the saved policy format are unchanged.
- The persistence of any threshold or gate while the computer is off is
unverified on every device; no hardware validation report exists. SIGKILL,
power loss and forced OS shutdown run no cleanup. See lifecycle. - Version 0.4.0 rather than a patch release: the protocol and configuration are
compatible, but observable stop and removal behavior changed.
BatteryBridge v0.3.1
Added
- Optional Launch at login setting in all seven GUI languages. It starts the
current user's GUI in the tray, independently of the charging service. On macOS
it requires a bundled app and macOS 13+; the rest of the app still supports macOS 11+. - Public contribution, conduct and security policies, an EditorConfig, issue forms
and a pull request template.
Fixed
- Closing the macOS window into the tray now retains the native event loop, so
the tray menu and Open BatteryBridge continue working after repeated closes. - Hidden startup loads the saved language before creating its first tray menu
and opens a window if no usable tray is available. - GUI autostart registration is serialized with graphical macOS uninstall.
The Windows uninstaller removes matching startup records from loaded user profiles.
Compatibility
- Charging policy format and IPC are unchanged from 0.3.0. Install over the existing
package to preserve charging settings. See installation for
login-item approval and removal behavior. - macOS and Windows installers remain unsigned; Apple SMC and Lenovo WMI charging
control remain experimental. Firmware may reset charging gates during sleep.
BatteryBridge v0.3.0
BatteryBridge 0.3.0
Native Rust desktop app
The GUI now uses egui and eframe. Selected fastframe modules provide the tray,
window lifecycle, font fallback and system language detection; macOS also uses
its Dock visibility helper. System light/dark appearance, all seven languages,
read-only fallback, charging settings, compatibility reports and graphical macOS
uninstall remain available.
The app no longer requires Node.js, WebView2 or WebKitGTK. The former local glib
backport is removed with that dependency graph. The source uses released egui and
pins fastframe to v0.14.1. GUI builds require Rust 1.98+.
Battery care and compatibility
This release adds temporary charge targets, hold/pause/resume controls, automatic
discharge, battery-temperature protection, calibration, calendar schedules,
MagSafe light settings and an idle-sleep assertion where hardware permits them.
Telemetry includes battery temperature, voltage, current, power and cycle count
when provided by the device. Shortcuts can invoke the documented CLI commands.
The IPC protocol changes from version 2 to 3. Upgrade the GUI, CLI and background
service together using the platform installer; a 0.2 client or service cannot
communicate with its 0.3 counterpart.
Configuration versions 0 and 1 migrate to version 2 while preserving the saved
limit and leaving new care features disabled. Version 2 is saved on the next
successful settings update. Back up configuration before upgrading: older
binaries cannot read version 2. For rollback, restore that backup along with the
older application and service. See the configuration guide for manual conversion.
Installation
- macOS 11+: one universal
.pkgincludes Intel and Apple Silicon GUI, CLI and daemon. Bundle build 5; Installer receipt 0.3.0.5. Install over an existing package to preserve charging settings. - Windows 10/11 x86_64: NSIS installs the GUI and protected SYSTEM task. Remove through Windows Settings. Normal charging is restored before removal.
- Linux x86_64: native
.deband.rpminclude the app and systemd service, with OpenGL/EGL and X11/Wayland dependencies. Existing sudo/wheel members can control charging. Noto CJK fonts are recommended for Japanese.
Developer archives contain the native GUI executable and system integration
resources. macOS and Windows installers are unsigned; macOS is not notarized.
SHA256SUMS.txt covers every downloadable package and archive.
Hardware boundaries
Charging capabilities remain hardware-dependent. Intel SMC and Apple Silicon
SMC control, and Lenovo WMI conservation mode, remain experimental. Temperature
protection and calibration require device-level validation. Before sleep, the
service requests inhibition for percentage targets below 100%; Apple Silicon
firmware may reset the charging gate while asleep, so a closed-lid percentage
limit is not guaranteed. The idle assertion does not prevent lid-close or manual
sleep.
BatteryBridge v0.2.0
BatteryBridge 0.2.0
Native installation on each platform
- macOS: one BatteryBridge-macos-universal.pkg for Intel and Apple Silicon, macOS 11+. GUI, CLI and daemon all contain native arm64 and x86_64 code. Open the package in Finder and approve the administrator prompt. Use the app's uninstall action for complete removal.
- Windows 10/11 x86_64: BatteryBridge-windows-x86_64-setup.exe installs the GUI and a protected SYSTEM background task. No PowerShell setup is needed. Remove through Windows Settings; the uninstaller restores normal charging first.
- Linux x86_64:
.deband.rpminclude the GUI and systemd service. Open the package in a compatible graphical package manager. Debian packages authorize existingsudogroup members; RPM useswheel. No users are added to groups. Requires systemd and compatible WebKitGTK 4.1 libraries. Package removal disables the daemon and retains configuration for reinstallation.
Updates preserve saved charging settings. The macOS app build is 4; the Installer receipt is 0.2.0.4. Install the new package over an earlier release. Developer archives remain available but do not install the background component themselves.
Intel charge control
Intel Macs now probe compatible SMC interfaces. A readable, valid BCLM key enables experimental firmware-managed thresholds from 50% to 100%, with write readback and temporary full charge. BCLM does not provide an adjustable start threshold or forced discharge. Compatible binary gates remain an experimental fallback. Unsupported hardware retains battery monitoring and reports capabilities explicitly.
Compilation and automated tests on Intel are not validation of charging on every Intel Mac. Physical Intel charging, sleep and firmware behavior still require device-level testing. Apple Silicon binary gates can be reset by firmware during sleep; a closed-lid percentage cap is not guaranteed. Lenovo WMI charge control remains experimental and fixed at 80%.
Linux dependency security
The Linux GUI includes the upstream memory-safety fix for glib's VariantStrIter
(GHSA-wrw7-89jp-8q8g / RUSTSEC-2024-0429) through a documented source override.
Tauri 2 still depends on glib 0.18.5, so the version number is unchanged and
version-only scanners may continue to flag it. The optimized iterator regression
runs in Linux CI. macOS and Windows do not use this GTK dependency.
Distribution
Windows and macOS installers are unsigned; macOS is not notarized. Review origin and platform security prompts. Do not disable Gatekeeper or other system protections. Managed devices may prohibit unsigned installation.
SHA256SUMS.txt covers all downloadable assets. The README lists direct links for each installer and developer archive.
BatteryBridge v0.1.1
BatteryBridge 0.1.1
This patch adds graphical macOS removal and corrects charging-policy transitions around sleep.
Changes
- Uninstall without Terminal: choose Uninstall BatteryBridge at the bottom of the macOS app, confirm and approve the administrator dialog. The app restores normal charging, unloads the service, and removes the installed app, helpers, saved policy and log. Removal stops if charging restoration or service unloading fails. Moving the app to Trash alone still leaves the service installed.
- Sleep and resume: preparing for sleep no longer briefly releases the saved charging limit. Charging inhibition is retained after wake until the resume threshold is reached, instead of reopening the gate inside the hysteresis band.
- Visible diagnostics: errors preparing for sleep survive successful awake polling. The UI identifies a percentage as a saved setting and warns when telemetry shows charging above it outside an explicit top-up.
- New messages and removal controls are translated into English, Russian, Spanish, German, French, Japanese and Brazilian Portuguese.
- The README includes direct downloads and checksums for each published platform.
Install or update
On an Apple Silicon Mac with macOS 11 or newer, download BatteryBridge-macos-apple-silicon.pkg, open it in Finder and follow Installer. Open Applications → BatteryBridge after installation. Updating closes the running app, restarts the service and keeps the saved charge policy. No Terminal commands are required.
CLI, GUI and service use version 0.1.1. The macOS bundle build is 3; the Installer receipt is 0.1.1.3. These versions replace 0.1.0 and the earlier preview without removing saved settings.
Windows and Linux assets are developer archives with manual charging-service setup. SHA256SUMS.txt covers every downloadable asset.
Hardware and distribution limitations
Apple Silicon SMC and Lenovo WMI charge control remain experimental. The sleep-transition regression is covered by automated tests, but this release has not been validated through a real closed-lid charging cycle. Private SMC gates can be reset by firmware during sleep: this patch does not establish a firmware-managed limit or guarantee a closed-lid percentage cap. Firmware may also refuse writes while awake. A saved setting alone is not proof of enforcement.
The macOS package is unsigned and not notarized. If macOS blocks it, review its origin and use System Settings → Privacy & Security → Open Anyway only if you trust this release. Do not disable Gatekeeper. Intel Mac charging control is unsupported. Only local administrator accounts can change charging settings.
To report a problem, include the OS version, device model and a reviewed compatibility report from the app. Reports exclude serial numbers and network identifiers.
BatteryBridge v0.1.0
BatteryBridge 0.1.0
Battery status, device-aware charging limits and a desktop tray app for macOS, Linux and Windows.
Languages and appearance
- English, Russian, Spanish, German, French, Japanese and Brazilian Portuguese.
- Automatic system-language detection with a saved language selector at the bottom of the app. Changing language keeps unsaved charging inputs intact.
- Localized labels, battery states, capability explanations, notices and tray actions. The macOS Installer welcome and completion pages also follow the system language.
- System light/dark appearance and layouts that adapt to the minimum 320 px window width.
- Compatibility JSON, CLI output and verbatim OS/firmware diagnostics retain their original format for support and automation.
Install or update on an Apple Silicon Mac
- Download BatteryBridge-macos-apple-silicon.pkg below. Open it in Finder and follow Installer.
- Enter an administrator password when prompted. The package installs both the app and charging service; Terminal is not required.
- Open Applications → BatteryBridge from a local administrator account. Choose a stop percentage and apply the limit.
Installing over v0.1.0-dev.1 preserves the saved charge policy. The installer closes the running app and restarts the service. Open the installed app after the update. A new installation starts with the charge limit off. The service starts after a reboot and continues running when the app closes.
Distribution and hardware limitations
- Unsigned macOS package: this release is not Developer ID signed or notarized. If macOS blocks it, review its origin and use System Settings → Privacy & Security → Open Anyway only if you trust the package. Do not disable Gatekeeper. Organization-managed Macs may prohibit unsigned installers.
- The graphical installer supports Apple Silicon Macs with macOS 11 or newer. Intel Mac charging control is unsupported. Only local administrator accounts can change the machine-wide charging policy.
- Apple Silicon SMC and Lenovo WMI charge control remain experimental. Firmware can refuse a write; hardware errors appear in the app. Publication of this release does not certify every laptop or firmware version.
- Windows and Linux downloads are developer archives with native GUI builds, CLI and service definitions. Charging-service installation on these platforms remains manual. Windows GUI installers do not install that service.
- There is no automatic updater. To restore normal charging, use Turn off in the app. Deleting the GUI alone does not uninstall the service; see the service-removal guide in the included documentation.
Downloads and support
SHA256SUMS.txt contains checksums for all assets. The macOS .pkg is the complete graphical installer; the archives are for manual installations and developers. CLI, GUI and service all use version 0.1.0; the macOS bundle build is 2 and the Installer receipt is 0.1.0.2.
For issues, include your OS version, device model and a reviewed compatibility report generated by the app. Reports exclude serial numbers and network identifiers. Avoid sharing additional personal data.
BatteryBridge v0.1.0-dev.1
First developer preview
Install on an Apple Silicon Mac
- Download BatteryBridge-macos-apple-silicon.pkg below. The archives are intended for developers and manual installations.
- Open the package in Finder and follow Installer. Enter an administrator password when macOS asks.
- Open Applications → BatteryBridge using an administrator account. The installer includes and starts the charging service, so no Terminal commands are needed.
- Set a charge limit and choose Apply limit. Check that the app shows the saved limit and no policy error. The service starts after reboot and keeps running when the app closes.
Unsigned preview: this package is not Developer ID signed or notarized. macOS may block it. After attempting to open it, review the package origin and use System Settings → Privacy & Security → Open Anyway if you choose to trust this preview. Do not disable Gatekeeper. Managed Macs may prohibit unsigned packages entirely. A signed, notarized installer is required for a frictionless public release.
What is included
- System light/dark appearance, battery status, charging settings and compatibility reports.
- The app in
/Applications/BatteryBridge.appand a root-owned launchd service. - Private CLI, service and launcher executables in
/Library/PrivilegedHelperTools. - Machine-wide settings preserved across updates. A new installation starts with the charge limit off. Updating closes the previous app and restarts the service.
Limits of this preview
- The graphical installer targets Apple Silicon Macs, macOS 11 or newer. Intel Mac charging control is unsupported.
- Apple Silicon SMC charge control is experimental. Software checks do not establish that your firmware accepts a hardware write. A hardware refusal must be reported as an error in the app.
- Only local administrator accounts can change charging settings. Other accounts can see read-only status.
- Windows and Linux archives contain native GUI builds, CLI and service definitions, but service installation on those platforms is still manual. Their GUI installers do not install the charging service.
- There is no automatic updater. Install a newer package to update. Use Turn off to restore normal charging before removing the app; dragging the app to Trash does not uninstall the service. Administrative removal is documented in
docs/service.md.
Please check
Installation without Terminal, absence of “Read-only mode” under an administrator account, applying an 80% limit, visible firmware errors, Turn off, Top up, system theme changes, and reconnecting after reboot. If you already run BatteryBridge manually, quit that copy before testing the installed app.
Include your macOS version, Mac model and a reviewed compatibility report from the app when reporting an issue. Do not include serial numbers or other private identifiers. SHA-256 checksums for the downloads are in SHA256SUMS.txt.