** ScreenGenie v26.7 Release Notes **

v26.7.3001
Enhancement: Telemetry now reports each monitor's live display scaling percentage, read directly from Windows rather than from screengenie.ini, so it always reflects the monitor's actual current state.

Enhancement: Telemetry now reports the current Engine on/off state alongside the existing monitor values.


v26.7.3002
Bugfix: Telemetry always reported the Engine as "on," regardless of the actual switch state. This affected every telemetry send, including the periodic heartbeat sent by ScreenGenie Agent. The Engine state reported now always matches the switch.


v26.7.3003
Bugfix: When an external monitor was disconnected while the ScreenGenie window remained open, the application did not detect the change until the next manual refresh or restart. This caused the monitor to keep appearing in the interface and in telemetry with stale, last-known values, while live values such as resolution, refresh rate, brightness, contrast and scaling went blank. Monitor detection now correctly re-runs shortly after a display change is detected, so disconnected monitors are removed promptly.


v26.7.3004
Bugfix: After the number of connected monitors changed (e.g. disconnecting a docked external monitor), the application's automatic refresh only updated the monitor detail panel — the colored monitor number tiles at the top of the window did not shrink to match, leaving a stale, unselectable tile visible. Automatic refresh now fully matches what "Update monitor information" already did manually, so the tile display always reflects the actual number of connected monitors.


v26.7.3005
Change: The default setting for OnPower has been changed to "No". IT Management can enable this feature via central distribution software (e.g. Intune) or a local command, such as: SetSG -section "Change" -item "OnPower" -value "Yes"


v26.7.3006
Enhancement: When saving brightness and contrast settings with the "This Model" scope, the active layout preset is now saved to that same monitor model as well. Previously, only brightness and contrast were remembered per model, and the layout preset had to be set separately. Now both are stored together, so reconnecting a monitor of that model restores its brightness, contrast, and preferred layout in one step.


v26.7.3007
Change: The layout preset is no longer saved automatically per monitor model when using the "This Model" save scope, introduced in 26.7.3006. Saving with this scope now only stores brightness and contrast for that model, as before
Selecting a layout preset already applies it as the single active default; a per-model preset override remains available, but only as a manual or command-line configuration option.

Bugfix: Empty configuration entries containing only a monitor's serial number and model name were being added for every detected monitor during normal operation, even when no per-monitor settings had ever been saved. These entries are no longer written unless an actual per-monitor override is saved.


v26.7.3008
Enhancement: A "Show Engine switch" option has been added. When Engine = No is set under [Show] in screengenie.ini, the Engine on/off toggle in the main window is hidden, matching the existing behavior for the Serial, DisplaySettings, and Reset options.

Change: After clicking "Reverse external displays," the application now closes automatically once the new layout has been saved and applied. Previously the application stayed open, which could cause the system to become inconsistent with other settings until ScreenGenie was restarted manually.


v26.7.3009
Change: When the layout preset is changed and saved, the value is now written to the model-specific monitor section (e.g. "[DELL U2724DE]") instead of the general [Layout] section, if that model section already contains its own Preset entry for the currently connected monitor. If no model-specific Preset override exists for the connected monitor(s), the value continues to be written to [Layout] as before. This resolves an issue where the layout preset could not be changed through the interface once a monitor-specific Preset override was present, because that override always took precedence over [Layout] when the layout was read back.


v26.7.3010
Enhancement: Brightness can now be set to "Auto" (case-insensitive) instead of a numeric value, in the [Monitor 1], [Monitor 2], model-specific, and serial-specific sections. When set, ScreenGenie no longer writes a brightness value to that monitor via DDC/CI, allowing the monitor's own hardware auto-brightness (ambient light sensor) to remain in control. Contrast is unaffected and continues to be managed as before.

Enhancement: An "Auto" toggle switch has been added next to the Brightness slider for each monitor. Enabling it saves "Brightness = Auto" for the selected scope (All Monitors / This Model / This Monitor) using the existing save-scope dialog; disabling it writes the monitor's current brightness value back to the same scope.

