Skip to content

Releases: Xinglanclever/XinSpect

曦覽 XinSpect 3.16

Choose a tag to compare

@Xinglanclever Xinglanclever released this 03 Nov 18:25

曦覽 XinSpect 3.16

本版把「強控台 Power Console」做成鍵盤優先的指令控制台,並把 Redfish 離線目錄升格為帶外事實域(rf.*)。

強控台(主介面「匯出報告」旁的按鈕進入):
・01 即時遙測:與主程式同一條感測管線的現值;讀不到顯示「—」,不補 0、不編數字。
・02 Ring0(唯讀):全匯流排 PCI 掃描(bus 0–255)+16×16 設定空間 hex dump+MSR RDMSR 讀取;只讀不寫,守門測試釘住「不引用任何 Write 通路」。
・04 Bridge IPC 終端機:走主程式既有引擎送真 JSON、顯示真回應;Bridge 未連線時如實提示。
・05 部署授權:當場計算本機 XinSpect.exe/BlueSquadronBridge.exe 的 SHA-256。
・指令行操作:help/pci scan/msr <索引>/ipc <指令>/hash/theme/clear/exit;↑↓ 切命令歷史與節區、Ctrl+1–5 跳節區、Esc 關窗。

rf.* 帶外事實域:--redfish 輸出現在帶 facts 欄;新增 rf.boundary/rf.summary/rf.power.consumed/rf.bundle.warnings 四把靜態鍵與 rf.item. 動態家族。信任等級一律 Reported(值是 BMC 的自我宣告),覆蓋申報以明文理由豁免,已檢視基線 444→448。

其他:關於頁順序調整(意見反饋 → 留言建議 → 第三方授權 → 鍵盤快捷鍵 → 免責聲明);WmiGuard 滿載時「快速失敗」不再被誤報成「WMI 無回應」。

驗證:測試基線 7,882;完整套件 7,882 passed, 0 failed(本機 NVMe 卡死的 1 條硬體限時測試照舊排除,未被跳過或改寫)。

檔案:XinSpect.exe(單一執行檔,免安裝)

曦覽 XinSpect 3.15

Choose a tag to compare

@Xinglanclever Xinglanclever released this 03 Nov 12:26

曦覽 XinSpect 3.15

本版重點是修掉「換了主題、關掉重開又變回預設」:外觀偏好原本只認得淺色與極限版兩個名字,瑞士版(含深色瑞士)存得進去卻讀不回來,現在改成直接解析主題列舉並確認值在定義內;設定頁一打開也不再悄悄把深色瑞士洗成淺色瑞士。語言不受影響,因為語言本來就存在另一個檔案。

主要改動:

・主題記憶修正:五種主題(深色/淺色/極限版/瑞士/深色瑞士)重開後都會套用;偏好檔損壞只回預設,不讓啟動失敗。新增 2 條回歸測試。
・新增 --redfish <目錄>:讀取已匯出到本機的 Redfish 目錄樹,輸出 BMC 管理器、機箱、系統、電源供應器、風扇與溫度的唯讀摘要;沒有任何 HTTP 用戶端,外部 @odata.id 與路徑穿越一律拒絕並記警告。退出碼 0=讀到資源、2=沒有可讀資源、1=錯誤。
・迷你 HUD 重新喚醒:小窗被 Alt+F4 或工作列關掉後,主介面的「迷你 HUD」按鈕(匯出報告旁)可以重建並喚醒;原本已關閉的 WPF Window 不能再 Show(),按鈕看起來像壞掉。
・關於頁重新排序:第三方授權 → 意見反饋 → 留言建議 → 鍵盤快捷鍵 → 免責聲明。
・「五族共和」五行陣改為使用者指定的型號分組;行數上限放寬到 4 行。
・WmiGuard 探針改用專用執行緒:系統滿載時「快速失敗」不再被誤報成「WMI 無回應」。

驗證:完整套件 7,873 passed, 0 failed(本機 NVMe 核心卡住的 1 條硬體限時測試照舊排除,未被跳過或改寫);測試基線 7,874。

檔案:XinSpect.exe(單一執行檔,免安裝)

曦覽 XinSpect 3.14

Choose a tag to compare

@Xinglanclever Xinglanclever released this 03 Nov 04:06

