Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions AI_HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -268,3 +268,18 @@ Findings and what each one changed. None of them reproduced on this machine's ow

- Fast-forwarded the local `main` branch from `b8625f7` to `0407c60`, integrating the committed `agent/release-1.1.4` release work without creating an unnecessary merge commit.
- The working tree still contains the existing uncommitted GPU/card changes and was not staged, committed, stashed, or discarded. `origin/main` remains at `b8625f7`; no remote push was performed.

## 2026-08-05 version 1.1.5 publication attempt

- The current checkout is clean on `main` at `c62a44d`, and `origin/main` is at the same commit; the existing GitHub release is `v1.1.4`.
- The user requested a version update and GitHub upload. The intended next patch version is `1.1.5`.
- Publication is currently blocked before any version edit or Git mutation because `gh auth status` reports the `nojackno2-ctrl` token as invalid. No commit, push, tag, or release was created for `1.1.5`.
- Resume after `gh auth login -h github.com` succeeds: update the single source version plus release documentation fallback, run the full win-x64 release validation, then create the release branch/commit, push, and publish the GitHub release.

## 2026-08-05 version 1.1.5 release

- `gh auth status` now reports a valid `nojackno2-ctrl` token, so the blocker recorded in the previous entry is cleared.
- Pre-release validation on `main` at `c62a44d` (win-x64, Release): `dotnet build` 0 warnings / 0 errors, `dotnet test` 141/141 passed, `dotnet format --verify-no-changes` clean, and the self-contained single-file `dotnet publish` produced `publish/win-x64/ThermoTray.exe`.
- Fixed a tray-icon defect introduced by the multi-GPU refactor: `TrayIconService.RebuildGpuIcons` re-registers the CPU `NotifyIcon` to keep the CPU-left ordering but left `_cpuIconKey` set, so the following `UpdateCpuIcon` treated the icon as unchanged and never drew onto the fresh `NotifyIcon`. The CPU tray slot went blank the first time a GPU appeared, and stayed blank whenever the CPU digits did not change afterwards (for example when no CPU sensor is readable). `_cpuIconKey` is now cleared alongside the icon replacement.
- Bumped `<Version>` to `1.1.5` in `Directory.Build.props`, with the documentation fallbacks in `installer/ThermoTray.iss` and `README.md` updated to match.
- Elevated live verification of the tray fix on real hardware is still pending; it needs a manual launch of the published build with a GPU present.
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<!-- Single source of truth for the product version. The installer and CI read it from here. -->
<Version>1.1.4</Version>
<Version>1.1.5</Version>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ dotnet publish .\src\ThermoTray\ThermoTray.csproj -c Release -r win-x64 --self-c

### 建立安裝檔

安裝 [Inno Setup](https://jrsoftware.org/isinfo.php),以 Inno Setup Compiler 開啟 `installer\ThermoTray.iss` 並編譯(命令列可用 `ISCC.exe /DAppVersion=1.1.4 installer\ThermoTray.iss` 指定版本)。它會使用 `publish\win-x64` 的輸出,安裝檔生成於 `artifacts\installer`。安裝精靈安裝到目前使用者的 LocalAppData,本身不需系統管理員權限;啟動 ThermoTray 時才會顯示 UAC。登入自動啟動請在程式內勾選「隨 Windows 啟動」。安裝精靈使用英文;已安裝的 ThermoTray 本身可切換繁體中文與英文。
安裝 [Inno Setup](https://jrsoftware.org/isinfo.php),以 Inno Setup Compiler 開啟 `installer\ThermoTray.iss` 並編譯(命令列可用 `ISCC.exe /DAppVersion=1.1.5 installer\ThermoTray.iss` 指定版本)。它會使用 `publish\win-x64` 的輸出,安裝檔生成於 `artifacts\installer`。安裝精靈安裝到目前使用者的 LocalAppData,本身不需系統管理員權限;啟動 ThermoTray 時才會顯示 UAC。登入自動啟動請在程式內勾選「隨 Windows 啟動」。安裝精靈使用英文;已安裝的 ThermoTray 本身可切換繁體中文與英文。

### 溫度正確性說明

Expand Down Expand Up @@ -91,4 +91,4 @@ Build it with Visual Studio 2022 / .NET 8 using `ThermoTray.sln` and run `dotnet

After installation, accept UAC and wait one or two seconds for the first sample. CPU utilization and temperature plus one card per GPU are shown together; 0% is a valid idle reading, while missing data is shown as `Unavailable` and never as `0 °C` for temperature. Each card independently controls whether its utilization and temperature appear in the tray; the card values remain visible, while the icon and tooltip follow those choices. Each tray icon places utilization above temperature, and each GPU tooltip identifies its GPU number and device name. The CPU tray icon is registered to the left of the GPU icons unless Windows has preserved a manually rearranged notification-area order. The startup option creates a `ThermoTray` logon task with `RL HIGHEST` so it can start elevated without another UAC prompt.

For a tagged GitHub release, push a tag matching the version in `Directory.Build.props`, such as `v1.1.4`. The release workflow verifies the tag, publishes the self-contained `win-x64` build, creates the Inno Setup installer, creates a PDB-free portable ZIP, verifies the embedded `requireAdministrator` manifest, and publishes SHA-256 checksums with the release assets.
For a tagged GitHub release, push a tag matching the version in `Directory.Build.props`, such as `v1.1.5`. The release workflow verifies the tag, publishes the self-contained `win-x64` build, creates the Inno Setup installer, creates a PDB-free portable ZIP, verifies the embedded `requireAdministrator` manifest, and publishes SHA-256 checksums with the release assets.
4 changes: 2 additions & 2 deletions installer/ThermoTray.iss
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
; 1. 先執行自包含發行發布 (Self-contained Publish):
; dotnet publish .\src\ThermoTray\ThermoTray.csproj -c Release -r win-x64 --self-contained true -o .\publish\win-x64
; 2. 呼叫 ISCC 進行編譯:
; ISCC.exe /DAppVersion=1.1.4 .\installer\ThermoTray.iss
; ISCC.exe /DAppVersion=1.1.5 .\installer\ThermoTray.iss

#define AppName "ThermoTray"
; 可由 CI 或命令列參數 /DAppVersion=<version> 覆蓋預設版本號
#ifndef AppVersion
#define AppVersion "1.1.4"
#define AppVersion "1.1.5"
#endif
#define AppPublisher "ThermoTray"
#define AppExeName "ThermoTray.exe"
Expand Down
4 changes: 4 additions & 0 deletions src/ThermoTray/TrayIconService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,10 @@ private void RebuildGpuIcons(bool restoreCpuOrder)
var oldCpuIcon = _cpuNotifyIcon;
_cpuNotifyIcon = CreateNotifyIcon();
DisposeNotifyIcon(oldCpuIcon);

// 新的 NotifyIcon 還沒有任何圖片,快取鍵必須一併清除,
// 否則 UpdateCpuIcon 會誤判圖示未變而跳過繪製,系統匣只剩空白格。
_cpuIconKey = null;
}

UpdateCpuIcon();
Expand Down