Releases: Sandip124/BatteryNotifier
Releases · Sandip124/BatteryNotifier
v4.2.1
Full Changelog: v4.2.0...v4.2.1
v4.2.0
v4.1.0
What's Changed
- chore:fix install name by @Sandip124 in #95
- Feat/advance notification by @Sandip124 in #97
- Fix/issues by @Sandip124 in #98
- Fix/linux by @Sandip124 in #99
- chore: optimization for linux by @Sandip124 in #100
- Feat/battery info by @Sandip124 in #101
- fix: notification card border by @Sandip124 in #102
Full Changelog: v4.0.1...v4.1.0
v4.0.1
What's Changed
- add new banner by @Sandip124 in #86
- Add CodeQL analysis workflow configuration by @Sandip124 in #90
- Expr/avalonia by @Sandip124 in #91
What's New
Battery Monitoring
- Instant charger detection — event-driven architecture using WMI events (Windows) and Darwin notifications (macOS) for immediate plug/unplug response,
with lightweight polling as fallback - Smarter notification rules — full battery alerts only fire when charger is plugged in; unplugging above threshold no longer triggers spurious
notifications - Clear time estimates — "45m to full charge" (charging) / "3h 20m of battery remaining" (discharging) instead of ambiguous "45m remaining"
- Contextual status messages — replaced generic jokes with battery-aware fallbacks like "Charging — estimating time to full..." when OS can't provide
an estimate
Sound System
- Custom sounds library — import your own .wav, .mp3, .m4a, .ogg, .flac, or .aac files; they're copied to the app's data directory and persist across
sessions - Editor's Choice sounds — 6 curated music clips bundled with the app (Rock N Roll, Admonition, Snowy Glow, Legacy)
- Full playback for custom sounds — imported and bundled sounds play once in full instead of being clipped; built-in tones still loop
- Delete imported sounds — remove custom sounds from the library via the X button in the sound picker
DND / Focus Mode
- macOS Tahoe support — DND detection works on macOS 16 via Control Center accessibility fallback
- DND indicator in UI — banner shows between battery info and quick settings when Focus mode is active
- Near real-time monitoring — Darwin notification polling every 5s (zero-cost memory read) with 2-minute fallback
Logging
- Structured logs at every key point: power line changes, battery level changes, notification publish/suppress/deliver decisions, DND suppression state
Code Quality
- Centralized hardcoded paths into Constants.AppName, Constants.AppDataDirectory, Constants.AppTempDirectory
- Centralized asset URIs into AssetUris (Logo48, Logo128, LogoIco, ForAsset, ForSound)
- Sealed 15 non-derived classes for performance
- Refactored high-complexity methods: UpdateCheckIcons, CheckBatteryAndPowerStatus, IsMacDoNotDisturbActive
- Added 1-second regex timeouts across all Regex calls (ReDoS prevention)
- Subprocess commands resolved to absolute paths via Constants.ResolveCommand() (avoids PATH injection)
- Debouncer: exception handling in timer callback + race condition fix (invoke inside lock)
- AppSettings: error paths now call Reset() instead of Save() to properly restore defaults
- Removed dead code: unused logger, no-op event unsubscription, stale IDE mappings
CI/CD
- Fixed signtool not found — locates it from Windows SDK path
- Secrets passed via env: blocks (not expanded in run: blocks)
- Graceful skip when signing secrets aren't configured
- Certificate/keychain cleanup via try/finally and trap EXIT
- Binary validation before signing (fail fast with clear error)
- Post-sign verification (codesign --verify --deep --strict)
- Timestamp URL upgraded to HTTPS
- Version read from csproj via MSBuild (no hardcoded fallback)
- Velopack CLI pinned to 0.0.1298
- Linux builds disabled in CI
- bump-version.sh fixed for macOS (grep/sed compatibility)
Security
- Settings encryption documented accurately: DPAPI on Windows, AES-256-GCM on macOS/Linux
- CustomSoundsLibrary.Import(): extension allowlist, 50MB limit, symlink rejection, atomic write, collision handling
Full Changelog: v3.1.1...v4.0.0
v3.1.1
What's Changed
Fixes
- optimize and fix update manager
- enable ex composited style for form for reducing flicker.
Full Changelog: v3.1.0...v3.1.1
v3.1.0
What's New in Version 3.1.0
This version represents a complete architectural overhaul with significant performance improvements:
🏗️ Architecture Improvements
- Modular Design: Refactored from monolithic code to separate, focused managers
- Separation of Concerns: Dedicated managers for notifications, context menus, sound, and themes
- Publisher-Subscriber Pattern: Efficient event handling with global state management
⚡ Performance Enhancements
- Reliable Monitoring: WMI-based battery monitoring replaces unreliable timer-based approach
- Resource Optimization: Optimized PNG resources and GIF rendering
- Smart UI Updates: Skip UI updates when window is hidden to save resources
- Double Buffering: Eliminated control flickering for smoother experience
🐛 Bug Fixes
v3.0.0
What's Changed
- Brand New Icon is updated,.🚀
- Fix memory Leak occured by running the check for notification on minimized too.
- Migrate the project to netframework 4.7.2 for compatibality (You dont need to install dotnet core sdk 😊)
- Percentage in Taskbar icon Feature is completely removed due to unhandled memory leak
- chore(deps): bump NuGet.CommandLine from 6.2.2 to 6.2.4 by @dependabot in #70
- Fix/memory by @Sandip124 in #74
- fix: app not reopening after exiting by @Sandip124 in #75
Full Changelog: v2.2.4...v3.0.0
v2.2.4
What's Changed
- simplify font applying to controls using helper by @Pnkj124 in #62
- Feat/optimization by @Pnkj124 in #63
- update version and remove old artifacts by @Sandip124 in #64
New Contributors
Full Changelog: v2.2.3...v2.2.4
v2.2.3
What's Changed
- chore(deps): bump NuGet.CommandLine from 6.2.1 to 6.2.2 by @dependabot in #60
- Feat/activate window by @Sandip124 in #61
Full Changelog: v2.2.2...v2.2.3
V2.2.2
What's Changed
- fix memory leak for rendering icon by @Sandip124 in #59
Full Changelog: v2.2.1...v2.2.2