Repository navigation
Releases
v0.9.7
Bug Fixes
- guard AMD applies and stale results
- reconcile imported power state
- reject unordered STAPM and PPT limits
- fail applies when PM-table readback differs
- serialize post-resume CPU power write
Documentation
- add the Ryzen testing guide as a web page
Features
- show Intel package power
Maintenance
- bump to 0.9.7
Verification
- VirusTotal: https://www.virustotal.com/gui/file/b01ffa0f1b08bcd86bbfde2a4ef4f7802ba52108803c0835330c73955b5a5f8e
- 0 malicious, 0 suspicious of 71 engines
v0.9.6
Bug Fixes
- clear stale reset intent and sync latch state
- persist the manual language choice
CI/CD
- put the VirusTotal verdict on its own line
Documentation
- add social metadata and refresh screenshots for 0.9.5
- qualify the homepage hardware requirement as tested
- drop the supported claim from the README platform notes
- sync architecture tree and measured resource usage
- document the AMD read-only RyzenSMU card
- document the experimental AMD CPU Power support
- add the Ryzen power testing checklist and issue form
- add the Traditional Chinese README, site, and Ryzen testing guide
- add the USB expansion card misclassification report form
Features
- add persisted AC/Battery power-limit profiles
- record MMIO wall defaults for AC and battery
- add read-only RyzenSMU PM-table telemetry
- add experimental RyzenSMU writes, profiles, and keep-alive
- add the experimental CPU Power card controls
Maintenance
- remove pre-0.9.0 screenshots
- bump to 0.9.6
Refactoring
- guard stale applies and drop dead messages
- split limits into decode, validate, and write modules
- split the poll loop into phase modules
Verification
- VirusTotal: https://www.virustotal.com/gui/file/f68afecf16704586e80ea88539b648401c3791033ea9491035667c9c52760fdc
- 0 malicious, 0 suspicious of 71 engines
v0.9.5
Bug Fixes
- curve seed after reset, calibration median abort, OneDrive export
- preserve import duty baseline, guard tray quit, tag calibration runs
CI/CD
- tidy release notes and group the VirusTotal link
Documentation
- read SHA-256 from the release asset digest
- show the VirusTotal result under the latest download
- describe the keep-alive toggle after the Sync move
Features
- move the keep-alive policy to About and slow it to 5 minutes
Maintenance
- batch tick refreshes, guard sync restart, fix comments
- rename GitHub owner to vinctw22
- bump to 0.9.5
Verification
- VirusTotal: https://www.virustotal.com/gui/file/97adcce43c8d14bfd1ba19b48b0fc78d103899f180606d2d43ab3663c4d7c619
- 0 malicious, 0 suspicious of 71 engines
v0.9.4
Bug Fixes
- always populate edit fields from snapshots
- prime edit fields when hardware appears
- target tooltip updates at the pump window
- calibration abort restores fans, debounce guards, hot-start guard
- hardened import read, explicit no-overwrite export
- wall-jump reload, battery dedup, 5s tray tip; tests
CI/CD
- add CodeQL static analysis for Rust
- skip Rust CI for docs and asset-only changes
- submit release binary to VirusTotal and link the report
Documentation
- refresh feature list for recent telemetry work
- note unreleased 0.9.4 features in README
- add GitHub Pages project site with Privacy Policy and License
- add SECURITY.md and Security page on project site
- expand homepage features, add Limitations page
- sync README and site
- sync README arch tree and Security page
- live release info on homepage
- rework site into home, downloads, changelog, contribute pages
- note planned AMD support requires community testing
Features
- turbo telemetry, tray temp tip, and peripheral status rows
- add settings export and import
- add per-fan curves on multi-fan machines
- add calibration wizard for per-fan RPM tables
Maintenance
- bump to 0.9.4
Other
- Style: cargo fmt across recent edits
Refactoring
- split into window, system, and startup_task modules
- drop the empty ExpansionCard abstraction
- collect poll state and extract phase functions
- move poll state and phases into background_task/poll
- split settings IO and calibration dispatch into config_io
- to_wide convergence, docs, caches, label tests
- split shared currency types into types.rs
- split single file into config/ submodules
Testing
- stop echoing user principal in spoofed-env assertion
Verification
- VirusTotal: https://www.virustotal.com/gui/file/a12a9f8026c63ff5c30eaf74027d63254445723156ee6b2596da4fb057e1cdf1 — 0 malicious, 0 suspicious of 71 engines
v0.9.3
Bug Fixes
-
harden task UI, installs, and CPU power state
-
slow idle CPU polling and bound retries
-
raise manual high-temperature duty floor
-
tighten charge-limit readback retries
-
accept read-only MMIO values outside model caps
-
invalidate auth cache and persist sync intent
-
isolate tests and make height probe lock-free
-
tighten retries and skip redundant updates
-
reject reparse-point log directories
-
remove the hardcoded 80C curve floor
-
re-evaluate idle state before CPU power polls
-
bump libz-sys past RUSTSEC-2026-0418
-
keep tempfile on getrandom 0.4.3
-
hello tiebreak before EC client reset
-
manual 95C floor at 90 instead of the 80/90 handover
CI/CD
-
pin actions and add MSRV/weekly release checks
-
require MSRV check before releases
Documentation
-
document config internals and MSRV
-
add CI and release status badges
Features
- deep battery and PD firmware telemetry
Maintenance
- bump to 0.9.3
Other
-
raise MSRV to Rust 1.94
-
raise MSRV to Rust 1.99.1
-
Deps: bump smallvec
-
Merge pull request #8 from vincent-chang-rightfighter/dependabot/cargo/cargo-6d9cf0bd4f
Refactoring
-
drop unused versions snapshot fields
-
share limit range checks between UI and writer
Testing
- add deterministic fuzz coverage
Contributors: @dependabot[bot]
v0.9.2
Bug Fixes
-
show app version in About software section
-
reset manual ramps when unified duty toggles
-
hand control to firmware when curve has only battery readings
-
avoid spurious AC-to-battery reset on battery boot
-
map Laptop 12 Core 3 to the Laptop12 family
-
resolve winget only from trusted Program Files packages
-
harden scheduled task XML against TOCTOU
-
limit EC initialization to one in-flight attempt
-
hand fans back to firmware on session end
-
stop sync around Apply and restore it on failure
-
require the MSR half before reporting CPU power available
-
keep PL reset pending until the write succeeds
-
distinguish unreadable BIOS defaults from a missing file
-
read live RAPL units before restoring BIOS defaults
-
retry charge-limit writes after a failed apply
-
keep polling for AC transitions while idle
-
restore sync when a BIOS-defaults reset fails
-
avoid blocking on the scheduled-task query and toggle
-
reset DLL state after the combined PawnIO update
-
latch sync startup failures and clear Syncing state
-
clear the last duty after handing control back to firmware
-
reject enabled limits with a zero time window
-
back off failed AC-to-battery resets
-
evaluate the 80C guard only on the active duty path
-
stop reporting the mainboard board ID as an expansion card
-
display no cap when the charge limit is disabled
-
preserve sub-zero temperature readings
-
diagnose time and clamp readback differences
-
avoid duplicate BIOS backups and symlink reads
-
fence EC writes before the final firmware handover
-
fsync debounced config saves
-
wait briefly for the tray pump to exit
-
free the DLL on init failure and cache a missing version
-
move the task XML into an admin-only ProgramData directory
-
route the startup refresh through the single EC dispatcher
-
keep stop_sync flags under the thread lock
-
bring the tray menu to the foreground
-
ignore the config directory override in release builds
-
bound winget install and update runtime
-
key the Authenticode verdict cache by DLL path
-
cap module archive size before and during extraction
-
refuse a fallback that would overwrite an unmarked local install
-
reject hard-linked BIOS defaults files
-
keep the release check inside the caller timeout
-
only clean stale task XML older than an hour
-
surface time and clamp readback differences
-
validate config and BIOS files through one handle
-
persist chart window and correct status text
-
reject Windows alias paths and link members
-
stop startup refresh after a dispatch failure
-
join child pipe readers on timeout
-
enforce firmware time-window bounds
-
tighten archive extraction bounds
-
treat the 0x614 max window as advisory
-
bound validated config reads and corrupt backups
-
quarantine BIOS defaults from validated bytes
-
remove temporary archive on pre-check failure
-
require an admin-only executable path
-
avoid negative battery current when AC state is unknown
-
drop unsafe legacy tasks and clean child waits
-
allow portable startup registration again
-
enforce curve safety floor and monotonic duty
-
harden BIOS capture, sync restart, and resume handover
-
throttle firmware handovers and refresh startup data
-
repair module updates and bound install/auth tasks
-
refresh late versions and harden UI state
-
enumerate all Laptop 16 PD ports
-
bound registry reads and isolate startup task test
-
keep reinit cleanup from clobbering a newer pump
-
verify charge-limit writes with readback
-
harden capture and make MMIO read-only
-
isolate driver calls on a dedicated runtime
-
render the 80C floor on the curve canvas
CI/CD
- track cargo dependency updates
Documentation
-
record accepted advisories and local audit command
-
document startup hardening and logoff limitation
-
align capture, polling, and port behavior
-
document MSR-only MMIO behavior
Maintenance
-
update tokio and clipboard-win for cargo audit
-
drop unused core affinity pinning
-
v0.9.2
Other
-
make release unwind behavior explicit
-
Deps: bump cargo packages without parking_lot 0.13
Refactoring
- drop unused history window field
Testing
-
serialize tests that use the global EC dispatcher
-
make versioned-save test order-independent
v0.9.1
Bug Fixes
- gate PL floor and order check on enabled toggles
Documentation
-
mention one-click copy buttons on About page
-
refresh screenshots to v0.9.0
-
show v0.9.0 screenshots in a 2x2 grid
-
refresh measured memory footprint
-
note v0.9.0 sleep/wake hardening
-
refresh stale architecture entries
Maintenance
- bump version to 0.9.1
v0.9.0
Bug Fixes
-
share one band per two-column row so bottoms align
-
stack sections as independent full-width cards
-
keep Device and Diagnostics side by side
-
keep Software beside Theme and Updates
-
pad Theme+Updates column to Software height
-
trim Theme+Updates match pad 64 to 12
-
drop match pad, a constant cannot track dynamic heights
-
pad Software to meet Theme+Updates (measured 42px)
-
centralize PL write-boundary caps for UI and BIOS restore
-
hand Manual mode back to firmware on stale thermal
-
release EC mutex on write timeout instead of orphan-holding it
-
never unload PawnIO DLL under in-flight users on reset
-
revoke all watched explicit write ACEs, not just Everyone
-
write schtasks XML with create_new unique names
-
resolve task principal from token, scope instance mutex
-
strict update-check fetch and tag shape
-
bound sync retries and keep reset pending across failures
-
pin 64-bit registry view, accept empty REG_SZ
-
Light contrast pass and Black plot lift
-
harden EC handover and PL/fan limits
-
pin winget/modules download and config write
-
unify rule/scrollable/mode styles
-
retry quit handover and tighten fan guards
-
align PL validation across UI/BIOS/sync
-
pin system tool paths and download fetches
-
keep selected text readable and unify views
-
cap concurrent EC reads with semaphore
-
enforce per-model PL ceilings
-
keep fan loop alive on EC backpressure
-
close PL/bios validation gaps
-
harden task, log, config and download paths
-
keep selected text readable and unify charts
-
re-check shutdown after EC lock and deduplicate counters
-
unify quit handover retries and clamp hot drags
-
validate modules directory before use
-
shutdown-aware EC lock wait for per-fan writes
-
replace deprecated fetch_update with compare_exchange
CI/CD
-
least-privilege jobs, pinned audit, signed-by-hash releases
-
add dispatcher soak workflow and dependabot
-
run dependabot monthly instead of weekly
-
tag-based actions with grouped dependabot bumps
-
bump the actions group with 4 updates
Documentation
-
document snapshot alloc tradeoff
-
sync binary size, panic, and env override notes
-
document single-writer EC dispatcher
Features
-
add single-writer dispatcher with bounded queue
-
harden single-writer dispatcher
Maintenance
- bump version to 0.9.0
Other
-
Merge branch 'master' into dependabot/github_actions/actions-cfe433e3f5
-
Merge pull request #5 from vincent-chang-rightfighter/dependabot/github_actions/actions-cfe433e3f5
Performance
- prefer size over speed in release profile
Refactoring
-
thread palette through settings views
-
introduce EcHw trait behind dyn dispatch
-
route all EC I/O through single writer
-
drop hardcoded card pad, unify lock-dot fill
-
wrap About updates help text onto three lines
-
tighten About updates hint into one paragraph
-
adapt call sites to typed dispatcher errors
Testing
- soak dispatcher with randomized ops and quit storm
Contributors: @dependabot[bot]
v0.8.0
Bug Fixes
-
show quit confirmation above About
-
compute gray against the card background
-
make Black true black instead of Oxocarbon gray
-
paint Black window background true black
-
give Gruvbox its signature orange accent
-
mop up hardcoded colors from review
-
close hardware write gaps from review
-
review leftovers (paths, battery gate, audit)
-
review batch 2 (config dir, DACL, locks, loop death)
-
cap per_fan_duty length at validate
-
point powershell pin at its real subpath
Features
-
full theming with Default preserving the current look
-
paint chart panels and move Updates under Theme
-
add Tokyo Night, Gruvbox, Mocha, and Nightfly schemes
-
add Black scheme, drop Tokyo Night, theme the accents
-
fan curve follows the theme accent
-
dim secondary text, brighten Gruvbox green
Maintenance
- bump version to 0.8.0
Refactoring
-
tidy remaining review items F18/F17/F16/F3
-
group the page into labeled sections
v0.7.0
Bug Fixes
-
fail closed when the single-instance mutex cannot be created
-
find main window by PID instead of title
-
enforce config ACL by revoking Everyone write ACEs
CI/CD
-
watch upstream PawnIO.Modules releases
-
verify git-cliff checksum before running it
Features
- check for app updates from the About page
Maintenance
-
accept-list three transitive iced advisories
-
remove redundant cfg(windows) and document icon_gen
-
bump version to 0.7.0
Other
-
raise png to 0.18
-
raise sha2 to 0.11
-
raise dirs to 7
-
refresh patch-level dependencies
Refactoring
- split background_task mode arms into submodules