Skip to content

Releases: SaltSpectre/MidnightSentinel

🌙 Midnight Sentinel 26.10.1+28: More corrosion, less bloat

Choose a tag to compare

@github-actions github-actions released this 01 Oct 22:35
6a377b7

🦀 Complete Rewrite: C# → Rust

Midnight Sentinel has been completely rewritten from C#/.NET to Rust.

Why?

Mostly because I could.

Also because the C# build was getting a little rotund, and at some point I decided the appropriate response to a utility that makes monitors black was a ground-up rewrite in a systems programming language.

This was clearly the reasonable course of action.

The mission remains unchanged: cover every active display with pure black and politely request that your OLED pixels cease their relentless march toward entropy. The implementation, however, is substantially different. Midnight Sentinel now has a smaller footprint, cleaner architecture, better automation support, and considerably more engineering than should reasonably be required to display nothing.


What's new

Two executables, because apparently one was too easy.

Midnight Sentinel is now split into two completely independent executables:

  • midsent.exe handles the system tray, About/Exit menu, and launching overlays.
  • midsentcli.exe is a fully standalone overlay executable that works whether the tray app is running or not. This is the one you want for scripts, AutoHotkey, programmable keyboards, elaborate home-automation contraptions, or any other situation where simply clicking an icon would represent an unacceptable surrender to normalcy.

The mutex that keeps only one copy of the overlay is shared between the two, so they will not conflict. midsentcli.exe can also toggle or dismiss an overlay created from the tray, so an overlay launched manually can still be dismissed programmatically with a script.

An actual scriptable CLI

midsentcli.exe now supports:

  • midsentcli.exe (or --toggle) raises the overlay if it's down and dismisses it if it's up.
  • midsentcli.exe --start makes sure the overlay is running and prints its PID so your script can keep an appropriately suspicious eye on it.
  • midsentcli.exe --stop makes sure the overlay is gone, with useful exit codes so your automation does not have to divine success from smoke signals, lunar phases, or whether the screen happens to look black.

Note

midsent.exe --run-now is still supported for anyone with existing scripts or macros built around the old single-executable version. Your automation does not need to become collateral damage just because I developed a sudden and apparently irreversible interest in crustacean-themed systems programming.

More reliable cursor hiding

Cursor hiding now primarily uses a WM_SETCURSOR override rather than relying entirely on Windows' global ShowCursor counter.

In practical terms, the cursor should now stay hidden when it is supposed to, instead of occasionally deciding that a completely black screen would really benefit from a bright white pointer sitting in the middle of it like a tiny monument to Windows API behavior. This change addresses situations where Windows would occasionally rediscover the cursor and proudly place it on top of the black overlay, apparently concerned that users might forget where the mouse was during the deeply interactive experience of looking at nothing.

The cursor has been informed that its services are not required at this time.

New installer

The MSI installer has been honorably discharged from service. 🫡 It served adequately but demanded an amount of maintenance wildly disproportionate to the technological achievement of making screens black.

Its replacement is a single universal Inno Setup installer:

MidnightSentinel-Universal-{version}.exe

One installer now handles both x64 and ARM64, with optional tasks for adding Midnight Sentinel to your PATH and starting it automatically at logon.

Fewer installers. Fewer architecture decisions. Fewer opportunities to stare at two downloads and somehow pick the wrong one anyway.

Warning

⚠️ Upgrading from a pre-Rust install?

If you have version 26.1.15+24 or earlier installed, you are still using the old C#-based version with the MSI installer (which is gross and should fill you with shame). Uninstall it first through Settings > Apps before installing this release.

The new installer uses completely different installation technology and cannot automatically upgrade or remove the old MSI package. It will warn you if it detects the previous installation, but removing it is still your problem.

Consider it one final contribution from the .NET era, reaching forward through time to moderately inconvenience you.

New portable option

Don't want an installer touching anything? Been burned in the past? Fine. I respect your distrust.

Portable builds are now available as:

  • MidnightSentinel-Portable-x64-{version}.zip
  • MidnightSentinel-Portable-arm64-{version}.zip

They contain the two executables and nothing else. No installer, no PATH changes, no registry changes, no ceremony, no wizard asking whether you accept the consequences of making your screen black.

Extract. Run. Screen black. Technology!


Acknowledgments

Dialogs such as About and installer warnings are now built with Slint, used under its Royalty-free license.

Because apparently even an application whose primary visual feature is "black rectangle" eventually needs a UI framework. The overlay itself still displays nothing; I have invested significant engineering resources into preserving that functionality.


Automated release built from commit 6a377b7

Downloads:

  • MidnightSentinel-Universal-26.10.1+28.exe - Installer (x64 and ARM64 in one file; per-user, no administrator privileges required)
  • MidnightSentinel-Portable-x64-26.10.1+28.zip - Portable, x64 (no installer; just the executables)
  • MidnightSentinel-Portable-arm64-26.10.1+28.zip - Portable, ARM64 (no installer; just the executables)

Installation:

Run the installer or unzip the portable download for your architecture and run midsent.exe (tray controller) or midsentcli.exe (standalone overlay) directly.


What's Changed (Auto-generated)

Full Changelog: v26.1.15+24...v26.10.1+28

🌙 Midnight Sentinel 26.1.15+24

Choose a tag to compare

@github-actions github-actions released this 15 Jan 15:00
886c908

Automated release built from commit 886c908

Downloads:

  • MidnightSentinel-x64-26.1.15+24.msi - x64 MSI Installer (Intel/AMD 64-bit)
  • MidnightSentinel-arm64-26.1.15+24.msi - ARM64 MSI Installer (Windows on ARM)

Installation:

Run the MSI for your architecture. The installer is per-user and does not require administrator privileges.

What's Changed

  • feat(installer): add component selection with auto-start feature by @SaltSpectre in #2

Full Changelog: v26.1.15+21...v26.1.15+24

Release 26.1.15+21

Release 26.1.15+21 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Jan 13:52

🌙 Midnight Sentinel 26.1.15+21

OLED Screen Burn-in Protection

Automated release built from commit a9b77b3

Downloads:

  • MidnightSentinel-x64-26.1.15+21.msi - x64 MSI Installer (Intel/AMD 64-bit)
  • MidnightSentinel-arm64-26.1.15+21.msi - ARM64 MSI Installer (Windows on ARM)

Installation:
Run the MSI for your architecture. The installer is per-user and does not require administrator privileges.


Changes:

  • Minor: Added version number to System Tray icon tooltip for easier identification

Full Changelog: v26.1.12+20...v26.1.15+21

Release 26.1.12+20

Release 26.1.12+20 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jan 19:51

🌙 Midnight Sentinel 26.1.12+20

OLED Screen Burn-in Protection: Now with ARM64 support!

Automated release built from commit bfaf7eb

Downloads:

  • MidnightSentinel-x64-26.1.12+20.msi - x64 MSI Installer (Intel/AMD 64-bit)
  • MidnightSentinel-arm64-26.1.12+20.msi - ARM64 MSI Installer (Windows on ARM)

Installation:
Run the MSI for your architecture. The installer is per-user and does not require administrator privileges.

Full Changelog: https://github.com/SaltSpectre/MidnightSentinel/commits/v26.1.12+20

v2025-07-06

Choose a tag to compare

@SaltSpectre SaltSpectre released this 06 Jul 07:32

Initial release. Requires .NET 9.0.