Skip to content

Releases: paidaxingyo666/MeTerm

v0.2.12

Choose a tag to compare

@github-actions github-actions released this 06 Aug 03:18

更新日志 / Changelog

新功能

  • 「允许局域网连接」总开关 — 原「局域网发现」升级为局域网访问总开关,工具栏菜单、托盘菜单与设置 → 共享三处同步;关闭时二次确认并断开局域网直连会话,已配对设备记录与中继连接不受影响
  • 「导出连接」升级为完整迁移包 — 导出改在原生层完成:密码 / 密钥 / 口令直接从系统凭据库读取写入文件,全程不经过界面层;完成后给出导出条数统计与缺失凭据提示;「导入连接」同步加严格式与字段校验
  • 远程接入基础设施 — 内置自签 TLS、设备身份与中继隧道等基础能力,为后续移动端配套做准备;正式桌面构建默认不开放移动控制

问题修复 / 优化

  • 修复连接 JumpServer 堡垒机报「No common algorithm」 — SSH 算法表不再随上游默认漂移:补齐 ssh-rsa 主机密钥、ecdh-sha2-nistp256/384/521 密钥交换、aes128-gcm 与 SHA-1 HMAC(严格排在全部 SHA-2 之后)等兼容项;现代服务器协商结果不变,JumpServer 等老堡垒机 / 网络设备恢复可连,排序由单元测试锚定防回退
  • macOS 终端从后台恢复后偶发字形错乱 — 窗口重新聚焦时重建渲染纹理并全量重绘;WebGL 上下文无法恢复时自动回退默认渲染器
  • macOS 钥匙串授权弹窗收敛 — SSH 凭据改用免二次授权的钥匙串存储,连接与文件传输不再反复弹出系统授权窗
  • 文件传输通道主机密钥校验收紧 — known_hosts 指纹不匹配一律拒绝(与终端会话行为一致,防中间人);仅在终端会话已验证信任的前提下允许算法差异回退
  • AI 密钥入原生安全存储 — AI provider 与搜索服务的 API Key 交由原生凭据代理保管,密钥内容不再回传界面层
  • 安全与供应链加固 — 依赖锁定与 SBOM 清单、构建 / 签名流水线隔离、组件统一审计,发布安全基线全面收紧

Changelog (English)

What's New

  • "Allow LAN connections" master switch — the old "LAN Discovery" toggle is now a full LAN-access switch, kept in sync across the toolbar menu, tray menu, and Settings → Sharing; turning it off asks for confirmation and disconnects LAN-direct sessions, while paired-device records and relay connections are unaffected
  • "Export Connections" now produces a complete, portable bundle — export runs natively: passwords / keys / passphrases are read from the system credential vault and written straight to the file without passing through the UI layer; you get a count summary plus warnings for entries with missing credentials, and import-side validation is stricter
  • Remote-access foundations — built-in self-signed TLS, device identity, and relay tunneling lay the groundwork for the upcoming mobile companion; official desktop builds ship with mobile control disabled

Bug Fixes

  • Fixed "No common algorithm" when connecting to JumpServer bastions — SSH algorithm preferences no longer drift with upstream defaults: ssh-rsa host keys, ecdh-sha2-nistp256/384/521 key exchange, aes128-gcm, and SHA-1 HMACs (strictly after all SHA-2 MACs) are appended for compatibility; negotiation with modern servers is unchanged, older bastions and network devices connect again, and unit tests pin the ordering
  • Fixed occasional glyph corruption after the macOS terminal returns from background — the renderer texture atlas is rebuilt and fully redrawn on window refocus; if the WebGL context cannot be restored, the terminal falls back to the default renderer
  • Fewer macOS Keychain prompts — SSH credentials use no-reauthorization keychain storage, so connections and file transfers no longer trigger repeated system authorization dialogs
  • Stricter host key verification on the transfer channel — a known_hosts fingerprint mismatch is now always rejected (matching terminal-session behavior, guarding against MITM); algorithm-gap fallback is allowed only when backed by the already-verified terminal session
  • AI keys moved into native secure storage — API keys for AI providers and search services are held by a native credential broker and never returned to the UI layer
  • Security & supply-chain hardening — dependency locking with SBOMs, isolated build / signing pipelines, and unified component auditing tighten the release security baseline

v0.2.11

Choose a tag to compare

@github-actions github-actions released this 28 Jun 06:41

更新日志 / Changelog

新功能

  • macOS 代码签名 + 公证 — 使用 Apple Developer ID 对 App 与 DMG 签名并公证,下载后双击即可打开,不再需要手动解除隔离(xattr -cr)
  • 访达右键「Open in MeTerm」 — macOS Finder 右键可直接用 MeTerm 打开所选目录(Finder Sync 扩展)
  • 主页改为连接侧边栏 — 连接管理改为停靠式左侧侧边栏(悬浮可浮出菜单、不遮挡终端);应用启动默认打开本地终端
  • 标签拖出独立窗口 — 标签可拖到窗口外新建独立窗口,带跟随预览
  • AI 对话侧栏化 — AI 对话仅在侧边栏,agent 按钮移入工具栏,底部命令输入默认折叠
  • 文件侧栏递归搜索 — 支持本地与 SFTP / JumpServer 递归搜索
  • 面板增强 — 右键抽取为独立标签;拖动重排(中间替换 / 靠边插入);移动手柄激活时滑出面板标题
  • 文件树「在访达 / 资源管理器中打开」 — 本地会话右键菜单

