diff --git a/AGENTS.md b/AGENTS.md index 1aa221b..9199069 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -59,6 +59,7 @@ Electron + electron-vite + React 终端工具(本地终端 / SSH / SFTP)。 - **调度器是注入的**:`applyUpdateSchedule(system)` 由 `index.ts` 经 `settingsStore.setUpdateScheduleApplier` 注入——`updater.ts` 已 import `settingsStore`,反向 import 成环。applier 幂等(先清旧 interval 再建)且每次 `mutateSettings` 都会重跑;启动检查用模块级 `startupArmed` 保证**每进程只武装一次**,否则改一次设置就多排一次启动检查 - **自动下载**(`settings.system.autoDownloadUpdate`,默认关):`update-available` 时若开关开且无在途下载 → `handleDownload('auto')`(`UpdateState.auto` 标记)。`autoUpdater.autoDownload` **保持 false**——单一事实源在 settings,不交给 electron-updater。失败落 `status:'error'` 且**不重试**,等下一个周期 - **安装永远交给用户**:绝不因下载完成自动退出;`autoInstallOnAppQuit = true` 只覆盖「用户自己退出时装上」 +- **差量下载已禁用**(`autoUpdater.disableDifferentialDownload = true`,configureAutoUpdater 里):electron-updater 每次 `downloadUpdate()` 先试差量(拉新旧 blockmap + 多段 Range)失败再回退全量——用户看到进度条跑两遍、最坏近乎双倍流量(v1.0.x 用户报的「下载两次」)。而本项目三个前提让它注定失败:GitHub release 资产落 Azure Blob,多段 Range 返回 `501 Unsupported client range`(已实测);国内 Gitea 通道被 `pruneChannel` 删得只剩最新版 exe/blockmap,老客户端取老 blockmap 得 404;NSIS 是 LZMA 固实压缩,版本间小改动让后续压缩数据整体漂移,差量区间≈整个文件。所以直接全量是唯一正确行为 - **同版本抑制**(`actedRelease` 单槽记录,`actedFor(version)` 版本不同即整体替换):`announced`(发现气泡)、`fetchHandled`(已发起下载)、`downloaded`(包已落盘)、`downloadedAnnounced`(已下载气泡)——否则长开机的应用每 4 小时重复弹气泡/重复走一遍 `downloadUpdate`。`runCheck('manual')` **无条件清空**记录(手动是明确意图,必须如实反映);`update-not-available`/`error` **不清空**;下载失败回滚该次 `fetchHandled` - `downloaded` 与 `fetchHandled` **必须分开**:前者只在 `update-downloaded` 置位,用它判断「已完成」;拿 `fetchHandled` 判断会把下载中的版本误跳过。`update-available` 里若该版本 `downloaded` 为真,要 `setState` 一个等价的 `downloaded` 状态(**不能**直接 return 不写——`performCheck` 已把状态置成 `checking`,早退会让「关于」页永远转圈),这样按钮不会从「重启安装」退回「下载」 - **通知**:`tray.ts` 的 `notifyUpdate(title, content)` 弹 Windows 托盘气泡;非 win32 / tray 为空 / **有可见窗口**(用户在看「关于」页)都不弹。自动下载开启时不弹「发现新版本」(有意义的是「已下载」那条),手动下载完成也不弹 diff --git a/CHANGELOG.en.md b/CHANGELOG.en.md index d373fa6..b3f173d 100644 --- a/CHANGELOG.en.md +++ b/CHANGELOG.en.md @@ -1,5 +1,14 @@ # OpenTerminal Changelog +## v1.0.28 - 2026-10-15 + +This release fixes the "downloads twice" issue during in-app updates: when updating from an older version the progress bar ran through twice, costing nearly double the traffic in the worst case. + +### Fixed: update downloads twice +- The root cause: the updater tried a "differential download" (fetching only the changed chunks) on every download and fell back to a full re-download when it failed — and neither of our update sources can serve differential downloads, so every update ran as a differential attempt followed by a full package +- Differential download is now disabled: **every update is exactly one full download**, and the progress bar runs through once +- Note: users still on an older version will see the double download one last time while updating TO this version (the fix has to reach them first); once this version is installed, every future update downloads once + ## v1.0.27 - 2026-10-15 This release adds close confirmation for terminal tabs: an accidental close no longer kills a terminal or SSH session you are working in — especially the frequent case of pressing Backspace right after clicking a tab. diff --git a/CHANGELOG.ja.md b/CHANGELOG.ja.md index c6ac17a..b946fc6 100644 --- a/CHANGELOG.ja.md +++ b/CHANGELOG.ja.md @@ -1,5 +1,14 @@ # OpenTerminal 更新履歴 +## v1.0.28 - 2026-10-15 + +本リリースではアプリ内アップデートの「2 回ダウンロード」問題を修正しました。旧バージョンからの更新時にプログレスバーが 2 周し、最悪の場合ほぼ倍の通信量が発生していました。 + +### 修正:アップデートが 2 回ダウンロードされる +- 根本原因は、アップデーターが毎回「差分ダウンロード」(変更されたチャンクのみ取得)を試み、失敗するとパッケージ全体を再ダウンロードすることでした——本プロジェクトの 2 つの更新ソースはいずれも差分ダウンロードの条件を満たさないため、毎回「差分試行 + 全パッケージ」の 2 段階になっていました +- 差分ダウンロードを無効化し、**毎回ちょうど 1 回のフルダウンロード**になり、プログレスバーは 1 周だけです +- 注意:旧バージョンのユーザーが本バージョンへ更新する際は、最後にもう一度だけ 2 回ダウンロードが発生します(修正コードが先に手元へ届く必要があるため)。本バージョン導入後の更新はすべて 1 回のダウンロードになります + ## v1.0.27 - 2026-10-15 本リリースではタブを閉じる前の確認機能を追加しました。うっかり閉じて作業中のターミナルや SSH セッションを終了させてしまう——特にタブをクリックした直後に Backspace を押してタブごと閉じてしまう操作——を防ぎます。 diff --git a/CHANGELOG.md b/CHANGELOG.md index f8c8812..b439c62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # OpenTerminal 更新日志 +## v1.0.28 - 2026-10-15 + +本次修复应用内更新「下载两次」的问题:从旧版本更新时进度条会跑两遍,最坏情况消耗近双倍流量。 + +### 修复:更新下载两次 +- 根因是更新组件每次下载都先尝试「差量下载」(只取变化的数据块),失败后回退整包重下——而本项目的两个更新源都不具备差量条件,导致每次更新都是"差量尝试 + 整包"两段式 +- 现已禁用差量下载,**每次更新恰好一次整包下载**,进度条只走一遍 +- 注意:还在旧版本上的用户,更新到本版本时会经历**最后一次**下载两次(修复代码要先到达用户手里);装上本版本后,之后的每次更新都是单次下载 + ## v1.0.27 - 2026-10-15 本次新增标签页关闭二次确认:误触关闭不再直接杀掉正在工作的终端或 SSH 会话,尤其是点击标签后顺手按 Backspace 把整个 tab 关掉的高频误操作。 diff --git a/CHANGELOG.zh-TW.md b/CHANGELOG.zh-TW.md index 2369553..201433c 100644 --- a/CHANGELOG.zh-TW.md +++ b/CHANGELOG.zh-TW.md @@ -1,5 +1,14 @@ # OpenTerminal 更新日誌 +## v1.0.28 - 2026-10-15 + +本次修復應用內更新「下載兩次」的問題:從舊版本更新時進度條會跑兩遍,最壞情況消耗近雙倍流量。 + +### 修復:更新下載兩次 +- 根因是更新元件每次下載都先嘗試「差量下載」(只取變化的資料塊),失敗後回退整包重下——而本專案的兩個更新來源都不具備差量條件,導致每次更新都是「差量嘗試 + 整包」兩段式 +- 現已停用差量下載,**每次更新恰好一次整包下載**,進度條只走一遍 +- 注意:還在舊版本上的使用者,更新到此版本時會經歷**最後一次**下載兩次(修復程式要先到達使用者手裡);裝上此版本後,之後的每次更新都是單次下載 + ## v1.0.27 - 2026-10-15 本次新增分頁關閉二次確認:誤觸關閉不再直接殺掉正在工作的終端機或 SSH 連線,尤其是點擊分頁後順手按 Backspace 把整個分頁關掉的高頻誤操作。 diff --git a/package-lock.json b/package-lock.json index 37f3646..70de57e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-terminal", - "version": "1.0.27", + "version": "1.0.28", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-terminal", - "version": "1.0.27", + "version": "1.0.28", "license": "MIT", "dependencies": { "@lydell/node-pty": "^1.2.0-beta.15", diff --git a/package.json b/package.json index f9a159f..95d9e09 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "open-terminal", "productName": "OpenTerminal", - "version": "1.0.27", + "version": "1.0.28", "description": "Open-source terminal with SSH, split panes, themes and fonts", "main": "out/main/index.js", "author": "CodingPlan.Site", diff --git a/src/main/updater.ts b/src/main/updater.ts index b2ce8d0..ead33cb 100644 --- a/src/main/updater.ts +++ b/src/main/updater.ts @@ -499,6 +499,21 @@ export function configureAutoUpdater(): void { // ever installs on its own — autoInstallOnAppQuit only covers quitting. autoUpdater.autoDownload = false autoUpdater.autoInstallOnAppQuit = true + // Differential download is off because it cannot succeed against either of + // our feeds, and every failed attempt costs the user a second full transfer: + // electron-updater's differential path fetches the old and new blockmaps and + // then multi-range-requests the changed chunks, falling back to a plain whole- + // file download when any of that fails. GitHub serves the release assets from + // Azure Blob, which answers multi-range requests with `501 Unsupported client + // range` (measured), and the Gitea channel keeps only the newest exe + blockmap + // (`pruneChannel` deletes the previous release's), so an older client's + // blockmap 404s. Even where both were available the NSIS payload is LZMA solid + // compression: a small version-to-version change shifts everything after it, + // making the differential range nearly the whole file. The user then watches + // the progress bar run twice — worst case for roughly double the traffic — so + // going straight to the full download is the only behavior that is actually + // correct here. + autoUpdater.disableDifferentialDownload = true // The startup check and the periodic one are armed by applyUpdateSchedule // (wired in index.ts through settingsStore's injected applier) instead of diff --git a/tests/updater-fallback.mjs b/tests/updater-fallback.mjs index 56259d8..d68fe28 100644 --- a/tests/updater-fallback.mjs +++ b/tests/updater-fallback.mjs @@ -439,6 +439,13 @@ console.log('updater events drive the state the renderer reads') ok(live.logger === console, 'the updater logs through console') ok(live.autoDownload === false, 'auto-download is left to the user (the UI offers the button)') ok(live.autoInstallOnAppQuit === true, 'a downloaded update installs on app quit') + // Differential download is disabled: it cannot work against either feed (GitHub + // assets reject multi-range requests, the Gitea channel keeps no old blockmap), + // and each failure costs a second full transfer. + ok( + live.disableDifferentialDownload === true, + 'differential download is off (a failed attempt would download the package twice)' + ) const before = await call(Ipc.UPDATE_STATE_GET) ok(before !== undefined && typeof before.currentVersion === 'string', 'UPDATE_STATE_GET returns the current state') diff --git a/website/assets/i18n.js b/website/assets/i18n.js index e07ff25..5f25d06 100644 --- a/website/assets/i18n.js +++ b/website/assets/i18n.js @@ -155,6 +155,16 @@ window.OPENTERMINAL_I18N = { 'cl.eyebrow': 'Changelog', 'cl.title': '近期更新', + 'changelog.1.0.28.li.1': '修复应用内更新会下载两次的问题:禁用注定失败的差量下载,每次更新恰好一次整包下载,进度条只走一遍', + + 'changelog.1.0.27.li.1': '新增关闭标签二次确认:终端 / SSH 两个独立开关(默认关闭),设置 → 渲染与行为', + 'changelog.1.0.27.li.2': '覆盖标签 × 按钮、右键「关闭 / 关闭其他 / 关闭右侧」与键盘 Delete / Backspace 误关——点击标签后按 Backspace 不再直接关闭', + 'changelog.1.0.27.li.3': '批量关闭整批只确认一次;开关保存后立即生效,无需重启', + + 'changelog.1.0.26.li.1': '修复拖动缩放窗口或终端高频输出时界面冻结数秒(网格重排节流 + 输出批量写入)', + 'changelog.1.0.26.li.2': '新增落盘诊断日志:默认开启,按天一个文件保留 7 天,设置 → 系统可关闭', + 'changelog.1.0.26.li.3': '反馈卡顿问题时附上当天的日志文件即可精确定位', + 'changelog.1.0.25.li.1': '定时检查更新(从不 / 4 / 12 / 24 小时,默认 4)', 'changelog.1.0.25.li.2': '自动下载更新开关(后台静默下载,安装时机仍由用户决定,绝不自动退出)', 'changelog.1.0.25.li.3': '下载完成 / 发现新版本时窗口最小化到托盘则弹提示', @@ -165,19 +175,6 @@ window.OPENTERMINAL_I18N = { 'changelog.1.0.24.li.3': '会话日志退出不再丢尾部', 'changelog.1.0.24.li.4': 'SFTP 删除不再误报失败;ZMODEM 接收大文件内存可控;新增 3 组渲染层测试', - 'changelog.1.0.23.li.1': 'SFTP 文件面板改为真正的表格:六列对齐、表头吸顶、点击列头排序', - 'changelog.1.0.23.li.2': '字体可缩放 0.8–1.8 倍(A- / A+ 或 Ctrl+滚轮),行高联动并记忆设置', - 'changelog.1.0.23.li.3': '用户 / 组列显示真实名称,不再只有数字 UID / GID', - 'changelog.1.0.23.li.4': '列表空白处右键即可唤出文件菜单;修复六列此前未真正按网格对齐的问题', - - 'changelog.1.0.22.li.1': '修复中文输入法候选窗不跟随光标(v1.0.21 回归)', - 'changelog.1.0.22.li.2': '不再提供 MSI 安装包,统一使用 NSIS exe', - 'changelog.1.0.22.li.3': '打包流程新增依赖一致性校验,防止旧依赖混入安装包', - - 'changelog.1.0.21.li.1': '背景图体验:任意主题下调透明度均为压暗、文字自动提亮到 WCAG AA、新增背景压暗滑杆', - 'changelog.1.0.21.li.2': '性能:设置热更不再触发全窗格重排,SFTP 大目录虚拟滚动,面板独立错误边界', - 'changelog.1.0.21.li.3': '安装包精简约 90MB;SFTP/ZMODEM 本地路径准入与多处安全加固', - 'cl.morePre': '完整日志见仓库', 'cl.morePost': '。', @@ -332,6 +329,16 @@ window.OPENTERMINAL_I18N = { 'cl.eyebrow': 'Changelog', 'cl.title': '近期更新', + 'changelog.1.0.28.li.1': '修復應用內更新會下載兩次的問題:停用注定失敗的差量下載,每次更新恰好一次整包下載,進度條只走一遍', + + 'changelog.1.0.27.li.1': '新增關閉分頁二次確認:終端機 / SSH 兩個獨立開關(預設關閉),設定 → 渲染與行為', + 'changelog.1.0.27.li.2': '涵蓋分頁 × 按鈕、右鍵「關閉 / 關閉其他 / 關閉右側」與鍵盤 Delete / Backspace 誤關——點擊分頁後按 Backspace 不再直接關閉', + 'changelog.1.0.27.li.3': '批量關閉整批只確認一次;開關儲存後立即生效,無需重啟', + + 'changelog.1.0.26.li.1': '修復拖動縮放視窗或終端機高頻輸出時介面凍結數秒(網格重排節流 + 輸出批量寫入)', + 'changelog.1.0.26.li.2': '新增落盤診斷日誌:預設開啟,按天一個檔案保留 7 天,設定 → 系統可關閉', + 'changelog.1.0.26.li.3': '回報卡頓問題時附上當天的日誌檔案即可精確定位', + 'changelog.1.0.25.li.1': '定時檢查更新(從不 / 4 / 12 / 24 小時,預設 4)', 'changelog.1.0.25.li.2': '自動下載更新開關(背景靜默下載,安裝時機仍由使用者決定,絕不自動結束)', 'changelog.1.0.25.li.3': '下載完成 / 發現新版本時,視窗若最小化到系統匣會彈出提示', @@ -342,19 +349,6 @@ window.OPENTERMINAL_I18N = { 'changelog.1.0.24.li.3': '工作階段日誌結束時不再遺失尾段', 'changelog.1.0.24.li.4': 'SFTP 刪除不再誤報失敗;ZMODEM 接收大檔案的記憶體用量可控;新增 3 組渲染層測試', - 'changelog.1.0.23.li.1': 'SFTP 檔案面板改為真正的表格:六欄對齊、表頭固定、點擊表頭排序', - 'changelog.1.0.23.li.2': '字型可縮放 0.8–1.8 倍(A- / A+ 或 Ctrl+滾輪),行高連動並記憶設定', - 'changelog.1.0.23.li.3': '使用者 / 群組欄顯示真實名稱,不再只有數字 UID / GID', - 'changelog.1.0.23.li.4': '清單空白處按右鍵即可喚出檔案選單;修復六欄先前未真正依格線對齊的問題', - - 'changelog.1.0.22.li.1': '修復中文輸入法候選窗不跟隨游標(v1.0.21 回歸)', - 'changelog.1.0.22.li.2': '不再提供 MSI 安裝程式,統一使用 NSIS exe', - 'changelog.1.0.22.li.3': '打包流程新增相依性一致性校驗,防止舊相依性混入安裝程式', - - 'changelog.1.0.21.li.1': '背景圖片體驗:任何主題下調低不透明度都是壓暗、文字自動提亮至 WCAG AA、新增背景壓暗滑桿', - 'changelog.1.0.21.li.2': '效能:設定熱更新不再觸發全部窗格重排,SFTP 大目錄虛擬捲動,面板獨立錯誤邊界', - 'changelog.1.0.21.li.3': '安裝程式精簡約 90MB;SFTP/ZMODEM 本機路徑准入與多處安全加固', - 'cl.morePre': '完整日誌請見倉庫', 'cl.morePost': '。', @@ -509,6 +503,16 @@ window.OPENTERMINAL_I18N = { 'cl.eyebrow': 'Changelog', 'cl.title': 'Recent updates', + 'changelog.1.0.28.li.1': 'Fixed in-app updates downloading twice: differential download (which could never succeed) is disabled, so every update is exactly one full download with a single progress pass', + + 'changelog.1.0.27.li.1': 'Added close-confirmation for tabs: separate switches for terminal and SSH tabs (off by default), under Settings → Rendering & Behavior', + 'changelog.1.0.27.li.2': 'Covers the tab × button, the context menu\'s Close / Close others / Close right, and accidental Delete / Backspace — pressing Backspace after clicking a tab no longer closes it', + 'changelog.1.0.27.li.3': 'Batch closes ask once for the whole batch; switches take effect immediately, no restart needed', + + 'changelog.1.0.26.li.1': 'Fixed the UI freezing for seconds while resizing the window or under high-frequency terminal output (reflow throttling + batched writes)', + 'changelog.1.0.26.li.2': 'Added on-disk diagnostic logs: on by default, one file per day kept for 7 days, can be disabled in Settings → System', + 'changelog.1.0.26.li.3': 'Attach the day\'s log file when reporting freezes for precise diagnosis', + 'changelog.1.0.25.li.1': 'Scheduled update checks (never / 4 / 12 / 24 hours, default 4)', 'changelog.1.0.25.li.2': 'Auto-download toggle: silent background download, install timing still up to you, never quits on its own', 'changelog.1.0.25.li.3': 'Tray notification when a new version is found or a download finishes while the window is minimized', @@ -519,19 +523,6 @@ window.OPENTERMINAL_I18N = { 'changelog.1.0.24.li.3': 'Session logs no longer lose their tail when the app exits', 'changelog.1.0.24.li.4': 'SFTP delete no longer reports false failures; ZMODEM downloads of large files keep memory bounded; 3 new renderer test suites', - 'changelog.1.0.23.li.1': 'SFTP file panel is now a real table: six aligned columns, sticky header, click-to-sort', - 'changelog.1.0.23.li.2': 'Font scaling from 0.8x to 1.8x (A- / A+ or Ctrl+wheel); row height follows and the setting is remembered', - 'changelog.1.0.23.li.3': 'User / group columns show real names instead of bare UID / GID numbers', - 'changelog.1.0.23.li.4': 'Right-click empty list space for the file menu; fixed columns that were not actually aligned to the grid', - - 'changelog.1.0.22.li.1': 'Fixed the IME candidate window not following the cursor (regression in v1.0.21)', - 'changelog.1.0.22.li.2': 'MSI installer dropped; NSIS exe is now the only package', - 'changelog.1.0.22.li.3': 'Build pipeline now verifies dependency consistency to keep stale dependencies out of the installer', - - 'changelog.1.0.21.li.1': 'Background images: lowering opacity now always dims the image in any theme, text is auto-brightened to WCAG AA, and a new dim slider was added', - 'changelog.1.0.21.li.2': 'Performance: settings hot-updates no longer reflow every pane, SFTP virtual scrolling for large directories, per-pane error boundaries', - 'changelog.1.0.21.li.3': 'Installer slimmed by about 90MB; local path admission for SFTP / ZMODEM plus several security hardening fixes', - 'cl.morePre': 'Full changelog in', 'cl.morePost': '.', @@ -686,6 +677,16 @@ window.OPENTERMINAL_I18N = { 'cl.eyebrow': 'Changelog', 'cl.title': '最近の更新', + 'changelog.1.0.28.li.1': 'アプリ内アップデートが 2 回ダウンロードされる問題を修正:成功しない差分ダウンロードを無効化し、毎回ちょうど 1 回のフルダウンロードに', + + 'changelog.1.0.27.li.1': 'タブを閉じる前の確認機能を追加:ターミナル / SSH それぞれ個別のスイッチ(既定はオフ)、設定 → 描画と動作', + 'changelog.1.0.27.li.2': 'タブの × ボタン、右クリックメニューの「閉じる / ほかを閉じる / 右側を閉じる」、および Delete / Backspace による誤クローズに対応——タブクリック後の Backspace で閉じなくなります', + 'changelog.1.0.27.li.3': 'バッチクローズは全体で 1 回だけ確認;スイッチは保存後すぐに反映され、再起動不要', + + 'changelog.1.0.26.li.1': 'ウィンドウのリサイズや高頻度ターミナル出力時に UI が数秒固まる問題を修正(リフローのスロットリング + 書き込みバッチ化)', + 'changelog.1.0.26.li.2': '診断ログを追加:既定で有効、日ごとに 1 ファイルを 7 日間保持、設定 → システムで無効化可能', + 'changelog.1.0.26.li.3': '固まりの報告時に当日のログファイルを添付すれば正確に特定できます', + 'changelog.1.0.25.li.1': '定期的な更新チェック(しない / 4 / 12 / 24 時間、既定は 4 時間)', 'changelog.1.0.25.li.2': '自動ダウンロードのオン/オフ(バックグラウンドで静かにダウンロード。インストールのタイミングは従来どおりユーザーが決定し、自動で終了することはありません)', 'changelog.1.0.25.li.3': '新バージョンの検出時やダウンロード完了時に、ウィンドウがトレイに最小化されていれば通知を表示', @@ -696,19 +697,6 @@ window.OPENTERMINAL_I18N = { 'changelog.1.0.24.li.3': '終了時にセッションログの末尾が欠けなくなりました', 'changelog.1.0.24.li.4': 'SFTP の削除が誤って失敗扱いにならなくなりました。ZMODEM の大容量受信もメモリ使用量を抑制。レンダラー層のテストを 3 組追加', - 'changelog.1.0.23.li.1': 'SFTP ファイルパネルを本格的なテーブルに変更:6 列の整列、ヘッダーの固定表示、ヘッダークリックで並べ替え', - 'changelog.1.0.23.li.2': '文字サイズを 0.8〜1.8 倍に変更可能(A- / A+ または Ctrl+ホイール)。行の高さも連動し、設定は記憶されます', - 'changelog.1.0.23.li.3': 'ユーザー / グループ列に実際の名前を表示。数字だけの UID / GID ではなくなりました', - 'changelog.1.0.23.li.4': '一覧の空白部分を右クリックでファイルメニューを表示。6 列が実際にはグリッドに揃っていなかった問題を修正', - - 'changelog.1.0.22.li.1': 'IME の変換候補ウィンドウがカーソルに追従しない問題を修正(v1.0.21 のリグレッション)', - 'changelog.1.0.22.li.2': 'MSI インストーラーの提供を終了し、NSIS exe に統一', - 'changelog.1.0.22.li.3': 'ビルド手順に依存関係の整合性チェックを追加し、古い依存関係が混入しないようにしました', - - 'changelog.1.0.21.li.1': '背景画像の扱いを改善。どのテーマでも不透明度を下げると画像が暗くなり、文字は WCAG AA まで自動的に明るく調整。減光スライダーも追加', - 'changelog.1.0.21.li.2': 'パフォーマンス:設定のホットアップデートで全ペインが再レイアウトされなくなり、SFTP の大規模ディレクトリは仮想スクロール、ペインごとにエラーバウンダリを追加', - 'changelog.1.0.21.li.3': 'インストーラーを約 90MB 削減。SFTP / ZMODEM のローカルパス検証と複数のセキュリティ強化', - 'cl.morePre': '完全な変更履歴は', 'cl.morePost': ' をご覧ください。', diff --git a/website/index.html b/website/index.html index bb467f0..9a4d319 100644 --- a/website/index.html +++ b/website/index.html @@ -118,14 +118,14 @@ 内置 SFTP 文件管理与广播输入。安装即用,支持自动更新。