曦覽 XinSpect 3.14

這一版把「硬體事實」接到企業稽核與資料中心營運真正會用的出口:合規、可覆核指紋、推測隔離、CI/SIEM 匯出,以及本機族群基線。

本版新增

  • --compliance:把既有事實對到 NIST SP 800-147/155/193 與 MITRE ATT&CK;缺資料一律 Unverifiable,不因「沒看到問題」而變成通過。
  • --merkle:以穩定的白名單事實建 SHA-256 Merkle 樹,排除敏感/非 Present/易變鍵;輸出只含鍵與葉雜湊,不含事實值。
  • --speculation:七項 infer.* 推測,同時帶鍵名前綴、值前綴「【推測】」與 Speculative 信任等級;明列信心、依據鍵與限制,且不進合規判定與 Merkle。
  • --compliance --format sarif|junit|cef|otel:SARIF 2.1.0、JUnit XML、逐行 CEF 與 OTLP/JSON logs;Unverifiable 在四種格式都不會顯示為綠色。
  • --compliance-diff:比較兩份既有合規 JSON,Satisfied/Mitigated 變成其他(含 Unverifiable)標為退步;只讀檔、不重新收集。
  • --fleet:只讀本機快照目錄,彙總同型號族群的 fleet.* 基線;不上傳、不跨機傳輸,沒有可比的第二台時回退出碼 2。
  • AER 增加 Root Port 第一錯誤來源(Error Source Identification),並在事實文字明寫「唯讀;本工具未清除 RW1CS 旗標」。
  • 事實鍵目錄新增 7 把 infer.*,公開 schema 的信任等級補上 Speculative;推測層與合規/Merkle 的隔離由測試釘住。
  • 新增 docs/ENTERPRISE-SPEC-AUDIT-2026-11-03.md 與 docs/spec/compliance-export.v1.md,逐條記錄八個企業模組的可取得性、刻意不做的事與匯出格式契約。

界線

  • 本版沒有新增硬體寫入、沒有常駐、沒有主動連網;CI/SIEM/族群基線都只寫 stdout 或指定檔案。
  • TPM Quote、更新簽章驗證與韌體復原仍維持 Unverifiable:本工具沒有真的做那三件事,不把它們寫成通過。
  • 推測層不是量測,也不是合規證據;它只回答「以現有證據只能猜到哪裡」。

檔案:XinSpect.exe(單一執行檔,免安裝)。

曦覽 XinSpect 3.13「Ultima XIII」正式版

Choose a tag to compare

@Xinglanclever Xinglanclever released this 01 Nov 09:53

曦覽 XinSpect 3.13「Ultima XIII」

這一版做了什麼

一、新增「監控規劃」頁:十個設計試算

工具群組多一頁 監控規劃,把監控案場最常被算錯的十件事放在同一張紙上:

計算器 回答的問題
NVR 儲存容量 這個碼率、頻道數與保留天數要幾 TB;RAID 之後可錄幾天、還差多少
接入頻寬 所有攝影機加協定開銷後,上行與 NVR 接入會不會塞
PoE 功率預算 總瓦數、保留量、餘裕,以及每機瓦數是否超過 PD 上限
交換機背板/包轉發 全雙工背板與 64 bytes 最小訊框的 pps 需求
光纖衰減 光纜、接頭、熔接三段損失之後還剩多少裕度
攝影機端壓降 線長與線徑吃掉幾伏,攝影機端還剩幾伏、PSE 要不要多供瓦數
佈線用線量 含餘裕的總長與整箱數(無條件進位)
RAID 可用容量 各等級的資料碟數、可用 TB、效率與容錯顆數
無線覆蓋 頻寬與覆蓋兩個瓶頸取較大者,需要幾台 AP
UPS 與機櫃 電池 Wh 換算續航分鐘;裝置+保留是否塞得進機櫃