问题修复 / 优化

  • 工具栏图标体系统一 — 按钮纯图标化,AI 文字图标,文件管理器侧栏式图标,左右图标大小与间距统一,标签栏与终端间距优化
  • 面板区分更清晰 — 去掉激活面板外框,改为未激活面板内容暗化 + 可见分隔线
  • 状态栏自动隐藏 — 空闲收起并回收占位
  • 连接侧边栏跟随毛玻璃设置 — 关闭毛玻璃后显示实色
  • Windows 本地搜索结果定位 — 修复路径分隔符不一致导致点击搜索结果无法定位、目录列错位
  • Linux 拖拽预览透明 — 修复 GTK 下透明边距渲染为不透明方块

Changelog (English)

What's New

  • macOS code signing + notarization — the app and DMG are signed with an Apple Developer ID and notarized, so downloads open on double-click with no manual quarantine removal
  • Finder "Open in MeTerm" — right-click any folder in macOS Finder to open it in MeTerm (Finder Sync extension)
  • Home is now a connection sidebar — a docked left sidebar (with a hover flyout) replaces the standalone home; a local terminal opens on startup
  • Tear tabs into their own window — drag a tab out to create a separate window, with a live follow preview
  • AI chat moved to the sidebar — the agent button lives in the toolbar; the bottom command input is collapsed by default
  • Recursive file-sidebar search — across local and SFTP / JumpServer
  • Pane enhancements — extract a pane into its own tab; drag to rearrange (center = swap, edge = insert); pane-title flyout on the move handle
  • "Open in Finder / Explorer" in the file tree (local sessions)

Bug Fixes

  • Unified toolbar icons — pure-icon buttons, AI text glyph, sidebar-style file-manager icon, consistent icon size & spacing, refined tab-bar/terminal gap
  • Clearer pane separation — inactive panes dim + visible dividers (no focus border)
  • Status bar auto-hides when idle and reclaims its space
  • Connection sidebar follows the vibrancy setting (solid when disabled)
  • Windows local search results now locate correctly (path-separator fix)
  • Linux drag-preview transparency fixed

v0.2.10

Choose a tag to compare

@paidaxingyo666 paidaxingyo666 released this 19 May 10:54

更新日志 / Changelog

新功能

  • 标题栏 JumpServer 图标增加显式操作入口 — 点击 toolbar 上的 JumpServer 图标会弹出已登录服务列表,每项末尾的 ⋯ 按钮提供「重新登录 / 退出登录」操作,右键整行也可呼出同一菜单。单连接与多连接交互完全统一,不再需要"对着图标右键找隐藏功能"
  • AI Agent 网络瞬断自动短退避重试 — DNS 失败、TCP reset、TLS 握手错、连接中断、读超时等"请求根本没到服务端"的传输层错误,新分类为 network,自动以 1→2→4→8→10 秒退避重试最多 5 次(约 25 秒内自动恢复 WiFi 抖动 / 运营商瞬断 / VPN 切换)。重试时面板顶部出现 网络异常,正在重试 (n/5) 提示
  • AI Agent 自动检测密码提示并预先显示等待卡片 — 当 run_command 检测到 shell 输出的高置信度密码提示(如 sudo Password:),前端立即挂出等待卡片让用户在终端中输入,不必等 LLM 回环再决策。卡片在用户敲下任意键时变绿、shell idle 后自动消失,agent 自动恢复

问题修复

  • JumpServer 长时间无操作后无法重新连接 / 不弹 MFA — Rust 端 create_connection_token 在所有候选 body 都收到 401/403 时会返回 SESSION_EXPIRED: 前缀,前端识别后自动调 ensureJSAuthenticated(force=true) 拉起 MFA,认证成功后自动重试一次 token。覆盖两条路径:终端 reconnect overlay、资产卡片"连接"按钮。其他错误(5xx / 网络 / token 空)保留原语义不会被误标为会话过期
  • 退出登录后再连接报 HTTP 422: missing field 'password' — logoutJumpServer 不再清 Keychain 凭据。语义重新定位:「退出登录」清会话(activeJumpServers / localStorage / 过期标记),「删除凭据」走配置编辑里的"移除连接"。这样退出后再点连接卡片可以直接用 Keychain 里的密码自动走 MFA
  • dropdown 重新登录无响应 / 凭据缺失时无补救路径 — ensureJSAuthenticated 的 fast-path 必须显式 force=true 才会重新认证;Keychain 也空时弹补输对话框,认证成功后才写回 Keychain(输错密码不再污染 Keychain),错误时带提示重新弹出对话框允许重试
  • 快速双击资产卡片导致多个 MFA 对话框 — connectToAsset 全局 inFlightConnects Set 防重入(同一 config+asset+account 并发请求只跑一次),listener 用 await 串行化,popup 按钮 click 后 disable 1.5s,dblclick 卡片用 dataset 锁
  • dropdown 点 ⋯ 时父级服务列表消失 — 子菜单浮层叠在 dropdown 上方,dropdown 不关闭;登出后 dropdown 通过 jumpserver-auth-changed 事件自动关闭,避免点击已登出项报错
  • 重新登录后状态栏一直显示「呼吸中」 — ensureJSAuthenticated 成功路径补设 setConnection('connected', ...),调用方有 SSH 阶段会再次覆盖

