Skip to content

Releases

v2.19.0

Choose a tag to compare

@DearTang DearTang released this 02 Nov 03:10

2.19.0 - 2026-11-02

Added

  • 界面字号全站可调:七级字号阶梯 + 「界面字号」滑杆(12–18px)+ Ctrl+=/Ctrl+-/Ctrl+0(焦点在终端时改终端字号)
  • 界面实心度 / 弹窗实心度两个滑杆,玻璃底色由配色预设实时算出,33 套预设自动跟随
  • 背景图升级为整窗壁纸:侧栏、顶栏、AI 栏、设置页按实心度透出,带可读性遮罩
  • 界面动效总开关,一次性停掉全部过渡与动画

Changed

  • 壳层第一行改为「侧栏顶排 + 顶栏」连续 44px 一整排,对齐 ompDesktop 的 chrome 口径
  • 设置页改为 44px 顶排 + 200px 分组导航 + 圆角玻璃内容卡(正文限宽 940px 居中)
  • 连接树行高放宽到约 29px、副标题 10px→11px,侧栏默认宽度 264→260
  • 欢迎页改为品牌玻璃卡(矢量标识 + 快捷键提示),替代两行裸文字

Fixed

  • 修复背景图 data URL 含 #/)/空白时写入 --app-bg-image 静默失败(壁纸不显示)
  • 修复壁纸层被 body 不透明底色整片盖住(底色移到 html、#app 自建层叠上下文)
  • 修复「界面实心度 / 弹窗实心度」拉满仍透:Element Plus 对话框读的是 --el-dialog-bg-color 而非 overlay 变量,工作区与底栏也未接插值,现已全部接入
  • 修复实心度滑杆显示值与真实值脱节(默认 0.25 显示 25% 却被滑杆夹成 40%,改用 40+×60 映射)
  • 修复 AI 右栏引用从未定义的 --bg-sidebar 令牌(实际一直透明),改为显式玻璃底

v2.18.4

Choose a tag to compare

@DearTang DearTang released this 21 Oct 01:56

v2.18.4(2026-10-21)

MCP 文件操作确认框修复:确认事件被前端守卫丢弃。

🐛修复

  • MCP 文件类操作的确认框永不弹出:sftp_upload、sftp_remove、sftp_rename、upload_project、download_project、zmodem_upload 的确认事件(mcp_confirm)不携带 connection_id,而前端监听器首行就是 if (!connection_id) return,事件在到达 mcp_confirm 分支前即被丢弃,对话框从未渲染。后端确认 channel 空等到 180 秒超时后按拒绝回包,用户侧表现是「任务卡在等待确认,但没有任何弹窗」,最终报「用户已拒绝高危操作」。修复为把 mcp_confirm 分支前移到 connection_id 守卫之前,并在注释中固定该顺序,避免后续重构改回。命令确认(exec_in_tab)payload 带 connection_id,不受影响

🔒安全

  • 文档脱敏:progress.md 中被 GitGuardian 按 scheme://user:pass@host 形态标记的 PAT 前缀占位符改为 <PAT 已脱敏>(为手工截断的示意串,非可用凭据,无需轮换 token)

v2.18.3

Choose a tag to compare

@DearTang DearTang released this 20 Oct 13:08

v2.18.3(2026-10-20)

MCP 稳定性修复:端口文件的两处竞态。

🐛修复

  • MCP 端口文件非原子发布:GUI 侧改用「写同目录临时文件 → rename 原子覆盖」(rename 被占用失败时回退直接写,保证端口文件一定发布得出去)。此前 fs::write 先截断再写,MCP 恰在窗口期读到半截内容会误判「端口文件损坏」并删掉健康 GUI 的发现文件,随后每次调用都去拉起注定被单实例拦下的第二实例
  • MCP 删除端口文件前不再核验:GUI 看门狗(或另一个 MCP 实例)刚重写的新端口文件会被误删,导致活着的 GUI 永久不可发现。改为「比对后删」——只有文件仍写着判定为陈旧的那个端口才删

v2.18.2

Choose a tag to compare

@DearTang DearTang released this 20 Oct 04:52

v2.18.2(2026-10-20)

安装器修复:升级后重启不再误删 myshell-mcp.exe。

🐛修复

  • 升级后重启导致 myshell-mcp.exe 被误删、AI 客户端报「服务器在响应前退出」:升级流程静默调用旧版卸载器时,旧卸载器对被 AI 客户端常驻占用的 myshell-mcp.exe 执行 Delete /REBOOTOK,删除被登记成「下次重启时删除该路径」;新安装随后把新二进制写回同一路径,下次重启时新文件被这份待删记录连带删掉(现场特征:唯独 MCP 缺失、GUI/CLI 完好、安装目录时间戳停在重启时刻)。三处配套修复:调旧卸载器前先把 mcp/cli 改名让位,旧卸载器删不到文件即不登记待删记录;卸载段改为对 .uninstall-pending 唯一名延迟删除,待删路径永不复用;安装完成后自检 myshell.exe / myshell-mcp.exe / myshell-cli.exe 三件套齐全,缺一即报错中止,杜绝静默半套安装

v2.18.1

Choose a tag to compare

@DearTang DearTang released this 19 Oct 05:33

MyShell v2.18.1

MCP 稳定性修复:修复所有工具 30 秒超时的根因,锁定保险库时改为调用内等待解锁。

🐛 修复

  • 修复 MCP 全部工具 30 秒超时:GUI 运行中其 IPC 发现文件(gui-ipc-port)被陈旧清理竞态误删后,GUI 永久失联——此后每次工具调用都尝试启动第二个实例、被单实例守卫拦截、等待 30 秒后超时。三层修复:GUI 端口文件看门狗(每 5 秒自愈重发布);MCP 启动前探测 myshell.exe 进程存活,不再盲目启动第二实例(返回可操作的 NoPortFile 错误);单实例弹窗 TaskDialogIndirect 失败(部分机器恒 E_INVALIDARG)时回退 MessageBoxW,不再静默退出

🛠️ 优化

  • 保险库锁定时 MCP 工具改为调用内等待解锁(最长 20 秒):窗口自动置顶后若在 20 秒内输入主密码,本次调用直接继续执行——不再需要人工告知"已解锁"后重试;等待上限刻意低于客户端约 30 秒请求预算,超时仍返回结构化 vault_locked 错误。等待期间 GUI 崩溃时正确报告 ipc_unresponsive 而非误导性的"未解锁"
  • GUI 存活但端口文件缺失时,等待看门狗自愈(约 7 秒)后自动复用现有实例;GUI 自动启动轮询从 30 秒缩短到 20 秒,避免撞上客户端请求预算后变成不透明的传输超时

v2.18.0

Choose a tag to compare

@DearTang DearTang released this 15 Oct 01:34

MyShell v2.18.0 更新说明

组件库大版本升级 + 连接类型图标全新设计。

✨ 新增

  • 连接类型图标全新设计:服务器 / SFTP / FTP / 本地终端从 iconfont 字体图标切换为 myui v1.1.1 新增的自绘线性图标(24 网格 / currentColor / 圆头圆角,与库内其余图标同一规范)。Server 为两节机架单元(各带实心 LED 与通风横线),Sftp / Ftp 直接以协议名作图标(字标,v1.1.1 修复了初版屏内小字在 16px 密集列表下发糊的问题),LocalTerminal 为笔记本加 > 提示符。四类连接仍以蓝 / 紫 / 橙 / 灰四色区分。侧栏、标签页、回收站、连接编辑框全部跟随同一来源

🛠️ 优化

  • myui 组件库 v0.30.1 → v1.1.1:跨越 v1.0.0 大版本(约 70 处内部缺陷修复,API 向后兼容,可直升);含弹层、焦点、可访问性等修复
  • 图标来源收口到 ConnIcon 单一组件:侧栏与回收站此前各自复制了一份「类型 → 图标类名 / 颜色」映射,图标与配色可能随改动漂移;现统一由 ConnIcon 提供,删除约 30 行重复映射
  • 应用默认窗口宽度 1200 → 1300,侧栏与工作区初始更宽松(高度不变,最小尺寸不变)
  • 移除 iconfont 字体资产(ttf + css):其仅服务旧的四个连接图标,切换后全仓零引用,安装包与前端产物不再携带

v2.17.2

Choose a tag to compare

@DearTang DearTang released this 14 Oct 14:16

MyShell v2.17.2 更新说明

小版本:侧栏密度再降一档 + 发布脚本资产定位修复。

🐛 修复

  • 发布脚本差点把别的项目的二进制发出去:publish-gitee-release.mjs / publish-github-release.mjs 定位安装包的逻辑是「bundle/nsis/ 目录下 mtime 最新的 *-setup.exe」。本机构建目录与另一个项目共用,该目录下有 88 个 setup.exe,绝大部分属于别的项目 —— v2.17.1 首次发布时 Gitee 挂上去的正是 OMP Desktop_1.42.0_x64-setup.exe。现改为按版本号匹配文件名(MyShell_<version>[-_]x64-setup.exe);匹配不到才回退 mtime,并在 stderr 打印 [warn] 提示确认产物 —— 静默回退才是这类问题的真正帮凶

🛠️ 优化

  • 侧栏连接行高 29px → 23px:改为完全由文字撑出高度,上下各留 2px。树形视图下连接行是单行(IP 副标题仅在搜索结果中出现),文字块 13px × 1.25 ≈ 16px,8 条连接总高从 232px 降到 184px(约 21%)。关键点:必须同时放开「⋯」按钮的 36px 固定高度 —— 它在 padding 收到 2px 后成为行高的唯一瓶颈,只改 padding 的话行高会卡在 29px 纹丝不动。「⋯」可点区相应从 36×24 缩为 23×24

v2.17.1

Choose a tag to compare

@DearTang DearTang released this 14 Oct 12:27

MyShell v2.17.1 更新说明

小版本:侧栏列表密度调整 + 发布流程加固。

🛠️ 优化

  • 侧栏连接行高从 51px 收到 40px(文件夹行 31px → 27px):此前行高主要来自默认 line-height: 1.5 而非内边距 —— 13px 主名撑到 19.5px、10px 副标题撑到 15px,加内边距与间距后带 IP 副标题的连接行实测 51px,侧栏一屏放不下几条连接。现显式收行高(主名 1.25、副标题 1.3)并同步收紧纵向内边距与行间距,一屏可见连接数明显增加。40px 仍高于 32px 的可点下限。左侧缩进与右侧贴边的既有结论保持不变

🔒 安全

  • 移除 git remote URL 中内嵌的明文 PAT:.git/config 里 GitHub remote 此前是 https://<PAT>@github.com/...,任何能读该目录的进程都能取到该 token。Git Credential Manager 已全局启用(credential.helper=manager),URL 里再带一份只是多一处泄漏面。现清除内嵌凭据并验证认证仍正常
  • .zcode/ 整体纳入 .gitignore:此前只忽略 *.exe/*.obj/*.pdb 三类产物,导致 44 个一次性探针、截图与日志被 git 跟踪,发布时只能用逐文件暂存(通配式暂存会把它们连同 token 文件一起带进发布提交)。现整个目录忽略

v2.17.0

Choose a tag to compare

@DearTang DearTang released this 14 Oct 11:50

MyShell v2.17.0 更新说明

本版本是一次针对 AI 接入安全边界的审计整改。审计推翻了我方上一轮的核心推测(前后端确认规则集可能存在偏差 → 并不存在),转而修复了三处真实问题:确认门依赖中文错误文案判定、不可逆文件操作的确认弹窗藏在窗口后面、以及保险库解锁缺少可轮询的等待契约。

🔒 安全

  • MCP 确认门不再依赖错误文案的措辞:ssh_exec 判定「可见确认框是否出现过」时,用 e.message.contains("未找到 myshell.exe") 一类字符串匹配来决定能否回落无头执行 —— 也就是确认门本身建立在错误措辞之上,改一个错字或加一个条件分支,都会让判定翻转,高危命令静默执行。现改为 enum GuiLaunchError + gui_reachable(),可达性作为类型信息随 GuiExecError 传递,文案只用于显示;并新增回归测试 gui_reachability_comes_from_type_not_wording 锁死该性质
  • 确认超时按「拒绝」处理:mcp_confirm 等待 180 秒无决策即判为拒绝。不可逆操作里「用户没说好」必须读作「不」——若读作「是」,则「一直等下去」反而变成无条件放行

✨ 新增

  • 不可逆文件操作的确认改在 MyShell 界面内渲染:sftp_upload / sftp_remove / sftp_rename / upload_project / download_project / zmodem_upload 六类操作此前由 MCP 进程弹 Windows 原生对话框 —— 用户在 MyShell 窗口里工作时那个框会藏在窗口后面并抢走焦点,而这六类恰恰不可逆(覆盖、删除),漏看一次框就等于漏掉一次确认,AI 则会一直等待。现复用命令确认的既有弹窗组件;并发第二个弹窗会被拒绝(避免顶掉第一个导致其回调丢失);GUI 完全不可用时才回退原生对话框
  • vault_status 只读工具:返回 gui_running / initialized / unlocked 三个布尔与 vault_state,不泄漏任何连接元数据(保险库锁定时 AI 仍看不到任何连接名、主机或凭据)

🛠️ 优化

  • 登录门禁给出可轮询的等待契约:此前保险库未解锁时,AI 拿到的只是一段中文提示,只能盲猜重试时机。现失败返回结构化的 error_kind: "vault_locked" 与 vault_state(locked / not_initialized / gui_unavailable / ipc_unresponsive)及明确指引。仍不做隐式等待——多数 MCP 客户端 30 秒左右就会放弃单个请求,隐式等待必然双重失败;改为由 AI 调 vault_status 每 5 秒轮询一次(约 2 分钟上限)后重试同一个工具。门禁状态由 enum VaultGateError::state() 导出,不再从中文文本匹配
  • 侧栏连接树左侧空白收敛:此前每行的左缩进由两处叠加 —— 行 margin-left: 6px 加上自身 padding-left,深度节点再叠加 depth * 14px。实测文件行图标前空 22px、连接行前空 30px(侧栏最窄 200px 时白白浪费约 1/10 宽度)。现改为单处承担:文件行 8px、连接行 12px,层级步进同时由 14px 收到 12px;搜索框左缘一并对齐。右侧保持不变(「⋯」贴右缘是上一版用户已确认的结论)
  • 新增 4 组安全回归测试:23 种命令绕过形态(do rm / timeout 30 rm / nohup rm / xargs rm / 'rm' / /bin/rm / ( rm ) / { rm; } / if…fi / 管道后半段 / 反引号 / $() / >& / chmod -R / mkfs / dd / shutdown / sudo …),任一回退为「不弹确认」即失败;另有只读命令不得误弹的反向闸门(确认噪音会训练用户闭眼点确认)、错误类型可达性映射、门禁状态可读性

v2.16.2

Choose a tag to compare

@DearTang DearTang released this 08 Oct 23:57

v2.16.2(2026-10-09)

🔒 安全

  • ZMODEM 文件读写命令缺少门禁(审计发现):rz_open_read/rz_read_chunk 可读任意路径(含保险库文件、IPC 令牌、~/.ssh),sz_open_write 的系统目录黑名单不含应用配置目录,可覆写 vault.bundle / connections.db。现四个命令统一要求保险库解锁(require_dek),并新增共用 is_secret_path 拒绝清单(/myshell 与 ~/.ssh,含"文件尚未创建"的向上探测),附带 3 个回归测试

🛠️ 优化

  • 暗色模式侧栏/顶栏对比度重设计:可点元素(头部操作图标、文件夹图标、连接行 ⋯ 按钮等)静止态即可辨认,悬停统一改为主题强调色反馈(胶囊底 + 左侧竖条),对 33 套配色预设与深浅主题逐一校验
  • 解锁页暗色可读性:副标题/页脚/字段标签逐级提亮(页脚 2.09:1 → 3.77:1),卡片加顶部高光浮层
  • 侧栏展开箭头换用 myui 的 ArrowRight / ArrowDown 独立图标(14px),替换原先 8px 字符 ›(几乎不可见);折叠向右、展开向下
  • 升级 myui 0.18.0 → 0.27.2:图标库新增 ArrowRight/ArrowDown 等;升级后 21 个既有导出与全部在用组件均兼容,无破坏性变更

🐛 修复

  • 启动后窗口延迟显示 4 秒:Vue 迁移时丢失的前端 dom-ready 首帧信号已补回,不再每次启动白等 4 秒兜底
  • 主按钮在暗色下"糊成一片白":禁用态白字压浅底仅 1.58:1、启用态白字压强调色仅 2.26:1,改为中性面 + 反色文字(7.5:1)
  • 33 套配色预设对 myui / Element Plus 组件从未生效:CSS 令牌桥的选择器特异性被 myui 的 html.dark 压过,桥接的 11 个令牌全部失效——按钮/开关/滑块/进度条等 27 个组件恒为库内置青色。补齐选择器后全部跟随所选预设
  • 侧栏"菜单"与"会话"层级被压平:文件夹名与连接名对比度仅差 1.16x 导致分不清,改为亮度差 1.6x + 字重 500/600 双通道分级
  • 登录/加载界面无法最小化或关闭窗口:无边框窗口下这三个按钮原本只在顶栏,而门禁页全屏覆盖、顶栏尚未渲染,现补齐(抽取 WindowControls 与顶栏共用)