Repository navigation
Releases: eddie772tw/FH6-HorizonTuner
Release list
V1.7.1 - Weekly Updates & Bug Fixes
What's Fixed
- 修復了一個會在特定動力特徵的車輛上產出不可用齒比設定的AEGO錯誤,對應 #462
Fix a bug where AEGO will provide unusable gearing settings for cars that has specific engine pattern. - 修復了一個診斷包內可能意外包含本機路徑以及非必要裝置資訊的安全性問題
Fix a potential security issue where diagnostic information may contain unnecessary system rig info and local paths. - 修復了多個可能錯誤指向舊路徑的功能性錯誤
Fix multiple functionality error where may falsely point to old/wrong paths. - 引入了多項性能改進
Multiple performance enhancements.
Known Issue
- 及時遙測的懸吊行程圖表可能會錯誤的只渲染一半的畫面
Live telemetry's damping travel chart may not rendered properly
What's Changed
- ui: Add loading spinner to Reload HUD button by @eddie772tw in #457
- perf: Optimize readFour unrolling by @eddie772tw in #465
- refactor(tuning): unify Rust ownership and fix Road launch targets by @eddie772tw in #460
- perf: unroll .slice(0, 4).every() chains in frontend telemetry loop by @eddie772tw in #463
- ci(deps): bump gradle/actions/setup-gradle from 4.4.3 to 6.3.0 in the github-actions group by @dependabot[bot] in #456
- perf: cache getComputedStyle in compass render loop by @eddie772tw in #461
- ui(i18n): Translate hardcoded 'MCP' string in AppStatus and AppMenu by @eddie772tw in #464
- deps(tauri): align Tauri 2.12 runtime and JavaScript API by @dependabot[bot] in #454
- deps(tauri): synchronize process and updater plugin versions by @dependabot[bot] in #455
- test: 修正 Full/Lite Diagnostics 路徑並驗證重啟持久化 by @eddie772tw in #469
- fix(security): [MEDIUM] Fix overly verbose error messages leaking internal details by @eddie772tw in #468
- test: EV 實際 Rust 回放與重啟持久化驗收 by @eddie772tw in #470
- refactor: 隔離凍結模型、分離型別並更新 Vite 防護 by @eddie772tw in #471
- ui(i18n): Translate Companion App connection strings by @eddie772tw in #466
- perf: optimize G-force radar marker history search loop by @eddie772tw in #467
Full Changelog: v1.7...v1.7.1
V1.7 - Linux & EV-Tuning Support
What's New
- Linux Support
現在HorizonTuner可以部署在Linux環境中。注意:HUD功能在Linux版中沒有開放使用
HorizonTuner can now be deployed in Linux Env. HUD Overlay is currently disabled in Linux Version - New Backend Service
透過RUST重構了一個更高效的後端服務,在特定硬體環境下可以達到將近40%的效率改進
A better-performed backend service written in RUST has been introduced, up to 40% overall performance compared to V1.6 in certain hardware. - Android Companian APP Beta
Android端的聯動APP目前已經進入Beta階段,可以從原始碼編譯產出APK來安裝試用。正式推出時會包含於發行版資產中
Android Companian APP is currently in beta, APK can be compile from source code. Official Release will contain in future release assets. - New UI
重新制定了整體UI設計系統來改善UI/UX
Design System has been overhauled to optimize UI/UX - AEGO-EV Beta
現在AEGO演算法和變速箱設定支援套用電動車的動力邏輯來計算齒比設定
AEGO can now apply EV logic for optimal gearing setup
What's Changed
- refactor(health): consolidate code health cleanups across backend and tools by @eddie772tw in #389
- test: consolidate unit test suites across frontend and backend by @eddie772tw in #390
- perf: cache language json responses in memory by @eddie772tw in #387
- perf: offload sync file I/O in async analysis config endpoint by @eddie772tw in #385
- perf: consolidate list comprehensions in DragRecorder analysis by @eddie772tw in #386
- ui(i18n): extract and translate tire temperature labels in telemetry view by @eddie772tw in #394
- perf: offload blocking file I/O to thread pool in async API endpoints by @eddie772tw in #395
- ui: fix DiagnosticConsole form label association by @eddie772tw in #393
- docs(frontend): define IA refactor execution and acceptance plan by @eddie772tw in #339
- refactor(frontend): integrate IA state foundations by @eddie772tw in #405
- refactor(frontend): type workspace navigation and remove unused HUD categories by @eddie772tw in #340
- refactor(road): preserve validation drafts and settled changes by @eddie772tw in #341
- refactor(frontend): retain Sessions state and validate race completion by @eddie772tw in #342
- refactor(tuning): retain workflow drafts and measurement sessions by @eddie772tw in #343
- refactor(hud): preserve config writes across workspace changes by @eddie772tw in #344
- feat(frontend): 共用 IA Shell 與跨工作區狀態整合 by @eddie772tw in #345
- feat(frontend): integrate W2/W3 IA candidate by @eddie772tw in #406
- refactor(frontend): freeze W4 pre-machine candidate by @eddie772tw in #407
- docs(ia): align current W4 documentation and archive stale plans by @eddie772tw in #408
- docs(ia): record post-merge cleanup state by @eddie772tw in #410
- fix(tuning): auto-complete step 3 data collection via dyno morphology and align gearing chart to cutoff rpm (#396) by @eddie772tw in #397
- fix(tuning): complete low-limit engine scans through fuel cut by @eddie772tw in #412
- fix(exports): 原生另存新檔與 MoTeC 匯出錯誤處理 by @eddie772tw in #413
- feat(security): [HIGH] Fix SQL injection in TelemetrySQLite by @eddie772tw in #404
- 🛡️ Sentinel: Sanitize API error messages by @eddie772tw in #400
- perf: unroll 4-element array interpolations to reduce GC overhead by @eddie772tw in #409
- perf: optimize telemetry math loops in TelemetryDetailView by @eddie772tw in #402
- ui(i18n): parameterize road comparison strings by @eddie772tw in #403
- ui(i18n): extract hardcoded text in Navigation component by @eddie772tw in #399
- deps(python)(deps): bump the python-dependencies group with 2 updates by @dependabot[bot] in #414
- fix(deps): align Dependabot with pnpm workspace lockfile by @eddie772tw in #417
- perf: Optimize road analysis distribution calculations by @eddie772tw in #416
- perf(telemetry): optimize canvas render loops with O(1) circular buffers by @eddie772tw in #418
- feat(overlay): add alignment, base scaling, and offset controls for hud g-force radar by @eddie772tw in #419
- refactor(hud): remove live map telemetry card and unused assets by @eddie772tw in #420
- feat(hud): add tape compass HUD to telemetry cluster by @eddie772tw in #421
- refactor(backend): migrate Python runtime to an independent Rust sidecar by @eddie772tw in #424
- feat(telemetry): establish 3-tier units contract and fix boost calculation (#423) by @eddie772tw in #427
- feat(tuning): establish golden fixtures and define responsibilities contract (#423) by @eddie772tw in #428
- feat(tuning): implement pure rust tuning_core and contract tests (#423) by @eddie772tw in #429
- feat(tuning): establish rust and frontend twin SSOT and finalize contracts (#423) by @eddie772tw in #430
- feat(companion): add Android telemetry with USB and LAN QR pairing by @eddie772tw in #425
- ui: add explanation tooltips to disabled export buttons by @eddie772tw in #432
- perf: optimize telemetry parsing and plausibility checks by @eddie772tw in #431
- refactor(ui): 統一桌面版型、HUD 狀態與自適應設定抽屜 by @eddie772tw in #438
- perf: eliminate list allocations in high-frequency telemetry packing loop by @eddie772tw in #437
- ui(i18n): fix broken variable interpolation for gear instruction in Japanese locale by @eddie772tw in #436
- ui: add tooltips to disabled hud setup buttons by @eddie772tw in #439
- ui(i18n): fix companion indicator interpolation and add missing keys by @eddie772tw in #440
- feat: Linux Full release and OTA packaging by @eddie772tw in #426
- fix(hud): render tape compass at native display resolution by @eddie772tw in #444
- feat(backend): 補強 Rust 原生媒體與功能契約並移除 Python 後端 by @eddie772tw in #443
- feat(tuning): 新增獨立 EV 量測與齒比基礎模型 by @eddie772tw in #445
- fix(AEGO): reject launch-transient peaks and fix low-power Road gearing by @eddie772tw in #446
- ci(deps): bump the github-actions group with 4 updates by @dependabot[bot] in #448
- perf: unroll array methods in tire evidence processing by @eddie772tw in #449
- feat(security): [MEDIUM] Fix incomplete session deletion leaving orphaned telemetry data by @eddie772tw in #450
- perf: Optimize sessionDebriefMath processing loops by @eddie772tw in #451
- perf: optimize
resolveColorin telemetry chart primitives by @eddie772tw in #453 - deps(rust)(deps): bump the rust-dependencies group in /frontend/src-tauri with 2 updates by @dependabot[bot] in #447
Full Changelog: v1.6...v1.7
V1.6.1 - HUD QoL Update & Multiplatform Experience Beta
What's New
-
HUD 儀表覆蓋層增強與視覺優化:
-
Android Companion App 行動端協同架構 (Beta) (#425):
- 行動遙測與調校工作流:全新原生 Android Jetpack Compose 輕量 App(位於
companion/),提供移動端專屬賽車數據儀表與即時算牌面板。 - 雙模連線與配對支援:支援區網 QR Code 一鍵配對 (LAN Pairing) 與低延遲 USB/ADB 連線生命週期管理。
- 自適應窄螢幕佈局:重構離線導航與連線狀態卡片,在小尺寸或短螢幕手機上維持極佳操作手感。
- 發行合規加固:完成 Google Play 審查標準合規加固與 PadLink 雙向協議對齊。
[!NOTE]
Beta 階段發行說明:本次發行仍專注於 Windows 桌面端產物,GitHub Release 產物中不提供預編譯之 APK 安裝檔。若欲搶先體驗行動端功能,請自原始碼專案目錄手動編譯(於companion/目錄執行./gradlew :app:assembleRelease或:app:assembleDebug)。 - 行動遙測與調校工作流:全新原生 Android Jetpack Compose 輕量 App(位於
-
獨立 Rust Sidecar 後端全面遷移與雙端契約修正 (Beta) (#423, #424, #427, #428, #429, #430):
-
前端資訊架構 (IA) 全新改版與持久化工作區 (Beta) (#339, #345, #405, #406, #407, #408, #410):
What's Fixed & Performance
-
高頻 60Hz 渲染與遙測計算極致優化:
-
重大安全性加固與路徑防禦:
-
UI / UX、無障礙與多語系本地化 (i18n):
-
基礎設施、測試套件與依賴治理:
What's Changed
- refactor(health): consolidate code health cleanups across backend and tools by @eddie772tw in #389
- test: consolidate unit test suites across frontend and backend by @eddie772tw in #390
- perf: cache language json responses in memory by @eddie772tw in #387
- perf: offload sync file I/O in async analysis config endpoint by @eddie772tw in #385
- perf: consolidate list comprehensions in DragRecorder analysis by @eddie772tw in #386
- ui(i18n): extract and translate tire temperature labels in telemetry view by @eddie772tw in #394
- perf: offload blocking file I/O to thread pool in async API endpoints by @eddie772tw in #395
- ui: fix DiagnosticConsole form label association by @eddie772tw in #393
- docs(frontend): define IA refactor execution and acceptance plan by @eddie772tw in #339
- refactor(frontend): integrate IA state foundations by @eddie772tw in #405
- refactor(frontend): type workspace navigation and remove unused HUD categories by @eddie772tw in #340
- refactor(road): preserve validation drafts and settled changes by @eddie772tw in #341
- refactor(frontend): retain Sessions state and validate race completion by @eddie772tw in #342
- refactor(tuning): retain workflow drafts and measurement sessions by @eddie772tw in #343
- refactor(hud): preserve config writes across workspace changes by @eddie772tw in #344
- feat(frontend): 共用 IA Shell 與跨工作區狀態整合 by @eddie772tw in #345
- feat(frontend): integrate W2/W3 IA candidate by @eddie772tw in #406
- refactor(frontend): freeze W4 pre-machine candidate by @eddie772tw in #407
- docs(ia): align current W4 documentation and archive stale plans by @eddie772tw in #408
- docs(ia): record post-merge cleanup state by @eddie772tw in #410
- fix(tuning): auto-complete step 3 data collection via dyno morphology and align gearing chart to cutoff rpm (#396) by @eddie772tw in #397
- fix(tuning): complete low-limit engine scans through fuel cut by @eddie772tw in #412
- fix(exports): 原生另存新檔與 MoTeC 匯出錯誤處理 by @eddie772tw in #413
- feat(security): [HIGH] Fix SQL injection in TelemetrySQLite by @eddie772tw in #404
- Sentinel: Sanitize API error messages by @eddie772tw in #400
- perf: unroll 4-element array interpolations to reduce GC overhead by @eddie772tw in #409
- perf: optimize telemetry math loops in TelemetryDetailView by @eddie772tw in #402
- ui(i18n): parameterize road comparison strings by @eddie772tw in #403
- ui(i18n): extract hardcoded text in Navigation component by @eddie772tw in #399
- deps(python)(deps): bump the python-dependencies group with 2 updates by @dependabot[bot] in #414
- fix(deps): align Dependabot with pnpm workspace lockfile by @eddie772tw in #417
- perf: Optimize road analysis distribution calculations by @eddie772tw in #416
- perf(telemetry): optimize canvas render loops with O(1) circular buffers by @eddie772tw in #418
- feat(overlay): add alignment, base scaling, and offset controls for hud g-force radar by @eddie772tw in #419
- refactor(hud): remove live map telemetry card and unused assets by @eddie772tw in #420
- feat(hud): add tape compass HUD to telemetry cluster by @eddie772tw in #421
- refactor(backend): migrate Python runtime to an independent Rust sidecar by @eddie772tw in #424
- feat(telemetry): establish 3-tier units contract and fix boost calculation (#423) by @eddie772tw in #427
- feat(tuning): establish golden fixtures and define responsibilities contract (#423) by @eddie772tw in #428
- feat(tuning): implement pure rust tuning_core and contract tests (#423) by @eddie772tw in #429
- feat(tuning): establish rust and frontend twin SSOT and finalize contracts (#423) by @eddie772tw in #430
- feat(companion): add Android telemetry with USB and LAN QR pairing by @eddie772tw in #425
- ui: add explanation tooltips to disabled export buttons by @eddie772tw in #432
- perf: optimize telemetry parsing and plausibility checks by @eddie772tw in #431
Full Changelog: v1.6...v1.6.1
V1.6 - Tuning Workflow V2 & CLI Tool
What's New
-
調校工作流V2與實車測試圈特徵驅動
Overhauled Tuning Workflow V2 & Race Evidence- 改善了調校工作流的UI/UX體驗
- 引入了基於遙測數據進行實測的調整步驟,可以更好的適應個別車輛的特性
- 基於日前Forza Horizon 6對特定改裝性能以及meta的調整,同步微調了各參數的推薦值以及底層計算公式
-
HorizonTuner-cli (
fh6-agent) 命令列工具
HorizonTuner-cli AI Agent Tooling- 專為 AI Agent、自動化腳本與終端玩家打造的自包含命令列工具,零第三方 Python 依賴(僅標準庫)(#318)。
- 具備線上/離線雙模式:線上模式直接透傳 UDP 遙測與 HTTP API 狀態;離線模式提供與 GUI 100% 同源的純數學求解與調校檔案讀寫。
- 支援一鍵執行連接埠就緒探測(
status)、即時動態診斷(diagnose)、車輛規格檢索(spec)與底盤算牌(tune),並提供--json機器可讀輸出與 dual launcher 協同工作流。
-
Classic JDM 樣式儀表
Classic JDM Cluster- 啟發自經典改裝品牌的JDM風格2+3多環表樣式,支援自訂副環表的顯示功能以及兩種主錶盤的樣式。
What's Fixed
- 修正了一個可以形成SQL注入的安全性漏洞
- 修正了一個可以透過文字輸入框實施注入攻擊的攻擊路徑
- 在多個採用陣列計算的迴圈中引入環形緩衝區來改善性能
- 引入了一個預編譯解構器來改善遙測封包傳輸瓶頸的性能問題
What's Changed
- perf: eliminate Set iterators in high-frequency frame interpolation by @eddie772tw in #321
- ui: add missing aria-labels to range inputs by @eddie772tw in #317
- feat(security): [CRITICAL] Fix SQL injection vulnerability in telemetry_sqlite.py by @eddie772tw in #322
- feat(agent): introduce fh6-agent CLI tool, dual launcher workflows, and governance contracts by @eddie772tw in #318
- perf: consolidate redundant array filtering into single-pass useMemo loop by @eddie772tw in #316
- refactor(agents): streamline AGENTS.md rules and modularize agent skills by @eddie772tw in #325
- perf: Unroll SurfaceRumble array mapping to reduce GC pressure by @eddie772tw in #326
- perf: O(1) Circular Buffers for Telemetry Canvas Rendering by @eddie772tw in #327
- ui(i18n): Translate hardcoded ARIA labels for close buttons by @eddie772tw in #320
- perf: unroll telemetry array mapping to eliminate Array.from overhead by @eddie772tw in #329
- feat(hud): add 5 popular community HUD overlay styles with contract tests by @eddie772tw in #319
- fix(dev): dev startup overhaul & WSAPI fix by @eddie772tw in #331
- perf: Optimize UDP telemetry parsing using compiled structs by @eddie772tw in #328
- feat(tuning): streamline workflow to 4-stage 3-column layout and race evidence by @eddie772tw in #330
- feat(tuning): add Road FWD chassis and AEGO with optional AWD torque split by @eddie772tw in #332
- feat(tuning): separate mixed-surface Rally and Cross Country baselines by @eddie772tw in #334
- feat(tuning): derive Drift setup and full gearing from measured RPM bands by @eddie772tw in #333
- feat(tuning): use full Drag transmissions and explicit finish-speed evidence by @eddie772tw in #335
- feat(tuning): replace tire compound input with conditioned telemetry evidence by @eddie772tw in #336
- ci(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 in the github-actions group by @dependabot[bot] in #346
- deps(python)(deps): bump the python-dependencies group with 2 updates by @dependabot[bot] in #347
- ui(i18n): add missing export translation keys by @eddie772tw in #337
- perf: unroll array map in calculateSuspensionMetrics by @eddie772tw in #352
- perf: Unroll array methods in sessionDebriefMath to reduce GC overhead by @eddie772tw in #338
- feat(security): [CRITICAL] Fix arbitrary code execution in custom math parsing by @eddie772tw in #351
- deps(frontend)(deps): bump the frontend-dependencies group across 1 directory with 5 updates by @dependabot[bot] in #348
- ui(i18n): wrap hardcoded app brand names in translation helpers by @eddie772tw in #358
- perf: eliminate Math.max spread operators in telemetry arrays by @eddie772tw in #357
- perf: replace Array.shift() with O(1) circular buffers in telemetry cards by @eddie772tw in #355
- perf: Eliminate array allocations in tire evidence loop by @eddie772tw in #353
- feat(hud): integrate Classic JDM cluster, standardize 1080p scaling, and add arcade multi-gauge layout by @eddie772tw in #356
Full Changelog: v1.5.2...v1.6
V1.5.2 - Weekly Optimizations and Bug Fixes
What's New
- 分析視圖賽後簡報與 MoTeC 生態增強 (AnalysisView Post-Race Debrief & MoTeC Enhancement):全新賽後遙測分析簡報引擎,包含圈速穩定性分析、極限過彎動態評估與 MoTeC CSV/LD 匯出格式相容性強化 (#290)。
- S650 HMI 系統媒體播放組件與中央資訊可讀性優化 (System Media Music Widget & Readability):新增全域 Windows 系統媒體 (GSMTC) 音樂小工具與歌曲資訊即時顯示,並全面引入 15% 半透明深色遮罩設計權杖,大幅改善在 Forza 遊戲強光動態背景下的儀表資訊對比度與易讀性 (#296)。
- Step 5 遙測閉環調校增強 (Tuning Step 5 Closed-Loop & Event Notifications):Step 5 閉環回歸可編輯調校參數設定表格、測試圈動態事件累積通知匣與多重調校衝突仲裁引擎,提供直覺的數據導向參數微調 (#292)。
- MCP 伺服器標準化初始化指引 (Standard MCP Initialization Guidance):強化 Model Context Protocol (MCP) 整合引導與設定說明,支援第三方 AI 工具更無縫對接 HorizonTuner 遙測與調校資料庫 (#297)。
What's Fixed
- 60Hz 渲染迴圈 GC 壓力消除與佈局幾何快取:Drift HUD 改為在視窗尺寸變更時預先計算幾何錨點,消除了每秒 120 次以上的暫態物件配置與佈局數學運算 (#303);即時地圖 (Live Map) 消除展開運算子中介陣列配置 (#300, #295);儀表車速顯示全面引入 DOM pooling 機制 (#291)。
- 大數據集展開運算子堆疊溢位防護:重構 LapDeltaCanvas、rallyProfile 與 roadProfile 中多圈萬點遙測陣列之極值計算,由
Math.max(...arr)全面升級為線性迴圈,徹底根絕 V8 引數數量限制引發的RangeError: Maximum call stack size exceeded(#301)。 - 診斷支援包與日誌主控台多語系本地化:完整補齊本機診斷支援包 (Diagnostic Support Bundle)、日誌主控台 (Log Console) 與 Data Out 設定指引彈窗之 i18n 多語系翻譯 (#299, #302)。
- UI 無障礙體驗提升:在更新 Modal 引入無障礙非同步載入旋轉器 (Async Button Spinner) (#298),並為所有停用狀態按鈕提供友善可訪問的 Tooltips 操作提示 (#294)。
- Tauri 開發編譯加速與啟動協同重構:開發模式下排除大型 Sidecar 搬移並啟用 LLVM
rust-lld多執行緒連結器,增量建置時間由 20 秒驟降至 1 秒以下;重構start_all.bat與連接埠就緒門控 (Readiness Gate),消除啟動競態、舊端口幽靈就緒與動態埠回退問題。 - 執行檔檢查動態契約化:CI 與發行驗證腳本全面改為從 Runtime 來源動態衍生版本比對,消除硬編碼斷言。
What's Changed
- perf: Optimize speed display with DOM pooling by @eddie772tw in #291
- perf: optimize live map rendering to reduce GC pressure by @eddie772tw in #295
- feat(tuning): Step 5 遙測閉環回歸可編輯設定表格、測試圈事件累積通知匣與衝突仲裁引擎 by @eddie772tw in #292
- feat(AnalysisView): Post-Race Debrief & MoTeC Ecosystem Enhancement Overhaul by @eddie772tw in #290
- ui: Make tooltips on disabled buttons accessible by @eddie772tw in #294
- feat(mcp): provide standard initialization guidance by @eddie772tw in #297
- ui: Accessible async button spinners in update modal by @eddie772tw in #298
- ui(i18n): Add localization for Data Out guide modal by @eddie772tw in #299
- perf: eliminate spread array overhead in live map telemetry loop by @eddie772tw in #300
- feat(s650): add extensible system media music widget by @eddie772tw in #296
- perf: prevent call stack overflows in array max calculations by @eddie772tw in #301
- ui(i18n): Localize diagnostic support bundle and log console text by @eddie772tw in #302
- perf: Pre-compute Drift HUD anchors on resize by @eddie772tw in #303
- deps(python)(deps): update pydantic requirement from <3.0.0,>=2.13.4 to >=2.13.5,<3.0.0 in the python-dependencies group by @dependabot[bot] in #306
- ui: Add confirmation dialog to Reset HUD Settings by @eddie772tw in #309
- deps(frontend)(deps): bump the frontend-dependencies group in /frontend with 4 updates by @dependabot[bot] in #307
- ui(i18n): Extract hardcoded strings from DataStorageOverview by @eddie772tw in #305
- ui(s650): Enhanced HMI Center Info Readability by @eddie772tw in #304
- perf: optimize array initialization in telemetry loops to reduce GC pressure by @eddie772tw in #311
- ui: Add loading spinner to support bundle button by @eddie772tw in #312
- ui(i18n): extract hardcoded LiteNavigation strings to translation helpers by @eddie772tw in #314
- perf: unroll array iteration in dyno chart slip filter by @eddie772tw in #313
- perf: optimize FrameInterpolator iteration by @eddie772tw in #315
Full Changelog: v1.5.1...v1.5.2
V1.5.1 - Weekly Optimizations and Bug Fixes
What's New
- 高幀率插值渲染:引入
requestAnimationFrame與FrameInterpolator,將 60Hz UDP 訊號平滑內插至高刷顯示器,消除視覺微頓挫 (Judder),解耦封包接收(0.005ms 純快照)與畫面繪製排程,這個更新解決了 #256 和 #272 的問題。 - 隱私優先本機診斷支援包 (Privacy-Preserving Diagnostic Support Bundle):支援手動匯出記憶體 ZIP 診斷封包,自動遞迴遮蔽機敏路徑、RAW 遙測封包與憑證,提供安全透明的本機故障排除機制。
- Dyno 時間戳品質防護閘 (Dyno Timestamp Quality Gates):嚴格採用 Data Out
TimestampMS驗證馬力機採樣與換檔暫態,確保馬力與扭力曲線輸出真值。 - 持久化儲存概覽 (Durable Storage Overview):於設定面板新增本機資料儲存概覽,提升設定檔、預設檔與日誌儲存狀態的透明度。
- Data Out 健康指引與串流監控 (Data Out Health Guide):提供新手 Data Out 設定引導與活躍串流狀態可見性。
What's Fixed
- UDP CarClass 枚舉偏移修復:修復目前車輛PI等級和遊戲內實際情況不同的問題
- Modal 與浮層容器隔離防護 (CSS Containing Block Isolation):全螢幕 Modal 彈窗、導覽列浮層與 Data Out 引導介面全面透過
ModalPortal(React Portal) 掛載至document.body,徹底根治 Glassmorphism /backdrop-filter容器所引起的 CSS Containing Block 座標系侷限、對話框截斷與遮罩撕裂破版問題。 - 狀態變更 API CSRF 安全防護:強化 FastAPI 狀態變更端點之安全驗證,修復缺少 CSRF 防護之潛在風險。
- 遙測時間序列統計 Call Stack 溢位防護:修復長途駕駛與大量數據採樣時之 Call Stack 溢位風險,保證長途遙測統計之穩定性。
- Tuning Preset 執行期資料結構校驗:強化調校預設檔在 runtime 之資料結構安全性校驗,防止格式異常導致介面崩潰。
- Onboarding 連線串流顯示修復:保持活躍 Data Out 串流可見性,優化初次連線設定之引導體驗。
Known Issue
- Full Portable is now falsely reported as Trojan:Win32/Sabsik.FL.A!ml
What's Changed
- ui(i18n): synchronize missing translation keys in ja-jp.json by @eddie772tw in #269
- deps(python)(deps): update websockets requirement from <18.0,>=17.0.1 to >=17.1,<18.0 in the python-dependencies group by @dependabot[bot] in #281
- perf: optimize summarizeSeries to prevent call stack crash on large arrays by @eddie772tw in #283
- fix(security): [MEDIUM] Fix missing CSRF protection on state-changing API endpoints by @eddie772tw in #285
- perf: pool dom elements in hud overlays to reduce GC pressure by @eddie772tw in #286
- deps(frontend)(deps-dev): bump @types/react-dom from 19.2.4 to 19.2.5 in /frontend in the frontend-dependencies group by @dependabot[bot] in #282
- perf: Optimize suspension metrics calculation to reduce GC pressure by @eddie772tw in #273
- test(telemetry): add versioned replay fixtures by @eddie772tw in #276
- feat(telemetry): add quality diagnostics contract by @eddie772tw in #280
- feat(dyno): add timestamp quality gates by @eddie772tw in #278
- feat(settings): add durable storage overview by @eddie772tw in #279
- feat(diagnostics): add privacy-preserving support bundle by @eddie772tw in #277
- feat(onboarding): add Data Out health guide by @eddie772tw in #275
- ui: replace text loading states with accessible spinners by @eddie772tw in #284
- feat(overlay): implement high-refresh frame pacing and telemetry interpolation across HUD and TelemetryView by @eddie772tw in #287
- fix(ui): standardize modals with React Portal to resolve onboarding container clipping by @eddie772tw in #288
- fix(telemetry): update car class enum and support FH6 PI ranges with R-class by @eddie772tw in #289
Full Changelog: v1.5...v1.5.1
V1.5 - Discord Integration, Tuning Updates, Lite Version
What's New
- Discord Integration
HorizonTuner執行期間,使用者的DC遊玩狀態會得到擴充,支援顯示當前駕駛的車款以及比賽實況
HorizonTuner will update Discord Rich Presence to provide more playing info such as car name and race status
- Expandable Telemetry Cards
遙測監控頁面的監控卡片可以展開並顯示更完整詳細的監控數據
Telemetry cards can now expanded to show more detail charts
- QoL Updates
簡化並對齊遊戲內既有的單位設定方式,HUD和遙測監控頁面仍然可以選擇自訂單位
Simplify metric settings to match in-game settings. Telemetry and HUD can still customize their own metric settings.
- HorizonTuner Lite
從這個版本開始,一個簡化版的客戶端會被同步推出以及更新。簡化版僅提供遙測監控以及HUD功能,但速度以及資源占用更低
A Lite version will be maintained after this release. Lite provide only Telemetry and HUD Overlay with increase overall performance and eficiency
What's Fixed
- 修復了一個經常導致無法正常確認OTA更新的錯誤
Fix a bug where OTA failed due to a common reason - 修復了一個會導致應用程式重啟後無法正確監聽Forza Horizon遙測封包的錯誤
Fix a bug where telemetry socket will crash if restart the app in certain way - AEGO演算法現在會提供更正常的齒比設定以及二次補正邏輯
AEGO will now provide more normal gearing settings then before - 基於安全性更新而引入的數項依賴包版本升級
Deps updates for security requirements - 修正了一個因為錯誤允許手動輸入監聽位置導致的邏輯判斷問題
Fix a bug where manual IP config may cause binding and listening work abnormal - 多項性能改進
Performance updates for multiple components
What's Changed
- deps(python)(deps): update uvicorn requirement from <1.0.0,>=0.52.3 to >=0.52.4,<1.0.0 in the python-dependencies group by @dependabot[bot] in #242
- deps(rust)(deps): bump windows from 0.61.3 to 0.62.2 in /frontend/src-tauri in the rust-dependencies group by @dependabot[bot] in #241
- deps(frontend)(deps-dev): bump the frontend-dependencies group in /frontend with 2 updates by @dependabot[bot] in #243
- pref: Optimize G-Radar HUD rendering with element pooling and property caching by @eddie772tw in #246
- ui: Add tooltip support for disabled dyno import button by @eddie772tw in #244
- ui(i18n): add missing japanese translations for update ui by @eddie772tw in #249
- pref: Optimize corner card array allocations by @eddie772tw in #251
- ui: improve clickable hit area for MCP settings checkboxes by @eddie772tw in #250
- ui: fix missing form label associations in AdvancedGeometry component by @eddie772tw in #252
- ui(i18n): Translate hardcoded status badges by @eddie772tw in #254
- ui(i18n): Add missing translations for DevInputPanel by @eddie772tw in #259
- pref: Cache DOM lookups in advanced HUD render loop by @eddie772tw in #260
- feat(tuning): rebalance AEGO and unify unit workflows by @eddie772tw in #261
- feat(discord): add telemetry Rich Presence by @eddie772tw in #247
- feat(telemetry): expandable live cards by @eddie772tw in #245
- ui(i18n): Translate DevInputPanel options (Race Goal and Surface) by @eddie772tw in #263
- perf: Cache custom math evaluations by @eddie772tw in #262
- fix(updater): restore OTA checks and anchor notices by @eddie772tw in #264
- refactor(tests): streamline test suite tiering and enforce anti-over-testing governance by @eddie772tw in #265
- feat(frontend): add Lite alternative frontend and dual portable builds by @eddie772tw in #248
- feat(tuning): overhaul AEGO secondary correction and baseline gearing by @eddie772tw in #266
- fix(telemetry): isolate forwarding socket and auto-cleanup stale port listeners by @eddie772tw in #267
- fix(telemetry): auto-bind all host interfaces and loopback without manual IP config by @eddie772tw in #268
Full Changelog: v1.4.4...v1.5
V1.4.4 - OTA, UI and performance updates
What's Fixed
- Rust Tauri Host 格式化流程補強,開發啟動與 Release CI 會自動修正並驗證
cargo fmt - OTA updater runtime version 提升至
11.45.15,確保既有 v1.4.3(11.45.14)客戶端可正常發現 v1.4.4 - UI 關閉按鈕與停用操作提示補上多語系支援,改善操作可理解性
What's Changed
- feat(telemetry): implement asynchronous raw UDP packet forwarding and settings integration by @eddie772tw in #224
- fix(overlay): ensure transparent background via CSS for WebView2 window by @eddie772tw in #226
- pref: Eliminate array allocation in 60Hz tire temp histogram loop by @eddie772tw in #227
- pref: optimize telemetry CSV export string generation by @eddie772tw in #235
- ui(i18n): Translate hardcoded 'Close' aria-labels by @eddie772tw in #236
- pref: optimize TireRadar histogram GC allocation by @eddie772tw in #237
- ui: add tooltips to disabled action buttons by @eddie772tw in #238
- ui(i18n): Add missing tuning wizard translations by @eddie772tw in #239
- pref: optimize GC and redundant math in Live Map rendering loop by @eddie772tw in #240
- ci(deps): align frontend tooling and GitHub Actions with the pnpm 11 lockfile contract
Full Changelog: v1.4.3...v1.4.4
V1.4.3 - Bug fixes for V1.4.2
What's Fixed
- OTA 失效修復
- 發行版封裝問題修復
- 語言切換功能失效修復
What's Changed
- ui: Improve clickable area for UpdateSettingsCard checkbox by @eddie772tw in #218
- feat(security): Fix incomplete deletion of telemetry sessions (Data Leak) by @eddie772tw in #220
- ui(i18n): extract hardcoded badges to translation files by @eddie772tw in #222
- ui(i18n): fix language discovery and JSON syntax errors across locale files by @eddie772tw in #221
Full Changelog: v1.4.2...v1.4.3
V1.4.2 - OTA & Security Updates
What's New
- OTA Support
這個版本開始,HorizonTuner將會支援基於Tauri的OTA自動更新功能
Known Issue
- 語言切換功能失效
Language option stuck at English and can not be changed. - OTA 指向失效位置
OTA Update will always fail due to wrong deployment of endpoint.
What's Changed
- feat(security): 全方位安全性加固與第三方套件防幻覺查驗協議 by @eddie772tw in #207
- ui(i18n): Replace "TODO" with "Coming Soon" in UI by @eddie772tw in #205
- pref: optimize live map rendering loop by removing .forEach allocations by @eddie772tw in #206
- pref: Optimize summarizeCapture with single-pass loop by @eddie772tw in #208
- ui(i18n): extract hardcoded strings in RecommendationComparisonPanel by @eddie772tw in #209
- pref: cache simple HUD DOM lookups to reduce GC overhead by @eddie772tw in #210
- feat(security): GitHub SECURITY.md support by @eddie772tw in #211
- feat(security): Security Alerts Skill by @eddie772tw in #212
- fix(security): path expression fix by @eddie772tw in #213
- feat(release): Release Workflow Automation & OTA Support by @eddie772tw in #216
- ui: expand clickable hit areas for checkbox settings rows by @eddie772tw in #214
- pref: optimize telemetry cards DOM queries by @eddie772tw in #215
Full Changelog: v1.4.1...v1.4.2