What's New

  • Explicit JumpServer Actions in the Toolbar Dropdown — Clicking the toolbar JumpServer icon now always shows the dropdown of signed-in connections (single or multiple). Each item has a trailing ⋯ button (and a right-click target on the whole row) exposing "Sign in again" / "Sign out". No more hidden right-click-on-the-icon trick — the entry point is consistent and discoverable
  • AI Agent Short-Backoff Retry for Transient Network Errors — DNS / TCP reset / TLS handshake / connection closed / read timeout — i.e. transport-level errors that never round-tripped — are now classified as network and auto-retried with 1→2→4→8→10s backoff up to 5 times (≈25s, enough to ride out WiFi flaps, carrier hiccups, VPN reconnects). The chat panel surfaces "Network blip, retrying (n/5)" while it backs off
  • Pre-emptive Wait Card on Auto-Detected Password Prompts — When run_command sees a high-confidence password prompt in the shell output (e.g. sudo Password:), the wait card pops up immediately so the user can type in the terminal — no LLM round-trip required. The card turns teal the moment the user types, then auto-dismisses on shell-idle and the agent resumes

Bug Fixes

  • Stuck JumpServer Reconnect After Long Idle — No MFA Prompt — When the JumpServer session cookie has quietly expired and the user clicks "Reconnect" on a terminal overlay (or "Connect" on an asset card), the Rust create_connection_token now flags an all-401/403 outcome with a SESSION_EXPIRED: prefix. The frontend catches the typed error, force-triggers ensureJSAuthenticated (which fires the MFA dialog) and retries the token once on success. 5xx / network / empty-token failures keep their original meaning and won't be mis-bucketed as session-expired
  • HTTP 422: missing field 'password' After Sign-out then Reconnect — logoutJumpServer no longer wipes Keychain credentials. Semantics split: "Sign out" clears the session (active map, localStorage mirror, expired flag); "Remove connection" in settings is what actually purges secrets. After signing out the user can click the connection card and re-authenticate using the Keychain password + MFA without re-entering anything
  • Dropdown "Sign in again" Did Nothing / No Recovery When Keychain Is Empty — ensureJSAuthenticated's fast-path now requires explicit force=true to skip; when Keychain has nothing on file, a credential-prompt dialog asks the user, and the secret is only written back to Keychain after authentication succeeds — wrong passwords no longer poison Keychain. Auth failures re-open the dialog with the error message inline so the user can retry
  • Double-clicking an Asset Card Spawned Multiple MFA Dialogs — connectToAsset now has a process-wide inFlightConnects set (one connection per config + asset + account key), the IPC listener awaits each call, the popup connect button disables for 1.5s after click, and dblclick cards use a dataset lock — triple-layer guard
  • Dropdown Vanished When You Pressed ⋯ — The submenu now floats on top of the dropdown instead of replacing it; on sign-out the dropdown closes itself via the jumpserver-auth-changed event so the user can't click a stale entry
  • Status Bar Stayed in the "Breathing" Connecting State After Re-auth — ensureJSAuthenticated now closes its own connecting state with setConnection('connected', ...) on success; callers that follow up with SSH will override this as usual

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 16 May 11:33

更新日志 / Changelog

新功能

  • Plan 任务计划面板浮在对话输入框上方 — 任务计划从聊天消息流里拿出来,作为独立的 liquid-glass 卡片悬浮在 AI 对话面板底部、紧靠输入框。Apple 风丝滑动画:入场从底部滑起 + 淡入;进度条 cubic-bezier 平滑填充;项目状态 icon 跳变(pending→in_progress→completed);当前运行项有横向 shimmer;全部完成后高亮 3 秒(绿色庆祝)再滑回。视觉与对话面板 liquid-glass 风格一致——两侧 inset、四角圆角、毛玻璃背景,像是从对话框里抽出来的小卡片

问题修复

  • 错误分类器误将「模型不存在」当作「工具不支持」永久降级 — 之前只要 LLM 错误消息含「not supported」就把 agent 永久标记为 toolsSupported=false。结果 Claude 那条 Not supported model X 的 400 错误会让所有后续模型(包括同会话切到 MiMo / Qwen3 等)都被切到 chat-only 模式,导致 Qwen 家族的模型把 <tool_call> 当作纯文本输出。改为必须同时出现「tool/function」+「not supported/unsupported/unrecognized」才归类为工具不支持
  • 切换模型后仍卡在「无工具」模式 — ToolAgent 新增 lastResolvedModel 字段;runLoop 检测到模型变了就重置 toolsSupported,让换到正常模型能恢复工具使用
  • Plan UI 任务执行中看不到、做完才突然出现 — 老逻辑里 plan board 和 tool card 都 appendChild 到 chat-messages 末尾,每张 tool card 都把 board 顶上去;只有模型最后一次 todo_write 才把 board 重新拉回底部并滚动到底,所以「任务完成才看到」。新设计把 board 移出 messages 滚动流,作为 chat panel 的直接子元素位于消息区与输入框之间,任务进行中始终可见

