From be243fd111149c1948d44329f025c7c467817d05 Mon Sep 17 00:00:00 2001 From: Bill Date: Sun, 18 Oct 2026 10:17:36 +0800 Subject: [PATCH] =?UTF-8?q?chore(release):=20v1.0.30=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E4=B8=8E=20CHANGELOG=20=E5=9B=9B=E8=AF=AD=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.en.md | 35 +++++++++++++++++++++++++++++++++++ CHANGELOG.ja.md | 35 +++++++++++++++++++++++++++++++++++ CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ CHANGELOG.zh-TW.md | 35 +++++++++++++++++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 6 files changed, 143 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.en.md b/CHANGELOG.en.md index d2a5dd8..2418e98 100644 --- a/CHANGELOG.en.md +++ b/CHANGELOG.en.md @@ -1,5 +1,40 @@ # OpenTerminal Changelog +## v1.0.30 - 2026-10-18 + +This release improves CJK text rendering, keyword highlighting, and custom link rules; adds ReDoS protection for user-defined regular expressions; and introduces a more precise renderer performance timeline for diagnosing long freezes. + +### Improved: CJK and font rendering +- The terminal now uses the Unicode 11 width table, improving alignment for Chinese text, full-width punctuation, and table lines +- A separate CJK fallback font slot was added to terminal font settings +- The WebGL renderer now rescales overlapping glyphs, reducing glyph overlap +- The font list marks monospace fonts, and the preview includes mixed Chinese/Latin samples so alignment issues are visible before applying a font + +### New: highlighting and clickable link rules +- Highlight rules have a new per-line matching switch, so anchors such as `^ERROR$` apply to every line +- Custom clickable link rules are here: regex capture groups can expand into `http/https` link templates and open with Ctrl+Click +- Highlight rules can raise an in-app alert on match, useful for errors or secret leaks in long-running task output +- Overlong output now degrades line by line: only lines over 4KB are skipped instead of disabling highlighting for the whole chunk + +### Fixed: highlight and font setting stability +- Fixed permission-bit highlighting for multi-line and colored `ls -l` output +- Fixed highlighted spans erasing the application's own colors; colored TUI output keeps its original styling +- Fixed crashes and silently ignored settings caused by invalid line height, cursor style, scrollback, or renderer mode; damaged legacy settings are repaired at startup +- Fixed font names containing spaces, parentheses, and similar characters silently failing in some cases + +### Security: ReDoS protection for custom regexes +- Custom highlight and link rules are dynamically validated in a main-process worker before they can run synchronously in the terminal +- Each rule has a 500ms hard timeout; timed-out rules are quarantined instead of freezing the UI +- Editor previews, imports, existing settings, and hand-edited settings files all pass through the same gate +- Built-in presets are exempt; installations without custom rules do not start a worker and add no hot-path overhead +- Existing custom rules are revalidated automatically after upgrading and may briefly show a pending state + +### Diagnostics: renderer freeze timeline +- Renderer freeze logs now distinguish real long tasks from timer, sleep, and scheduler delays +- New logs cover fit/reflow, xterm write consumption, write queues, and WebGL lifecycle events +- Diagnostic logs are rate-limited and contain metadata only, never terminal content +- When reporting a freeze, attaching the day's diagnostic log makes it much easier to identify reflow, output backlog, GPU, or external-program causes + ## v1.0.29 - 2026-10-16 This release fixes light themes: on white themes the text inside the terminal (especially the colored output of programs) was almost unreadable, and settings dialogs and other surfaces rendered with dark-theme colors on a light background. diff --git a/CHANGELOG.ja.md b/CHANGELOG.ja.md index f51b5e0..621b692 100644 --- a/CHANGELOG.ja.md +++ b/CHANGELOG.ja.md @@ -1,5 +1,40 @@ # OpenTerminal 更新履歴 +## v1.0.30 - 2026-10-18 + +本リリースでは中国語表示、キーワードハイライト、カスタムリンク規則を改善し、ユーザー定義正規表現への ReDoS 対策を追加しました。また、長時間のフリーズを調査するため、より正確なレンダラー性能タイムラインを導入しました。 + +### 改善:中国語とフォント表示 +- ターミナルが Unicode 11 の幅テーブルを使用するようになり、中国語、全角記号、罫線の位置合わせが正確になりました +- ターミナルフォント設定に CJK フォールバック専用スロットを追加しました +- WebGL レンダラーが重なるグリフのスケーリングを有効化し、文字の重なりを軽減します +- フォント一覧に等幅表示を追加し、プレビューに中国語 / 英語混在サンプルを用意しました。フォント適用前にずれを確認できます + +### 追加:ハイライトとクリック可能リンク規則 +- ハイライト規則に「行単位でマッチ」スイッチを追加し、`^ERROR$` のようなアンカーが各行で機能します +- カスタムクリック可能リンク規則を追加しました。正規表現のキャプチャグループを `http/https` リンクテンプレートに展開し、Ctrl+クリックで開けます +- ハイライト規則で「一致時に通知」を有効化できます。長時間タスクの出力内のエラーや秘密情報の漏えい確認に便利です +- 長すぎる出力は行単位で低下させ、4KB を超える行だけをスキップするようになりました。チャンク全体のハイライトが無効になることはありません + +### 修正:ハイライトとフォント設定の安定性 +- 複数行や色付きの `ls -l` 出力でパーミッションビットがハイライトされない問題を修正しました +- ハイライト範囲の終了後にアプリ自身の色が消える問題を修正し、色付き TUI 出力が元のスタイルを維持します +- 無効な行高、カーソルスタイル、scrollback、レンダラーモードによるペインクラッシュや設定無効化を修正しました。壊れた旧設定は起動時に修復されます +- 空白や括弧などを含むフォント名が一部の場面で警告なしに失敗する問題を修正しました + +### セキュリティ:カスタム正規表現の ReDoS 対策 +- カスタムハイライト規則とリンク規則は、ターミナルで同期実行される前にメインプロセスの Worker で動的検証されます +- 規則ごとに 500ms のハードタイムアウトがあり、超過した規則は隔離され UI を凍結させません +- エディタープレビュー、インポート、既存設定、手動編集した設定ファイルも同じゲートを通ります +- 内蔵プリセットは検証を省略します。カスタム規則がない環境では Worker を起動せず、出力ホットパスのオーバーヘッドもありません +- アップグレード後、既存のカスタム規則は自動で再検証され、短時間「検証待ち」と表示されることがあります + +### 診断:レンダラーフリーズのタイムライン +- レンダラーのフリーズログが、実際のロングタスクとタイマー / スリープなどのスケジューリング遅延を区別するようになりました +- fit/reflow、xterm の書き込み消費、書き込みキュー、WebGL ライフサイクルのログを追加しました +- 診断ログは頻度制限され、ターミナル内容ではなくメタデータのみを記録します +- フリーズを報告するときはその日の診断ログを添付すると、再配置、出力停滞、GPU、外部プログラムのどれが原因かを判断しやすくなります + ## v1.0.29 - 2026-10-16 今回のリリースはライトテーマの可読性を修正します。ホワイト系テーマでは、ターミナル内の文字(特に各プログラムが出力する色付きの文字)がほとんど読めず、設定ダイアログなども明るい背景にダーク向けの色が重なって表示されていました。 diff --git a/CHANGELOG.md b/CHANGELOG.md index 639e383..5b34d97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,40 @@ # OpenTerminal 更新日志 +## v1.0.30 - 2026-10-18 + +本次版本集中改进中文显示、关键词高亮与自定义链接规则,并为自定义正则增加 ReDoS 防护;同时加入更精确的渲染性能日志,用于定位长时间卡顿。 + +### 改进:中文与字体显示 +- 终端启用 Unicode 11 宽度表,中文、全角符号与表格线对齐更准确 +- 设置新增「中文字体」回退槽位,可为终端单独指定 CJK 字体 +- WebGL 渲染器开启重叠字形缩放,减少字形交叠 +- 字体列表新增「等宽」标识,字体预览加入中英文混排样例,选字体时即可发现错位 + +### 新增:高亮与可点击链接规则 +- 高亮规则新增「按行匹配」开关,`^ERROR$` 这类锚点可按每一行生效 +- 新增自定义可点击链接规则:正则捕获组可展开为 `http/https` 链接模板,Ctrl+点击打开 +- 高亮规则可开启「命中时提醒」,适合盯着长任务输出中的错误或密钥泄漏 +- 超长行改为按行降级,只跳过超过 4KB 的行,不再让整段输出失去高亮 + +### 修复:高亮与字体设置稳定性 +- 修复 `ls -l` 权限位高亮在多行、带颜色输出下失效的问题 +- 修复高亮 span 结束后清掉应用自身颜色的问题,彩色 TUI 输出不再丢失原样式 +- 修复行高、光标样式、scrollback、渲染模式等非法配置导致窗格崩溃或设置失效的问题,旧坏配置会在启动时自动修复 +- 修复含空格、括号等特殊字符的字体名在部分场景下静默失效的问题 + +### 安全:自定义正则 ReDoS 防护 +- 自定义高亮规则与链接规则进入终端同步执行前,会先在主进程 Worker 中做动态校验 +- 单条规则 500ms 硬超时;超时规则会被隔离,不再冻结界面 +- 编辑器预览、规则导入、存量配置和手改配置文件都走同一道闸门 +- 内置预设规则免校验;默认无自定义规则时不启动 Worker,不增加终端输出热路径开销 +- 升级后已有自定义规则会自动重新校验,短暂显示「待校验」后恢复 + +### 诊断:渲染卡顿时间线 +- 渲染层卡顿日志现在区分「真实长任务」与「计时器/休眠等调度延迟」,避免误判 +- 新增 fit/reflow、xterm 写入消费、写入队列与 WebGL 生命周期日志 +- 诊断日志限频且只记录元数据,不记录终端内容 +- 反馈卡顿时附上当天的诊断日志,可以更准确判断卡在终端重排、输出积压、GPU 还是外部程序 + ## v1.0.29 - 2026-10-16 本次重点修复浅色主题的可读性问题:白色主题下终端里的文字(尤其是各程序输出的彩色文字)几乎看不清,设置弹窗等界面在浅色下还会出现深色组件压在浅底上、文字发灰的错乱。 diff --git a/CHANGELOG.zh-TW.md b/CHANGELOG.zh-TW.md index 2752a28..de07ce9 100644 --- a/CHANGELOG.zh-TW.md +++ b/CHANGELOG.zh-TW.md @@ -1,5 +1,40 @@ # OpenTerminal 更新日誌 +## v1.0.30 - 2026-10-18 + +本次版本集中改進中文顯示、關鍵詞高亮與自訂連結規則,並為自訂正則增加 ReDoS 防護;同時加入更精確的渲染效能日誌,用於定位長時間卡頓。 + +### 改進:中文與字體顯示 +- 終端啟用 Unicode 11 寬度表,中文、全形符號與表格線對齊更準確 +- 設定新增「中文字體」回退槽位,可為終端單獨指定 CJK 字體 +- WebGL 渲染器開啟重疊字形縮放,減少字形交疊 +- 字體列表新增「等寬」標識,字體預覽加入中英文混合樣例,選字體時即可發現錯位 + +### 新增:高亮與可點擊連結規則 +- 高亮規則新增「按行匹配」開關,`^ERROR$` 這類錨點可按每一行生效 +- 新增自訂可點擊連結規則:正則擷取群組可展開為 `http/https` 連結模板,Ctrl+點擊開啟 +- 高亮規則可開啟「命中時提醒」,適合盯著長任務輸出中的錯誤或密鑰洩漏 +- 超長行改為按行降級,只跳過超過 4KB 的行,不再讓整段輸出失去高亮 + +### 修復:高亮與字體設定穩定性 +- 修復 `ls -l` 權限位高亮在多行、帶顏色輸出下失效的問題 +- 修復高亮 span 結束後清掉應用自身顏色的問題,彩色 TUI 輸出不再遺失原樣式 +- 修復行高、游標樣式、scrollback、渲染模式等非法設定導致窗格崩潰或設定失效的問題,舊壞設定會在啟動時自動修復 +- 修復含空格、括號等特殊字元的字體名在部分場景下靜默失效的問題 + +### 安全:自訂正則 ReDoS 防護 +- 自訂高亮規則與連結規則進入終端同步執行前,會先在主進程 Worker 中做動態校驗 +- 單條規則 500ms 硬逾時;逾時規則會被隔離,不再凍結介面 +- 編輯器預覽、規則匯入、既有設定和手改設定檔都走同一道閘門 +- 內建預設規則免校驗;預設無自訂規則時不啟動 Worker,不增加終端輸出熱路徑開銷 +- 升級後既有自訂規則會自動重新校驗,短暫顯示「待校驗」後恢復 + +### 診斷:渲染卡頓時間線 +- 渲染層卡頓日誌現在區分「真實長任務」與「計時器/休眠等調度延遲」,避免誤判 +- 新增 fit/reflow、xterm 寫入消費、寫入佇列與 WebGL 生命週期日誌 +- 診斷日誌限頻且只記錄中繼資料,不記錄終端內容 +- 回報卡頓時附上當天的診斷日誌,可以更準確判斷卡在終端重排、輸出積壓、GPU 還是外部程式 + ## v1.0.29 - 2026-10-16 本次重點修復淺色主題的可讀性問題:白色主題下終端內的文字(尤其是各程式輸出的彩色文字)幾乎看不清,設定彈窗等介面在淺色下還會出現深色元件壓在淺底上、文字發灰的錯亂。 diff --git a/package-lock.json b/package-lock.json index c86daca..081f8f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-terminal", - "version": "1.0.29", + "version": "1.0.30", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-terminal", - "version": "1.0.29", + "version": "1.0.30", "license": "MIT", "dependencies": { "@lydell/node-pty": "^1.2.0-beta.15", diff --git a/package.json b/package.json index 92363cb..0235365 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "open-terminal", "productName": "OpenTerminal", - "version": "1.0.29", + "version": "1.0.30", "description": "Open-source terminal with SSH, split panes, themes and fonts", "main": "out/main/index.js", "author": "CodingPlan.Site",