Repository navigation
Releases
Vantage 1.0.3
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-1.0.3-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-1.0.3-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Changed
- Updates are now delta downloads. Updating from the previous version transfers only what
actually changed — about 2 MB instead of the full ~75 MB package. The full package is still
published, so a client that can't apply a delta (or is coming from an older version) simply
falls back to it. Delta generation was never switched off; the release pipeline just never
gave the packer a previous release to compare against, so every release so far shipped
full-only. - UI framework and dependencies updated — WPF-UI 3.0.5 → 4.3.0, CommunityToolkit.Mvvm
8.3.2 → 8.4.2, H.NotifyIcon.Wpf 2.1.3 → 2.3.2, and the test stack to xunit 2.9.3 with
Microsoft.NET.Test.Sdk 18.10.1.
Fixed
- A release can no longer publish itself half-finished. GitHub's asset upload endpoint
intermittently answers HTTP 500 on the larger files, and on 1.0.2 that left a release
carrying two of its six files — with an update feed pointing at packages that weren't
there. The pipeline now builds each release as a draft, uploads one file at a time with
retries, and refuses to make the release visible until it has verified every file is
present.
What's Changed
🧰 Other changes
- Release 1.0.3: delta updates, dependency bumps, release hardening by @inakizamores in #12
Full Changelog: v1.0.2...v1.0.3
Vantage 1.0.2
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-1.0.2-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-1.0.2-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Fixed
- Identical monitors no longer break saving, applying or refreshing. A monitor's identity
was its EDID vendor + product + serial, but plenty of panels ship with the same serial on
every unit of a model — three ASUS ROG Strix XG438Q all reportAUS43E1_125727. That made
the identity a model id, so the display list was keyed on duplicate keys and any refresh
or save failed with "An item with the same key has already been added. Key: …"
(#9). Identity now falls
back to the GPU connector each panel is plugged into when, and only when, a serial is
shared — so ids are unchanged on every machine that never had a collision, and the panels
that did have one keep distinct, reboot-stable identities instead of being numbered in
whatever order Windows happened to enumerate them. - Existing presets are repaired automatically. A preset saved with the old colliding ids
is re-keyed on load from the connector path it already recorded, so it keeps matching the
machine it was captured on with nothing to redo. Matching also gained a last-resort pass
that pairs same-model panels by position, so a preset still applies after its cables are
swapped between ports. - Identical monitors are now distinguishable in the app. Displays sharing a model name
are labelled with their Windows display number ("ASUS XG438 (Display 2)") instead of
appearing as several identical rows.
Changed
- Indexing displays by identity can no longer throw anywhere in the codebase: a duplicate is
logged and the first entry kept, so an unforeseen collision costs one display's worth of
precision rather than the whole feature. - Test suite grew from 37 to 60, over a fixture recorded from the reporting machine's three
identical panels.
What's Changed
🧰 Other changes
- Release 1.0.2: identical monitors no longer collide on identity by @inakizamores in #11
New Contributors
- @inakizamores made their first contribution in #11
Full Changelog: v1.0.1...v1.0.2
Vantage 1.0.1
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-1.0.1-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-1.0.1-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Fixed
- Preset shortcuts now survive version updates. Installing a new version by running its
Setup.exe over an existing copy uninstalls the old version first — whose uninstall hook
deleted every preset shortcut, leaving Start pins dead until each one was recreated by
hand. The install and update hooks now restore every recorded shortcut instead: a missing
.lnkis recreated at the exact path it lived at (which revives any Start pin made
against it), a surviving one is re-pointed in place. Repairs now also fix a shortcut
whose icon file went missing, not just its target.
Added
- Settings → Repair preset shortcuts. The same restore, on a button — for shortcuts a
past update already broke, or any other time a.lnkstops working.
Full Changelog: v1.0.0...v1.0.1
Vantage 1.0.0
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-1.0.0-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-1.0.0-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
The first stable release. Everything the betas built — the verified apply engine with
automatic rollback, presets, hotkeys, the layout editor, Start menu shortcuts, per-profile
GPU color depth, in-app updates — plus the hardening pass that makes it trustworthy enough
to drop the -beta: nothing fails silently anymore, nothing crashes without a trace, and a
damaged profile file can no longer take the app down with it.
Added
- A diagnostic log.
vantage.loginDocuments\Vantage Display Manager(rolled at
512 KB, bounded at ~1 MB), fed by unhandled-exception handlers on every path — the WPF
dispatcher, background threads, headless launches. A failed apply writes the engine's full
step log there; "Apply failed — see log" now points at a log that exists. - Failures reach you in the tray. The app's error surface used to be an InfoBar inside a
window that is hidden for most of this app's life. Warnings and errors now fall back to a
tray notification when the window isn't visible — a failed hotkey apply, tray-menu apply,
or out-of-date shortcut no longer vanishes without a word. - First-run guidance. A brand-new install shows what to do (arrange → name → save)
instead of an unexplained gap between the save row and Settings. - Real settings. Close-to-tray vs. exit is now a choice; the startup update check has an
off switch; and an "Open folder" button jumps to your data. Stored insettings.json
beside the profiles, atomically, versioned. - Live theme and accent tracking. Switching Windows between light and dark, or changing
the accent color, restyles Vantage on the spot — window, title bar, and the profile
thumbnails that paint the primary display in your accent. Previously picked up only at
launch, which a tray-resident app might not see again for weeks. - Hotkey conflicts are caught when you set them. Assigning a combo another profile
already owns, or one another app holds system-wide, is refused on the spot with the actual
holder named. Conflicts found later name the profile, not just the gesture, and warn once
instead of after every refresh. Vantage.exe --help(also-h,/?) prints the launch switches instead of silently
opening the GUI.vantagectlusage now listssnapshot, and every hint it prints uses its real name —
it used to suggestvantage …commands that don't exist.
Fixed
- A damaged
profiles.jsonno longer prevents Vantage from starting. It is quarantined
under a timestamped name, the automatic.bakis restored if readable, and the app tells
you what happened. Previously: an unhandled parse error before the window existed. - Concurrent profile writes can no longer lose a profile. The store file is guarded by a
cross-process lock — the window, the background shortcut reconciler, and headless
--applyprocesses all serialize their read-modify-writes. - The update dialog survives a mid-download failure without risking the process, cancels the
download when closed from the title bar, and shows failures in the system critical color
instead of subtitle grey. - Portable and unmanaged copies get a working "Releases page" button instead of a check
button that can only report why it can't work. - The IPC listener thread can no longer take the whole app (tray icon, hotkeys and all) down
with it on an unexpected fault. - Deleting a profile now says its Start menu and desktop shortcuts go with it.
- Main window title now reads "Vantage Display Manager", matching everything else.
Changed
- Installed 1.0 copies follow the stable channel. Beta prereleases are no longer offered
to a stable install; the 0.x betas still see stable releases and update onto 1.0.0. - Release engineering hardened for 1.0: the release workflow now runs the test suite before
packing, refuses a tag whose version disagrees with the repo or whose changelog section is
missing, pins the Velopack packer to the version the shipped updater understands, and
stamps the tag's version into the binaries' file metadata (previously frozen at the last
props value — Explorer would have called 1.0.0 "0.6.3"). - Test suite grew from 20 to 37: profile-store corruption recovery, concurrent-writer
safety, legacy data migration, and the launch-switch grammar every shortcut depends on.
Full Changelog: v0.6.3-beta...v1.0.0
Vantage 0.6.3-beta
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-0.6.3-beta-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-0.6.3-beta-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Fixed
- The version card in Settings sat empty under its title until you pressed Check for updates —
the line below the version was bound to a status that is deliberately blank when the silent
startup check finds nothing. It now carries a description of what the app does on its own,
the same way the Start with Windows card above it explains itself.
Full Changelog: v0.6.2-beta...v0.6.3-beta
Vantage 0.6.2-beta
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-0.6.2-beta-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-0.6.2-beta-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Fixed
--updatereported an installed copy as "not installed by the setup program" and refused to
update it.VelopackApp.Run()is what tells Velopack where the app lives, and the new switch
returned before reaching it — so the locator found nothing andIsInstalledcame back false.
The hooks now run on that path too. The in-app Update button was never affected; it goes
through the normal startup path, which always ran them.
Added
Vantage.exe's own switches (--apply,--tray,--update) are documented in the README
alongside thevantagectlcommands, with their exit codes.
Full Changelog: v0.6.1-beta...v0.6.2-beta
Vantage 0.6.1-beta
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-0.6.1-beta-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-0.6.1-beta-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Added
Vantage.exe --update— the whole update flow without the window: checks GitHub, reports
the version and release-note size it found, downloads with progress, installs and relaunches.
Scriptable, and the reason the update path can be verified end to end rather than clicked
through by hand. Exit codes: 0 updated, 1 already current, 2 not an installed copy, 3 failed.
It runs before the single-instance check, since updating is Velopack's business whether or not
a copy is already running.
Full Changelog: v0.6.0-beta...v0.6.1-beta
Vantage 0.6.0-beta
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-0.6.0-beta-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-0.6.0-beta-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
What's in this version
Added
- In-app updates. Vantage now checks its own GitHub releases, shows what changed, and
installs the new version itself. The check runs quietly in the background at launch — nothing
pops up; the Settings card simply starts offering an Update button instead of a Check one.
Choosing it opens the release notes for that version, then downloads with a progress bar and
restarts. Profiles, settings and shortcut icons live inDocuments\Vantage Display Manager,
outside the install folder, so an update never touches them, and preset shortcuts are
re-pointed by the after-update hook below. An update is refused outright while a display
change is in flight rather than swapping the app out mid-switch. - Release notes are embedded in the update package itself by the release workflow, extracted
from this changelog, so the app can show what a version contains before installing it without
a round-trip to the GitHub API — and the release page and the app can never disagree. - Presets as Start menu shortcuts. The pin button on any profile card turns that preset into
a Windows shortcut, in the Start menu, on the desktop, or both. Type the preset's name into
Start, press Enter, displays switch — no window opens. Shortcuts land in the All apps root
alongside your other apps; grouping them under a "Vantage Presets" folder is a checkbox, off
by default, because a folder is a collapsed heading you have to expand every single time.
Everything is per-user, so none of it needs administrator rights. - Per-preset icons. Each shortcut gets its own multi-resolution
.icorendered from the
preset's monitor-layout thumbnail — the same picture the profile card shows — written at
16/20/24/32/48/64/128/256 px so the Start menu, taskbar and Explorer each get a crisp size.
The HDR badge is dropped below 128 px, where it would only ever be a smudge. Any image,
.icoor program can be used instead. Icons live in
Documents\Vantage Display Manager\Shortcut Iconsso they survive updates and reinstalls,
and are written under a fresh name each time because Explorer caches icons by path. --apply <profile id or name>onVantage.exe, the switch shortcuts carry. If Vantage is
already in the tray the launched process forwards the request over a named pipe and exits,
and the warm instance — which already has the display service and profile store loaded — does
the switch. If nothing is running, the profile is applied with no theme, no tray icon, no
view model and no window built at all. Failures on the cold path surface as a message box,
since there is no window to put an info bar in.- The app now owns its entry point (
Program.Main, replacing the one WPF generates) so both
of those paths are decided before any WPF type is loaded. Constructing the WPFApplication
and merging App.xaml's theme dictionaries measures ~90 ms, which a process that will never
draw anything should not pay. A shortcut handover is ~36 ms of total process lifetime (the
pipe round trip inside that is ~3 ms), and a cold start reaches profile resolution in ~166 ms.
VelopackApp.Run()moved to the top of the real startup path, which is where Velopack has
been asking for it. - Preset shortcuts survive updates, moves and reinstalls. A
.lnkstores an absolute
path, so anything that relocates the executable would leave every preset shortcut pointing at
a file that no longer exists. Velopack solves this for its own Start menu entry by rewriting
it on each update; preset shortcuts now get the same treatment, from three places:
Velopack's after-install and after-update hooks (fixed at the moment the thing that would
break them happens), and every normal launch as a safety net for moves Velopack knows nothing
about — a portable copy unzipped somewhere new, for instance. The launch check is off the
startup path and costs one string compare per shortcut when nothing has moved. - Uninstalling removes preset shortcuts via Velopack's before-uninstall hook, instead of
leaving dead entries behind in the Start menu. - Deleting a profile removes its shortcuts and generated icon too.
- Tests for the engine's wait loop: returns as soon as the hardware agrees, honours the full
budget when it doesn't, survives a transientCcdExceptionwhile an output re-trains, and
cancels cleanly.Vantage.Corenow exposes internals to the test assembly.
Changed
- The apply engine no longer sleeps out its worst case. Three steps ended in a fixed
Task.Delaybefore checking whether the change had landed — DPI 150 ms, HDR 300 ms, colour
depth 600 ms per attempt — and the settle wait polled only every 250 ms. So an HDR preset that
also pins colour depth paid ~900 ms of unconditional waiting plus up to 250 ms of settle
overshoot, no matter how fast the hardware actually was. All four now poll every 40 ms against
the same budgets, and the DPI step (whose setter is synchronous) checks before waiting at all.
Slow hardware still gets every millisecond it had; fast hardware stops paying for it. This was
the last of the "sleep engineering" the research faulted the incumbents for (BLUEPRINT P2/P7). - Measured for context:
DisplayService.Capture()is 2.7 ms median on a two-display setup, and
an apply calls it four times — so the engine's own bookkeeping is ~18 ms. Loading the profile
store is 0.2 ms and matching is under 0.1 ms. Essentially all remaining latency is the display
pipeline itself. vantagectl applynow stamps every step with elapsed milliseconds and reports a total, so
where the time goes is visible rather than inferred.
Fixed
- Editing a shortcut deleted and recreated the
.lnkeven when the path was unchanged, which
drops any Start pin made against it. Shortcuts whose path survives an edit are now overwritten
in place; only genuinely stale paths (renamed, or moved between the Start menu and the
desktop) are deleted. Repairs preserve the icon and arguments too. - A shortcut deleted from Explorer is now forgotten rather than kept in the profile record — and
is never silently recreated, since deleting it was a deliberate act. - A second launch of Vantage tried to release a mutex it never owned, throwing on exit. Never
noticeable before because second launches did nothing; now every shortcut click is one.
Replaces theTODO(M1)placeholder with the real named-pipe channel: a plain second launch
brings the running window to the front instead of vanishing silently.
Notes
- Windows does not let an application pin itself to Start. The "Pin to Start" verb is listed on
a shortcut but invoking it programmatically is a no-op — verified against the pinned-items
database, which does not change. Pinning a preset stays a one-time right-click.
Full Changelog: v0.4.5-beta...v0.6.0-beta
Vantage 0.4.5-beta
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-0.4.5-beta-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-0.4.5-beta-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
Full Changelog: v0.4.0-beta...v0.4.5-beta
Vantage 0.4.0-beta
⬇️ Which file do I download?
| File | When to pick it |
|---|---|
Vantage-Setup.exe |
⭐ Most people. Double-click to install per-user (no admin prompt). Start Menu shortcut included. |
Vantage-0.4.0-beta-win-x64-portable.zip |
No-install option: unzip anywhere, run Vantage.exe. Fully self-contained. |
Vantage-0.4.0-beta-win-x64-lite.zip |
Tiny download if you already have the .NET 8 Desktop Runtime. |
checksums.txt |
SHA-256 hashes of every file above. |
SmartScreen note: binaries are not yet code-signed, so Windows may warn on first run — click More info → Run anyway, and verify the SHA-256 against
checksums.txtif in doubt.
Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog
Full Changelog: v0.3.1-beta...v0.4.0-beta