共同原則:

  • 輸入是宣告、輸出是推導。 這一頁不讀本機硬體,每一個數字都是公式算出來的;
    畫面上寫明「不是量測值」,假設(十進位 GB/TB、接頭 0.5 dB、熔接 0.15 dB、64 bytes 訊框)
    逐條列在頁尾。
  • 輸入不足就說輸入不足。 任何一個計算器對空值都不會丟例外、也不會給一個看起來合理的假數字。
  • 壓降解二次式。 不是拿 P ÷ V 當電流:攝影機端電壓與電流互相牽制,線太長時二次式無解,
    畫面會直接說「這條線供不起」,而不是給一個負的或零的電壓。
  • 可以按「儲存這份規劃」把輸入存成本機 JSON(不上傳);下次啟動時同一組結果以 plan.cctv.* 進事實集,匯出報告會多一節「監控規劃(設計試算)」。「複製摘要」則把十段結果貼成純文字。

二、藍色中隊:預設關閉,並補上 Win11 基線

預設關閉。 守護進程(BlueSquadronBridge.exe)會在背景常駐輪詢、載入核心驅動,
不該替新使用者預設打開。新安裝的使用者第一次進來會看到「守護進程已關閉(唯讀態勢評估照常)」,
要即時防護的人自己到安全頁把開關打開,選擇會記進設定檔;唯讀的態勢評估不受影響。

新增檢查(都走登錄檔、唯讀、讀不到記「未評估」):

  • SMB 簽章與 SMB 加密
  • NTLM 限制(LmCompatibilityLevel = 5)
  • 攻擊面縮減規則(ASR)在封鎖模式的條數
  • Smart App Control(強制/評估/關閉三態)
  • PowerShell 指令碼區塊記錄
  • Defender PUA 防護與排除路徑數量
  • 自動播放/自動執行

修掉三處「不知道被記成通過」:

  1. BitLockerDmaProtection ?? BitLockerEnabled 等於在 DMA 保護讀不到時替「含 DMA 保護」背書;
    現在分成「兩者都有」「只有 BitLocker(DMA 未回報,不宣稱)」「兩者都讀不到(未評估)」三種。
  2. Thunderbolt 安全等級讀不到時,原本寫「未偵測到控制器(無此攻擊面)」並算通過;
    但讀不到也可能是驅動沒回報——現在記「未評估」,不進分母。
  3. IsServiceRunning 在 WMI 失敗時回 false,於是「WinRM 已停止」「Print Spooler 已停止」
    自動變成兩項通過。現在失敗回 null,由上層記「未評估」。

三、M.2/U.2 分析不再拖住主視窗

M2AnalysisService 在 MainViewModel 的欄位初始化式就被建立,原本在建構子裡同步讀 SMBIOS
與兩個 WMI 命名空間——任何一個卡住,主視窗就不會出現。3.13 改成:

  • 收集(Collect)丟到背景、套用(Apply)回 UI 執行緒;
  • 磁碟清單走 WmiGuard 的 3 秒上界;
  • 讀不到時分開講「WMI 無回應」與「讀取失敗」,不再留白冒充「沒有磁碟」。

驗證

  • 全套 dotnet test:測試數總計見 Tests/TestSuiteBaseline.cs;三份 README 的徽章與它同源。
  • 新增 SurveillancePlanningTests:每個計算器的期望值都在註解裡留算式,係數一改就紅燈。
  • 新增 SurveillancePlanningViewTests:頁面在 STA 執行緒上載入,十段結果都要有值。
  • 新增 M2AnalysisTests:注入假磁碟、逾時與快速失敗三條路徑。
  • 藍隊:SecurityScoreTests 多了「新基線每一項都有自己的發現」與「Smart App Control 評估模式只算部分」。

已知限制

  • 監控規劃是設計試算,不是量測:驗收前仍要實測(PoE 壓降、光纖插入損失、實際錄影碼率)。
  • 光纖係數與接頭/熔接損失取最壞情況的工程慣例;實際值依光纜規格與施工品質。
  • Smart App Control 與 ASR 多為 Windows 11 企業/教育版才有;讀不到就記未評估,不當成缺口。
  • 監控規劃的數字只在「按了儲存」之後才進事實集與報告(plan.cctv.*);沒存檔就不產鍵,不拿一堆 0 冒充有規劃。

曦覽 XinSpect 3.12「Ultima XII」正式版

Choose a tag to compare

@Xinglanclever Xinglanclever released this 01 Nov 09:00

曦覽 XinSpect 3.12「Ultima XII」正式版

