PIME 2.0.0-beta5 更新內容
本版本包含多項穩定性強化、後端容錯機制改善,以及新酷音、Rime、大易、倉頡等輸入法的錯誤修正。
核心架構、PIMELauncher 與 TSF 客戶端
- 修正 Watchdog 誤殺正常後端行程的問題 (#1002):當客戶端視窗斷線或送出不需回應的
close通知時,自動清除殘留的等待中請求,避免 15 秒後觸發 watchdog 誤判後端無回應而強制重啟。 - 確保視窗關閉通知 (
close) 正確轉發至後端 (#990, #997):修正PIMELauncher誤丟棄正常斷線通知的問題,確保後端能正常釋放已關閉視窗的資源,並在後端異常終止時立即排空輸入佇列。 - 強化 IPC 訊息格式驗證 (#998):在轉發訊息至後端前驗證 Client ID 長度與分隔符號,過濾格式異常的輸入。
PIMELauncher改為靜態連結 MSVC CRT (#975, #983, #990):移除對外部VCRUNTIME140.dll的動態相依,解決部分環境缺少 VC++ 可轉散發套件導致無法啟動的問題。- 管理員權限啟動警告 (#973, #1016):當偵測到
PIMELauncher以提升權限(Elevated)執行時,於日誌中記錄警告與icacls權限修復指令說明。 - 修正
PIMEClient初始化狀態切換順序 (#994):在派發init回應前先將連線狀態設為Ready,確保初始化期間的回呼能正常運作。 - 修正候選字視窗版面配置套用順序 (#1019):在
PIMETextService::updateStatus()中先套用customizeUI(例如每列候選字數)再更新候選字清單,避免首次顯示使用舊版面。 - 修正 DLL 註冊時的圖示索引傳遞與成員初始化 (#992, #993):確保 Windows 8+ 專用圖示索引(
iconIndex)於註冊時正確傳入,並明確初始化PIMETextService成員變數。
新酷音輸入法 (Chewing)
- 修正使用者詞庫編輯器無法刪除詞彙與狀態回報錯誤的問題 (#393, #417, #456, #1022):移除在傳統字碼頁主控台下會引發
UnicodeEncodeError的除錯輸出,使刪除詞彙能正常執行,並正確回報新增/刪除結果與重新整理列表。 - 強化詞庫載入容錯機制 (#988):若磁碟上的使用者詞庫無法開啟,自動退回使用記憶體內(in-memory)資料庫,避免後端崩潰。
CIN 表格輸入法引擎與各輸入法 (倉頡、大易、行列、輕鬆、注音、拼音、速成、嘸蝦米)
- 碼表改為非同步背景載入 (#1004):引入
CinTableBase與ThreadPoolExecutor非阻塞載入主碼表、反查碼表與同音字碼表,移除原本耗用 CPU 的 busy-wait 輪詢迴圈。 - 修正設定檔參數容錯與空值崩潰問題 (#864, #933):自動驗證並修正
candPerPage、candPerRow與fontSize等設定值,避免設定檔空白或異常時引發崩潰。 - 修正萬用字元查詢崩潰問題 (#627, #934):完整初始化低頻字集並最佳化萬用字元查詢,解決
KeyError異常。 - 修正大易輸入法符號輸入卡住組字狀態的問題 (#856, #935):補齊
dsymbols.json中的=與-定義,並在無候選字按下空白鍵、Enter 或 Esc 時正確重置組字狀態。 - 補齊大易三碼遺漏的官方字碼 (#520, #1018):補回
tf8(續)等 10 組遺漏字碼。 - 修正倉頡系列與速成五代碼表中「㤘」的部首編碼 (#390, #1020, #1023):將誤置於手部(
qnsm/qm)的「㤘」修正為心部(pnsm/pm)。 - 修正設定工具 (
ConfigApp) 無法自動結束的問題 (#1027, #1028):確保設定視窗逾時關閉時先停止事件迴圈再關閉,避免背景處理程序殘留。
Rime 輸入法
- 修正共用
librime引擎生命週期問題 (#1003):移除單一視窗關閉鍵盤或重新部署時過早呼叫的rime.finalize(),改於後端行程結束時統一釋放,避免其他視窗的 Rime 輸入法失效。
Python / Node.js / Go 後端與其他輸入法
- 修正設定檔與日誌目錄的 NTFS 權限問題 (#988):移除
os.makedirs中的mode=0o700,避免在 Windows 上產生異常的目錄權限(DACL)。 - 修正按鍵狀態位元遮罩檢查 (#1000):修正 Python 後端對 Windows API
GetAsyncKeyState與GetKeyState回傳值的位元檢查邏輯。 - 提升 Node.js 後端 (
nime) 穩定性 (#936, #937, #945, #946, #951, #952, #971):加入全域例外捕捉,並妥善處理未初始化客戶端請求、損毀的ime.json或格式錯誤的訊息,防止單一錯誤導致整個 Node.js 後端終止。 - 修正 Emoji 輸入法候選字游標與選字邊界檢查 (#999):防止空清單時產生
NaN游標位移,並修正候選字滿 10 個時的數字鍵選字問題。 - 修正 Go 後端「喵喵輸入法」語系設定 (#1024):將語系註冊由
zh-CN修正為繁體中文zh-TW。
安裝程式與文件
- 修正 Node.js 輸入法設定工具缺少 Python 環境的問題 (#977, #989):勾選安裝小麥注音、狐狸輸入法或行列 30 時,自動一併安裝設定工具所需的內建 Python 執行環境。
- 安裝程式最低系統需求調整為 Windows 10 (#966, #976, #1005):於安裝初期檢查 Windows 10 以上版本,並移除過時的 VC++ 可轉散發套件下載步驟。
- 更新開發與建置文件 (#832, #981, #1008):更新
README.md與HACKING.txt中的建置環境與 Python 版本說明。
完整變更對比: v2.0.0-beta4...v2.0.0-beta5