Releases: wygodad/ghostdeck
Releases · wygodad/ghostdeck
Release list
GhostDeck v1.25.0
[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 (CPU0x72, GPU0x8A), 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+F6but 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 asCtrl+Alt+F7(disabled by default),
--webcam on|offin 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 as0xF3: 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
17K4EMS1entry 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 indocs/LIGHTING.mdtogether 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
[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 at0x72/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) show0xEBstaying 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
[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 (shift0xD2C2/C1/C4, super-battery0xEB),
the wizard located the owner's test curve at exactly0x72/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.loginstead 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
[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 shipped0x72, 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
[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 (no0xEB
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
Presentevents (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
fpscolumn in the CSV/JSON
export (-1= no reading).--status(CLI) now also reportsfps,frameTimeMsandgame.
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
[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).--statusnow also reportsrefreshHz.
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
[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
--statusJSON 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 at0xC9/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
[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) andForms/(standalone windows); the
116 kBMainPages.cssplit 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
[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
[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 movingGhostDeck.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