Skip to content

Releases: ccch1mneyyy/dsh-TUI

v0.15.0 — 独立入口、原生光标、模型与侧问改版

Choose a tag to compare

@github-actions github-actions released this 13 Oct 14:11

自 v0.14.0 以来,dsh-TUI 有了自己的启动入口,带来重做的模型选择器、终端原生光标动画、任务完成通知、侧问面板改版和跨内核会话预加载。本版同时扩展插件查询命令、发布第一版冻结的插件契约,并补齐启动页图片输入、侧栏拖拽、樱花粉主题、权限记忆与上游断链重试。

升级与行为变化

  • 插件命令改名:/plugins 改为 /plugin,本版已移除旧命令,没有保留弃用别名。手动命令、快捷调用和自动化请改用 /plugin,例如 /plugins check … 改为 /plugin check …。(#1504 by @Lucas2011wastaken)
  • TUI 设置迁移:/settings 的 dsh-tui 分区改存 ~/.dsh-tui/settings.json,DSH、Claude、Codex 共用。首次启动自动导入 profile 补丁和旧 ~/.dsh/settings.yaml 中的可编辑字段;!!js 表达式不导入。旧 profile 中残留的字段仍可能在 DSH 内核下提供部署默认值,建议迁移后清理重复配置。(#1441 by @MomentDerek;#1483 by @ccch1mneyyy)
  • 启动与恢复更严格:默认从本包入口启动;DSH_TUI_HOST_ENTRY=0 可恢复原启动方式,DSH 宿主模块不可用时自动回退并说明原因。裸 --resume、-c、--continue 的恢复目标必须属于最终所选后端;没有可恢复会话或后端身份不匹配时明确报错并非零退出。安全模式的“重试正常启动”仍保留告警后冷启动的退路。(#1441 by @MomentDerek;#1449 by @Lucas2011wastaken)
  • 默认选择优先沿用上次使用:DSH 的模型、preset 和推理强度持久化选择现在优先于静态部署配置;恢复会话继续采用自身记录的模型路由。DSH_TUI_PRESET 仍可指定本次启动的 preset,/settings 的显式 effortDefault 仍优先于上次推理档位。(#1430 by @ccch1mneyyy)
  • 官方请求元数据恢复默认:TUI profile 继承 DSH 官方的插件包清单、增量会话日志与反馈遥测配置。前两项随 deepseek-official 请求发送到配置的 baseURL,包括第三方网关;反馈 OTel 只在明确反馈后上传。需要关闭请求元数据时,在 profile 中分别设置 plugin-package-inventory-deepseek.enabled: false 和 session-log-deepseek.enabled: false;DSH_TELEMETRY_MODE=DISABLED 只控制 OTel,不控制这两项请求元数据。(#1375 by @ccch1mneyyy)

新功能与体验

启动、模型与会话

  • 界面先出现,后端随后加载:dsh-tui 先挂载可交互界面,再在同一进程加载 DSH;Claude/Codex 组合本包与 profile 声明的第三方插件,不加载完整 dsh-base。加载期间就能输入草稿、使用可用的本地命令,主题和面板等插件贡献随后加入。(#1441 by @MomentDerek)
  • 三个内核共用本地设置:切换内核后,语言、布局和其他 TUI 设置使用同一份 settings.json。切换到另一 profile 时,其部署配置补充在用户显式设置之下;设置文件损坏会在 /settings 显示提示,覆盖前保留原文件副本。(#1441 by @MomentDerek;#1483 by @ccch1mneyyy)
  • 内核直达命令:新增 /dsh、/claude、/codex,记住选择并重启进入目标内核的新会话。选择当前内核保留本会话,回合运行中拒绝切换;未安装 Claude 时可进入安装向导,Codex 缺失或版本过旧时给出对应提示。(#1497 by @CikeSeven)
  • 模型与推理等级同页选择:/model 重做为提供商标签、模型列表和推理档位三个区域。DSH 的“最近使用”排在首位,当前模型去重置顶,Tab / Shift+Tab 切提供商;Claude/Codex 直接展示自身模型目录。↑/↓ 选模型,←/→ 调推理等级,Enter 应用、Esc 取消;点击推理档位会直接应用当前模型和强度。短终端优先保留聚焦模型与确认入口。(#1436、#1466 by @CikeSeven)
  • DSH 真正的同会话模型切换:/model 直接切换后续请求的路由,保留会话 ID、历史、权限和草稿,避免复制历史产生同名会话链。停放后重新挂载仍保留选择,下一次请求记录实际模型及变化提示;DSH 低于 0.1.2-alpha.3 时明确提示升级。(#1275 by @xuzijian2019)
  • 三个内核的会话列表都支持首屏快照:DSH、Claude、Codex 重开后先显示上次完整读取的会话列表,快照按后端与存储目录隔离,后台继续核对变化。(#1458 by @ccch1mneyyy)
  • 当前工作区优先加载与启动预热:启动时预加载历史,打开 /resume 复用在途读取并接收已有结果。三个后端先显示当前工作区,再补其他目录;Codex 复用已启动连接,数据库快读与常规首批查询并行,新会话和标题增量显示。后台更新保持用户已手动选择的行。(#1464、#1494 by @CikeSeven)
  • 会话管理默认选中最近会话:打开 /resume 后可直接 Enter 恢复当前工作区最近使用的会话;切栏或鼠标移入列表保留选择,换工作区时选中该目录最新会话,没有历史时才选“新建会话”。(#1423、#1468 by @CikeSeven)
  • 启动页可关闭:/settings 新增 launchpad 开关,默认开启;关闭后普通启动直接进入聊天页,重启生效。指定恢复会话或首句的启动继续直达对话。(#1476 by @ccch1mneyyy)
  • 启动页支持图片附件:剪贴板图片和粘贴的图片路径可暂存为 [Image #N],随首条消息发送;图片标记支持整体移动与删除。命令不接受图片时保留草稿及附件,后端加载完成后也保留文字、光标位置和图片。加载期间提前按 Enter 不自动排队发送,就绪后再次确认即可。(#1460、#1492 by @CikeSeven)

终端交互、侧栏与外观

  • 原生光标动画与拖尾:输入框继承终端配置的光标形状、颜色、闪烁、动画和拖尾,inline 与 fullscreen 均支持。模型选择器和会话管理界面导航时,原生光标跟随聚焦标签、模型、档位、工作区或会话行,停稳 0.5 秒后隐藏;文本输入光标持续可见。动画与拖尾由终端自身设置开启。(#1428、#1443、#1468 by @CikeSeven)
  • 复制后保留选区,拖选时光标跟随:全屏拖选自动复制后继续显示选区,Esc 取消或重新拖选替换;高亮跳过行尾填充和空白行,保留代码缩进。拖选时原生光标跟随实际文字边缘,松手后回到输入框。浮层优先处理 Esc,取消正文选区的那次按键不会打断生成。(#1440 by @CikeSeven)
  • 侧栏分隔线可拖拽:全屏分栏时左右拖拽分隔线即可实时调宽,聊天列至少 64 列、侧栏至少 28 列;调宽保留焦点和未发送草稿,比例作用于当前会话。(#1391 by @CikeSeven)
  • 面板标签显示实际图标:未选中面板改用各自注册的图标,内置和插件面板都适用;悬停显示名称,未读状态通过颜色、加粗和计数呈现。(#1393 by @CikeSeven)
  • /btw 侧问面板改版:聚焦侧栏后默认进入阅读层,←/→ 切面板、↑/↓ 和翻页键滚动;Enter、Tab 或点击输入框进入编辑层。新增带边框与焦点高亮的输入框、线程状态徽章、轮次分隔线和空态说明;空线程隐藏多余头部,全屏侧问场景仍默认进入编辑。中文 IME 的预编辑位置也跟随侧问输入框。(#1417、#1431 by @ccch1mneyyy)
  • 樱花粉主题家族:新增深色 pink-night、浅色 pink-day 和 16 色回退 pink-ansi,通过 /theme 显式选择。主题选择器适配短终端,焦点行保持可见;品牌主题按实际色板明暗选择对应版本。(#1294 by @xiaoxiaohaigui)
  • 用户消息配色随内核区分:雾蓝主题下使用陶土红用户标签,Claude 使用雾蓝,Codex 使用金色,浅色版同步调整;用户行的排版和加粗保持原有行为。(#1420 by @ccch1mneyyy)
  • 上下文条显示更准确的内容构成:接入 DSH contextBreakdown,按后端占用量分配系统、提示、回复、思考和工具的分段及悬停明细;没有分类时显示实测已用量。分类仍是估算,不能当作分项账单。(#1351 by @xiaoxiaohaigui)
  • 长目标可读全文:fullscreen/分栏下悬停被截断的目标正文可看全文;裸 /goal 把目标、状态、阶段、轮次或预算及可用命令打印到转录中,inline 也可阅读。超长单行继续使用转录既有的折叠与展开机制。(#1223 by @xuzijian2019)

通知、权限、工具与插件

  • 任务完成通知:DSH、Claude、Codex 的实时主任务成功结束,且没有排队输入或活动目标时提醒。默认仅在终端失焦时通知;/settings 的 taskNotifications 可选 unfocused、always、off,notificationMethod 可选 auto、osc9、bel。通知带本地化标题和最新回复的单行纯文本摘要;自动适配 Ghostty/WezTerm、Kitty、iTerm2/Warp,其他终端响铃。tmux 需要开启 focus-events 与 allow-passthrough;不支持焦点报告时可选 always。回放、取消和失败不通知。(#1517 by @CikeSeven)
  • DSH 权限选择跨会话记忆:/permission、Shift+Tab 静态模式和官方命令完成的持久切换写入 ~/.dsh-tui/permission.json,新会话经官方路径应用上次选择;临时计划模式不记入,显式 DSH_PERMISSION_MODE 优先,已不在名册中的权限身份跳过。(#1415 by @ccch1mneyyy)
  • DSH 上游断链自动重试:默认给当前实际使用且没有显式 retryPolicy 的 llm-pi-ai 渠道补充重试策略,覆盖 STREAM_CLOSED 等暂时性失败,首次请求后最多再重试 5 次。已有策略保持有效,闲置渠道不写入;upstreamRetry: false 可关闭策略播种。(#1415 by @ccch1mneyyy)
  • Windows 全功能 winbash:随包提供可手动挂到 profile host 层的 Git Bash 工具,对任意 Agent preset 生效。支持 run_in_background、job_output / job_kill,前台超时可转后台继续运行;缺少 job registry 时降级为前台执行。它需要按配置文档挂载,并与梁神模式内置的同名 bash 工具择一启用。(#1376 by @ccch1mneyyy)
  • 插件列表、详情和安装源查询:DSH 下新增 /plugin list,简洁显示 profile 额外安装的插件;/plugin info <名字或 spec> 查询已装条目或待装包,/plugin registries 查看安装源,/plugin check <路径> 校验清单。子命令与含 @scope/ 的已装包名支持补全,无参保留完整诊断报告;本版这些命令用于查询与校验,安装、卸载和启停动作尚未接入。(#1504 by @Lucas2011wastaken)

插件与后端开发

  • 后端注册与安装配方声明:内置后端通过 manifest.ts 与生成索引进入运行时注册表,模型、内核目录及资源清理按声明接入;安装向导按后端声明的包名、版本和执行器定位目标。关闭向导会取消在途安装,确认面板显示实际安装包。(#1380、#1408 by @Lucas2011wastaken)
  • 新增 Backend 贡献族与准入链:提供 BackendSpec、validateBackendSpec、backendAdmission 等公开声明与校验面,能力和权限声明进入准入判定,Backend 坐标接入 registry 与 host descriptor。Claude、Codex 已使用公开接缝;第三方后端安装后自动出现在 kernel picker 的完整装配链路仍未交付。(#1449、#1471、#1480、#1500 by @Lucas2011wastaken)
  • 第一版插件 API 形态冻结:tui.dsh/v1alpha1 明确冻结公开面,设置区块、全屏场景、托管对话框、状态行、快捷键和条目渲染器纳入承诺:已发布形状只增不删、语义保持,破坏性变化使用新坐标,并先经过一个已发布次版本的弃用窗口。Backend 验收进入构建门禁;toast 与侧栏 Panel 继续处于实验阶段。(#1477、#1502 by @Lucas2011wastaken)

修复与稳定性

  • 启动草稿与命令补全:自动接入后端时保留草稿与附件;启动页 Tab 补全、Enter 执行后清空,与聊天页一致。窄卡片中的补全面板不再溢出或产生幽灵空行;启动页的 /resume、/home、/jobs 正确打开整屏视图。(#1492、#1425、#1413 by @CikeSeven;#1344 by @xiaoxiaohaigui)
  • 剪贴板位图与 HiDPI 图片:BMP/DIB 先通过现有纯 JS 解码器转 PNG 再进入附件管线,修复合法剪贴板位图被拒绝;Kitty 立绘按预留格子的物理像素缩放,在 HiDPI 终端中尺寸正确,并受单图与整帧预算约束。(#1490 by @ccch1mneyyy;#1498 by @CikeSeven)
  • 内核切换后的图片探测:交接前停止旧进程预读 stdin,新进程能收到图片协议应答,立绘无需额外按键或鼠标事件即可恢复;退出和交接后停止迟到的迁移提示,避免旧进程崩溃。(#1509、#1438 by @CikeSeven)
  • 流式阅读与换行:流式更新保留消息行的实测高度,向上阅读时保持手动滚动锚点;正文、任务卡、todo、宠物气泡、表格和行内公式恰好满行时不再多出续行分隔空格,复制保留原文分隔。(#1296 by @xiaoxiaohaigui;#1279、#1290 by @xuzijian2019)
  • 空会话不再污染历史:DSH JSONL 下,启动或 /new 的权限初始化事件先留在内存,后续真实会话活动才保存完整日志;只有初始化的会话不会因 flush 落盘,dsh web 侧栏不再积累“未命名”空行。(#1395 by @CikeSeven;#1407 by @baobaolaodie)
  • 前台 Shell 不再留下重复任务卡:前台 Bash 调用完成并由内核移除 job 后,转录不会残留同命令、同输出的后台任务卡,也不会误报“后台任务完成”。(#1430 by @ccch1mneyyy)
  • Codex 评审、队列与侧问:/review 完成或 Esc 取消后释放输入队列,清理命令预览,排队消息可用 Alt+↑ 取回;新 thread 上的 /btw 临时只读 fork 正常工作。(#1507 by @CikeSeven;#1421 by @ccch1mneyyy)
  • Codex provider 凭据桥接:未在 shell 导出的 env_key 可从活动 DSH home 的凭据库读取,并回退默认 ~/.dsh;仍找不到时启动提示原因和变量名,由 Codex 在实际请求时处理认证。(#1421、#1433 by @ccch1mneyyy)
  • Claude CLI 探测与内核可用性:识别 PATH 之外的 ~/.local/bin 原生安装目录,并跟随 npm shim 找到真实脚本;SDK 缺失时显示发现的 CLI。已安装内核不再因检测不到凭据而被置灰,凭据也可来自 CLI 设置、helper 或渠道档案。(#1512 by @baobaolaodie;#1400 by @ccch1mneyyy)
  • 中文 Markdown 与子代理标题:**标签:**正文 等紧邻中文标点的粗体正确闭合;并发派发和迟到启动的子代理卡片标题正确匹配任务身份。(#1385 by @ccch1mneyyy;#1389 by @MomentDerek)
  • 计划开关与启动排版:/plan on、/plan off 只切换计划状态,不再把 on/off 作为提示词发送;收紧 ANSI Shadow 字距,并按品牌与节日标题预算启动页,保住窄屏输入区域。(#1372 by @Lucas2011wastaken;#1411 by @ccch1mneyyy)

安装与更新

npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui@0.15.0

已安装用户可使用 /update 或 dsh-tui update。Release 资产提供一键安装整合包、Linux/macOS/Windows 便携包及 SHA256SUMS。

What's Changed

Read more

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:26
c2eee95

自 v0.13.0 以来,dsh-TUI 从「DSH 的前端」长成了多内核 TUI:同一套界面现在也能把整个会话跑在 Claude 或 Codex 上,并带来了 Agent 团队工作台、/btw 侧线程面板、轨迹与任务观测,以及重做的 Markdown 渲染。

亮点

  • 内核(kernel):Claude 与 Codex 后端(实验性) — 会话不再只能跑在 DSH 上。用 /kernel(或启动页「内核」格、右下角内核区)打开内核选择器,选中即记住并重启进入,在新内核里开新会话,原会话仍留在 /resume;dsh-tui --backend dsh|claude|codex、配置行 backend:、DSH_TUI_BACKEND 也可指定。一个进程只跑一个内核,回合运行中不能切换。#1311 #1313
    • Claude:由 Claude Agent SDK 驱动本机 claude CLI,项目里的 CLAUDE.md、设置、hooks、MCP 服务器与插件按 CLI 自己的方式加载。SDK 是可选依赖,未安装时在内核选择器里对着置灰的 Claude 行按 Enter 就能一键装上;凭据依次取 /channel 渠道档案、/login 订阅登录、ANTHROPIC_API_KEY 等环境变量、本机已有的 claude login。#1328
    • Codex:经官方 codex app-server 复用你自己 Codex 的配置、登录、AGENTS.md、skills、hooks 与 MCP,thread 与官方 CLI 共用(codex resume <id> 可换回官方前端)。需要自装 CLI(npm install -g @openai/codex@0.160.1,基线 0.160.1、最低 0.144.0);/login 提供 ChatGPT OAuth、设备码与 API key 三种方式,dsh-TUI 不写 ~/.codex/config.toml。吞吐 TPS 计入隐藏推理时间、排除工具执行时间。#1352 #1356
    • 新增 /channel 渠道档案:可从 settings.json 导入、新增、管理与查看模型映射,用中转或自定义端点跑 Claude 与 Codex;连接变了就重启进入新会话。权限模式也有了非 DSH 入口:/permission 命令与底栏可点段、Shift+Tab 循环,审批面板支持「始终允许」(写明 CLI 会记住什么)与带理由的拒绝。曾经选过的 bypassPermissions 不再被记忆沿用。#1311
    • 边界:两者都标为实验性;Claude 下 DSH 专属命令(/tree、/preset、/provider、/workspace、/agentview、/bg 等)不可用,Codex 下 Shift+Tab 只切 Plan(Full Access 须显式选择)。详见 Claude 后端 与 Codex 后端。
  • Agent 团队工作台 — 子代理有了主屏转录视图:全屏阅读子代理的完整转录(历史与实时尾部合并、工具卡按 call id 配对),就地给它发消息,向上翻页不再被新输出拽回底部;宽度足够时右侧多出「信息 / 工具 / 父代理与同级」工作台,可在同级与父代理之间就地切换。SendMessage 卡不再显示原始 JSON,而是「发给谁 + 消息预览 + 状态徽章」;代理间消息在转录里显示为 from → to。#1311
  • /btw 侧线程面板 — /btw 从单轮侧问变成常驻侧栏线程:可滚动的问答记录、未读跳转、新话题、⤢ 进整屏场景,「发送到聊天」把答案附到下一次主聊天提交。携带的上下文由 dsh-tui.btw.contextTurns(1–8,默认 4)与 dsh-tui.btw.contextBudget(1000–200000,默认 24000)控制,超出窗口的旧组不进请求、但仍留在面板里。#1311
  • 轨迹与任务观测 — /trace / Ctrl+T 现在在每个内核都打得开:没有轨迹数据的内核会明说「当前内核不提供轨迹数据」,全屏头部标出轨迹来源;审批与问卷的等待行显示实时「已等待 X」,检视器给出答复、来源与问题快照;a 在代理 → 父回合 → 全部后代 → 会话之间循环范围。任务卡头部点击直达详情,详情新增最近进度与最近 8 条时间线(启动 / 进度 / 输出 / 缺口 / 结束)。每回合末尾可显示一行右对齐的用量小记(dsh-tui.turnUsageRow,默认关闭;/tokens、/status 与底栏悬停数字不受影响)。#1311
  • Markdown 渲染重做 — 标题 H1–H6 分级降调并压掉多余空行;列表续行悬挂到正文列、嵌套每级不再多算一层;任务清单显示勾选状态,~~删除线~~ 生效;引用按层递暗、引用内空行保留竖条;图片变成 [img] 替代文字 并用 OSC 8 链到原图地址。代码块默认改为「轻框」——顶部角标加语言标签、每行左侧竖杆,不额外占行;dsh-tui.codeFrameStyle 切到 full 可回到封闭盒子,终端太窄时恒为原来的纯 fence。#1311
  • 主题与外观 — 上下文进度条分段、最高思考档的「点火」动画、正文链接色与输入框光标块改由主题接管(#1260 by @xiaoxiaohaigui;新增 contextBar*、ignition/ignitionDim、cursor 色键,均可不填)。开屏与主题跟随内核:Claude 整套换橙(CLAUDE CODE 标题、Claude 娘立绘、claude-dark/claude-paper),Codex 换薰衣草紫(CODEX 标题、「Build anything with Codex」、codex-lavender/codex-paper);dsh-tui.brand 可锁定其中一种外观。#1352
  • 侧栏与启动台 — dsh-tui.sidePanel.panels 从手写逗号串变成勾选器(插件注册的面板自动出现,取消即移除,仍保留「高级」行编辑原始列表),内置面板默认全部启用;面板栏改为居中标题加两侧圆点/箭头并可全屏。启动台入口行多出「内核」一格,参数行装不下时截短最长的一段而不再整段吞掉权限名。#1311 #1315 #1354
  • 模型能力编辑 — 在 /provider 的模型列表里聚焦一项并按 Tab,可直接编辑上下文窗口、最大输出 token、推理档位与图片输入能力,不必再手改配置(#1304 by @CikeSeven)。

修复

  • 凭据与安全:渠道令牌不再出现在 CLI 命令行上(改经 0600 临时文件传递,会话结束即删);切换渠道时旧凭据不再被发往新端点,渠道拿不到自己的凭据就拒绝启动;删除令牌前先扫描全部引用,不再连带删掉别的渠道仍在用的凭据;/login 重连失败只显示固定说明与 HTTP 状态,不再把 OAuth 响应体抛到界面上。#1311
  • 崩溃与终端恢复:终端收窄跨过代码框回退阈值不再抛 React #300 直接退出;崩溃时恢复终端状态并把完整堆栈写入 ~/.dsh-tui/crash.log,可恢复时原地重挂载回对话;全屏内核切换期间按 Ctrl+C 不再把 shell 留在备用屏,替换进程首帧前失败会一并复位鼠标、焦点、括号粘贴与光标;/restart、/update 后回到当前内核而不是拿另一个内核的会话 id 启动失败。#1311
  • 输入与会话:Windows 终端多行粘贴保留换行,不再静默删字(#1251 by @baobaolaodie);回合运行中输入 /model、/new、/compact 等已知命令按命令执行,不再被当成插话打断当前回合(#1258 by @Lucas2011wastaken);会话列表能恢复快速窗口之外的模型信息,较长或旧会话不再缺模型显示(#1276 by @xuzijian2019);被撤权或已卸载的插件即使延迟返回,也不能再影响你的下一次提交或拦截会话切换(#1297 by @T-Auto)。
  • 显示与计量:Ghostty 下打开 Star 弹窗不再触发其 zlib 解码器崩溃(#1347 by @CikeSeven);macOS 图片入站时第二份 libvips 的原生警告不再刷满输入框(#1267 by @xuzijian2019);上下文条按后端实测占用对齐,压缩后不再残留过期估算(#1363 by @CikeSeven);Codex 被原生守护进程占用的空闲 thread 可重新加入(#1358 by @CikeSeven);启动页参数行不再吞掉权限段(#1299 by @baobaolaodie)。

兼容与升级

  • 侧栏默认面板变多:dsh-tui.sidePanel.panels 的默认值从 todo,jobs,agents 变成 todo,jobs,agents,info,trajectory,workspace,btw,companion(含新的 btw 与宠物面板)。侧栏本身仍默认收起,显式写过该 key 的配置原样生效;想回到旧观感,在 /settings 的「启用的面板」里取消勾选即可。
  • 外观会跟着内核走:内核是 Claude/Codex 时,开屏与配色默认换成对应品牌。只有本次会话 /theme 手选过、设了 DSH_TUI_THEME,或把 dsh-tui.brand 固定为某个值,才会锁住外观;仅靠 ~/.dsh-tui/theme.json 持久化的历史主题选择不被视为显式锁定。
  • 行为变化(无需迁移,但会感觉到):回合运行中,已知命令永远是命令,由命令自己的门禁裁决,只有不构成命令的文本与技能手势才作为插话(#1258 by @Lucas2011wastaken);Esc 中断后排队消息不再自动重发,改为暂存在输入框上方,⏎ 全发、↑ 取回(#1311);非 DSH 内核下 ← 与 /bg 打开统一会话管理但不会把当前会话转后台(#1354);Claude 内核下回合运行中拒绝 /resume。
  • 新前置条件(按需,不影响 DSH 升级):Claude 内核需要可选依赖 @anthropic-ai/claude-agent-sdk@0.3.287(一键向导,或手动 cd ~/.dsh/profiles/dsh-tui && pnpm add @anthropic-ai/claude-agent-sdk@0.3.287);Codex 内核需要自装 @openai/codex(基线 0.160.1,最低 0.144.0),本包不捆绑 Codex 依赖;supports-hyperlinks 升到 ^4.6.0,新增运行时依赖 ws。
  • 没有破坏的地方:配置 key 无重命名、无删除,只新增 dsh-tui.brand、dsh-tui.codeFrameStyle、dsh-tui.turnUsageRow、dsh-tui.btw.contextTurns、dsh-tui.btw.contextBudget;快捷键与环境变量无删除;DSH 兼容线与 @deepseek-ai/* peer 范围不变(主验证目标仍是 DSH 0.2.0-rc.2),Node 要求不变;插件与主题接缝只做扩展——插件主题 base 新增四个内置主题名,新色键全部可选,旧键与弃用别名继续有效。
  • 验证范围:Codex 内核用真实的 0.160.1 app-server 过了 9 项无凭据离线检查与 8 项守护重连检查(无模型回合、不产生费用),真实订阅登录、带凭据的模型回合与真实 TTY 交互本轮未运行;其余内核与界面的改动以仓库内的聚焦回归脚本为准。

安装

npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui@0.14.0

已安装的用户可以直接 /update 或 dsh-tui update。

What's Changed

  • refactor: backend hosts for channels, modes and mcp by @ccch1mneyyy in #1322
  • refactor(claude): split session and translator responsibilities by @ccch1mneyyy in #1323
  • fix(channel): own delayed login reconnect by @ccch1mneyyy in #1324
  • fix(ui): fold job commands and restore agent panel metadata by @ccch1mneyyy in #1321
  • feat(ui): claude brand identity, panel fixes and channel hardening by @ccch1mneyyy in #1326
  • feat(kernel): one-click SDK install wizard for the Claude backend by @ccch1mneyyy in #1328
  • fix(claude): real usage numbers, effort readout and phase-based spinner copy by @ccch1mneyyy in #1337
  • ci: fail fast on a corrupted build artifact (digest canary) by @ccch1mneyyy in #1334
  • fix(images): reuse host sharp for image ingress by @xuzijian2019 in #1267
  • fix(scripts): sweep relocated-preset leftovers instead of stranding them by @ccch1mneyyy in #1338
  • docs(vscode): add the image protocol to the known-differences table by @baobaolaodie in #1331
  • fix(sessions): recover model metadata outside the tail window by @xuzijian2019 in #1276
  • fix(adapter): 决策等待期间被撤权/卸载后不再采纳迟到的 decision by @T-Auto in #1297
  • fix(scripts): bound the sync-profile gate so a hung child fails loudly(verify-sync-profile 门禁加上限,挂起不再静默吞掉整条构建) by @baobaolaodie in #1287
  • fix(input): decode leaked win32 records so a multi-line paste keeps its newlines(多行粘贴保留换行,不再静默删字) by @baobaolaodie in #1251
  • fix(launchpad): keep all four parameter segments by truncating the long one(参数行装不下时截尾超长段,权限段不再被整段吞掉) by @baobaolaodie in #1299
  • feat(provider): edit model capabilities in wizard by @CikeSeven in #1304
  • feat(theme): make the context bar, effort ignition, links and caret theme-driven by @xiaoxiaohaigui in #1260
  • fix(ink): avoid zlib image uploads on Ghostty(修复 Ghostty 打开 Star 弹窗时崩溃) by @CikeSeven in #1347
  • feat(codex): native Codex kernel (app-server backend), brand and metering by @ccch1mneyyy in #1352
  • fix(input): run commands as commands while a turn is running(回合运行中的命令不再被当成插话) by @Lucas2011wastaken in #1258
  • fix(ui): enable sidebar panels and open backend session manager by @ccch1mneyyy in #1354
  • fix(codex): include hidden reasoning in TPS timing by @CikeSeven in #1356
  • fix(codex): rejoin idle threads held by the native daemon by @CikeSeven in #1358
  • fix(context): align context bar with backend occupancy by @CikeSeven in #1363
  • test(ci): reliably observe screen transitions and cold-start frames by @CikeSeven in #1365
  • chore(release): prepare v0.14.0 by @CikeSeven in #1366

Full Changelog: v0.13.0...v0.14.0

v0.13.0 — 侧栏大改版(新面板/宠物/鼠标)、主题实时预览、任务卡成组与花费估算修正

Choose a tag to compare

@github-actions github-actions released this 04 Oct 13:01

自 v0.12.0 以来,dsh-TUI 完成了侧边栏的一轮大改版:新面板、可互动的宠物、鼠标操作与启动页吉祥物一并就位;主题选择支持实时预览,后台任务卡按组折叠,输入历史按项目隔离,并修正了缓存计价等一批统计与输入问题。

亮点

  • 侧栏大改版:新增信息(ⓘ)、轨迹(∿)、工作目录(⌗)三个面板,面板标签支持点击与悬停、⤢ 一键全屏,侧栏文字可直接框选复制。#1255
  • 宠物与启动页吉祥物:宠物沉底常驻、可拖动互动、通知改为气泡、新增鲸娘皮肤;启动页也有吉祥物坐镇。#1255
  • 主题实时预览:主题选择器旁实时渲染代码与工具卡预览,改主题不必再来回试探。#1166
  • 任务卡成组:连续的后台任务卡自动成组折叠(圆角组框、组头汇总),长行自动换行,点击卡片直达 /jobs 详情。#1213 #1219
  • Ctrl+Z 草稿撤销:输入框里的 Ctrl+Z 从挂起 TUI 改为词级撤销草稿,误删内容可一步步找回。#1233
  • 历史按项目隔离:↑/↓ 与 Ctrl+R 的输入历史只记当前项目,不再被其它仓库的命令刷屏。#1248

修复

  • raw-mode 切换不再重置 stdin 的 UTF-8 解码器,中文输入不会在切换后变乱码。#1280
  • 缓存分项改按不重叠口径计价,状态栏花费估算修正了约 2.7 倍的低估。#1253
  • 上下文占用统一读取内核 contextPressure 投影,状态栏、活动行与 /tokens 口径一致,token 估算对中日韩文本更准确。#1173 #1179
  • 分片的 SGR 鼠标上报不再误入输入框;WSL 粘贴重试有上限,位图解码不再卡死。#1226 #1147
  • 自更新更稳:版本年龄门禁豁免锁定与目标版本,替换进程的 stdin 保持 raw 交接。#1218 #1206
  • 落定的思考 spinner 正常停住;状态栏悬停详情不再显示未上报的缓存分段;statusBar.cost 开关可持久化。#1184 #1176 #1164
  • doctor 不再把旧版根配置 ~/.dsh-tui/cordis.yml 报成缺失;markdown 自动文件链接要求文本边界,误链接减少。#1243 #1182
  • 编辑层 Esc 与首屏按键监听顺序稳定;落地页 /plan 不再被误判不可用。#1157 #1180
  • 高兴鲸娘立绘重抠,去掉边缘白晕。#1210

性能与构建

  • verify:build 并行化并去重 CI 工作,门禁明显提速;CI 里的终端尺寸读取统一走 useTerminalSize()。#1238 #1240

文档

  • 两份 README 新增 maintainers / contributors 章节;规格口径改为仓内 tui-profile 自维护,社区贡献指引同步更新。#1292 #1256

安装

npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui@0.13.0

What's Changed

  • fix(assets): recut the happy maid portrait to remove the white fringe by @ccch1mneyyy in #1210
  • fix(update): keep the replacement TUI's stdin raw across the handoff by @2813892719 in #1206
  • feat(jobs): 连续任务卡成组折叠 + 长行自动换行,点击卡片聚焦 /jobs by @ccch1mneyyy in #1213
  • fix(clipboard): bound WSL paste retries and bitmap decoding by @xuzijian2019 in #1147
  • fix(update): exempt both locked and target versions from release-age gate (#1205) by @zouyuxuan122 in #1218
  • fix(input): keep fragmented SGR mouse reports out of the prompt(分片鼠标上报不再落进输入框) by @baobaolaodie in #1226
  • fix(supervisor): clarify workspace history and actions by @xuzijian2019 in #1153
  • docs(guide): sync bundled user guides(同步指南副本修复 CI) by @CikeSeven in #1230
  • fix(input): stabilize listener order and preserve editor Esc(稳定首屏监听与编辑层 Esc) by @MomentDerek in #1157
  • perf(build): parallelize verify:build and stop repeating CI work by @ccch1mneyyy in #1238
  • ci(gates): read terminal size only through useTerminalSize() outside ink/ by @ccch1mneyyy in #1240
  • feat(history): scope ↑/↓ and Ctrl+R input history to the current project by @ccch1mneyyy in #1248
  • docs(readme): note the official lead's first recommended community plugin by @T-Auto in #1249
  • fix(input): make Ctrl+Z a word-level draft undo instead of suspending the TUI by @Lucas2011wastaken in #1233
  • feat: 侧栏大轮次——新面板/宠物全面改造/启动页吉祥物/渲染与选择修复 + 落地页帮助盖屏 by @ccch1mneyyy in #1255
  • docs(profile): TUI 准入规范内联为仓内纯文件 tui-profile/,取消 dsh-ecosystem-spec submodule 挂载 by @T-Auto in #1256
  • chore: remove three unreferenced root files (splash.png, wechat-group3.jpg, .npmignore) by @T-Auto in #1257
  • fix(context): read context occupancy from the official contextPressure projection (failed turns included) by @T-Auto in #1173
  • fix(context): make the segmented token estimate CJK-aware by @T-Auto in #1179
  • fix(commands): derive per-agent command capabilities and stop advertising unavailable ones by @T-Auto in #1180
  • fix(settings): declare statusBar.cost in Config so the toggle persists by @xiaoxiaohaigui in #1164
  • fix(statusline): hide unreported cache-split segments in the hover detail by @xiaoxiaohaigui in #1176
  • fix(markdown): require text boundaries for automatic file links by @xuzijian2019 in #1182
  • fix(doctor): stop flagging the legacy ~/.dsh-tui/cordis.yml as missing(不再把裸组合时代的根配置报成缺失) by @xiaoxiaohaigui in #1243
  • fix(cost): price cache tokens as disjoint counts(缓存分项按不重叠口径计价,修正状态栏花费估算少算约 2.7 倍) by @baobaolaodie in #1253
  • fix(thinking): 停止已结束思考块的旋转符号 by @xuzijian2019 in #1184
  • fix(jobs): 任务组改用圆角括号(只括任务卡,不多占行) by @ccch1mneyyy in #1219
  • feat(theme): live code and tool-card preview beside the theme picker by @AdamPlatin123 in #1166
  • fix(scripts): stop sync-profile from writing through hardlinks by @T-Auto in #1262
  • chore(profile): 上游 dsh-std 迁移至 T-Auto/dsh-std,同步 Profile 与 vendor 挂载链接 by @T-Auto in #1265
  • fix(input): keep the stdin UTF-8 decoder across raw-mode toggles by @wp3171216237 in #1280
  • docs: add maintainers and contributors sections to both READMEs by @T-Auto in #1292
  • chore(release): prepare v0.13.0 by @ccch1mneyyy in #1309

New Contributors

Full Changelog: v0.12.0...v0.13.0

v0.12.0 — 内置账号登录、实时任务面板与随包 AI 手册

Choose a tag to compare

@github-actions github-actions released this 30 Sep 01:20

自 v0.11.2 以来,dsh-TUI 将账号登录收进标准 profile,补齐后台任务的实时状态,并随包提供可供 AI 按需查阅的使用手册。

亮点

  • 内置账号登录:通过 /provider 或 /auth 管理 ChatGPT/Codex、Claude、Grok 订阅登录;在 DSH 0.2.0-rc.1+ 上可完成 DeepSeek 浏览器授权,再通过 /model 选择独立的 deepseek-account 路由。标准 profile 无需另装 dsh-auth,原 OAuth 凭据继续可用。#1190
  • 实时任务面板:在支持内核事件与输出环的版本上,/jobs 实时显示任务进度、stdout/stderr 和输出丢失提示;同时修复有主任务无法列出或终止的问题。#1186
  • 随包 AI 手册:默认通过 dsh-tui 或 dst 启动后,可以直接问 AI 本工具的用法,也可以运行 /dsh-tui-guide <问题>;手册正文仅在需要时加载。#1195
  • 子代理卡区分「一次性/可继续」;点击状态栏缩略波形可打开轨迹场景。#1187 #1194

修复

  • Agent 运行中 Shift+Tab 模式切换失败不再因未处理拒绝导致崩溃;致命退出保留会话恢复指针,安全模式重试可返回原会话。#1174
  • 恢复的会话按自身工作目录归属 workspace,避免跨目录恢复后重复记账、卡住下次启动。#1193
  • 仅更新 profile、全局 TUI 补丁仍旧时,DeepSeek 登录会按需启动官方 loopback 回调监听器,不再因缺少 webserver 行而失败;SSH 固定端口转发仍须同步更新全局 TUI 包。#1201
  • 原生 Windows 上,拆包到达的终端应答不再误入输入框。(#1177 by @baobaolaodie)
  • Windows Terminal/OpenConsole 的单文件拖放可从 OSC 8 file:// 载荷还原本地路径。(#1178 by @baobaolaodie)
  • Windows 整合包的 .bat 改用 CRLF,install.ps1 加入 UTF-8 BOM,修复原生 cmd 与 PowerShell 5.1 下的脚本问题。(#1188 by @baobaolaodie)

兼容与升级

  • 主验证上游更新至 DSH 0.2.0-rc.2,保留 0.2.0-rc.1 及此前已声明的兼容线。#1185
  • 显示设置现称「极简界面」,与影响模型可用工具的 /preset minimal「极简模式」不同;持久化键 dsh-tui.minimal 不变。场景插件请改用 minimalUi/setMinimalUi(),旧名称在本版仍是弃用别名。#1172
  • deepseek-account 与需要 DEEPSEEK_API_KEY 的 deepseek-official 是不同路由。自定义 profile 若直接挂载旧独立 dsh-auth 包,建议改用 @deepseek-harness-tui/dsh-tui/oauth;直接运行 dsh --profile dsh-tui 不会注入随包手册。

安装

npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui@0.12.0

What's Changed

  • fix(input): stop Shift+Tab from crashing the TUI and losing the resume pointer by @T-Auto in #1174
  • fix(minimal-ui): separate the Minimal UI toggle from the kernel Minimal preset by @T-Auto in #1172
  • fix(adapter): 恢复的会话按自身 cwd 归属 workspace,避免重复记账卡死启动 by @ccch1mneyyy in #1193
  • feat(adapter): 适配 DSH 0.2.0-rc.2 并保留 0.2.0-rc.1 兼容线 by @ccch1mneyyy in #1185
  • feat(jobs): 接入内核任务事件总线与输出环(实时名册/输出流/进度行 + 修 caller 围栏) by @ccch1mneyyy in #1186
  • feat(subagents): 子代理卡显示内核目录的持久 mode 徽章(一次性/可继续) by @ccch1mneyyy in #1187
  • feat(trajectory): 状态栏缩略波形支持点击打开轨迹场景 by @ccch1mneyyy in #1194
  • feat(guide): 随包用户手册——AI 可按需查文档回答 by @ccch1mneyyy in #1195
  • fix(installer): emit CRLF for .bat and UTF-8 BOM for install.ps1(修复 Windows 原生 cmd / PowerShell 5.1 下整合包不可用) by @baobaolaodie in #1188
  • fix(input): restore dropped file paths from OSC 8 payloads(拖放文件路径从 OSC 8 载荷还原) by @baobaolaodie in #1178
  • fix(input): claim split terminal replies only while a query is in flight(仅在查询在途时认领被拆包的终端应答) by @baobaolaodie in #1177
  • feat(oauth): integrate built-in account sign-in by @CikeSeven in #1190
  • feat(oauth): show DeepSeek bonus coupon celebration by @CikeSeven in #1197
  • fix(oauth): recover callback after profile-only update by @CikeSeven in #1201
  • chore(release): prepare v0.12.0 after callback fix by @CikeSeven in #1203

Full Changelog: v0.11.2...v0.12.0

v0.11.2 — 透明终端图像(公式/立绘/照片)、Resume 提速与 DSH 0.2.0-rc.1 适配

Choose a tag to compare

@github-actions github-actions released this 29 Sep 04:57

自 v0.11.1 以来 40 个 PR。本版本主线:终端图像全面透明化、Resume 大幅提速、DSH 0.2.0-rc.1 适配。

亮点

  • 透明终端图像:LaTeX 公式渲染成真图(Kitty/Sixel),默认透明底透出终端壁纸,点击放大 2 倍预览;块级公式可放大(mathImageScale);标题女仆娘立绘与聊天照片同样透明,底色每面可配(mathImageBacking / imageBacking)(#1095 #1098 #1103 #1107 #1149)
  • Resume 提速:物理指纹复用会话摘要 + 跨重启首屏快照,千级会话秒开(#1140)
  • /provider:模型列表实拉端点并与内置目录合并(#1141)
  • DSH 0.2.0-rc.1 适配,保留 0.1.7 兼容线(#1126);telemetry 跟随基座版本(#1127 #1139)
  • /settings:单一来源 definitions + settings.json(#1110);浅主题平铺根页 / 深域子页的两级结构(#1149)
  • 外部会话标签页:浏览并导入其他 agent 的会话(#1066)
  • 压缩进行中的状态行与 Esc 取消(#1092);女仆娘立绘与 99h/999 求星弹窗(#1091)
  • 输入加固:win32 输入分帧扣留(#1142)、多行粘贴残留剥离(#1097)、IME 预编辑颜色(#1070)、问卷左右键切换(#1138)、WSL 截图粘贴(#1144)
  • 修复:置顶提示条重复(#1135)、rewind 后贴底(#1132)、设置命名空间读取(#1133)、recapOnOpen 恒开(#1123)、/btw 未决 tool call(#1119)、空白会话 /model(#1113)、选区下图片可见(#1105)、启动参数边界(#1079)、子代理计价分桶(#1096)
  • Kitty 图像性能:数据预算内保留、源矩形裁剪(#1086 #1087)
  • CI/发版:Mergify 合并队列(#1130)、Release 自动化(#1111)、i18n 门禁修复(#1078)、发布窗口跳过 npm 生命周期脚本(#1152 #1156)

贡献者

感谢本版本的所有贡献者(按 PR 署名,排名不分先后):

安装

npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui@0.11.2

新手一键整合包(dsh-tui-setup.zip)与五平台便携包见下方 Assets,含 SHA256SUMS 校验。

What's Changed

  • Update README.md by @ccch1mneyyy in #1039
  • docs(readme): 双语 README 动画 logo 与 SVG 会话预览 by @says693 in #997
  • perf(resume): 会话屏记住上次列表,打开即画不再空等 by @zouyuxuan122 in #1007
  • perf(resume): revision 优先增量对账与后台标题恢复 by @ccch1mneyyy in #1046
  • feat(migrate): 官方 Session + JsonlSessionPersistence 全链路重做(承接 #887 返工) by @AdamPlatin123 in #1008
  • feat(migrate): 新增 zcode/grok-build 迁移源与 TUI /migrate 交互 by @AdamPlatin123 in #1015
  • 修复 macOS 下注入通道测试因 Unix Socket 路径过长导致的 EINVAL by @askdkc in #1060
  • feat(markdown): 回复中的 LaTeX 公式渲染为 Unicode 文本 by @Nagi-ovo in #1048
  • fix(ci): 轨迹回归排除启动 tip 的快捷键文案误计数 by @CikeSeven in #1074
  • fix(ci): 正向定位状态栏,避免窄屏 tip 截断误报 by @CikeSeven in #1075
  • feat(compact): 压缩进行中的状态行、实时生成量与 Esc 取消 by @ccch1mneyyy in #1092
  • fix(scripts): spec 篡改夹具复制时 dereference,别把 junction 当 symlink 写坏真目录 by @ccch1mneyyy in #1063
  • feat(ui): 开屏大字加粗重绘 + 窄终端四档降级 by @ccch1mneyyy in #1061
  • feat(ui): 开屏大字字体注册表 + 8 款字面 + 按天轮换 by @ccch1mneyyy in #1062
  • feat(ui): 开屏彩蛋——节日换词(4/1·12/25·1/1)+ 小概率求 star 标语 by @ccch1mneyyy in #1065
  • feat(ui): 女仆娘立绘换装(dsh-tui.whaleGirl)与 99h/999 次求星弹窗 by @ccch1mneyyy in #1091
  • feat(ui): 开屏大字字体设置项 dsh-tui.splashFont(daily 默认 + 可 pin) by @ccch1mneyyy in #1064
  • fix(btw): /btw 剔除未决 tool call,避免运行中提问被 provider 拒绝 by @MomentDerek in #1119
  • ci(release): create GitHub Releases with generated notes after npm publish by @Nagi-ovo in #1111
  • fix(settings): recapOnOpen 补进 Config 与 volatile 白名单,自动回顾不再恒开 by @xiaoxiaohaigui in #1123
  • fix(herdr): 每次上报按当前时钟取 seq,避免被后启动的上报者饿死 by @ynjmxn in #1025
  • fix(ui): macOS 快捷键提示统一显示 ctrl+,不再显示送不到应用的 ⌘ (#640) by @xuzijian2019 in #1029
  • fix(ui): 快捷键提示跟随 /settings 与 cordis.yml 改键,不再写死默认键位 (#1028) by @xuzijian2019 in #1032
  • test(askpanel): 三个 askpanel 回归固定 zh UI,本地 en 环境不再误报失败 by @xuzijian2019 in #1031
  • fix(ui): opaque background for the timeline hover preview card by @Nagi-ovo in #1069
  • fix(questions): IME preedit no longer inherits the anchor cell color by @Nagi-ovo in #1070
  • fix(statusline): 上下文进度条右端对齐内容区右缘 by @zouyuxuan122 in #996
  • fix(startup): 修复启动参数误提交并统一 -- 边界 by @CikeSeven in #1079
  • fix(paste): 剥离 win32 记录残留并折叠 decomposed CRLF,多行粘贴不再出现孤立下划线与空行 by @baobaolaodie in #1097
  • fix(session): 空白会话上的 /model 不再写 parentSession,首个 prompt 恢复自动标题 by @xuzijian2019 in #1113
  • 修复后台会话恢复时子代理状态丢失与错误归属(#1019) by @zixin947 in #1035
  • fix(supervisor): 恢复失败的真实原因显示在会话管理屏本身,长错误折行(#939) by @xuzijian2019 in #1044
  • test(i18n): 修复回归脚本语言漂移并补齐门禁 by @CikeSeven in #1078
  • fix(completion): 保留 Windows 路径分隔符 by @icyaaaww in #1054
  • chore(dev): PR skill and reliable local verification by @Nagi-ovo in #1050
  • fix(transcript): 问卷作答记录改为从会话日志投影,resume/rewind 后不再丢失(#1009) by @T-Auto in #1017
  • fix(cost): 本会话估算并入子代理并按模型分桶计价(含 #857 价目表更新) by @baobaolaodie in #1096
  • fix(chat): keep the transcript at the bottom after rewind and model switch by @Nagi-ovo in #1132
  • perf(kitty): keep image data within a budget, delete only placements off screen by @Nagi-ovo in #1086
  • perf(kitty): crop partly visible images with a source rect instead of text fallback by @Nagi-ovo in #1087
  • feat(adapter): adapt to DSH 0.2.0-rc.1 and keep the 0.1.7 compat lines by @Nagi-ovo in #1126
  • fix(selection): keep terminal images visible under the selection highlight by @Nagi-ovo in #1105
  • fix(telemetry): follow upstream's session telemetry endpoint by host version by @Nagi-ovo in #1127
  • feat(math): mathRendering setting, token metadata, display environment blocks by @Nagi-ovo in #1095
  • feat(math): MathJax core — formula to SVG to RGBA, caching and typed failures by @Nagi-ovo in #1098
  • feat(math): show block formulas as terminal images (mathRendering: image) by @Nagi-ovo in #1103
  • refactor(settings): define each setting once and ship settings.json by @Nagi-ovo in #1110
  • perf(resume): 物理指纹复用会话摘要 + 跨重启首屏快照 by @ccch1mneyyy in #1140
  • feat(provider): /provider 模型列表实拉端点并与内置目录合并,向导摘要块精修 by @ccch1mneyyy in #1141
  • feat(math): inline formulas as terminal images, formula images copy as source by @Nagi-ovo in #1107
  • fix(telemetry): 跟随 0.2.0 基座的 maxRequestBytes(#1127 跟进) by @ccch1mneyyy in #1139
  • fix(questions): switch questionnaire items with left and right by @xuzijian2019 in #1138
  • fix(settings): read the TUI settings section by its registered namespace by @xiaoxiaohaigui in #1133
  • feat: 会话屏外部来源标签页——浏览其他 agent 的会话,选中即导入(含迁移解析重构) by @Nwflower in #1066
  • fix(chat): show the sticky prompt only once it has scrolled out of view by @Nagi-ovo in #1135
  • ci(mergify): 接入合并队列并放行队列的临时 PR by @ccch1mneyyy in #1130
  • fix(input): hold fragmented win32 input records across escape flush(win32 输入记录分帧跨 escape 超时扣留) by @baobaolaodie in #1142
  • fix(clipboard): paste Windows screenshots inside WSL by @xuzijian2019 in #1144
  • feat(images): transparent terminal-image pipeline for formulas, portraits and photos by @ccch1mneyyy in #1149
  • chore(release): 发布 v0.11.2 by @ccch1mneyyy in #1150
  • fix(release): skip pnpm verify-deps-before-run inside the publish window by @ccch1mneyyy in #1152
  • fix(release): skip npm lifecycle scripts in the publish window by @ccch1mneyyy in #1156
  • fix(standalone): compile cacheGuard.cjs into the pkg snapshot by @ccch1mneyyy in #1159

New Contributors

Read more

v0.11.1 — 工作线投影化(working-activity 0.5.0)与积压修复

Choose a tag to compare

@ccch1mneyyy ccch1mneyyy released this 26 Sep 20:23

dsh-tui 0.11.1

补丁版:把 main 上已合入但未随 0.11.0 发出的修复带给用户,并落地工作状态线的所有权迁移。

本次重点:工作线改读 workingActivity 投影

状态线的文案、相位、计时、⏵ 自述全部归 dsh-working-activity 0.5.0(v0.5.0)所有,TUI 删除了自己的第二只 tracker、只读投影——后台会话不再覆盖屏上会话的行,会话日志里也再不会出现 activity/status 事件。配套:限流重试 / 等待批准 / 上下文压缩终于能在状态线上分清「等模型」还是「模型在等你」;⏵ 自述只认正文、思考不再外漏;亚秒工具以毫秒显示。

自 0.11.0 起 main 上的修复(按提交)

  • 适配 DSH 0.1.7-rc.2 并保留 rc.1 兼容线(#1000,也修了 #992 的 peer 跳过)
  • session/title 载荷补齐 messageSeqs/source:fork 与改名不再写出损坏日志(#1010 / #1006)
  • inline 静置不再向终端泄 LF,选区复制不再错位(#993);光标已在目标位时不再发空 patch
  • Ctrl+A 子代理面板镜像全部子代理并跨重启保持(#999 / #966)
  • ↑/↓ 接入持久化输入历史(跨重启可召回,#1011),召回排队消息时撤回那条排队项(#1012)
  • 工具卡文案全面接入字典,zh 界面不再漏英文(#1005 / #980)
  • 修复设置页命名空间并校验配置能力(#991)
  • 流式期间选区复制不再被陈旧守卫误拒(#1021)

升级注意

  • 依赖 dsh-working-activity ^0.5.0(npm latest 已就绪,lockfile 已指向正式副本);老插件(0.4.x)不再提供状态行,干净安装会随本包一并装上 0.5.0。

v0.11.0 — DSH 0.1.7-rc.1 适配、三合一会话界面与 IDE 选区通道

Choose a tag to compare

@T-Auto T-Auto released this 24 Sep 14:53

本次发布完成 DSH 0.1.7-rc.1 适配并保留 0.1.5 及更早版本的兼容分支,同时带来三合一会话管理界面、IDE 选区通道等新能力。

新能力

  • 三合一会话管理界面:/resume、/agentview、/bg 合并为一套界面,会话浏览、后台任务与状态一览在同一处完成。(#890 by @T-Auto)
  • IDE 选区通道:编辑器选区的实时徽标与提交自动附加,配套 VS Code companion 扩展。(#562 by @baobaolaodie)
  • 安全模式 dsh-tui safe:只读控制面、救援 profile 与插件清单/修复指引;补充非交互救援提示与两个被剥离环境变量的锁定。(#862 by @AdamPlatin123、#952)
  • 图片入站降采样:超尺寸图片在首次粘贴前等比缩到上限内,并忽略异平台 @img/sharp-* 可选依赖,单次更新下载量最多减少约 90MB。(#941 by @AdamPlatin123、#861 by @AdamPlatin123)
  • 回复中的 ```mermaid 代码块渲染为 Unicode 字符图;/settings 增加默认推理强度预设与最小显示开关。(#921 by @Nagi-ovo)
  • 全屏模式滚动条可拖拽,并新增视口高度变更通知,修复滚动条与时间轴不同步。(#915、#916 by @FlameTN7)
  • 问卷面板支持折叠,压成长条后仍可继续作答。(#850 by @FlameTN7)
  • 推理强度不可用时回退到最近可用档位并给出明确提示。(#868 by @AdamPlatin123)

修复与优化

  • 适配 DSH 0.1.7-rc.1:Shell 改用 execute(resolve(spec)).result()(旧 host 回落 run)、Session V4 消息与官方历史迁移、声明式 preset registry、profile settings 接口,并修掉预诊断与 TUI 启动的循环等待。(#984 by @blueberrycongee)
  • 复制与提示:拖选复制不再被悬浮窗污染、用户消息不再弹重复浮层;整行选区尾换行归一化、选区提交一致性守卫。(#934、#926、#943 by @ccch1mneyyy、@AdamPlatin123)
  • 草稿编辑态跨整屏往返:快照带编辑态、卸载释放,入口级回归矩阵。(#942 by @baobaolaodie)
  • 长页 /settings 滚动不再裁掉卡片边框;会话恢复不再误判空会话;回退编辑不再重复发送旧消息。(#723、#910、#899)
  • Sixel 图片:修正 Windows Terminal 渲染缺陷与浮层偏移、关闭图片预览残留白底;zellij 下停用 DECSTBM 硬件滚动。(#878、#963、#766)
  • 图片预览按附件 id 去重,修掉 React #185 崩溃;上下文警告在长对话下不再误报。(#920 by @Nagi-ovo、#788 by @poorpaper)
  • /compact 后折叠工具结果的错误恢复、延迟注册与会话接入兼容回归。(#984 by @blueberrycongee)

兼容

  • 主验证版本线为 0.1.7-rc.1;0.1.5-rc.1/alpha.2/alpha.1、0.1.3-alpha.2、0.1.2-*、0.1.1-*、0.1.0-* 保留映射兼容分支。
  • 新命名的 @deepseek-ai/dsh-agent-preset-registry 与 @deepseek-ai/dsh-ptc-runtime-node 仅声明 0.1.7-rc.1;退役的 dsh-agent-presets / dsh-code-runtime-worker-thread 不再作为 peer。

What's Changed

  • ci: ADAPTER.md 与 CHANGELOG.md 归入 changes 文档白名单 by @Nagi-ovo in #911
  • feat: 支持问卷面板折叠 by @FlameTN7 in #850
  • fix(home): retire the legacy ~/.dsh-cc harness home pin by @ccch1mneyyy in #918
  • fix(interaction): 拖选浮层避让、选区提交守卫与 composer 叠印三修 by @AdamPlatin123 in #923
  • revert: PR #923 三合一交互修复(拆分为三个原子 PR 重入) by @AdamPlatin123 in #924
  • fix(preview): 图片预览按附件 id 去重,修复 React #185 崩溃 by @Nagi-ovo in #920
  • fix: 全屏模式滚动条可拖拽滚动 by @FlameTN7 in #915
  • chore: 将 FlameTN7 加入 PR 贡献者白名单 by @CikeSeven in #931
  • fix(ink): 新增视口高度变更通知,修复滚动条与时间轴不同步/残缺 (#914) by @FlameTN7 in #916
  • feat(markdown): 回复中的 ```mermaid 代码块渲染为 Unicode 字符图 by @Nagi-ovo in #921
  • feat(session): /resume、/agentview、/bg 合并为三合一会话管理界面(#879) by @T-Auto in #890
  • fix(tooltip): 拖选复制不再被悬浮窗污染,user 消息不再弹重复浮层 by @ccch1mneyyy in #934
  • feat(statusline): 上下文条去段内标签 + 整条悬停图例 + 读数压力变色 by @ccch1mneyyy in #933
  • fix(verify): 修复#844 时序竞态导致的CI误报失败 by @FlameTN7 in #930
  • fix(settings): /settings 长页滚动裁掉卡片边框——窗口贴住列表物理边界 + 端点钉边 by @xiaoxiaohaigui in #723
  • fix(preset): en 下 PTC 预设仍显示中文——展示层按 code 键桥接 ptc by @heyimcy in #762
  • feat(composer): 草稿快照补编辑态与卸载释放,入口级回归矩阵 by @baobaolaodie in #942
  • feat(ide): IDE 选区通道——编辑器选区实时徽标与提交自动附加 by @baobaolaodie in #562
  • fix(ide): 整行选区尾换行归一化 + README_EN 链接(#562 复审 nit 跟进) by @ccch1mneyyy in #943
  • perf(update): ignore foreign-platform @img/sharp optionals — cut ~90MB update downloads by @AdamPlatin123 in #861
  • fix(ide): 选区块自述行数 + stop 清残留状态(#562 复审 nit 跟进) by @ccch1mneyyy in #945
  • fix(ink): disable DECSTBM hardware scroll inside zellij by @SacrilegeWasTaken in #766
  • fix(composer): 卸载释放跳过队列仍持有的 capability(#942 复审 P2 跟进) by @ccch1mneyyy in #947
  • feat(effort): nearest-lower fallback + loud notice when the preferred tier is unavailable by @AdamPlatin123 in #868
  • Fix/issue 770 context warning by @poorpaper in #788
  • fix(sixel): 修正 Windows Terminal 下 Sixel 图片渲染缺陷与 page inset 浮层偏移 by @VviLliAm-qwq in #878
  • fix(selection): 选区提交一致性守卫——高亮下内容被原地替换时拒绝复制 by @AdamPlatin123 in #926
  • fix(scripts): drop duplicate script definitions from package.json by @ccch1mneyyy in #949
  • feat(input): 图片入站降采样——超尺寸首贴前等比缩到上限内 by @AdamPlatin123 in #941
  • fix(composer): 折叠分隔符宽度对齐与 caret 窗口跳变重锚——长提示词回看不再叠印 by @AdamPlatin123 in #927
  • fix(ink): drop the ambiguous-width env switch (keep the separator fix) by @ccch1mneyyy in #951
  • feat(launcher): safe mode — dual entry, read-only control plane, rescue profile by @AdamPlatin123 in #862
  • fix(launcher): non-interactive rescue notice + lock both stripped env vars by @ccch1mneyyy in #952
  • docs(vscode): 选区通道的扩展版本门槛改为按版本区间表述 by @baobaolaodie in #956
  • fix(sixel): 关闭图片预览残留白底——擦除改回终端默认底色 by @ccch1mneyyy in #963
  • docs: README/使用说明/索引全量重做 + 删除已下线的 Agent View 死代码 by @ccch1mneyyy in #964
  • docs: 补英文使用说明 user-guide.en.md + 全站交叉链接 by @ccch1mneyyy in #965
  • fix: 适配 DSH 0.1.7-rc.1 并保留旧版兼容 by @blueberrycongee in #984
  • chore(release): 发布 v0.11.0 by @T-Auto in #989

New Contributors

Full Changelog: v0.10.2...v0.11.0

v0.10.2 — 长对话性能优化与会话恢复修复

Choose a tag to compare

@CikeSeven CikeSeven released this 17 Sep 03:50

本次为修复版本,重点改善长对话和工具密集会话的流畅度,并修复历史会话、回退重发及技能调用中的问题。

会话与回退

  • 修复历史会话被误判为空、从会话列表中消失的问题;纯图片消息和未完整读取的日志不再被误判为空会话。(#910 by @CikeSeven)
  • 修复回退编辑后旧消息重复发送、待处理队列累积的问题,避免恢复回退分支时再次执行历史排队内容。(#899 by @CikeSeven)

渲染与滚动

  • 优化长对话的流式渲染,修复输出卡顿和尾部异常空白。(#873 by @CikeSeven)
  • 减少工具密集会话中已完成工具卡片的重复渲染,优化长文本绘制与滚动开销。(#893 by @CikeSeven)
  • 修复滚动跳转白屏、返回底部卡顿,以及 Windows Terminal 最大化后部分静态内容消失的问题。(#897 by @CikeSeven)

技能与交互

  • 技能列表读取暂时不完整时保留已发现的技能,并限制恢复重试次数,避免技能命令意外消失和持续重试。(#908 by @CikeSeven)
  • 修复未启用 skill 工具时,斜杠技能命令丢失用户原始输入和参数的问题。(#849 by @baobaolaodie)
  • 修复权限预设动态列表读取异常的问题。(#863 by @LonelyHerbivore)
  • 修复在 /jobs 面板按 Esc 时,同时中断正在进行的对话的问题;现在优先关闭面板。(#856 by @VviLliAm-qwq)

What's Changed

  • fix(jobs): Esc 关闭 /jobs 面板优先于中断对话 by @VviLliAm-qwq in #856
  • 修复 permission preset 动态列表上下文 by @LonelyHerbivore in #863
  • 修复长对话流式渲染卡顿与尾部空白 by @CikeSeven in #873
  • fix(skills): 斜杠技能命令在无 skill 工具时保留用户输入与参数(#842) by @baobaolaodie in #849
  • 修复工具密集会话的流式重渲染与长文本绘制卡顿 by @CikeSeven in #893
  • fix(ink): 修复滚动跳转白屏、回底卡顿与 Windows 最大化后的静态内容丢失 by @CikeSeven in #897
  • fix: 修复回退后旧消息重复发送与队列累积 by @CikeSeven in #899
  • test(ci): 修复思考折叠回归误点随机提示导致的假失败 by @CikeSeven in #902
  • fix(skills): 保留不完整目录的技能并限制恢复重试 by @CikeSeven in #908
  • chore: 更新微信群二维码(旧码 9月13日已过期) by @AdamPlatin123 in #909
  • fix(resume): 修复空会话误判导致历史对话消失 by @CikeSeven in #910
  • docs: remove #705 dev notes from CHANGELOG, ADAPTER.md and READMEs by @HavenXia in #833
  • chore(release): 发布 v0.10.2 by @CikeSeven in #912

New Contributors

Full Changelog: v0.10.1...v0.10.2

v0.10.1 — 上下文进度条默认开 + 超长单行折叠

Choose a tag to compare

@ccch1mneyyy ccch1mneyyy released this 10 Sep 16:07

上下文进度条默认打开

输入框上方的分段上下文进度条现在默认显示,不用再去 /settings → statusBar → contextBar 打开。

  • 以前显式关掉过的用户不受影响——设置优先,更新不会替你打开。
  • 极简模式(minimal)依旧只保留 model + 工作目录,不会凭空多出进度条。

超长单行不再拖慢转录

粘贴的巨型单行、工具调用里的一行大命令、压缩后的 JS、单行日志……任何单行超过 1000 字符的转录文本(user 消息、assistant 正文、工具卡标题与正文)都会在进入布局前折叠,行尾显示 … 已折叠 N 字符(点击或 ctrl+o 展开)。

  • 鼠标点这一行(工具卡点卡面)即可展开,再点一次收起;键盘用 Ctrl+O。
  • 只有真被折叠的行可点:普通消息保持不可点,拖选复制不受影响;流式中的行不参与。
  • 思考(thinking)行不变,仍是三行预览。
  • 实测同一条 20 万字符单行:转录挂载 162ms → 4.5ms,重渲染 12ms → 0.6ms。

其他

  • 修好 verify-display-settings 里一条早已失效的断言(脚本此前跑不到后续用例),现为 29/29。
  • 新增 verify-long-line-fold 回归(26 断言,含真实鼠标点击组)。

What's Changed

  • refactor(adapter): Adapter 分层重构 by @T-Auto in #705
  • channel.ts的重构与解耦 by @T-Auto in #776
  • ci: run-ci-group 空分片判配置错误(#810 审查意见) by @Nagi-ovo in #818
  • fix(overlay): 浮层 maxHeight 钳到锚点上方真实空间,picker 窗口预算随之——短会话高终端下 /model 焦点行不可见(#493 #698) by @Nagi-ovo in #817
  • fix(render): 修复多行 user 置顶提示向转录左侧溢出(#828) by @ccch1mneyyy in #829
  • feat(transcript): 全屏转录支持 PgUp/PgDn 按页翻动消息列表 by @nicklin11 in #756
  • fix: 适配 DSH 0.1.5-alpha.2,补齐 Session V3 与启动兼容 by @CikeSeven in #831
  • feat(skills): review 技能升级为全功能维护者审查(八阶段·五轴·deslop·契约快照) by @AdamPlatin123 in #774
  • fix: 修复"/"呼出的命令面板异常高亮渲染的问题 by @FlameTN7 in #819
  • feat: 适配上游 DSH 0.1.5-rc.1(deepseek-flash 新默认模型) by @CikeSeven in #843
  • perf(adapter): ChannelUi 读投影直通 traceEvents,长会话不再每帧重建事件日志(#826) by @ccch1mneyyy in #845
  • feat: 上下文进度条默认开 + 超长单行折叠与鼠标交互(0.10.1) by @ccch1mneyyy in #848

New Contributors

Full Changelog: v0.10.0...v0.10.1

v0.10.0 — 终端内图片:缩略图、大图预览与输入框附件(首个 0.10 稳定版)

Choose a tag to compare

@ccch1mneyyy ccch1mneyyy released this 08 Sep 19:55

dsh-TUI 0.10.0

首个 0.10 稳定版,切自 main@ea88f22b;距 v0.10.0-beta.5 共 84 个提交 / 24 个已合并 PR。本版主线是终端内图片:会话内缩略图、居中大图预览(缩放/平移/切换/打开原图)与输入框图片附件;另含权限切换修复、问卷粘贴、底部滚动修复与鲸鱼娘欢迎期动画。

✨ 新功能

终端内图片(#688 #687 #691 #697 #772 #775 #779 #808)

  • 会话内缩略图:用户附件、助手回复、工具结果里的图片(PNG/JPEG/WebP/GIF)在转录区显示为有界等比缩略图,只有图片的消息也带本地化标签;缩略图随滚动按可见区域裁剪,不覆盖输入栏(#691 #775)。
  • 居中大图预览:全屏下点击输入框里的 [Image #N] 或转录区缩略图打开预览,标题为 Image #N — 格式 · 宽×高 · 体积 · 文件名,卡片最多占对话区约 95%;预览打开时对话区内容变淡(前景/背景向终端底色混合一半),输入栏与状态栏保持清晰(#697 #775)。
  • 缩放 / 平移 / 看图导航:「适应」「100%」与 +/- 在 100%、200%、400%、800% 之间切换,拖动、滚轮或方向按钮平移;←/→ 或底部 ‹/› 切换图片(首尾不循环,显示「当前张/总张数」)(#779)。
  • 打开原图:卡片底行的来源路径可用系统看图程序打开附件库里的原始字节——不依赖源文件是否还在,也不重新编码;原图只在点击时导出到私有系统临时目录(#779)。
  • 输入框图片附件:Ctrl+V/Alt+V 粘贴图片文件或剪贴板位图会暂存为 [Image #N],发送时变成真正的图片块;token 在输入框里是一个整体——光标不会停在内部、←/→ 整体跳过、Backspace/Delete/Ctrl+W 整体删除、选区边缘落在其中会扩到整个 token(#697)。
  • 光标跟随预览:光标停在 [Image #N] 起点时自动弹出预览,离开即关;预览期间键盘仍归输入框,方向键可在多张图之间走动、预览随之切换(#697)。
  • 终端兼容与回退:Kitty graphics 与 Sixel 双协议,DSH_TUI_IMAGE_PROTOCOL=auto|kitty|sixel|none 可覆盖;inline、辅助功能模式、多路复用器或探测失败时占用同样布局显示文字元数据(#688 #775)。
  • 性能:缩略图 256 色量化改用 sharp 原生 libimagequant——384×192 缩略图编码 197ms → 3ms(照片 194 → 11ms),并移除 image-q 依赖(node_modules 少约 1.2 MB)(#808)。
  • 插件侧:新增宿主 Image 原语与最多三行的富状态视图(tuiStatus.registerView),插件不接触渲染器/终端写入 API 也能画图(#688)。

其他新功能

  • 默认推理强度 effortDefault(#767):/settings 新增「默认推理强度」(auto / off / low / high / max),只决定新会话起始档位,不打扰运行中的 /effort;优先级为 settings 用户层 > cordis effort > 上次 /effort 持久化 > 模型默认。
  • 鲸鱼娘欢迎期动画与点击互动(#726 #760):欢迎期闲置时摆鱼鳍、拍尾巴、眨眼,连续空闲 10 秒入睡冒 Z;点击会冒爱心并唤醒它(不依赖设置开关);各动作作为独立图层并行合成。whaleIdle 默认开,可在 /settings 关闭;第一个 agent 任务之后永久定格为标准帧。

🔧 修复

  • /permission 与 Shift+Tab(#755):按真实服务的 current(session) 契约读快照,官方 /permission 命令未暴露时回退到 permissionPresets 服务写路径,两条路都不可用时明确报错而不再把命令当普通消息发给模型;动态预设按稳定顺序进入 Shift+Tab,plan 退出后身份正确还原;斜杠菜单/补全等瞬态浮层改为锚定输入簇,不再出现在 todo 面板上方。
  • 问卷与计划评审面板粘贴(#786):自定义回答行支持 bracketed 粘贴与 Ctrl+V/Alt+V 读取剪贴板——多行压平为单行、剥除 ANSI/OSC、emoji 不劈半、8000 码点上限;纯换行粘贴不再被当成回车提交,粘贴也不会误触发 plan-review 的数字快选/批准;扩展对话框的输入框同样补上 Ctrl+V。
  • 滚到底后继续滚轮仍强拖/闪烁(#803):新增底部超滚门控——贴底时向下滚轮直接忽略,不再每格翻转 sticky、闪现「回到底部」或整屏重绘;从上方滚回底部、±1 行面板(/jobs、help)照常工作。
  • 窄屏 todo 面板幽灵空行(#763):目标行与折叠头紧贴,被截断的 todo 行不再虚高出行。
  • 图片路径附带修复(#691 #697 #775 #779):切换会话或弹出阻塞对话框时关闭图片弹窗并取消在途读取;失效的 [Image #N] 在点击、发送与作为命令参数时给出明确警告;退出时清理剪贴板图片临时目录;审批/问卷/对话框期间输入草稿不再丢失;弹窗换图或缩小后不再残留上一张的边框;macOS 首次解码不再把重复类警告刷到备用屏;浅色主题面板改为纯白底,图片不再带黑色补边。

⚙️ 配置变更

  • 新增设置:terminalImages(终端图片预览,默认开,改后需 /restart)、whaleIdle(欢迎期鲸鱼动画,默认开)、effortDefault(默认推理强度)。
  • 新增环境变量:DSH_TUI_IMAGE_PROTOCOL(协议覆盖)、DSH_TUI_DISABLE_TERMINAL_IMAGES=1(强制关闭预览)、DSH_TUI_TAB_STATUS=1(终端 tab 状态改为显式 opt-in)。

⚠️ 已知限制

  • 图片预览需要 fullscreen + 支持 Kitty graphics 或 Sixel 的终端;其余情况只显示文字元数据(图片仍会正常发给模型)。
  • Sixel 仍为 256 色量化,「100%」指空间像素比例而非无损颜色;「100%」只在终端报告字符格像素尺寸时可用;需要原始色彩或动画时用「打开原图」。
  • 超出解码/编码字节预算的图片保留文字回退(Sixel 单次编码 4 MiB 预算未变)。
  • terminalImages 的改动需要 /restart 生效。
  • Ctrl+V 粘贴覆盖主输入框、问卷/计划评审面板与扩展对话框;Ctrl+R 历史搜索等其余输入面暂未接入。
  • whaleIdle 只在欢迎期生效,第一个 agent 任务后鲸鱼永久定格(点击爱心仍可用)。

🙏 致谢

🚀 升级方式

TUI 内 /update;或 dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@latest;用全局 dsh-tui 启动的再执行 npm install -g --legacy-peer-deps @deepseek-harness-tui/dsh-tui@latest。


dsh-TUI 0.10.0 (English)

The first 0.10 stable release, cut from main@ea88f22b; 84 commits / 24 merged PRs since v0.10.0-beta.5. The headline is images inside the terminal: transcript thumbnails, a centered full-screen preview (zoom, pan, gallery, open original), and image attachments in the composer — plus a permission-switching fix, questionnaire paste, bottom-scroll fixes, and welcome-phase whale animation.

✨ New features

Terminal images (#688 #687 #691 #697 #772 #775 #779 #808)

  • Transcript thumbnails: images in user attachments, assistant replies and tool results (PNG/JPEG/WebP/GIF) render as bounded, aspect-preserving thumbnails; image-only messages get localized labels. Thumbnails scroll and clip to the visible region without covering the prompt (#691 #775).
  • Centered full-screen preview: in fullscreen, clicking a composer [Image #N] token or a transcript thumbnail opens a preview titled Image #N — format · W×H · size · file name, occupying up to ~95% of the transcript region. The conversation behind it is dimmed (explicit colors blend halfway toward the terminal background) while the prompt and status rows stay clear (#697 #775).
  • Zoom, pan and gallery navigation: "fit" / "100%" / + / - step through 100%, 200%, 400% and 800%; drag, wheel or the direction buttons pan; ←/→ or the ‹/› buttons switch images (no wrap-around, with a current/total counter) (#779).
  • Open original: the source path on the card's bottom row opens the attachment store's original bytes in the system image viewer — independent of whether the source file still exists, and without re-encoding. Originals are exported to a private OS temp directory only on click (#779).
  • Composer image attachments: images pasted with Ctrl+V/Alt+V (file or clipboard bitmap) are staged as [Image #N] and sent as real image blocks. The token behaves as one unit: the caret never rests inside it, ←/→ step over it, Backspace/Delete/Ctrl+W remove it whole, and a selection edge inside it grows to cover it (#697).
  • Caret-following preview: a preview opens automatically while the caret rests at a token's start and closes when it leaves; the keyboard stays with the prompt, so the arrow keys walk from image to image and the preview follows (#697).
  • Terminal support and fallback: Kitty graphics and Sixel are both supported, overridable with DSH_TUI_IMAGE_PROTOCOL=auto|kitty|sixel|none; inline mode, accessibility mode, multiplexers or a failed probe keep the same layout with text metadata (#688 #775).
  • Performance: thumbnail 256-color quantization now uses sharp's native libimagequant — a 384×192 thumbnail encodes in 3 ms instead of 197 ms (photo: 11 ms vs 194 ms) — and the image-q dependency is gone (~1.2 MB less in node_modules) (#808).
  • For plugin authors: a host-owned Image primitive plus bounded rich status views of up to three rows (tuiStatus.registerView), so plugins can draw without touching the renderer or terminal-write APIs (#688).

Other features

  • Default reasoning effort effortDefault (#767): /settings gains a "default reasoning effort" field (auto / off / low / high / max) that only sets the starting level for new sessions and never disturbs a running /effort. Precedence: settings user layer > cordis effort > persisted /effort > model default.
  • Welcome-phase whale animation and click interaction (#726 #760): while idle during the welcome phase the whale flutters its fins, thumps its tail and blinks, and dozes off with Zs after 10 seconds idle; clicking pops a heart and wakes it (independent of the setting). Actions compose as independent layers. whaleIdle is on by default and can be disabled in /settings; the whale freezes to the static frame after the first agent turn.

🔧 Fixes

  • /permission and Shift+Tab (#755): the snapshot now follows the real service contract current(session); when the official /permission command is not exposed to the agent, switching falls back to the permissionPresets service write path, and when neither is available it reports clearly instead of sending the command to the model as a normal message. Dynamic presets join the Shift+Tab cycle in a stable order, plan-mode exit restores the correct identity, and transient pickers/completions are anchored to the input cluster instead of appearing above the todo panel.
  • Paste in questionnaires and plan review (#786): custom answer rows now accept bracketed paste and Ctrl+V/Alt+V clipboard reads — multi-line content is flattened, ANSI/OSC are stripped, emoji are never split, and there is an 8000-code-point cap. A paste of bare newlines is no longer submitted as Enter, and pasting never triggers plan-review quick-select/approve. Extension dialog inputs got Ctrl+V too.
  • Wheel-down at the bottom still "dragged" and flickered (#803): a bottom-overscroll gate now ignores wheel-down while the view is pinned to the bottom — no per-notch sticky flip-flop, no flashing "back to bottom" pill, no full-screen repaint. Scrolling back down from above and ±1-row panels (/jobs, help) behave as before.
  • Ghost blank lines in the todo panel on narrow screens (#763): the goal row sits flush against the fold header and truncated todo rows no longer measure taller than they render.
  • Image-related fixes (#691 #697 #775 #779): the preview closes and in-flight reads are cancelled on session switches or blocking dialogs; stale [Image #N] placeholders warn on click, submit and command arguments; the clipboard image directory is removed at exit; text drafts survive approval/questionnaire/dialog overlays; switching to a differently shaped image no longer leaves the previous card's border behind; macOS no longer prints duplicate-class warnings to the alternate screen on the first decode; light-theme panels are pure white and images no longer carry black letterboxing.

⚙️ Configuration changes

  • New settings: terminalImages (terminal image previews, on by default, takes effect after /restart), whaleIdle (welcome-phase whale animation, on by default), effortDefault (default reasoning effort).
  • New environment variables: DSH_TUI_IMAGE_PROTOCOL (protocol override), DSH_TUI_DISABLE_TERMINAL_IMAGES=1 (force previews off), DSH_TUI_TAB_STATUS=1 (terminal tab status is now explicit opt-in).

⚠️ Known limitations

  • Image previews need fullscreen plus a terminal that supports Kitty graphics or Sixel; otherwise only text metadata is shown (images are still sent to the mod...
Read more