- + 下载 Windows 安装包 查看源码
-

当前版本 v1.0.25 · NSIS exe 安装包,支持应用内自动更新。

+

当前版本 v1.0.28 · NSIS exe 安装包,支持应用内自动更新。

OpenTerminal 主界面:三路分屏并行运行 Kimi Code、Claude Code 与 Codex @@ -133,7 +133,7 @@
- 当前版本 v1.0.25 + 当前版本 v1.0.28 Windows 10 / 11 · x64 MIT 开源协议 exe 支持应用内自动更新 @@ -341,11 +341,11 @@ - OpenTerminal-1.0.25-setup.exe + OpenTerminal-1.0.28-setup.exe NSIS 安装包,支持应用内自动更新(推荐) 109 MB - 下载 + 下载 @@ -375,6 +375,28 @@

Changelog

近期更新

+
+

1.0.282026-10-16

+
    +
  • 修复应用内更新会下载两次的问题:禁用注定失败的差量下载,每次更新恰好一次整包下载,进度条只走一遍
  • +
+
+
+

1.0.272026-10-15

+
    +
  • 新增关闭标签二次确认:终端 / SSH 两个独立开关(默认关闭),设置 → 渲染与行为
  • +
  • 覆盖标签 × 按钮、右键「关闭 / 关闭其他 / 关闭右侧」与键盘 Delete / Backspace 误关——点击标签后按 Backspace 不再直接关闭
  • +
  • 批量关闭整批只确认一次;开关保存后立即生效,无需重启
  • +