Enhancement: A "Show AutoBrightness switch" option has been added. When AutoBrightness = No is set under [Show] in screengenie.ini, the Auto toggle switches are hidden from the main window, matching the existing behavior for the Serial, DisplaySettings, Reset, and Engine options. Hiding the switch does not disable the underlying functionality; a "Brightness = Auto" value configured directly in the ini continues to be respected.


v26.7.3011
Bugfix: The tooltip on the Auto toggle switches (Brightness = Auto) was not localized and always displayed in English regardless of the selected language. The tooltip, along with the switch label, now follows the selected language like all other UI text.


v26.7.3012
Fix: Synchronize version numbers.


v26.7.3013
Bugfix: Brightness could be forced to 0 on monitors configured with Brightness = Auto, most noticeably on monitors where reading current brightness/contrast via DDC/CI is unreliable (e.g. HP 727pu). Brightness and contrast are now applied independently, and Auto is now correctly treated as "leave brightness untouched."


v26.7.3014
Fixed: Telemetry no longer includes monitors excluded via [Monitors] Whitelist =. Previously, whitelist filtering only affected profile enforcement (brightness/contrast/resolution/scaling); telemetry sent data for every detected monitor regardless of whitelist status. Both the main application and the background Agent now skip non-whitelisted monitors entirely when sending telemetry, consistent with how they're already excluded from profile application.

Added: Monitors can now have a per-model VerticalAlign setting ([Model Name] VerticalAlign = Top/Center/Bottom), independent of the Preset override — works the same way Preset overrides already do: model-specific value wins if present, otherwise falls back to [Layout].


v26.7.3015
Fixed: The monitor could temporarily disappear from the interface after a refresh rate change (e.g. following an Hz adjustment). Setting the primary monitor and refreshing display information now wait for a stable display layout, with bounded retries instead of proceeding immediately on an unsettled state.


v26.7.3016
Fixed: After a refresh rate change, the monitor list could still be temporarily empty when per-model settings (Preset, VerticalAlign) were resolved during startup, causing those settings to silently fall back to the generic [Layout] values instead of the monitor's own override. Startup now retries monitor discovery before resolving these settings if the expected monitor count hasn't been reached yet.


v26.7.3017
Fixed: A regression introduced in 26.7.3015 caused ScreenGenie to skip setting the primary monitor on every run for layouts where a monitor is legitimately positioned left of, or otherwise offset from, the primary (e.g. "Laptop Left", or a non-Top VerticalAlign). The display-settledness check now compares consecutive position readings instead of treating negative coordinates as "unsettled," which was incorrect for these layouts. This also makes startup faster in the common case, since the check no longer waits a fixed delay when the layout is already stable.


v26.7.3218
Change: The user interface has been adjusted to provide a more intuitive user experience.

Enhancement: The Factory Reset function now checks for a Reset.ini file in the ScreenGenie ProgramData folder before performing a reset. When present, the values contained in that file are applied instead of the built-in program defaults, allowing the reset outcome to be customized for a specific deployment. When no Reset.ini file is present, the reset proceeds with the standard program defaults as before.

Change: The version number was synchronized to reflect an out-of-band release, ensuring the update mechanism correctly recognizes the current build as up to date.


v26.7.3219
Enhancement: Brightness and contrast sliders now apply changes only after the slider is released, rather than continuously while dragging. This provides a smoother, more predictable interaction and prevents the slider from momentarily jumping to a previous value during continuous adjustment.

Change: Brightness and contrast sliders now move in increments of 1%, replacing the previous 2.5% increments, allowing for finer adjustment.

Change: Link/Sync brightness and contrast is turned off by default and hidden from the interface, in favor of a cleaner, less cluttered UI. The option remains available and can be re-enabled if needed.

Bugfix: Synchronization between the "Mirror monitor settings" option and the brightness slider of the second monitor has been corrected. Previously, the second monitor's slider could become independently adjustable after certain operations even while monitor mirroring was enabled.