What's New

  • Plan Board Floats Above the Chat Input — The task plan is no longer inline inside the message stream. It's now a separate liquid-glass card pinned to the bottom of the chat panel, right above the input bar. Apple-smooth animations: slide-up + fade entry, cubic-bezier progress fill, item-status icon spring (pending→in_progress→completed), horizontal shimmer on the currently-running item, 3s green celebration on full completion then slide-back. The visual style mirrors the chat panel — inset sides, rounded corners, frosted glass — so it reads as a drawer pulling out of the dialog itself

Bug Fixes

  • Error Classifier Misread "Model Not Found" as "Tool Unsupported" — Any LLM error containing "not supported" was bucketed as tool_unsupported, permanently flipping toolsSupported=false for the rest of the conversation. So a single Not supported model X 400 from one model would silently disable tools on every subsequent model in the same session, forcing Qwen-family models (MiMo / Qwen / GLM) to emit inline <tool_call> text. Now requires "tool / function" AND "not supported / unsupported / unrecognized" to co-occur
  • Stuck in Tools-Off Mode After Model Switch — ToolAgent now tracks lastResolvedModel; when runLoop sees a different model than last time it resets toolsSupported, giving the new model a fair chance to use tools
  • Plan UI Only Visible After Task Completed — Old behavior: both the plan board and every tool card got appendChild'd to .ai-chat-messages, so tool cards kept pushing the board out of view. The plan was only re-anchored to the bottom when the model called todo_write again — typically at task end. The new design moves the board out of the scrolling message stream and into a fixed slot at the chat panel's bottom, keeping it visible throughout execution

v0.2.8

Choose a tag to compare

@github-actions github-actions released this 16 May 05:56

更新日志 / Changelog

新功能

  • AI 思考模式开关 — 设置面板新增「思考模式」总开关,AI Bar / 侧面板新增脑图标快速切换;启用时向请求体注入 thinking.type / enable_thinking / chat_template_kwargs.enable_thinking 三种字段,覆盖 DeepSeek V4 / Qwen3 / GLM / MiMo / vLLM 等思考模型;本轮对话中途切换无须重连,未知字段被 OpenAI / Anthropic / Gemini 忽略
  • SSH 无凭据连接 — 选「密钥」认证、密钥路径留空时走 OpenSSH 风格梯子:先 $SSH_AUTH_SOCK (ssh-agent) 轮询所有 identities,再按 id_ed25519 → id_ecdsa → id_rsa → id_dsa 顺序试默认密钥。成功后底部 toast 提示实际走的路径
  • SSH 私钥文件选择器 — 密钥输入框旁新增浏览按钮,原生文件对话框,默认起始 ~/.ssh/
  • SSH 动态提示 — 切到密钥模式时检测默认密钥与 ssh-agent 状态:placeholder 显示「留空将自动使用 ~/.ssh/id_ed25519」或「留空将通过 ssh-agent 认证」;agent 有身份时显示 agent: N 徽章
  • JumpServer 连接反馈即时化 — 点击资产后 tab + 占位符立即出现(之前要等 token API 返回才出,资产慢时会等 1-3 秒);占位符按阶段更新文案:正在认证 → 正在获取连接令牌 → 正在连接 user@host

问题修复

  • AI 调用 400「reasoning_content must be passed back」 — Qwen3 / DeepSeek V4 等思考模型要求带 tool_calls 的 assistant 必须回传 reasoning_content。前端在流式累积 reasoning、序列化时强制带回(空也带空串),符合官方文档要求
  • SSH 私钥路径无法连接 — 前端发的是路径但 Rust 后端直接当 PEM 解析必败;补回 Go 后端迁移漏掉的 ~ 展开 + HOME 沙箱 + 文件读取逻辑,russh 终端 / ssh2 SFTP 两条路径都修
  • JumpServer SFTP 无法初始化 — Koko 的连接 token 按 protocol 隔离且常为单次使用,第二条独立 SSH 连接被拒。改为在已认证的终端 session 上起 sftp 子通道(multiplex),普通 SSH 仍走独立连接保留传输性能;SFTP 初始化失败时把具体原因带回前端
  • JumpServer 侧边栏文件树加载慢 — 三因叠加:loadDirectoryRaw 没传 soft_limit:5000 大目录一次性拉数万条、没用上现有 dirCache、fm.currentPath==='/' 被误判为「未加载」导致根目录就是 home 的资产永远等不到首次事件
  • JumpServer 侧边栏不跟随 auto-cd — FileManager.onPathChanged 从单回调改成订阅者集合,sidebar 长期 follower 跟随 FM 的路径变化;面包栏手动输入或锁定时停止跟随
  • 重命名报「Invalid filename」 — renameFile API 改了支持绝对路径但校验没跟着改必拒;改为只校验 basename
  • 侧边栏树重命名 1-2 秒空白 — sidebar 模式下 drawer 的「重命名中...」overlay 被隐藏,用户无反馈;新增乐观更新:按 Enter 立刻在树里改名,服务端响应回来 refreshAll 自然吻合;失败时也派发事件自动回滚
  • 树移动文件后展开节点闭合 — refreshAll 把 expansion 快照捕获放在第一个 await 之后,并发 refresh 时读到的是被另一个调用清掉的空 nodeMap;快照挪到 await 之前 + 删除 onMove 里冗余的 setTimeout refreshAll

