Skip to content

曦覽 XinSpect 3.11「Swiss」測試版

Pre-release
Pre-release

Choose a tag to compare

@Xinglanclever Xinglanclever released this 31 Oct 15:52
· 150 commits to main since this release

曦覽 XinSpect 3.11「Swiss」測試版

這是實驗版,不是正式版本。 代號改為 Swiss,介面多出第四個主題
「瑞士現代主義平面化設計」。合用就留下,不合用整支丟棄——它跑在
experiment/swiss-helvetica 分支,main 沒有被動到,正式版仍然是 3.10「Ultima XII」。

這一版做了什麼

第四個主題:瑞士現代主義平面化設計

不是把淺色主題改掉,而是獨立的一個主題(設定頁排在「極限版(東方之星)」之後):

  • 白紙黑墨:紙面 #FFFFFF、主墨 #000000、髮絲線 #D0D0D0;弱墨 #6B6B6B 仍高於 WCAG AA 4.5:1。
  • 直角:卡片、按鈕、輸入框、膠囊卡的圓角全部歸零。其餘三個主題維持原本的圓角——圓角與字級
    改成可換的佈景資源,切換主題時整組換掉,不必重啟。
  • 字級整體大一級:正文 13→14.5、標籤 12.5→13.5、值 13.5→15、區塊標題 15→17、標題 20→24。
  • Helvetica:拉丁字走 Helvetica(沒有就退 Arial),中文仍由 JhengHei 承接。
  • 瑞士紅(#D6001C)只屬於這個主題:進瑞士版時自動切換,離開時收回曦藍;
    其餘主題不會莫名其妙變成紅色。
  • 平塗:瑞士版的標題列與按鈕不用漸層。
  • 區塊標題左側一道 3 px 強調色短規(跟隨強調色,瑞士版就是紅的)。

動態:只有一個手勢

這一版的動態刻意收斂成「短規畫出來、內容從下方幾像素淡入」兩件事,沒有回彈、沒有縮放、沒有旋轉:

  • 進場:卡片交錯淡入的時長 360→200 ms、位移 16→8 px;切頁 240→150 ms、10→5 px。
    原本的節奏像「在等動畫演完」,現在只交代東西從哪裡來。
  • 區塊標題的 3 px 短規以 140 ms 由左端長出來;側欄選取短規以 120 ms 縱向長滿。
    介面上會動的線只有這一筆——它同時是瑞士版唯一的裝飾。
  • 兩者都問 Motion.Enabled:設定頁關掉「動態效果」時直接跳到終點,不再留半透明的殘影
    (先前只有自繪控制項守這個閘門,進場動畫漏了)。

匯出報告重整(動的是內容,不只是版面)

  • 順序改成讀者動線:封面 → 整機摘要 → 系統 → 主機板 → 各件零件 → 量測與證據 → 附錄。
    「系統摘要」(逐域計數那張一千多筆的普查表)原本排在第二節,把第一屏塞滿計數;現在改名
    「附錄:事實普查」退到最後。
  • 新增五節:主機板(晶片組+SMBIOS 擴充插槽+M.2/U.2+冷卻裝置)、音訊裝置、風扇(轉速與
    可控風扇兩表)、電池與電源(筆電才有這一節)、NPU(真的偵測到才有)。記憶體多一張插槽配置
    表,會列出空插槽——只列已裝模組看不出「還有兩個洞」。
  • 修掉三個會誤導人的缺陷:
    1. AI 節把回覆記在錯誤的模型名下(選共用額度時仍寫本機 Ollama/自填 API 的型號);現在與
      實際送出的請求同一個解析結果,並一併標示供應商。
    2. 頁尾一直宣稱「讀不到以『—』表示」,但多數欄位讀不到時輸出的是空白;三種格式現在走同一個出口。
    3. 沒讀到時報告會印「0 MHz」——0 不是時脈,是沒讀到;同理修掉「CUDA ****」
      (那是偵測失敗的哨兵值,不是版本號)。
  • 刪掉重複:健康評分不再同時出現在首屏磁貼與整機摘要;風扇讀值不再在「感測器」與「風扇」各列一次;
    主機板欄位從「系統」節搬到「主機板」節。
  • 順帶修好事實層的一個顯示缺陷:單位(筆/條/個)從前無條件接在值後面,句子型的值就變成
    「…188/188 個公開方法都有引用 個」。現在單位只跟純數字,證據實驗室頁面一起變乾淨。
  • 報告不再夾帶內部對帳註記(「本筆原本帶了數字…已如實收斂為空」),完整原文仍在證據實驗室。

自動判定層的四個誤判(依 04:00 那份報告回報)

  • 系統碟判定不再假設「磁碟 0」:改用 WMI 的邏輯磁碟 → 分割區 → 實體磁碟關聯查;
    查不到時退成「只有唯一一顆放得進 C: 的容量比對」,並在建議與報告裡標明是推測;
    兩者都不可用就誠實寫「未能判定」。回歸案例:C: 在磁碟 3 的 1.2 TB NVMe 上,
    舊邏輯讓它被建議「換一顆 NVMe 當系統碟」——而報告自己讀到 C: 1,117 GB、磁碟 0 只有 931 GB。
    儲存節另加一列系統碟位置,讓讀者不必自己猜。
  • 磁碟壽命與健康不再互相借名字:摘要的「67%」是 180 GB SATA SSD 的剩餘壽命,
    「待對映磁區 1」是 ST1000 的 S.M.A.R.T.;從前合成一列、明細只挑其中一顆寫。現在兩件都寫,
    而且各自帶著自己的磁碟名。
  • M.2/U.2 清單只列 NVMe:SATA 2.5 吋、機械硬碟與 USB 不可能是 M.2/U.2,
    從前它們全被列進「已安裝的 M.2 裝置」。
  • 不再宣稱「本機無獨立 GPU(僅虛擬顯示轉接器)」:那句話是開發機某一刻的狀態被抄進事實文字。
    廠商深層介面沒回值時,現在寫的是「可能是沒有這張卡,也可能是 NVML/ADLX/Xe 不可用,
    兩者都不能讀成這張卡沒有這項功能」——GPU 的溫度、功耗、使用率若在基本讀值裡有值,以那些為準。

報告的字面衛生(依 04:15 那份匯出報告逐字挑出來的)

這一節的每一句都是那份報告上真的印出來過的字,不是假想的情境:

  • 介面欄不再把驅動堆疊的名字當成排線:Windows 對 NVMe 回報 SCSI、對 SATA 回報 IDE,
    那是驅動棧的名字,不是實體介面。現在寫成「SCSI(NVMe)」「IDE(SATA)」;判不出類型就照
    Windows 的話寫,USB 那種不加推測。實測的後果是:系統碟明明在 NVMe 上,報告卻讓它看起來插在 IDE 上。
  • 廠商名不再印兩次:型號本身已含廠商時就照型號,「NVIDIA NVIDIA TITAN Xp」→「NVIDIA TITAN Xp」;
    型號不含廠商的仍保留「AMD Radeon RX 7900 XTX」這類寫法。
  • 封面「系統」膠囊不再照抄 OEM 的佔位字:這台機器的韌體填的是 System manufacturer/
    System Product Name。現在改印主機板(ASUSTeK COMPUTER INC. ROG RAMPAGE VI EXTREME OMEGA)
    並標明「(韌體未填機型)」;韌體真的填了機型(例如 LENOVO 20Y3001DTW)就照韌體印,不加註記。
  • 「固件」→「韌體」:與全報告用詞一致,並有一條測試盯住這個詞不再回到報告程式。
  • 「處理器與記憶體」膠囊的空副行:原本空白處印「—」,現在填記憶體容量/數據率/通道數。

修掉的缺陷

  • AI 評價的「模型:」一直顯示上一台:工具列直接綁設定裡的 AiModel,而共用額度用的是
    Cloudflare Workers AI 的模型(不在那個欄位裡)。現在改走與實際請求同一個解析函式,
    選共用額度就會顯示 Cloudflare 的型號。
  • 「檢查更新」永遠是查不到:匿名呼叫 api.github.com 常常直接 403(同一出口 IP 共用額度)。
    新增備援:讀 /releases/latest 的 302 轉址取 tag(不經 API、沒有那個額度限制),
    兩條路走同一套版本判定。
  • 圓圈問號的「?」在淺色底上消失:問號顏色在建構時被快取住,換主題後仍是深色主題的淺灰。
    改成跟著佈景資源走,切主題即時更新。
  • 內建瀏覽器的起始頁永遠是深色:起始頁是內嵌 HTML,吃不到 WPF 資源。現在依目前主題著色,
    瑞士版另換 Helvetica 並把圓角歸零。

網路頁:三個實測誤判(這一輪改用 UI Automation 讀畫面文字時抓到)

  • 網卡落差整組讀不到:MSFT_NetAdapter 的查詢選了三個不存在的欄位(LinkSpeed、MediaType、
    MediaConnectionState)。WQL 只要有一個欄位不存在就整條「查詢無效」——不是少一欄,是整組歸零,
    畫面上就是一片空白,而 diag.log 每 40 秒刷一條。正確的是 Speed(bit/s)與
    MediaConnectState(UInt32:0 未知/1 已連線/2 未連線),舊程式還拿它跟字串 Connected 比對。
    修正後這台機器的三張網路卡都讀得到。
  • 無線網卡被標成「乙太網路 802.3」:Win32_NetworkAdapter.AdapterType 對 Wi-Fi 也回
    Ethernet 802.3(本機的 Wireless-AC 9260 實測如此)。改用 System.Net.NetworkInformation
    依實體位址對回真正的介面類型,對不到才退回 WMI 字串。
  • 「額定速度」印的其實是目前速率:Marvell 10G 那一格顯示 100 Mbps——那是目前協商到的速度,
    不是額定值(MSFT_NetAdapter.MaxSpeed 在本機是空的,額定值讀不到)。標籤改為「目前速度」,
    UI 與匯出報告表頭同步,讓講的跟量到的是同一件事。
  • 連線狀態讀不到時不再寫成「未連線」:MediaConnectState=0(未知)改印「連線狀態未回報」。
    把不知道講成未連線,會叫人去查線材——查錯方向比承認不知道更糟。
  • 守衛:新增一條測試釘死「網卡基礎查詢的欄位只能是 MSFT_NetAdapter 真的有的」。
    同一個靜默歸零的坑,這個檔案早就為另一個 WMI 類別寫過註解,還是復發了——註解擋不住,測試才擋得住。

核心熱力圖:18 核只亮 9 格

  • 現象:i9-7980XE(18 核/36 執行緒)上,熱力圖 18 格只有前 9 格有溫度,後 9 格空白。
  • 根因:CoreRegex 的 #(\d+) 只命中名稱裡第一個編號,「CPU Core #5 Thread #2」會被歸回核心 5,
    所以逐核清單本來就是「一核一列」。但熱力圖的對位還假設它是「逐邏輯執行緒一列」而乘 2 折疊:
    前 9 格各吃掉兩顆不同核心的最高溫(溫度不是它標的那顆),後 9 格起點超出筆數整片空白。
  • 修法:改用標籤對位(兩邊同源,都是「核心 #N」),一核一列不折疊;標籤對不上才退回折疊,
    比率由實際筆數推導而不是寫死 2。混合架構(P-core 有 SMT、E-core 沒有)的舊 TODO 一併消失。
  • 驗證:新增一條測試(18 格 × 18 列,每格必須拿到自己那顆核心的值),並做過突變檢查——
    改回舊行為會紅。另外確認 Windows 這一側就是 18 顆核心(GetLogicalProcessorInformationEx
    的 RelationAll 與 RelationProcessorCore 都是 18),所以問題從來不是格數,是「填了幾格」。

如實申報

  • 這是主題層的實驗,不是整站重繪:版面結構與資訊密度沒動。
  • 全套測試在本版跑過(條數見 README 徽章);ThemeSwitchTests 新增一條釘住
    「瑞士版=直角+大字+瑞士紅,離開後圓角與曦藍都回來」。
  • 已發布的 v3.11 資產是取代同一版的下載檔(Pre-release),不是新版本號。
  • 這一輪的驗收方式改了:這台機器的截圖是深色主題+小字,用像素判讀不可靠,所以改用 UI Automation
    直接把 WPF 視覺樹的文字節點抓下來對帳。已核對網路頁的三張網卡(類型/目前速度/MAC)與感測器頁的
    +3.3V=3.344 V、Vcore=1.304 V、風扇 1546 RPM/GPU 1099 RPM;其餘頁面仍未逐頁目視,有問題請直接指出。

授權

與正式版相同:AGPL-3.0-or-later 或商業授權二選一,雙授權適用於所有版本。

下載

檔案 用途
XinSpect.exe 主程式(便攜單一執行檔)— 測試版
BlueSquadronBridge.exe 守護進程
XinSpectDeploy.exe 一鍵安裝器
SHA256SUMS.txt 逐檔雜湊