XMoni 版本更新日志
==================
作者: 隐者艾伦 (https://www.gongyesheji.org)
技术栈: C# .NET Framework 4.7.2, WinForms, LibreHardwareMonitorLib
──────────────────────────────────────────────────────────

V0.7.0 (2026-06-20)
────────────────
  [多GPU支持]
  - 新增 GpuInfo 数据结构，每GPU独立采集 Load/Temp/Freq/Power/HotSpot/MemJunc/CUDA/VRAM
  - ReadGpuSensors() 按 GPU 类型排序：NVIDIA(3) > AMD(2) > Intel(1)
  - MainForm 动态创建 GpuRow 列表，每行含5列：GPU负载 | GPU频率 | CUDA/VRAM | GPU温度 | 显存温度
  - 单GPU布局不变；多GPU自动拆分，行高均分（最低60px），硬盘面板最低保留15%窗口高度
  - 保留向后兼容的单GPU getter（返回主GPU数据）

  [GPU负载精确匹配]
  - 传感器匹配完全重写：D3D 3D（优先）→ GPU Core（fallback）→ 通用非排除Load传感器
  - 移除"cuda"/"compute"/"power"/"render"/"graphics"/"vr"等干扰项误匹配
  - GPU总负载 = max(D3D 3D, GPU Core, D3D Cuda)，覆盖3D渲染和CUDA计算两种场景
  - CUDA折线图仅显示 D3D Cuda 真实值，不再回退到GPU Core负载
  - 所有负载值钳制 0-100% 范围
  - 新增 SensorType.Level 兼容部分LHM驱动版本
  - 首次采集时输出 [GPU] 诊断日志（硬件名/类型/匹配传感器/摘要）

  [网络速度修复]
  - 接口类型过滤：仅保留 Ethernet/Wireless80211/GigabitEthernet/FastEthernet
  - 中文关键词过滤：排除"蓝牙"/"虚拟"/"隧道"等中文隐藏网卡
  - 隐藏适配器过滤：排除名称含"*"的Windows隐藏适配器
  - 虚拟网卡过滤：排除 WAN Miniport/Teredo/ISATAP/Pseudo/Miniport
  - 解决中文系统虚拟网卡流量叠加导致显示值偏大（9MB→20MB）的问题

  [分辨率预设重设]
  - Mini: 400×300 → 600×500
  - 小（默认）: 800×800 → 800×600
  - 中: 1000×1000 → 1000×750
  - 大: 1200×1200 → 1250×1000
  - 默认窗口: 800×600，最小窗口: 600×500
  - 硬盘面板预留空间改为动态计算（窗口高度的15%，最多140px）

  [字体自适应缩放]
  - GaugeControl 新增窗口缩放：titleH = max(36, GetHeight * TitleMultiplier)，scale = h/238 (0.75x-1.55x)
  - SparklineRenderer 缩放范围改为 0.75x-1.55x（原 1.0x-1.55x）
  - TitleMultiplier 可配置：默认2.5，GPU频率/CUDA/VRAM为1.5（紧凑布局）
  - titleH 使用原始 TitleFont.GetHeight() 计算，确保堆叠折线图下边缘精确对齐
  - 数值区域行高移除30px硬上限，改为 fontH * 1.4 无限制缩放
  - 数值字体去粗：全部改为 Regular（原 Bold），加宽文本区域72%

  [数值字号缩小]
  - 折线图 ValueFont: 9pt → 8pt Regular
  - CUDA/显存 ValueFont: 11pt → 10pt Regular
  - 标题栏: 9pt → 8pt Regular

  [硬盘面板优化]
  - 标题字号根据最长型号名自动缩小（MeasureString测量），多盘统一字号
  - 型号截断阈值从48字符放宽到70字符
  - 驱动信息字号跟随标题缩放（×0.85）
  - 百分比字号同步缩放
  - 标题高度自适应盘符数量，多盘自动压缩
  - 面板圆角统一20px（与画布背景一致）

  [顶部标题栏]
  - 高度30px，背景半透明深色，顶部圆角20px（FillTopRoundedRectangle）
  - 文字: "XMoni - 桌面硬件仪表盘  Power by 隐者艾伦"，纯白8pt，水平垂直居中

  [关于页面]
  - 版本号更新为 V7.0
  - 所有文字改为黑色（超链接保留蓝色）
  - 新增"打开版本日志"按钮，点击打开版本日志.txt

  [PerformanceCounter增强]
  - GPU利用率：尝试使用 Windows GPU Engine PerformanceCounter (engtype_3D) 作为备选源
  - 初始化时搜索并prime计数器，每轮采集时与LHM数据取max

  [Cleanup]
  - 移除 EMA 平滑（用户要求恢复原始值直出）
  - 移除错误的 CudaLoad = Load 回退逻辑

V0.6.34 (2026-06-20)
────────────────
  [多GPU支持架构]
  - HardwareMonitor.cs: 新增 GpuInfo 类，ReadGpuSensors() 返回 List<GpuInfo>
  - GPUs按优先级排序: NVIDIA(3) > AMD(2) > Intel(1)
  - 保留向后兼容的单GPU getter（返回primary GPU）
  - Debug信息显示所有GPU详情

  [动态UI布局]
  - MainForm.cs: List<GpuRow> 管理GPU行
  - 单GPU: 布局不变；多GPU: 行高均分，最低80px

  [Sensor匹配修复]
  - 新增generic fallback：任何未被排除的Load传感器都能匹配
  - 修复单独立显卡GPU负载不更新的问题

V0.6.33 (2026-06-20)
────────────────
  [双显卡兼容]
  - ReadGpuSensors() 重构为优先级系统：NVIDIA=3 > AMD=2 > Intel=1
  - 每GPU独立采集再按优先级合并，解决 Intel iGPU 覆盖 NVIDIA 数据的问题

  [网络显示修复]
  - FmtSpd() v<1 MB/s 时不再硬编码返回 "0.000"
  - 改为 v.ToString("F3") 保留实际值（16KB/s → 0.016 MB/s）
  - 标题字号：10pt → 9pt Regular

V0.6.32 (2026-06-19)
────────────────
  [顶部标题栏重构]
  - 高度100px，TopMargin=125
  - 纯白18pt Bold文字，水平和垂直居中
  - 半透明深色背景，文字内容 "XMoni - 桌面硬件仪表盘"
  - 后续调整为高度30px，间距10px，9pt Regular

V0.6.31 (2026-06-19)
────────────────
  [标题文字颜色]
  - GaugeControl/SparklineRenderer 标题颜色恢复为深黑 TextColor
  - 标题区增加半透明深色背景（后移除，用户要求透明）
  - titleH 三处统一为 Math.Max(50, GetHeight*2.5f)

  [圆角统一]
  - 硬盘面板圆角 6px → 20px（与画布背景一致）
  - 标题栏新增 FillTopRoundedRectangle 顶部圆角20px
  - GraphicsExtensions 新增 TopRoundedRect 路径方法

V0.6.31-V0.6.30 之前 (2026-06-19)
────────────────
  [UI精细化调整]
  - 标题文字改回深黑色，去除半透明背景
  - 标题栏字体加粗→Regular，文字改为"XMoni - 桌面硬件仪表盘  Power by 隐者艾伦"
  - 标题背景、间距、圆角持续微调

V0.6.14 (2026-06-19)
────────────────
  [4K/高DPI自适应]
  - 所有文本高度使用 Font.GetHeight(g) 动态计算
  - 字体缓存：_cachedValueFont/_cachedTitleFont，DPI变化>0.01才重建
  - 缩放上限 Math.Min(1.55, ...)，防止文字溢出
  - 值文本高度上限 Math.Min(30, ...)，防止重叠

  [Intel集显兼容]
  - GpuIntel 硬件类型纳入GPU匹配循环
  - D3D 3D 传感器匹配 Intel iGPU

  [性能优化]
  - WMI查询降频：CPU频率/温度每10次迭代（2s）执行一次
  - 传感器日志修剪：>3000字符时截断，每50次迭代执行
  - 网络接口过滤：跳过 tunnel/bluetooth/virtual/vethernet/Hyper-V/VPN

  [内存泄漏修复]
  - GDI句柄泄漏：Bitmap.GetHbitmap() 必须调用 DeleteObject(hBmp) 释放
  - 字体泄漏：缓存 _cachedValueFont/_cachedTitleFont 代替每次 new Font()
  - WMI查询节流：磁盘信息每30次debug循环缓存一次
  - 传感器日志上限12000字符，防止无限增长

V0.6.13 (2026-06-19)
────────────────
  [逐像素Alpha背景透明]
  - 使用 UpdateLayeredWindow + BLENDFUNCTION(AC_SRC_ALPHA)
  - CreateCompatibleBitmap 持久化DC，无每帧 GetHbitmap 泄漏
  - 背景透明（OpacityPercent控制），仪表/文字/图钉保持完全不透明
  - g.Clear(Color.Transparent) 每帧清除防止残影
  - 尺寸变化时重新创建GDI位图

V0.6.12 (2026-06-19)
────────────────
  [版本信息]
  - 左上角版本文字改为白色
  - 默认透明度90%

V0.6.11 (2026-06-19)
────────────────
  [启动优化]
  - 降低启动延迟至200ms
  - 背景透明度独立控制（不影响仪表/文字）

V0.6.10 (2026-06-19)
────────────────
  [右键菜单扩展]
  - 新增分辨率预设: Mini 600×600 / 小 800×800 / 中 1000×1000 / 大 1200×1200
  - 新增刷新率预设: 50/100/300/600/1000ms
  - 新增透明度预设: 100%/75%/50%/25%/0%
  - 仪表大字改为18pt Bold

V0.6.9 (2026-06-19)
────────────────
  [依赖性修复]
  - 补齐 BlackSharp.Core.dll（第三个缺失的LHM间接依赖）
  - CPU温度/频率开始正常采集

V0.6.8 (2026-06-19)
────────────────
  [DiskInfoToolkit.dll]
  - 补齐 DiskInfoToolkit.dll 及其传递依赖
  - 磁盘传感器完整可用

V0.6.7 (2026-06-19)
────────────────
  [磁盘映射诊断]
  - WMI Win32_DiskPartition.DiskIndex 精确映射
  - ASSOCIATORS OF 查询逻辑分区→物理磁盘
  - Debug日志输出磁盘映射详情

V0.6.4-V0.6.6 (2026-06-19)
────────────────
  [RAMSPDToolkit-NDD.dll]
  - 补齐 RAMSPDToolkit-NDD.dll（LHM第一个缺失依赖）
  - LHM Computer.Open() 首次成功

  [数据传感器]
  - CPU频率：WMI Win32_Processor.CurrentClockSpeed + PerformanceCounter % Processor Performance
  - CPU温度：WMI MSAcpi_ThermalZoneTemperature + LHM package/core fallback
  - 网络速度：NetworkInterface.GetIPv4Statistics() 增量计算
  - 仪表透明背景渲染
  - 盘符按物理磁盘排序
  - 显存容量GB格式显示

V0.6.3 (2026-06-19)
────────────────
  [诊断增强]
  - 传感器名全量转储：启动时记录所有LHM传感器（类型/名称/值）到Debug日志
  - GPU传感器匹配增强：兼容GpuIntel类型、放宽功率/温度匹配条件
  - VRAM占用回退计算（Used/Total）

  [网络]
  - 网络接口选择更宽泛匹配，跳过Hyper-V接口

  [UI]
  - DebugForm: Label→TextBox(ReadOnly/Multiline)，支持Ctrl+A全选 Ctrl+C复制
  - 磁盘映射：Win32_DiskPartition.DiskIndex精确映射物理磁盘→分区→盘符
  - 磁盘面板：移除"OK"状态行，保留百分比符号
  - 图钉按钮：三角+竖线图标，未按下灰色/按下淡红，按下时窗口TopMost

V0.6.2 (2026-06-19)
────────────────
  [传感器采集增强]
  - Computer初始化日志（列出所有硬件和传感器数量）
  - CPU Load: 匹配"total"传感器；CPU Temp: 匹配"package" fallback "core"
  - RTX 4090 GPU传感器命名兼容多种模式
  - Network: PerformanceCounter改为类字段（解决每次new返回0）
  - 新增 VRAM Used/Total 跟踪

  [Debug信息扩展]
  - 新增: CPU频率、GPU频率/功率、GPU HotSpot、MemJunction、CUDA、VRAM占用、显存使用量、磁盘详情

  [界面布局]
  - Row 2改为5列: GPU负载 | GPU频率 | CUDA(上)+显存(下) | GPU温度 | 显存温度
  - 第3列上下拆分: CUDA核心占用率(上), 显存占用(下)
  - 硬盘按WMI物理磁盘分组显示

  [中文化]
  - 全部标签中文化: CPU负载/CPU频率/内存占用/网络上行/网络下行/GPU负载/GPU频率/GPU温度/CUDA核心/显存占用/显存温度
  - SettingsForm: 外观/字体/刷新/关于 四个Tab全部中文化
  - 右键菜单: 设置/切换置顶/退出

  [磁盘]
  - WMI Win32_DiskDrive 获取物理磁盘型号
  - ASSOCIATORS 查询将逻辑分区映射到物理磁盘
  - 按物理磁盘分组显示其下盘符

  [稳定性]
  - 启动延迟800ms再开始渲染（等待LHM初始化）
  - WinForms Timer代替Task.Delay（兼容性更好）

V0.6.1 (2026-06-19)
────────────────
  [编译修复]
  - 修复 FileNotFoundException (LibreHardwareMonitorLib.dll)
  - .csproj中5个DLL引用Private改为true
  - 移除CleanupLib构建后删除目标
  - DLL文件直接复制到输出目录

  [数据修复]
  - 添加 _monitor.Start() 调用（之前遗漏导致数据不显示）
  - 添加500ms延迟确保LHM Computer初始化完成
  - Debug日志输出传感器状态（每10次迭代）

  [布局调整]
  - 第1行(5列): CPU Load(仪表) | CPU Freq(折线图) | Memory(折线图) | Net Up(仪表) | Net Down(仪表)
  - 第2行(4列): GPU Load(仪表) | GPU Freq(折线图) | GPU Temp(仪表) | VRAM Temp(仪表)
  - 第3行(通栏): 硬盘面板(支持多物理硬盘及分区)
  - 移除: CoreFreqChartRenderer, SystemInfoPanelRenderer
  - SparklineRenderer新增 CustomValueText(左上角)和 PowerText(右上角)
  - CPU频率折线图: 左上角当前频率+单位
  - 内存折线图: 左上角已用/总量GB，右上角百分比
  - GPU频率折线图: 左上角当前频率，右上角功率

V0.6.0 (2026-06-19)
────────────────
  [全面重构 - 背景]
  - 备份文件存在大量UTF-8编码损坏（中文字符三字节序列末尾字节截断）
  - 字符串字面量缺少闭合引号，注释吞噬后续代码，变量声明被注释吃掉
  - 逐字节修复不可持续，决定完全重写核心文件

  [HardwareMonitor.cs - 完全重写]
  - LHM Computer API传感器采集架构
  - PerformanceCounter内存/网络数据采集
  - WMI磁盘信息和总内存（替代Microsoft.VisualBasic引用）
  - 200ms采集周期（5Hz，提升GPU更新速度）
  - CUDA load含回退逻辑：无专用CUDA传感器时使用GPU core load

  [MainForm.cs - 完全重写 (560行)]
  - 自由缩放窗口（MinimumSize 600×400）
  - GDI+自定义渲染管道：GaugeRenderer/SparklineRenderer/DiskPanel/CoreFreqChart/SystemInfoPanel
  - 鼠标拖动、边框缩放（8方向）、右键上下文菜单
  - 设置对话框完全集成

  [渲染引擎 - 全部重写]
  - GaugeControl.cs (GaugeRenderer): 弧线仪表，渐变颜色，发光效果，阈值警告
  - SparklineRenderer.cs: 折线图，网格线，区域填充，数值覆盖层
  - DiskPanelRenderer.cs: 硬盘面板，WMI物理磁盘分组
  - SystemInfoPanelRenderer.cs: 系统信息面板
  - CoreFreqChartRenderer.cs: CPU核心频率图表
  - DebugForm.cs: 诊断窗口

  [SettingsForm.cs - 完全重写]
  - 英文UI（避免中文编码问题）
  - 颜色/字体/刷新率持久化到 settings.ini

  [代码清理]
  - 删除不再需要的文件: WinRing0.cs, WinRing0Loader.cs, SuperIOReader.cs, HWiNFOReader.cs, NativeMethods.cs
  - 删除: MainForm_Simple.cs, TestWmiTemp.cs
  - 编译结果: 0错误, 3警告

V0.5.x (2026-06-19)
────────────────
  V0.5h:
  - 修复折线图文字过大遮挡：ValueFont 12pt→9pt，数值区域高度20px→22px，topOffset 26→24
  - 窗口调整：最小窗口800×480→900×520，"小"预设800×480→900×520
  - 左上角显示"XMoni桌面硬件仪表盘 V20260619.51"+"作者：隐者艾伦"
  - 硬盘面板：背景色加深 Argb(38,55,55,115)→Argb(60,30,30,80)，盘符颜色近纯白
  - SettingsForm新增"关于"页面，作者"隐者艾伦"超链接→https://www.gongyesheji.org

  V0.5g:
  - GDI+自定义仪表盘渲染（GaugeRenderer）基础版本
  - 折线图渲染器（SparklineRenderer）初始实现
  - 硬盘面板（DiskPanelRenderer）
  - Debug诊断窗口
  - 可拖拽/缩放无边框窗口
  - 单实例保护（Named Mutex）

V0.1.x - V0.4.x (2026-06)
────────────────
  - 初始版本：LibreHardwareMonitor 作为传感器采集后端
  - 基础仪表盘界面（WinForms GDI+）
  - 设置持久化（settings.ini 明文配置）
  - PerformanceCounter 数据源集成
  - WMI 磁盘信息和总内存采集
  - CPU/GPU/内存/网络/硬盘五维监控
  - 窗口TopMost置顶、无边框拖拽
  - 右键菜单基础功能（设置/退出）