What's New

  • AI Thinking Mode Toggle — New global toggle in settings + quick brain-icon toggle in AI Bar / side panel. When on, the request body carries thinking.type / enable_thinking / chat_template_kwargs.enable_thinking so thinking-mode models (DeepSeek V4, Qwen3, GLM, MiMo, vLLM) reason before answering. Mid-conversation switching needs no reconnect; plain OpenAI / Anthropic / Gemini silently ignore the extras
  • SSH Connect Without Credentials — Pick "Key" auth and leave the path empty: the client walks the OpenSSH ladder — $SSH_AUTH_SOCK (ssh-agent) first, then id_ed25519 → id_ecdsa → id_rsa → id_dsa defaults. A toast confirms which path actually succeeded
  • SSH Private-Key File Picker — Browse button next to the key input opens a native dialog rooted at ~/.ssh/
  • SSH Dynamic Hints — Switching to key mode probes both the default key and ssh-agent: the placeholder shows "Leave empty: auto (~/.ssh/id_ed25519)" or "Leave empty to use ssh-agent"; an agent: N badge appears when the agent has identities loaded
  • JumpServer Connect Feedback Made Instant — Clicking an asset now creates the tab + placeholder immediately (previously waited 1-3s for the token API). The placeholder narrates each stage: authenticating → requesting token → connecting user@host