+
+
+

1.0.262026-10-11

+
    +
  • 修复拖动缩放窗口或终端高频输出时界面冻结数秒(网格重排节流 + 输出批量写入)
  • +
  • 新增落盘诊断日志:默认开启,按天一个文件保留 7 天,设置 → 系统可关闭
  • +
  • 反馈卡顿问题时附上当天的日志文件即可精确定位
  • +
+

1.0.252026-10-10

    @@ -393,31 +415,6 @@
  • SFTP 删除不再误报失败;ZMODEM 接收大文件内存可控;新增 3 组渲染层测试
-
-

1.0.232026-10-09

-
    -
  • SFTP 文件面板改为真正的表格:六列对齐、表头吸顶、点击列头排序
  • -
  • 字体可缩放 0.8–1.8 倍(A- / A+ 或 Ctrl+滚轮),行高联动并记忆设置
  • -
  • 用户 / 组列显示真实名称,不再只有数字 UID / GID
  • -
  • 列表空白处右键即可唤出文件菜单;修复六列此前未真正按网格对齐的问题
  • -
-
-
-

1.0.222026-10-08

-
    -
  • 修复中文输入法候选窗不跟随光标(v1.0.21 回归)
  • -
  • 不再提供 MSI 安装包,统一使用 NSIS exe
  • -
  • 打包流程新增依赖一致性校验,防止旧依赖混入安装包
  • -
-
-
-

1.0.212026-10-07

-
    -
  • 背景图体验:任意主题下调透明度均为压暗、文字自动提亮到 WCAG AA、新增背景压暗滑杆
  • -
  • 性能:设置热更不再触发全窗格重排,SFTP 大目录虚拟滚动,面板独立错误边界
  • -
  • 安装包精简约 90MB;SFTP/ZMODEM 本地路径准入与多处安全加固
  • -
-

完整日志见仓库