這一版以 3.11 的 Swiss 分支為底座,不是從 3.10 另起一條線。
介面就是 3.11 實驗版驗收過的那一套瑞士現代主義版面:白紙黑墨、直角、Helvetica、
瑞士紅短規。3.11 的測試版標記與 Pre-release 標籤在這一版收掉,改為正式發佈。

這一版做了什麼

一、瑞士現代主義成為正式介面

  • 白紙(#FFFFFF)、黑墨(#000000)、髮絲線(#D0D0D0);次要墨色仍守 WCAG AA 4.5:1。
  • 卡片、按鈕、輸入框、膠囊卡的圓角歸零;標題列與按鈕平塗,不用漸層。
  • 拉丁字母走 Helvetica(沒有就退 Arial);中日韓字由 Microsoft JhengHei UI 承接。
  • 瑞士紅(#D6001C)只屬於這個主題,區塊標題左側的 3 px 短規是介面上唯一的裝飾。
  • 原有的深色、淺色、極限版主題都還在,設定頁可切換;切換主題不必重啟。

二、核心熱力圖:缺列就留空,不借別顆核心的數字

3.11 已把逐核溫度改成「標籤對位」(SensorService.CpuCores 本來就是每實體核心一列,
先前誤以為是逐執行緒而折疊,18 核機器只畫得出 9 格)。3.12 補上缺列防護:

  • 某一顆核心沒有對應的感測列時,那一格保留空白。
  • 不再退回「按比率折疊」把相鄰核心的數值填進來——寧可留白,也不給一個別顆核心的溫度。

三、網卡判讀:三態講清楚,不把「讀不到」寫成「相符」

  • PCIe 速度/寬度四個欄位全為 0 時,顯示「PCIe 能力資料未回報」,不再斷言「不是 PCIe 端點」。
  • 驅動沒有回報支援速率清單時,顯示「速率能力未回報」,不再判為「鏈路到位」。
  • MediaConnectState 為 0(未知)時不寫「未連線」——那會叫使用者去查一條沒問題的線。
  • 逐網卡事實鍵的末段改為 ASCII(介面名稱先轉 ASCII、再接 8 碼雜湊),
    繁中系統的「乙太網路」也能得到穩定合法的鍵;顯示名稱仍是原來的中文。

四、歷史型號查詢(可選、需自行匯入)

  • 新增 CPU/GPU 2006–2026 型號索引頁。程式不內建任何 workbook 衍生資料,
    目錄只來自使用者明確匯入的 JSON,且不含 NC(CC BY-NC-SA)主機板資料。
  • 匯入的資料只留在記憶體,不上傳、不寫入系統;欄位缺漏就留白,不從相鄰型號推測。
  • 這一頁回答「這顆型號當年是什麼規格」,不是「你機器上這顆跑得怎樣」——後者看 CPU/主機板/顯示卡頁。

五、關於頁的隱藏名言

版本資訊旁有三個很淡的點(· · ·),滑鼠移上去會出現提示,點一下展開:

The sages think themselves to be all-knowing, but we alone are wise to the virtue in those acts of folly.

六、發佈資產:四件,逐檔雜湊

檔案 用途
XinSpect.exe 主程式(便攜單一執行檔)
BlueSquadronBridge.exe 藍隊橋接程式
XinSpectDeploy.exe 一鍵安裝器
SHA256SUMS.txt 逐檔 SHA-256

安裝器的 GitHub 來源沿用 releases/latest/download/(測試釘住「不寫死版本」,
否則舊安裝器會停在舊版)。下載回來的每個檔案先驗 PE 標頭與大小:exe 至少 100 KB、
.sys 至少 1 KB,不符就刪掉,不把錯誤頁或確認頁存成程式。

驗證

  • 全套 dotnet test:測試數總計見 Tests/TestSuiteBaseline.cs;三份 README 的徽章與它同源。
  • 文件守門:規模表、附錄 C/J、服務檔數、動態家族數、測試規模表都與這棵樹當場對帳。
  • 版本守門:csproj、關於頁、三份 README、ChangelogCatalog、SECURITY.md、Issue 範本全部 3.12。

已知限制

  • 核心熱力圖的混合架構(P-core+E-core)對位仍以標籤為準;標籤對不上時留空,不做推測。
  • 歷史型號頁不含主機板/電源/散熱器資料,也不代為下載任何型號庫。
  • Deep Access 的 MMIO 仍走 XsRegProbe;WinRing0 只承擔 MSR/PCI/IO(實測 ReadMemory 全數失敗)。

曦覽 XinSpect 3.11「Swiss」測試版

Choose a tag to compare

@Xinglanclever Xinglanclever released this 31 Oct 15:52

曦覽 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 逐檔雜湊

曦覽 XinSpect v3.10 Ultima XII

Choose a tag to compare

@Xinglanclever Xinglanclever released this 31 Oct 15:06

曦覽 XinSpect v3.10 Ultima XII 正式版

本版同步總覽膠囊摘要、CPU 微架構辨識、深層核心存取狀態、網卡與核心熱力圖修正,以及安全評分覆蓋率修正。

  • WinRing0 負責 MSR/PCI 設定空間;MMIO 後端會先實際探測,XsRegProbe 限開發機使用。
  • 網卡頁修正 WMI 欄位、Wi-Fi 類型與「目前速度」標籤。
  • 核心熱力圖改用核心標籤對位,避免 18 核只顯示 9 格。
  • 關於頁保留隱藏名言彩蛋。
  • 安全評分特殊項目補齊權重,避免覆蓋率與扣分分母不一致。
  • 測試基線 7,720;受影響測試 109/109 通過。

檔案:XinSpect.exe(單一執行檔,免安裝)

曦覽 XinSpect 3.09

Choose a tag to compare

@Xinglanclever Xinglanclever released this 31 Oct 11:54

曦覽 XinSpect 3.09「Ultima XII」

應用程式圖示換成品牌插畫:藍色 X + 兩張視窗卡。exe、工作列、視窗、捷徑一起換。

這一版做了什麼

圖示原本是 make_icon.ps1 用 System.Drawing 現畫的「曉光儀表」向量標記。現在改用
Assets/brand-source.jpg 這張品牌插畫,產生流程也跟著換:

  • 裁切以插畫外框(藍色 X 的 bbox)為基準正方形化,留 6% 邊距、四角 20% 圓角;
    下界停在 wordmark 之前,所以 16×16 時不會把「XinSpect」字樣糊成一團。
  • 六個尺寸(256/128/64/48/32/16)都從 1024 母圖重取樣,不是拿 256 再放大;
    .ico 以 PNG payload 打包。
  • make_icon.ps1 保留成入口,內部呼叫 Tools/make-icon.py。換圖是一行的事:
    覆蓋 Assets/brand-source.jpg → 跑 make_icon.ps1 → 提交 app.ico。

MainWindow.xaml 的視窗圖示與 csproj 的 ApplicationIcon 本來就共用同一個 app.ico,
所以工作列、視窗左上角、檔案總管與捷徑是同一張,不會出現「執行檔是新圖、視窗是舊圖」。

授權

情況 適用
一般使用、研究、修改、散布、商業使用 AGPL-3.0-or-later
閉源整合、隨硬體出貨、組織禁用 copyleft 商業授權(可涵蓋任何版本)
隨程式分發的第三方元件 THIRD-PARTY-NOTICES.md

雙授權適用於所有版本:兩條路二選一、功能相同,不疊加。

如實申報

  • 這一版只換圖示與它的產生工具;沒有任何判定邏輯或讀取通路被改動,事實鍵 1,166 不動。
  • 驗證方式是把發佈出來的 exe 挖開比對:256×256 那張 PNG 的位元組原樣命中,確認圖示
    真的編進執行檔,而不只是換了專案裡的檔案。
  • 92 條發佈守門全綠(版號八處、沿革逐字對帳、文件數字、百科 sha256、安裝器、XAML、
    帳本證據)。全套這次沒有重跑——這一版只動了圖檔與產生腳本,沒有任何 C# 邏輯變更。

下載

檔案 用途
XinSpect.exe 主程式(便攜單一執行檔,含藍色中隊守護進程)
BlueSquadronBridge.exe 守護進程,要脫離主程式單獨跑防護時使用
XinSpectDeploy.exe 一鍵安裝器(GitHub/Google Drive/中國直連線路;下載時顯示進度條、速度與剩餘時間)
SHA256SUMS.txt 逐檔雜湊,發佈後由 Tools/verify-release.ps1 對帳

曦覽 XinSpect 3.08

Choose a tag to compare

@Xinglanclever Xinglanclever released this 31 Oct 08:03

曦覽 XinSpect 3.08「Ultima XII」

雙授權不再只寫在文件裡:關於頁、英文對譯與三份 README 都直接寫明採雙授權,且適用於所有版本。

這一版修了什麼

3.07 把免責聲明裡那句「嚴禁用於任何商業用途」拿掉了,但沒有把另一句話說完:這份軟體到底是怎麼授權的。關於頁只寫「另有商業授權」,讀起來像 AGPL 是預設、商業授權是補充;實際關係是兩條平行路,二選一。

這一版把那段話改寫成:

本軟體採雙授權(dual licensing),適用於所有版本(不限最新版):兩條路二選一、功能相同:
① AGPL-3.0-or-later——免費,散布修改版或當成網路服務提供時須公開原始碼;
② 商業授權——付費,供閉源整合與隨硬體出貨,不觸發原始碼公開義務。

「適用於所有版本(不限最新版)」是這輪的重點,寫在三處:

  • COMMERCIAL-LICENSE.md 新增適用範圍一段:商業授權可以涵蓋你手上的任何一個版本,不是只能買最新版。對採購來說這是兩件事——只要最新版,和可以鎖定你已經在用的版本,價格與風險都不同。
  • 關於頁與英文對譯(Services/EnglishStrings.cs)同步。字串表用中文原文當鍵,中文改字而鍵沒跟著改,英文模式會無聲退回中文;這條由守門釘住。
  • 三份 README 的授權段落。

四條新斷言進 Tests/CommercialLicenseTests.cs:關於頁要有「所有版本」、文件要有「適用範圍:所有版本」、要有「雙授權」與「dual licensing」,並保留 3.07 那條「不得再宣稱禁止商業使用」。

順手補齊的一處證據缺口

在乾淨 worktree 上跑整套時,7,700 條裡唯一紅的那一條是帳本自己的守門 收口證據必須可回訪:

有 2 條證據路徑在倉庫裡回訪不到(路徑與檔名都找不到):
U10-UI-0014:lang-livecheck.ps1
U10-UI-0015:lang-find.ps1

docs/ULTIMATE-10000/DEDUP-VERDICTS-2026-10-25.md 這兩列把收口證據指向兩支腳本,而 lang-*.ps1 正在 .gitignore 裡(它們是 10 月 8 日的一次性探針)。本機跑得過,是因為檔案還在硬碟上;任何乾淨 clone 都打不開。

處理方式不是把探針硬塞進版控(那是繞過 /.gitignore 的本意),而是把證據換成倉庫裡真的有的東西:U10-UI-0014 改指 LanguageService.Changed 的四個訂閱者——它們各自在切換語言後重新產生動態文字,這正是那一列要證明的事;U10-UI-0015 只留三支測試檔。

順帶修掉守門自己的一處假紅:路徑正則的每一段原本不允許小數點,WPF 的 類名.xaml.cs 只會被抓到尾段 xaml.cs,於是任何引用 code-behind 的證據都會被判成回訪不到。改成允許內嵌小數點之後,這條守門才真的能驗 code-behind,而不是驗到一個不存在的檔名。

授權

情況 適用
一般使用、研究、修改、散布、商業使用 AGPL-3.0-or-later
閉源整合、隨硬體出貨、組織禁用 copyleft 商業授權(可涵蓋任何版本)
隨程式分發的第三方元件 THIRD-PARTY-NOTICES.md

兩條路不疊加:同一份散布行為選一條走。商標(「曦覽」、「XinSpect」與其標誌)不在任何授權範圍內。

如實申報

  • 這一版沒有新增任何硬體讀取通路,事實鍵 1,166 不動。
  • 改的是授權文案(關於頁、英文對譯、三份 README、COMMERCIAL-LICENSE.md)、版號八處,加上上面那條帳本證據與守門正則;沒有動任何判定邏輯。
  • 全套有跑完:7,700 條,失敗 1、通過 7,699(9 m 30 s)。那 1 條就是上面的證據回訪測試;修正後重跑該類 8 條全綠,連同 82 條發佈守門共 92 條一次跑過。除此之外全套沒有其他失敗。
  • 另外 82 條發佈守門(版號、沿革逐字對帳、文件數字、百科 sha256、授權文案、安裝器、XAML 資源)全綠。

下載

檔案 用途
XinSpect.exe 主程式(便攜單一執行檔,含藍色中隊守護進程)
BlueSquadronBridge.exe 守護進程,要脫離主程式單獨跑防護時使用
XinSpectDeploy.exe 一鍵安裝器(GitHub/Google Drive/中國網盤三選一;下載時顯示進度條、速度與剩餘時間)
SHA256SUMS.txt 逐檔雜湊,發佈後由 Tools/verify-release.ps1 對帳

曦覽 XinSpect 3.07

Choose a tag to compare

@Xinglanclever Xinglanclever released this 31 Oct 06:14

曦覽 XinSpect 3.07「Ultima XII」

免責聲明改成與授權一致:拿掉「嚴禁用於任何商業用途」。關於頁最上面多了一行品牌標語。

這一版修了什麼

程式與三份文件原本都寫著同一句話:

本軟體為免費開源軟體,可自由下載、使用與散布,並嚴禁用於任何商業用途。

那是 AGPL 之前的說法,留到今天變成一句自相矛盾的話:專案以 AGPL-3.0-or-later 釋出,而 AGPL 明文允許商業使用;COMMERCIAL-LICENSE.md 賣的正是「不想公開原始碼的閉源整合」。兩句並存,等於告訴使用者「可以買授權,但你不准用」。

同一句話在四處一起改寫(關於頁的免責聲明、說明目錄、英文對譯、README 的說明目錄):

  • 可自由下載、使用、研究、修改與散布,包含商業使用;
  • 若散布修改版,或把它當成網路服務提供給他人使用,須以相同授權公開原始碼;
  • 無法採用 AGPL 的閉源整合,另有商業授權。

兩條新守門:程式內不得再出現「嚴禁……商業使用」的字樣;英文譯文必須以新的中文原文為鍵——字串表用中文原文查表,中文改字而鍵沒跟著改,英文模式會悄悄退回中文,不會紅、也不會有人發現。

關於頁的品牌標語

Designed in East Asia
Manufactured for the World

放在「曦覽 XinSpect」標題正下方、版號之前,16 px 半粗、強調色——比內文(13–13.5)大一圈,但刻意遠小於標題的 30。它是署名,不是主標。

原文就是英文,不進翻譯表:這一句在中文模式與英文模式都該長這樣。守門釘住三件事——存在、在版號之前、字級落在 14–17(「大一圈」不等於「放大成標題」)。

授權

情況 適用
一般使用、研究、修改、散布、商業使用 AGPL-3.0-or-later
閉源整合、隨硬體出貨、組織禁用 copyleft 商業授權
隨程式分發的第三方元件 THIRD-PARTY-NOTICES.md

商標(「曦覽」、「XinSpect」與其標誌)不在任何授權範圍內。

如實申報

  • 這一版沒有新增任何硬體讀取通路,事實鍵 1,166 不動。
  • 改的是文案與一份英文對譯;沒有任何判定邏輯被改動。
  • 這一版沒有跑完整套。基線是 7,699 條;跑完的是 85 條守門(版號、沿革逐字對帳、文件數字、百科 sha256、安裝器、XAML 資源)與乾淨 checkout 的建置。全套在這一台機器上卡住了——累積的 testhost 無法結束(Kill() 也移不掉),同時還有另一個工作階段在同一棵樹跑測試。上一次完整跑完是 3.06 的 7,697 條。這一版的改動只有文案與一條建置設定,沒有動任何判定邏輯。

下載

檔案 用途
XinSpect.exe 主程式(便攜單一執行檔,含藍色中隊守護進程)
BlueSquadronBridge.exe 守護進程,要脫離主程式單獨跑防護時使用
XinSpectDeploy.exe 一鍵安裝器(GitHub/Google Drive/中國網盤三選一;下載時顯示進度條、速度與剩餘時間)
SHA256SUMS.txt 逐檔雜湊,發佈後由 Tools/verify-release.ps1 對帳