Bug Fixes

  • AI 400 "reasoning_content must be passed back to the API" — Qwen3 / DeepSeek V4 require reasoning_content (even empty) on any assistant turn carrying tool_calls. Frontend now accumulates streamed reasoning and always echoes it back on serialization, matching the official spec
  • SSH Private-Key Path Couldn't Connect — Frontend sends a path but Rust was decoding the path string as PEM. Restored the Go-era ~ expansion + HOME sandbox + file read for both the russh terminal path and the ssh2 SFTP path
  • JumpServer SFTP Failed to Initialize — Koko's connection tokens are protocol-scoped and often single-use, so a second SSH connection authenticated with the same JMS-{token} got rejected. Now multiplexes SFTP as a sub-channel on the already-authenticated terminal session; plain OpenSSH keeps the dedicated-connection optimization. SFTP init failures now report the actual reason instead of a generic "retry"
  • JumpServer Sidebar Tree Slow — Three compounding causes: loadDirectoryRaw lacked soft_limit:5000, the existing dirCache wasn't consulted, and fm.currentPath==='/' was misread as "not loaded yet" — so assets whose home IS the root waited forever for a first event
  • Sidebar Didn't Follow JumpServer Auto-CD — FileManager.onPathChanged switched from a single-callback to a subscriber set; the sidebar registers a long-lived follower that mirrors FM's current path until the user manually navigates or locks
  • Rename Said "Invalid filename" — renameFile's API was extended to accept absolute paths but the validation wasn't, so every absolute path failed. Validation now checks the basename only
  • Sidebar Tree Rename Had a 1-2s Blank — In sidebar mode the drawer's "重命名中..." overlay is hidden, so the user had no feedback while the post-rename refresh was in flight. Added optimistic update: Enter applies the rename to the visible tree immediately; on server failure a file-op-done event reverts
  • Move Collapsed Expanded Nodes — refreshAll captured its expansion snapshot after the first await, so two concurrent refreshes (the file-op-done event + the move handler's setTimeout) raced and one of them read an empty nodeMap. Snapshot moved before any await, and the redundant setTimeout was removed

v0.2.7

Choose a tag to compare

@paidaxingyo666 paidaxingyo666 released this 07 May 11:18

更新日志 / Changelog

新功能

  • JumpServer 会话过期处理 — 全链路会话过期识别与恢复:资产面板 banner、pop-out 窗口引导回主窗口、面板 header 右键菜单(重新登录 / 退出登录)、toolbar 下拉项右键菜单、掉线重连前置过期/登出检查
  • JumpServer SFTP 认证自愈 — 凭据失效时自动刷新并恢复传输;新增 SFTP 凭据刷新 HTTP 端点;错误分类细化(`SFTP_AUTH_FAILED` / `SESSION_EXPIRED`),分类器覆盖上传/下载嵌套 error 字段
  • AI Agent 中文化 — 工具卡名称中文显示(`run_command` → 运行命令、`read_terminal` → 读取终端、`todo_write` → 更新计划等 19 项),任务计划状态中文化(待办 / 进行中 / 已完成),`wait_for_user_input` 状态文案中文化
  • 任务计划 UI 优化 — 宽度对齐工具卡片,padding/字号/边距收紧,去掉状态徽章 uppercase 防中文挤压
  • 文件管理器右键菜单优化 — "刷新"提到一级菜单;自定义右键菜单(Tab/Shell/文件链接)补齐高斯模糊样式
  • 文件名校验放宽 — 支持 Linux/SFTP 合法字符(含括号、空格等 POSIX 文件系统允许的字符)

问题修复

  • 更新重启被退出确认对话框拦截 — 修复点击"立即重启"后被退出确认弹窗拦截导致更新不生效
  • 终端粘贴图片被 AI Bar 全局捕获 — 修复在终端 Cmd/Ctrl+V 粘贴时,AI Bar 错误地从系统剪贴板拉取图片附加到聊天
  • 任务计划 UI 被挤压消失 — 修复长聊天中 plan board 被后续消息挤压到 0 高
  • 思考块泄漏 XML 标签碎片 — 过滤 `` / `</arg_value>` 等流式残片,历史压缩切到换行边界减少 dangling 片段
  • 树视图右键新建文件夹路径错乱 — 修复对话框停留过久后 contextPath 5 秒超时漂移导致目录创建到错误位置;新建后自动展开父目录立即显示

What's New

  • JumpServer Session Expiry Handling — End-to-end session-expired detection: asset panel banner, pop-out window redirect, header & toolbar context menus (relogin/logout), pre-check before reconnect
  • JumpServer SFTP Auth Self-Healing — Auto refresh stale credentials; new SFTP credential refresh HTTP endpoint; finer error classification (`SFTP_AUTH_FAILED` / `SESSION_EXPIRED`), classifier covers nested error fields in upload/download
  • AI Agent Localization — Tool cards display localized names (`run_command` → 运行命令, etc., 19 entries); task plan statuses (pending / in progress / completed → 待办 / 进行中 / 已完成); wait_for_user_input status text localized
  • Task Plan UI Polish — Width matched to tool cards, tighter padding/font/margins; status pill no longer uppercased (preserves CJK glyphs)
  • File Manager Context Menu Polish — "Refresh" hoisted to top level; custom context menus (Tab/Shell/file links) gain backdrop blur
  • Relaxed Filename Validation — Allow brackets, spaces and other characters legal on Linux/SFTP

Bug Fixes

  • Updater Restart Blocked by Quit Confirmation — Restart on update no longer intercepted by the close-confirm dialog
  • Terminal Paste Captured by AI Bar Globally — Cmd/Ctrl+V in the terminal no longer pulls a screenshot from the system clipboard into the AI bar
  • Plan UI Squeezed Off-Screen — Plan board no longer collapses to 0 height as the chat grows
  • Reasoning Block Leaked XML Fragments — Stripped stray `` / `</arg_value>` tokens; history compression snaps to newline boundaries
  • Tree-View New-Folder Path Drift — Captured parent path before async modal so it can't drift from contextPath 5s timeout; auto-reveal parent after create

v0.2.6

Choose a tag to compare

@paidaxingyo666 paidaxingyo666 released this 11 Apr 06:08

更新日志 / Changelog

新功能

  • Neo-Brutalism 可选主题 — 含圆角变体 + 11 套预设配色(赛博朋克/深渊/薰衣草/午夜/糖果/复古/极光/德古拉/曝光/纯黑系列)+ 自定义调色板,支持跨窗口实时同步

问题修复

  • SSH 锁屏恢复后 OSC 颜色查询回显 — 修复锁屏恢复后 OSC 10/11/12 查询响应泄漏为可见字符

What's New

  • Neo-Brutalism Theme (Optional) — Rounded variant + 11 preset palettes (Cyberpunk, Abyss, Lavender, Midnight, Candy, Retro, Aurora, Dracula, Exposure, Pure Black series) + custom color picker with real-time cross-window sync

Bug Fixes

  • OSC color query echo after screen lock — Fixed OSC 10/11/12 query responses leaking as visible characters after macOS screen lock

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 09 Apr 11:32

更新日志 / Changelog

新功能

  • Agent 系统重构 — 全新 AsyncGenerator 驱动的 agentic 循环,三级上下文压缩(MicroCompact / AutoCompact / TrimHistory),智能工具编排(只读工具最多 5 并发),错误分类独立退避重试,完整 JSONL 审计日志
  • Agent 任务规划 — 新增 todo_write 工具,复杂任务自动拆解为步骤列表;聊天面板实时渲染 TodoBoard 卡片(进度条 + 状态标记 + 折叠展开),会话恢复时自动重建
  • Agent 文件传输 — 新增 upload_file / download_file 工具,复用应用原生 SFTP 链路(独立 64MB SSH 窗口),无大小限制,支持断点续传与进度报告
  • Agent 结构化搜索 — 新增 list_directory / glob_search / grep_search 工具,本地走 Rust(walkdir + globset + regex),SSH 走 shell 回退,自动跳过 .git/node_modules 等目录
  • 通用文件附件 — 聊天框支持拖拽或选择任意类型文件(不限图片),自动落盘并将路径注入 Agent 系统提示,Agent 可直接 upload_file 到服务器
  • Agent 多面板感知 — 单 tab 最多 4 个 pane,所有终端工具支持 pane: N 参数跨面板操作;对话状态改为 tab 级共享
  • Agent 权限系统 — 三级信任模式(ask / acceptSafe / acceptAll)+ 规则引擎 + Plan 模式(仅允许只读工具)
  • Agent 截屏工具 — 新增 read_screen 捕获终端 PNG 截图,TUI 程序(vim/htop/less)检查更准确
  • Per-session PTY 锁 — 同一 SSH 会话的并行工具调用自动串行化,防止 PTY 命令流交叉污染
  • 文件管理器大目录优化 — 虚拟滚动 + 详情弹窗 + 符号链接修复,大目录(万级文件)不再卡顿
  • 内置编辑器增强 — Markdown 实时渲染、图片预览、自动换行
  • 终端字体快捷键 — Cmd/Ctrl+= 放大、Cmd/Ctrl+- 缩小、Cmd/Ctrl+0 重置
  • AI 对话侧栏模式 — 液态玻璃 UI + Markdown 渲染增强
  • 终端字体增强 — 新增字体选项、字重控制、文字锐化
  • 审计日志 — 改用系统文本编辑器打开
  • SFTP 高速传输 — 双通道 WebSocket + 并行传输 + 内存优化

问题修复

  • macOS 全屏红绿灯 — 全屏模式下移除红绿灯预留空间并禁用毛玻璃
  • PiP 侧边栏冲突 — 进入画中画时仅对活跃 tab 侧边栏执行动画,避免多 tab 侧边栏 DOM 同时出现
  • Agent 工具卡片 — 改用 overlay 滚动条并对齐消息宽度
  • 分割面板闪烁 — 修复多面板命令高亮闪烁 + 分割面板虚假滚动条
  • 侧边栏拖拽 — 修复拖拽上传坐标偏移与高亮残留;拖入面包屑自动锁定
  • 附件校验 — 空文件 / 超大文件 / 目录 / 重复文件均有 toast 反馈
  • AI 弹窗毛玻璃 — 修复弹窗透出终端内容
  • Shell Hook — hookless 模式下选中高亮仅覆盖命令区域
  • 锁屏恢复 — 修复 TUI 鼠标模式丢失及内容不完整
  • JumpServer — 修复 v2 资产浏览器平台字段不显示
  • SFTP 符号链接 — 修复创建参数顺序 + 编辑保存不再破坏符号链接

What's New

  • Agent System Overhaul — New AsyncGenerator-driven agentic loop with 3-tier context compression, smart tool orchestration (up to 5 read-only tools in parallel), classified error retry, and full JSONL audit logging
  • Agent Task Planning — New todo_write tool auto-decomposes complex tasks into a step-by-step plan; live TodoBoard card in chat (progress bar + status markers + collapse/expand), auto-restored on session reload
  • Agent File Transfer — New upload_file / download_file tools reusing the app's native SFTP pipeline (dedicated 64MB SSH window), no size limit, with resume and progress reporting
  • Agent Structured Search — New list_directory / glob_search / grep_search tools; local paths use Rust (walkdir + globset + regex), SSH paths fall back to shell commands; auto-skips .git/node_modules/target/dist
  • Generic File Attachments — Chat input accepts drag-drop or file-picker for any file type (not just images); files are persisted to disk and their paths injected into the agent's system prompt for direct use with upload_file
  • Agent Multi-pane Awareness — Up to 4 panes per tab; all terminal tools accept pane: N for cross-pane targeting; conversation state is now shared per-tab
  • Agent Permission System — 3-tier trust modes (ask / acceptSafe / acceptAll) + regex rule engine + Plan mode (read-only tools only)
  • Agent Screen Capture — New read_screen tool captures terminal as PNG screenshot for accurate TUI inspection (vim, htop, less, etc.)
  • Per-session PTY Lock — Parallel tool calls on the same SSH session are automatically serialized to prevent PTY command stream corruption
  • File Manager Large Directory Support — Virtual scrolling + detail popup + symlink fixes; directories with 10,000+ files no longer lag
  • Built-in Editor Enhancements — Live Markdown rendering, image preview, word wrap
  • Terminal Font Shortcuts — Cmd/Ctrl+= zoom in, Cmd/Ctrl+- zoom out, Cmd/Ctrl+0 reset
  • AI Chat Side Panel Mode — Liquid Glass UI + enhanced Markdown rendering
  • Terminal Font Enhancements — New font options, weight control, text sharpening
  • Audit Log — Now opens in system default text editor
  • High-speed SFTP — Dual-channel WebSocket + parallel transfers + memory optimization

Bug Fixes

  • macOS Fullscreen Traffic Lights — Remove traffic light reserved space and disable vibrancy in fullscreen mode
  • PiP Sidebar Conflict — Only animate the active tab's sidebar when entering PiP; prevents multiple tab sidebars from appearing simultaneously
  • Agent Tool Cards — Use overlay scrollbar and match message bubble width
  • Split Pane Flickering — Fix cross-pane command highlight flicker + phantom scrollbar in split panes
  • Sidebar Drag & Drop — Fix upload cursor offset and stale highlight; auto-lock on breadcrumb drop
  • Attachment Validation — Empty files, oversized files, directories, and duplicates now show toast feedback
  • AI Popup Frosted Glass — Fix transparency leaking terminal content
  • Shell Hook — Hookless mode highlight covers command area only, excludes prompt
  • Screen Lock Recovery — Restore TUI mouse tracking and content after screen lock/unlock
  • JumpServer — Fix v2 asset browser platform field not displayed
  • SFTP Symlinks — Fix symlink creation arg order + preserve symlinks on file save

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 29 Mar 13:23

更新日志 / Changelog

新功能

  • 文件管理器大幅增强 — 面包屑导航、键盘导航、文件搜索、多选操作、chmod 权限修改(17 种常用预设一键应用)、书签收藏、传输限速控制、传输完成通知、远程文件复制/移动、文件预览、符号链接支持、文件格式化(JSON/XML/HTML/CSS)、右键菜单增强(空白区域支持+显示隐藏文件)、批量上传冲突支持全部覆盖/跳过、删除确认显示 rm 命令
  • AI 侧栏面板 — 全新 AI 对话框侧栏模式,液态玻璃 UI,Markdown 渲染增强
  • 终端字体增强 — 新增多款编程字体、字重控制、文字锐化选项
  • 服务器信息卡片 — 紧凑卡片模式、工具栏图标化、AI 输入框占位提示动态化
  • 缩略图开关 — 可关闭缩略图预览以节省内存

问题修复

  • SSH 连接超时优化 — 新增 TCP 连接超时和不可达弹窗提示
  • 锁屏恢复 — 修复锁屏恢复后 TUI 鼠标模式丢失及内容不完整
  • SFTP 符号链接 — 修复符号链接创建参数顺序,编辑保存不再破坏符号链接
  • 终端 URL 链接 — 修复点击终端内链接无法打开系统浏览器的问题
  • SSH click-to-move — 修复 SSH 会话下点击移动光标乱码及命令区定位偏移
  • 空文件下载 — 修复 0 字节文件下载卡在 0% 的问题
  • PowerShell Agent — 修复 PowerShell 下 Agent 命令执行 ^U 回显问题
  • JumpServer 连接池 — 仅在代理模式真正改变时才清空连接池
  • Linux 自动更新 — 补充生成 Linux updater 产物(AppImage.tar.gz + sig)

What's New

  • File Manager Overhaul — Breadcrumb navigation, keyboard navigation, file search, multi-select, chmod with 17 presets, bookmarks, speed limit, transfer notifications, remote copy/move, file preview, symlink support, file formatting (JSON/XML/HTML/CSS), enhanced context menu (blank area + hidden files), batch upload conflict resolution, delete confirmation with rm command
  • AI Side Panel — New AI chat sidebar mode with Liquid Glass UI and enhanced Markdown rendering
  • Terminal Font Enhancements — Added new programming fonts, font weight control, and text sharpening
  • Server Info Cards — Compact card layout, icon toolbar tabs, dynamic AI bar placeholder
  • Thumbnail Toggle — Option to disable thumbnail preview to save memory

Bug Fixes

  • SSH Connection Timeout — Added TCP connect timeout and unreachable error dialog
  • Screen Lock Recovery — Restored mouse tracking and TUI content after screen lock
  • SFTP Symlinks — Fixed symlink creation argument order, file save no longer breaks symlinks
  • Terminal URL Links — Fixed clicking terminal links to open in system browser
  • SSH Click-to-Move — Fixed garbage output in SSH sessions and command area positioning
  • Empty File Download — Fixed 0-byte file download stuck at 0%
  • PowerShell Agent — Fixed ^U echo issue when executing agent commands in PowerShell
  • JumpServer Pool — Only clear client pool when proxy mode actually changes
  • Linux Auto-Update — Added Linux updater artifact generation (AppImage.tar.gz + sig)

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 25 Mar 05:55

更新日志 / Changelog

新功能

  • 命令区拖拽选中编辑 — 在命令区拖拽选中文本后可直接删除、替换、剪切、复制
  • 点击移动光标 — 基于 OSC 7768 语义提示符,点击命令行任意位置精确移动光标
  • OSC 序列全面增强 — 支持 OSC 52 剪切板穿透、OSC 8 超链接、OSC 133 语义提示符拦截、图片协议(Sixel/iTerm2)及 Unicode 11
  • Linux 正式支持 — 新增 Linux 构建(deb/AppImage/rpm),支持 amd64 和 arm64,已在 Ubuntu 24.04 上测试

问题修复

  • 修复 macOS 中文输入法首次按键丢失 — WKWebView 非 composing 字符首次按键无效
  • 修复 Tab 拖拽创建新窗口时 viewer 胶囊误显示及弹窗位置被遮挡
  • 修复终端会话销毁时资源泄漏 — 补全 destroy/detach 清理逻辑
  • 修复 Web Viewer 会话列表不显示 — 补全 executor_type 字段并修正 created_at 格式
  • 修复 CI 缓存导致 Web Viewer 嵌入旧版前端 — build.rs 追踪 frontend/dist 变化
  • 修复 SSH 文件管理多文件上传卡 99% 及大文件夹删除问题

What's New

  • Drag-to-select editing in command area — Delete, replace, cut, and copy selected text by dragging in the command input area
  • Click-to-move cursor — Click anywhere on the command line to precisely move the cursor, powered by OSC 7768 semantic prompts
  • Comprehensive OSC enhancements — OSC 52 clipboard passthrough, OSC 8 hyperlinks, OSC 133 semantic prompt interception, image protocol (Sixel/iTerm2),
    and Unicode 11
  • Linux official support — New Linux builds (deb/AppImage/rpm) for amd64 and arm64, tested on Ubuntu 24.04

Bug Fixes

  • macOS Chinese IME first keypress lost — Fixed WKWebView dropping non-composing characters on first input
  • Tab drag-out: viewer capsule false positive and popup clipping
  • Terminal session resource leak on destroy/detach
  • Web Viewer sessions not appearing — Fixed missing executor_type and invalid created_at format
  • CI cache serving stale Web Viewer frontend — build.rs now tracks frontend/dist changes
  • SSH file manager multi-upload stuck at 99% and large folder deletion