Skip to content

Releases: wygodad/ghostdeck

GhostDeck v1.25.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 22:37

[1.25.0] - 2026-08-01

Added

  • Vector A18 HX A9WHG (182LIMS1) promoted to Tested (#54, thanks
    @Skullkidsrevenge) - all three hardware checks confirmed on real hardware (Silent quieter,
    Extreme ramps up, switching stable in daily use).
  • Raider A18 HX A7VIG (182KIMS1) fan curve hardware-verified (#55,
    thanks @afk789) - the owner's wizard capture shows the MSI Center test curve exactly at the
    shipped table addresses (CPU 0x72, GPU 0x8A), so the editor loses its "addresses
    unconfirmed" caveat on this board.
  • Scenes (roadmap #21) - one-click macros over the existing controls. A scene can set any
    combination of: profile, fan-curve preset, display refresh rate, gaming overlay, charge
    limit, keyboard-backlight level, webcam and Fan Boost - each field is optional, so a scene
    only touches what you picked. Run a scene from the new Scenes section on the Scenarios tab,
    the tray menu, a per-scene global hotkey, the tray-icon scroll wheel, or the command line
    (--scene "Name"). Ships with a one-click "Add example scenes" starter set (Gaming / Work /
    Travel - plus a "Current setup" scene frozen from the machine's state at that moment, so
    one click brings everything back after trying the examples). Applied in a safe order
    (profile first, then the curve), logged as one change-log entry with a summary, one OSD
    toast.
  • Tray-icon mouse actions (roadmap #23) - the tray icon now answers to more than a left
    click: scroll wheel switches profiles (or scenes, or keyboard-backlight level), middle
    click
    toggles Fan Boost by default, and all three - left, middle, wheel - are configurable
    in Settings → System → Tray menu (profiles, Fan Boost, overlay, panic reset, show state, or
    opening any tab). Fast wheel spins are coalesced: the target is previewed on the OSD and
    written once when the wheel rests.
  • Keyboard-backlight level (roadmap #26) - off / low / mid / high on models where msi-ec
    documents the EC brightness register (82 firmware prefixes, mostly single-colour keyboards;
    per-key RGB boards are controlled by SteelSeries software instead and are not covered). A
    segmented brick on the Scenarios tab, a cycle hotkey (off → low → mid → high) shipped as
    Ctrl+Alt+F6 but disabled by default, a scroll-wheel mode, --kbd <off|low|mid|high> in
    the CLI, and a scene field. The state follows the laptop's own Fn key.
  • Webcam switch (roadmap #27) - the same EC-level switch the Fn camera key flips: off
    means the camera drops off the USB bus entirely, below Windows privacy settings. A toggle
    brick on the Scenarios tab, a hotkey shipped as Ctrl+Alt+F7 (disabled by default),
    --webcam on|off in the CLI and a scene field. Plus an advanced hard camera block
    (Settings → System → Privacy) with an amber warning and an inline confirm step: while
    active, neither the Fn key nor the switch can re-enable the camera. A panic reset lifts
    the block and re-enables the camera, so there is always a one-key way back to stock.
  • Scenarios tab grows up - a panel refresh-rate switch (pure Windows display API, works
    on any laptop) and a red panic-reset button join the quick-control bricks; the grid
    moves to three columns on wide windows; every element there - each brick and the whole
    Scenes section - can be hidden in Settings → General → "Scenarios tab"; and each scene
    card carries its own action buttons (run / move up / move down / edit / delete, with a
    click-again-to-confirm delete instead of a popup).
  • Settings → Power → Display now shows the current panel refresh rate plus a manual
    "Change now" picker, and the Start dashboard's Power tile carries the live rate too.
  • EC live view (default hotkey Ctrl+Shift+E, also a button in the hidden EC test
    dialog; rebindable or disable-able in Settings → Hotkeys) - a read-only window with the full 256-byte EC dump refreshed every 1.5 s: bytes
    that just changed glow amber and every change lands in a log as 0xF3: 80 → 82. Built for
    model support - press an Fn key (backlight, camera, fans) and see immediately which EC
    register reacts, no diagnostic zips to compare by hand.

Changed

  • The Raider GE76 17K4EMS1 entry is now named "Raider GE76 12UE / 12UGS" - the same
    MS-17K4 board ships under both names (#47, thanks @moragab1993).
  • Documented why laptops with per-key RGB keyboards get no backlight control: their five
    brightness levels live inside the keyboard's own controller, invisible to the EC, to HID and
    even to SteelSeries' own software, which has no brightness control either. Measured on real
    hardware and written up in docs/LIGHTING.md together with the protocol that is
    confirmed on those keyboards, so the question does not have to be reopened.

Full Changelog: v1.24.1...v1.25.0

GhostDeck v1.24.1

Choose a tag to compare

@github-actions github-actions released this 29 Jul 21:30

[1.24.1] - 2026-07-29

Added

  • Fan Boost can switch itself off (#51, thanks @cesarcamps) -
    Settings → Power → "Turn Fan Boost off automatically after": 30 s, 1, 2, 3, 5, 10 or 15
    minutes, or any custom value up to two hours (off by default). The countdown starts whenever
    Fan Boost goes on - tray, hotkey, the Scenarios tile or the command line - and when it
    elapses the fans go straight back to whatever the active profile or curve was doing, with an
    on-screen note and a change-log entry. Turning Boost off by hand cancels the timer.
  • Temperature readings on laptops without MSI's EC interface (#48,
    thanks @SavAlexander) - a few MSI models ship firmware that does not implement the EC
    control interface at all (proven on a Delta 15 A5EFK: the owner extracted the BIOS and the
    interface GUID is absent from the firmware tables). GhostDeck used to be completely dead on
    such machines. It now falls back to MSI's own WMI sensor blocks and shows live CPU/GPU
    temperature
    on the Status tab and in the overlay, with a plain explanation that profiles,
    fan curves and the charge limit are unavailable on that firmware. Read-only, no driver.
  • Custom fan curves survive a reboot (#49, thanks @inokra) - the
    EC resets to its factory fan mode on every cold boot, so a custom curve always needed
    re-enabling by hand. A new opt-in switch (Settings → Power → "Restore fan curve after wake /
    at startup") makes GhostDeck remember the curve that was active - a preset or a manual one
    from the editor - and re-apply it a few seconds after startup and resume, with a change-log
    entry each time. Profile restore also re-asserts its state now even when the EC happens to
    boot into the same profile.
  • Status sub-tabs got icons - Charts / History / Gaming / EC bytes / Change log now carry
    the same icon style as the Settings sub-tabs.
  • One-click diagnostic package (Settings → System → Diagnostics) - a single zip with a
    read-only EC dump (or the exact error it produced), settings, the change history and
    errors.log; everything a bug report keeps asking for, attached in one file. No personal data
    lives in any of these files.
  • Battery health panel (Settings → Power) - design capacity vs full-charge capacity,
    wear % and charge cycles, read straight from Windows' battery WMI classes; the natural
    neighbour of the charge limit.
  • Estimated battery time - while discharging, the tray tooltip shows Windows' own
    "~2 h 40 min left" estimate, a new box on Status → Charts shows it too, and a new optional
    overlay metric puts it in the HUD during gaming.
  • Storage panel with per-disk S.M.A.R.T. temperature - Status → Charts lists every
    physical disk with its name, used/total space (with a usage bar) and live S.M.A.R.T. temperature (no kernel driver; the hottest
    disk also available as an optional overlay metric); NVMe drives can throttle during long
    sessions.
  • Every Settings card now has an icon and the Backup card moved to the left column of
    System.
  • Raider A18 HX A7VIG (182KIMS1) promoted to Tested (#50, thanks
    @afk789) - per-scenario capture matches the shipped map, all three hardware checks passed,
    and fan-RPM readout is enabled. That's 15 tested models.
  • GP66 Leopard 11UG / GE66 Raider (1543EMS1): fan curve verified and RPM enabled
    (#52, #53, thanks @krystian-pytlik) - the owner's test
    curve was found byte-for-byte at 0x72 / 0x8A, so the editor's "unverified" tag is gone.
  • Raider GE76 12UE (17K4EMS1) promoted to Tested, fan curve verified
    (#45, #47, thanks @moragab1993) - the per-scenario
    capture matches the shipped register map, the owner's test curve was found byte-for-byte at
    0x72 / 0x8A, and fan-RPM readout is enabled (0xC9 / 0xCB).

Fixed

  • Super Battery on the A18 HX boards no longer writes a register MSI Center leaves alone
    (#50, #54) - two independent captures (Raider A18 HX
    A7VIG and Vector A18 HX A9WHG) show 0xEB staying at 00 in Super Battery on those AMD
    boards, so GhostDeck now mirrors MSI Center exactly and skips that write.
  • Buttons react to the mouse again - outline-style buttons (Details in the release list,
    Try again, backup buttons and others) had no visible hover state on the dark theme; they now
    highlight under the cursor.
  • A clearer message when the EC cannot be read (#48) - the capture
    wizard used to end with a bare "Details: Unsupported". It now says what actually happened
    (the firmware refused the request) and points to reporting the model, with separate wording
    for access-denied and for machines without MSI's WMI interface at all.

Full Changelog: v1.24.0...v1.24.1

GhostDeck v1.24.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 00:14

[1.24.0] - 2026-07-28

Added

  • Crosshair 16 HX AI D2XW (15P4EMS1) promoted to Tested, fan curve verified
    (#43, #44, thanks @Harsh3456D) - a clean per-scenario
    EC capture confirmed the shipped register map (shift 0xD2 C2/C1/C4, super-battery 0xEB),
    the wizard located the owner's test curve at exactly 0x72/0x8A, and all three hardware
    checks passed.
  • Releases are digitally signed - starting with this version, the GhostDeck.exe
    published on GitHub carries an Authenticode signature ("WYGODA DAWID FENIX INSPIRE", Azure
    Artifact Signing, RFC 3161 timestamp). Check it under file Properties → Digital Signatures;
    the release pipeline refuses to publish an unsigned or wrongly-signed file. This also means
    SmartScreen "unknown publisher" warnings will gradually disappear as reputation builds.
  • Settings reorganized into sub-tabs - the one long two-column page is now split into six
    groups (General / Power / Notifications / Gaming / Hotkeys / System) behind an icon strip
    like the Status tab, plus a Start page with a tile per group for quick orientation.
    GhostDeck remembers which sub-tab you were on and reopens Settings right there, even
    after an app restart. Display settings (refresh-rate switching) got their own card next to
    Power.
  • The Settings Start page is a dashboard - every tile carries a live third line with the
    group's current values (charge limit and refresh rates, alert threshold, overlay state and
    metric count, enabled hotkeys, autostart and update check) plus an on/off dot; the Gaming
    and Notifications tiles get a quick master switch right on the tile; a status header
    shows the laptop model, support tier, firmware and app version, and turns into a clickable
    "new version available" chip when the daily check finds a release; a "What's new in
    vX"
    link opens Updates with the current version's notes already expanded.
  • Release notes readable inside the app - clicking a release in Updates → Release history
    expands its full formatted notes inline (section headers, bullets, bold; click again to
    collapse), the old "Details" link is now a proper button that opens the release on GitHub,
    each entry shows its download count, and the list covers the last 20 releases
    (was 5 with two-line previews only).

Fixed

  • The top bar always shows where you are - pages opened from icon-only buttons (Report,
    Updates, or any tab collapsed to an icon via Settings → Interface) left nothing highlighted
    in the strip; the active icon now gets an accent frame and accent glyph.
  • Updates tab recovers after connection loss - a failed fetch used to show the error once
    and never load again, even after the internet came back. The tab now retries when you open
    it again, the error message has a "Try again" button, and a background re-check runs every
    30 s while the tab stays open.
  • Settings always show the current state - switching the language from the tray menu or
    the theme from the header button left the Settings page showing the old values; the page now
    syncs itself whenever it is shown or the app state changes.
  • A failed hardware read no longer crashes the app - the gaming overlay refreshed the EC
    every second with no error handling, so one refused WMI call (provider restart, sleep/resume,
    shutdown) was enough to raise a .NET "unhandled exception" box. The overlay now keeps the last
    reading and tries again on the next refresh, and a last-chance handler catches anything else
    and writes it to %AppData%\GhostDeck\errors.log instead of showing a dialog.
  • A switched-off overlay no longer reads the hardware - turning the gaming overlay off only
    hides its window, and the 1 s sampling timer kept running with it, so the EC was polled every
    second for the rest of the session. The timer now follows the window's visibility.

Full Changelog: v1.23.1...v1.24.0

GhostDeck v1.23.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 22:48

[1.23.1] - 2026-07-27

Changed

  • Thin GF63 12VE: fan-curve addresses verified (#22) - the owner confirmed
    this is a single-curve board (MSI Center exposes one fan slider, the CPU fan) and the test
    curve was found at the shipped 0x72, so the editor's "unverified" tag is gone.
  • Single-curve boards get a single-curve editor - on models with one controllable fan curve
    (currently the Thin GF63 12VE) the Fan curve tab shows one full-width plot instead of a dead
    GPU graph, and the dead GPU tables are never written to the EC.
  • Fan-curve wizard reports each fan separately - finding only the CPU test curve now says
    exactly that (with the located address) instead of a blanket "not located", so single-fan
    models verify cleanly (#22).

Full Changelog: v1.23.0...v1.23.1

GhostDeck v1.23.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 22:34

[1.23.0] - 2026-07-26

Added

  • Seven more models verified on real hardware - thank you, reporters! Thin GF63 12VE
    (#21, incl. fan-RPM readout), Titan 18 HX Dragon Edition
    (#23 / #24, incl. RPM and a verified fan curve),
    Bravo 15 B7ED (#25), Bravo 17 C7VE/D7VFK (#40 /
    #41, verified fan curve), GF63 Thin 11UC/11SC (#30),
    Katana GF66 11UE/11UG (#34), Pulse/Katana 17 B13V/GK
    (#38 / #39, verified fan curve). Fan-curve addresses
    also verified on the Cyborg 15 A12VF (#29) and the Bravo 15 C7V
    (#27); the AMD Bravos drop the no-op super-battery write (no 0xEB
    register on those boards, same as the Crosshair). That's 12 tested models now.
  • FPS & frametime of any game, driver-free - a private ETW session listens to Windows' own
    Present events (the same source Intel PresentMon uses): no DLL injection, nothing touches the
    game, anti-cheat-safe. New FPS and Frametime overlay metrics (FPS on by default), and
    the monitor runs only while the overlay or the new Gaming tab is open - zero idle cost.
  • Status → Gaming sub-tab - live FPS / frametime / 1% low / stutter boxes, a 60 s frametime
    chart with stutter markers and a median line, plus a card with the last game session.
  • Game-session report - when a game exits: a borderless summary popup (game, duration,
    avg FPS / 1% low / max temp / fan RPM, frametime sparkline with stutter dots) pairing the FPS
    stats with the EC data that only GhostDeck sees, plus a change-history entry. The popup can
    save itself as a PNG, export the session data as JSON/CSV or jump to Status → Gaming;
    it never steals focus, can be dragged anywhere, and hides after a configurable time
    (Settings → Notifications: 20-60 s or "until closed") - any interaction pins it until the ✕.
  • Saved game sessions - the last 5-50 sessions (Settings → Notifications, default 10) are
    kept on disk; Status → Gaming gets a session picker (newest first) with per-session
    JSON/CSV export.
  • History niceties - the FPS chart is now always present (with a hint explaining it fills
    while a game runs), and hovering any History chart shows a translucent value bubble at
    the cursor; the frametime chart on Gaming got a legend.
  • Restore profile after wake (opt-in, Settings → Power) - some ECs wake from sleep or
    hibernation in Super Battery on their own; this option re-asserts the profile you chose a few
    seconds after resume and at app start (skipped while AC/battery auto-switch is on).
  • FPS in History - a fourth chart on Status → History and an fps column in the CSV/JSON
    export (-1 = no reading). --status (CLI) now also reports fps, frameTimeMs and game.

Fixed

  • Export button on Status → History grew a few pixels on every chart refresh (its measured
    size fed back into itself); it is now measured against the DPI-aware canvas, which also keeps
    the label intact at 125-150% display scale.

Full Changelog: v1.22.0...v1.23.0

GhostDeck v1.22.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 23:44

[1.22.0] - 2026-07-15

Added

  • Refresh-rate auto-switch (Settings → Power, opt-in): pick a preferred display refresh
    rate for AC and for battery (only modes your panel reports are offered) and GhostDeck applies
    it on every plug/unplug, with an OSD toast and a change-history entry. Pure Windows display
    API - no EC involved - so it works on every model, including unrecognised firmware
    (#18, thanks @alibi90). --status now also reports refreshHz.

Fixed

  • History Export button clipped at 125-140% display scale (sizing now uses the control's
    DPI-aware preferred size).
  • Models intro said "1 tested" regardless of reality - the count now comes live from the
    model table; the whole Models tab is also translated into all 8 languages (it was EN/PL only).

Full Changelog: v1.21.0...v1.22.0

GhostDeck v1.21.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 22:20

[1.21.0] - 2026-07-15

Added

  • Fan-curve presets (Fan curve tab): save the current curve under a name, switch between
    presets from the editor or straight from the tray menu, rename/delete, and export/import
    a preset as a JSON file. A Share… button opens a prefilled GitHub Discussion so you can
    post your curve for others with your model/firmware attached (nothing is sent automatically).
  • Per-profile fan curve: assign a preset to Balanced / Extreme / Super Battery and it is
    applied automatically on every profile switch made through GhostDeck (hotkey, tray, panel,
    AC/battery auto-switch). Silent deliberately stays stock - its power cap lives in the same
    EC byte a curve needs. Panic reset and profile changes made by MSI software never apply presets.
  • History sub-tab on Status: local charts of CPU/GPU temperature and fan duty over the last
    5-60 minutes, fed by a background sampler every 3 s. Memory-only by design: nothing is written
    to disk and nothing leaves the machine.
  • Command-line interface: GhostDeck.exe --profile Silent, --cycle, --fanboost on|off,
    --overlay on|off, --curve <preset|auto>, --panic, --status (JSON). Commands go to the
    running app (same safety gates as the UI) or run one-shot against the EC when it isn't running.
    Made for Task Scheduler, Stream Deck and scripts; exit codes 0/1/2.
  • History crosshair: a tracking line with per-series dots and a "selected · now" value
    readout on the history charts; the fan RPM chart keeps at least 500 RPM of headroom.
  • History export: the visible history window (time, profile, temps, fan duty, RPM, CPU load)
    can be saved as CSV or JSON for external analysis - a plain local file, nothing leaves
    the machine.
  • CLI reference: full command documentation with the --status JSON schema and automation
    recipes in docs/CLI.md.
  • MSI Cyborg 15 A12VF promoted to Tested - owner-verified report with full per-scenario
    dumps, fan RPM enabled at 0xC9/0xCB (#19, thanks @hengeleng10-tech).
  • "Thanks" column on the Models tab: the GitHub user whose report/verification backs each
    tested model, linking to their issue.

Fixed

  • Updates tab horizontal scrollbar that could appear even though everything fit the window.

Full Changelog: v1.20.0...v1.21.0

GhostDeck v1.20.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 18:19

[1.20.0] - 2026-07-14

Added

  • Settings export / import (Settings → Backup): save all preferences (colours, hotkeys,
    rules, overlay, alerts) to a JSON file and restore them after a reinstall or on another
    machine. Machine-specific state (firmware guard, window position) is kept local.
  • Temperature alert (Settings → Notifications, off by default): an OSD toast and a tray
    balloon when the CPU or GPU stays above a chosen threshold (80-100 °C) for a chosen time
    (5-60 s), with a 5-minute cool-down between alerts and an entry in the change history.
  • Panic reset hotkey (default Ctrl+Alt+F10): one press returns the machine to a safe
    stock state - Fan Boost off, Balanced profile, fans back on the automatic curve.
  • Alert threshold test steps 70/75 °C so the temperature alert can be tried out without
    heating the laptop up first.
  • Adjustable OSD display time (Settings → Notifications, 1-15 s, default 3): how long the
    on-screen toasts stay visible; the temperature alert always stays up at least 5 s.

Changed

  • Internal source reorganization: files grouped into Core/ (hardware + app logic),
    UI/ (tabbed window, pages, shared controls) and Forms/ (standalone windows); the
    116 kB MainPages.cs split into per-class files; the dead pre-tabs settings dialog
    removed. No functional changes.

Full Changelog: v1.19.0...v1.20.0

GhostDeck v1.19.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 15:43

[1.19.0] - 2026-07-13

Added

  • Fifth application-icon style: the dark-style cyan ghost on the light tile
    (Settings → Application icon).
  • "Start over" buttons in both report wizards - a capture run in the wrong MSI Center
    state can now be repeated without restarting the app (#9).

Changed

  • Scenario tiles restyled like the ghostdeck.dev cards: a soft inner glow on the active
    profile with an outlined ACTIVE chip, a subtle SELECT hint on the rest.
  • Uniform feature bricks. Charge limit and AC/battery auto-switch moved into the same
    style of boxes as Fan Boost and Gaming overlay - one consistent block per feature.
  • Header layout: the GhostDeck wordmark moved to the left of the tabs, and the
    tested/experimental badge now sits in the header next to the version (instead of on
    each page).
  • Subtle background grid on every tab, matching the ghostdeck.dev page texture.
  • New "Interface" settings section: the background grid can be turned off, and every main
    tab can individually be moved out of the tab row into an icon-only button on the right of
    the header (e.g. keep Models one click away without it occupying the tab row).
  • Status tables now use the change-log colour language (muted labels, accent keys,
    per-fan colours in the live curve table), and the full-log window colours its source column.
  • Charts row justified: the five gauges and the metric boxes under them spread across the
    full content width instead of hugging the left edge.

Fixed

  • Tabs are clickable across their full height, not only on the text/icon line.
  • First-show flashes and sluggish tabs eliminated at the source. The one-time white flash
    per tab was the native handle-creation storm; the window is now pre-built hidden shortly
    after startup (all pages and their controls created off-screen), and closing the window
    hides it instead of destroying it - so reopening and every tab switch is instant.

Full Changelog: v1.18.1...v1.19.0

GhostDeck v1.18.1

Choose a tag to compare

@github-actions github-actions released this 13 Jul 11:00

[1.18.1] - 2026-07-13

Added

  • Application icon choice (Settings → Appearance): GhostDeck logo, ghost on a dark rounded
    tile (new default - crisper in the taskbar and title bar, with rounded corners), ghost on a
    light tile, or the classic pre-1.18 gauge. The tray icon keeps following the active profile
    colour in every style (#9).
  • "Send feedback" can be hidden from the tray menu (Settings → Tray menu)
    (#9).

Fixed

  • Autostart survives moving the exe. The scheduled task stores the exe path from the moment
    autostart was enabled, so moving GhostDeck.exe (e.g. into Program Files) silently broke
    autostart; the app now re-points the task at its current location on every start
    (#9).
  • Clicking overlay checkboxes no longer lights up the Position dropdown - the combo showed a
    solid selection highlight when it merely received focus (#9).
  • Overlay "Limit" metric now shows OFF when the battery-charge limit is not managed by the
    app, instead of keeping the last percentage (#9).
  • Shortcut capture boxes are theme-aware - they had a glaring white system border in dark
    mode; now they use the theme border (accent when capturing) (#9).

Changed

  • Status tables restyled. The EC profile-byte matrix now uses a cleaner per-profile row wash
    with a coloured left edge (and a cyan edge on the active profile); the byte legend, live
    fan-curve table, change-log and the Charts detail card now use alternating row shading for
    easier reading.
  • Update download bar. During an in-app update the progress now shows as a "Downloading… X%"
    label above a rounded progress bar (the Install/Check buttons hide while it runs).
  • Fan-curve charts now draw a translucent gradient fill under the curve and a vertical
    guide line at every node, matching the ghostdeck.dev look.

Full Changelog: v1.18.0...v1.18.1