v26.7.3220
Enhancement: When the Engine is requested (via hotkey or tray menu) while the ScreenGenie GUI is already open, the GUI is now automatically closed so the Engine can run. Previously, the Engine request was silently ignored in this situation, since the application only allows a single instance to run at a time.


v26.7.3221
Bugfix: The "Refresh Monitor Information" button now also reads the actual current brightness and contrast values directly from the monitor hardware and updates the sliders accordingly. Previously, this button only refreshed monitor identification and connection details, so brightness and contrast values changed outside ScreenGenie (through the monitor's own on-screen controls or another vendor tool) were not reflected until the sliders were adjusted again.


v26.7.3222
Bugfix: Resolved an issue where monitor detection could become unstable immediately after switching the primary monitor (for example, right after applying a saved configuration). In some cases the number of detected monitors would briefly flap between one and two, occasionally with a monitor's serial number reported against the wrong display. This was caused by two monitor-detection passes running at the same time; the passes are now coordinated so they no longer interfere with each other.


v26.7.3224
Enhancement: When saving "Per Model" defaults, the current resolution, refresh rate, and display scaling are now also captured and saved under the monitor's model section, alongside brightness and contrast, provided a model-specific section already exists for that monitor.

Bugfix: Brightness is no longer overwritten with a fixed value when saving defaults (in any scope) while Auto brightness is active for that monitor. Since an ambient light sensor is controlling brightness in that mode, the on-screen slider value is a momentary reading rather than a deliberate setting; the "Brightness" setting now correctly remains "Auto" in the configuration.

Bugfix: Night mode ("NightBrightness") is now applied as a percentage reduction from each monitor's own configured daytime brightness, rather than as a single fixed value shared across all monitors. Since monitors differ in luminance, a single fixed night value did not suit every connected monitor equally.


v26.7.3225
Enhancement: When saving "Per Model" defaults, the currently selected layout preset and vertical alignment are now also saved under the monitor's model section, alongside brightness, contrast, resolution, refresh rate, and scaling.


v26.7.3226
Enhancement: When saving "Per Model" defaults, the currently selected layout preset and vertical alignment are now also saved under the monitor's model section, alongside brightness, contrast, resolution, refresh rate, and scaling.

Bugfix: When "Mirror monitor settings" is enabled, brightness and contrast are now automatically re-synchronized whenever the two monitors' values are found to differ (for example, after using "Refresh Monitor Information" to pick up a manual change made through a monitor's own on-screen controls, or after a factory reset). Previously, this mismatch was only corrected by turning "Mirror monitor settings" off and on again.


v26.7.3227
Bugfix: When closing the application with unsaved brightness/contrast changes, the save prompt now applies the chosen scope ("This Monitor", "Per Model", "All Monitors") identically to the "Set as default values" button. Previously, the save prompt at close only saved brightness and contrast, while resolution, refresh rate, scaling, preset, and vertical alignment were only saved through the button, and brightness could be incorrectly written even when Auto Brightness was active.

Change: The startup splash screen image size was reduced to 600x400 pixels.


v26.7.3228
Enhancement: A new [Customize] section in screengenie.ini allows the startup splash screen to be branded without a separate configuration file. SplashFileName sets a custom splash image filename (falling back to Splash.png), and SplashTextColor and SplashProgressColor set the status text and progress indicator colors, using standard #RRGGBB hex values.

v26.7.3229
Bugfix: Resolved an issue where applying a setting to all monitors, or to one by serial number, could fail on certain displays even though applying it to a single monitor by display number worked correctly.


v26.7.3230
Enhancement: Added remote VCP control to the Agent. A local HTTP listener can now be enabled to accept VCP feature/value commands for a specified display over the network, allowing actions such as remote video input switching from another device on the same network.

Enhancement: Added a new [Remote] section to screengenie.ini (Enabled, Port, Token) to configure the remote listener, including a shared-secret token required on every request.

Change: The installer now automatically configures the URL reservation and inbound firewall rule required for the remote listener to accept connections from other devices on the network, using the default port.