Skip to content

Releases

Vantage 1.0.3

Choose a tag to compare

@github-actions github-actions released this 17 Sep 23:52
ca06c2d
Vantage Display Manager

⬇️ 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.txt if 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

Choose a tag to compare

@github-actions github-actions released this 17 Sep 21:31
0216e61
Vantage Display Manager

⬇️ 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.txt if 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 report AUS43E1_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

Full Changelog: v1.0.1...v1.0.2

Vantage 1.0.1

Choose a tag to compare

@github-actions github-actions released this 09 Aug 21:39
Vantage Display Manager

⬇️ 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.txt if 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
    .lnk is 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 .lnk stops working.

Full Changelog: v1.0.0...v1.0.1

Vantage 1.0.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 21:14
Vantage Display Manager

⬇️ 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.txt if 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.log in Documents\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 in settings.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.
  • vantagectl usage now lists snapshot, and every hint it prints uses its real name —
    it used to suggest vantage … commands that don't exist.

Fixed

  • A damaged profiles.json no longer prevents Vantage from starting. It is quarantined
    under a timestamped name, the automatic .bak is 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
    --apply processes 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

Vantage 0.6.3-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Aug 20:35
Vantage Display Manager

⬇️ 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.txt if 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

Vantage 0.6.2-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Aug 20:24
Vantage Display Manager

⬇️ 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.txt if in doubt.

Requirements: Windows 10 20H2+ / Windows 11 (recommended), x64, no admin rights needed.
Full documentation: README · Changelog



What's in this version

Fixed

  • --update reported 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 and IsInstalled came 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 the vantagectl commands, with their exit codes.

Full Changelog: v0.6.1-beta...v0.6.2-beta

Vantage 0.6.1-beta

Vantage 0.6.1-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Aug 20:18
Vantage Display Manager

⬇️ 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.txt if 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

Vantage 0.6.0-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Aug 11:12
Vantage Display Manager

⬇️ 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.txt if 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 in Documents\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 .ico rendered 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,
    .ico or program can be used instead. Icons live in
    Documents\Vantage Display Manager\Shortcut Icons so 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> on Vantage.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 WPF Application
    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 .lnk stores 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 transient CcdException while an output re-trains, and
    cancels cleanly. Vantage.Core now exposes internals to the test assembly.

Changed

  • The apply engine no longer sleeps out its worst case. Three steps ended in a fixed
    Task.Delay before 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 apply now 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 .lnk even 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 the TODO(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

Choose a tag to compare

@github-actions github-actions released this 04 Aug 20:56
Vantage Display Manager

⬇️ 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.txt if 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

Vantage 0.4.0-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Aug 19:34
Vantage Display Manager

⬇️ 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.txt if 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