Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
f344bd2
feat(chat): pin newly sent questions to top with dynamic bottom runway
Oct 26, 2026
aa9688b
feat(chat): move stopping status into composer placeholder and sync docs
Oct 26, 2026
b94a3de
fix(chat): scroll expanded command cards into view and align height cap
Oct 26, 2026
053a408
fix(chat): clamp pinned turn runway on collapse and exclude runway fr…
Oct 26, 2026
5165f14
fix(chat): eliminate process toggle jitter on pinned turns and dedupl…
Oct 26, 2026
e445ccc
fix(chat): separate BTW tool fold summary from live reply progress
Oct 26, 2026
73cfdfe
feat(chat): add configurable dark-mode breathing starfield backdrop
Oct 26, 2026
b48df04
fix(telemetry): eliminate ResizeObserver loop error spam and watchdog…
Oct 26, 2026
572d7c2
feat(chat): enlarge starfield particles and add clockwise quadrant or…
Oct 27, 2026
c2f19e6
fix(scripts): sync package.json manifest alongside extension bundles
Oct 27, 2026
c1782e0
fix(webview): refine completion settings, slash caret, and worker rep…
Oct 27, 2026
204ea03
fix(webview): merge running status with right-aligned stop action in …
Oct 27, 2026
a883476
fix(chat): stop the pinned question from snapping back after an upwar…
Oct 27, 2026
f71bc0e
fix(chat): smooth live activity disclosure transitions and subpixel p…
Oct 27, 2026
5a76750
fix(chat-ui): restore newest pinned question on scroll-back and parse…
Oct 30, 2026
961fcb1
fix(chat): show the change summary after an interrupted reply
Oct 31, 2026
0937cec
fix(chat): keep tool results that arrive while a reply is stopping
Oct 31, 2026
baceca8
feat(btw): show thinking and tools in arrival order
Oct 31, 2026
117a970
fix(btw): show the Droid mark beside an answer
Oct 31, 2026
748ff9a
fix(btw): keep side chat content inside the panel
Oct 31, 2026
675c0f6
perf(chat): speed up session recovery and subagent viewer rendering
Nov 1, 2026
7c176ba
feat(btw): move reply progress into composer and style question as bu…
Nov 2, 2026
10acda8
fix(management): use Follow main chat for subtask defaults and singul…
Nov 2, 2026
18e8702
feat(management): split subtask tier defaults into model and reasonin…
Nov 2, 2026
4cfca67
fix(management): ignore synthetic empty Select change when switching …
Nov 2, 2026
cf54dc1
perf(chat-ui): adopt incremental Markdown stream and stateful code hi…
Nov 2, 2026
e3a5208
fix(chat-ui): refine streaming Markdown fence boundaries and settled …
Nov 2, 2026
d3d5606
fix(chat-ui): restore scroll-to-bottom button on pinned replies and p…
Nov 2, 2026
914d4d1
fix(chat-ui): remove decorative quote icon from quote chips
Nov 2, 2026
350bbba
chore(release): prepare 0.8.19 release
Nov 2, 2026
30fb959
style(test): remove trailing blank line at EOF in MissionManagement test
Nov 2, 2026
9f6ca86
test(management): stub readChatStarfieldEnabled in completionSettings…
Nov 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- 只完成用户请求及其必要结果,不扩展相邻功能或无关重构。
- 以用户当前要求和生产代码为行为事实,不虚构 Droid 能力、API、命令或项目结构。
- 当文档与现有代码存在冲突时,应遵循代码的写法,并在最后回复中列出发现的所有冲突点。
- 保留用户已有、未跟踪和无关改动;谨慎处理生成文件、Lockfile、Migration 和公共契约。
- 解释、审查和状态查询默认只读;只有用户明确要求修改时才写入文件。
- 文档入口是 `docs/README.md`。计划、状态、能力、架构和设计分别更新
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

按版本记录功能、体验改进与修复。安装方式与使用范围见 [README](README.md)。

## 0.8.19

### Highlights

- 混合增量流式 Markdown 渲染与 Shiki 状态化高亮:未闭合代码围栏直接走 $O(1)$ HAST 增量投影,已完成顶层块走 LRU 缓存复用,尾部块自动补齐未闭合行内语法,代码块按行 `GrammarState` 增量染色与按行 memo 渲染,大幅降低长回复流式重绘开销。
- AI 回复排版与流式渐显打磨:对齐 Kilo 的段落行高、列表与弱化引用样式、带微描边的行内代码与文件链接虚线下划线;保持流式文字渐显跨度直至动画完成,消除高频 token 下的透明度跳闪。
- 新提问吸顶与动态留白跑道:发送新提问后自动置顶阅读位并生成底部动态留白跑道,首屏回复静止向下生长,展开/收起「已探索」过程组平滑过渡零抖动,向上滚动即刻显示「回到底部」按钮。
- BTW 侧边问答重构:思考与工具按真实到达顺序归入「已探索」折叠组并穿插正文,用户提问改为右对齐聊天气泡,回答标题带 Droid 图标,运行与准备状态统一收进底部输入框占位。
- 会话恢复与子代理详情页提速:历史消息工具结果预算裁剪降为单次线性扫描,子代理只读查看器接入 80ms 实时刷新合并与 60 条窗口分页,会话看门狗改为直连归属 Daemon 探针。
- 管理页与个性化体验升级:深色模式新增可开关的透明层呼吸旋转繁星背景(`droidvisx.chat.starfield`);默认设置中子任务三档复杂度拆分为独立的「模型」与「推理强度」两行直选,继承项统一为「跟随主聊天」;智能补全设置改为即时保存并接入平滑折叠动画;精简引用胶囊(QuoteChip)前缀图标。

### Fixed

- 修复置顶流式回复期间向上滚动不出现「回到底部」箭头,以及向上滚离或滚回底部时置顶提问卡回弹/错锁旧提问卡的问题。
- 修复 VS Code/Cursor 宿主 `body.vscode-dark code` 默认样式渗透导致 AI 回复行内代码被染成绿字的问题,以及中文引号/括号紧邻 `**…**` 时加粗漏解析的问题。
- 修复回复中途点击停止(Stop)后已完成的工具回执被丢弃、中断回合不显示「N 个文件已修改/Review」摘要卡片及重复提示 `Stopped` 的问题。
- 修复选择 `/skill`、`/command` 或 `@mention` 补全项后输入框光标错位,以及设置页切换子任务模型时冒泡空值重置选项的问题。
- 修复子代理/Worker 在多步工具间隙短暂闪现 `just now` 与复制按钮,以及 Chromium 良性 `ResizeObserver loop` 触发前端错误遥测误报的问题。

## 0.8.18

### Highlights
Expand Down
4 changes: 2 additions & 2 deletions docs/CAPABILITIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ SDK 中出现接口就自动成为产品功能。
| 文字选择与引用 | 已接入 | 聊天正文的 Add to Chat/By the Way 支持多段追加,紧凑引用块点开查看完整原文、逐项删除;主聊天、BTW、队列、历史编辑与 Viewer 共用展示,保留完整发送文本 |
| 复制代码引用 | 已接入,原生复制仍待实测 | 主聊天、BTW 和代码问答共用行内文件/行号标签,可与文字交替排列;快照与顺序随问题保存、排队及发送。Diff 首次提问自动带入选区,点击引用在当前比较中定位 before/after 行并短暂高亮;主聊天、BTW 点击打开实际文件。支持自有 Diff 的连续单侧选区,以及同一已安装扩展的 VS Code/Cursor 窗口内普通文件单选区复制;未确认来源、多光标、旧标识失效或不支持的剪贴板格式保留普通文本。定位不承诺还原文件旧版本 |
| BTW 回复进度 | 已接入 | 准备时立即显示问题,持续展示实际等待/思考/工具/正文接收状态;已有正文仍显示活动,停止准备后不误发原问题 |
| BTW 读代码与验证 | 已接入,未正式发布 | 内置 eli5 解释约束,按需读取定义与调用处、引用路径和行号;保留读文件/搜索/网页工具,增加固定 Git 查询及隔离 JS/TS 示例验证。脚本只接收显式文本快照,无文件写入、网络、子进程、项目依赖或真实定时器;TS 仅转译。禁用编辑、Execute、委派和其他 MCP 工具,不改项目/配置/Git;Review 继续禁用工具。示例通过不等于项目测试通过 |
| BTW 读代码与验证 | 已接入 | 内置 eli5 解释约束,按需读取定义与调用处、引用路径和行号;保留读文件/搜索/网页工具,增加固定 Git 查询及隔离 JS/TS 示例验证。脚本只接收显式文本快照,无文件写入、网络、子进程、项目依赖或真实定时器;TS 仅转译。禁用编辑、Execute、委派和其他 MCP 工具,不改项目/配置/Git;Review 继续禁用工具。示例通过不等于项目测试通过 |
| BTW 思考内容 | 已接入 | 同时合并 SDK 流式与完整消息中的思考,按消息/块去重并保留实际耗时;正文折叠、限高滚动、复用多语言高亮,每条最多 32,000 个文本单位。无正文时保留状态/耗时并明确提示未返回文本,停止或失败保留已收到部分 |
| 权限与 AskUser | 已接入 | 普通会话与 Mission 均在会话创建前绑定当前审批/提问回调;Mission 就绪后才切换所有权,创建失败仍可回答原会话请求。真实 ProposeMission 审批通过,AskUser 可回答及失败保留旧审批已通过本地回归 |
| TodoWrite Plan | 已接入 | 计划放在创建它的问题底部,默认收起显示当前步骤与完成数;点击展开完整步骤,更新原卡并保留手动选择;完成后保留摘要,新计划不删除历史计划,不在过程区或 Composer 重复展示 |
Expand Down Expand Up @@ -82,7 +82,7 @@ SDK 中出现接口就自动成为产品功能。
| Mission | 已接入 | 审批接线、公开分页目录、历史身份与 SDK 状态订阅已修复。真实执行两个 Feature、Scrutiny 与 User Testing 共 4/4 完成,独立产物验收 29 项及产物测试 32 项通过;规划页重载、暂停/恢复、停止当前 Feature、Viewer 实时进度及完成态通过;最新 bundle 冷启动和页面重载均恢复原会话 4/4 完成详情。使用生产调用链和独立测试外壳;构建、VSIX 校验与安装完成,原生 Cursor 待 Reload 后验收 |
| Worktree 生命周期 | 受限 | 已有创建/关联会话及新增默认目录配置;安装版公开资源没有完整清理/合并/删除语义,不用直接删目录补造 |
| 后台进程管理 | 受限 | SDK 管理终端可创建、交互和关闭,不等价于任意工具后台进程;后者没有完整公开控制契约 |
| 账号、用量、组织策略 | 部分/受限 | 会话用量与默认设置受管状态可读;本地 SDK 无完整账号计费与组织管理资源。官方平台 REST API 存在,但独立登录、权限与产品契约尚未接入 |
| 账号、用量、组织策略 | 部分/受限 | 会话用量与默认设置受管状态可读;设置页侧栏底部展示本地 CLI 登录账户(姓名与邮箱),主聊天 `/limits` 读取官方 `GET /api/billing/limits` 展示 `Standard`/`Droid Core` 的 5 小时、周、月额度进度与重置时间;独立登录、完整计费与组织管理后台仍不在扩展范围内 |
| 跨设备 Session | 部分/未接入 | 已有云同步默认开关;SDK 另有需独立 API Key 的 listRemoteSessions 分页发现接口,尚未接入目录,不能由列表推断远端下载/恢复能力 |
| SDK 自动化 | 未接入 | 已确认公开 automations 资源存在,尚无扩展内配置、执行和生命周期管理流程,不以接口存在宣称功能完成 |
| SSH/relay/workspace 资源 | 未接入独立管理 | SDK 有公开资源,但尚未形成扩展基础设施管理流程;当前本地聊天与工作区功能不等于完整远端管理 |
Expand Down
37 changes: 21 additions & 16 deletions docs/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@

- 代码续写和下一步编辑使用独立设置分区及开关,共享总开关、触发和上下文选项。
编辑预测的地址和模型不进入 FIM 协议列表;保持已有 FIM 值,关闭预测时收起其服务字段。
- 两套密钥只显示各自配置状态,保存时由 Extension Host 密码框输入;取消任一密钥框时不写入本次配置。
- 开关与下拉框像常规页一样即时自动保存,文本与数字输入框在失焦或回车时自动保存,底部不设独立 Save 按钮与已保存回执;
Next Edit 展开区与底部「高级」折叠区统一使用 `AnimatedCollapsibleContent`(平滑高度与透明度过渡)。
- 两套密钥只显示各自配置状态并通过独立按钮(「设置密钥/更新密钥」)唤起 Extension Host 密码框输入;取消任一密钥框时不写入本次配置。

## 共享样式与整改基准

Expand Down Expand Up @@ -47,7 +49,7 @@
空余宽度不分配给短模型名,长名称仍受可用空间约束。
- 正文和操作分层;工具详情按需展开,不为单个省略号、状态或说明额外占一行。
提示只说明当前行动需要知道的内容,错误保留可恢复原因。主聊天顶部的历史裁剪说明与“显示更早的消息”合并为两端渐隐的单行细分割线,内联展开动作平时与辅助文字同色,悬停时通过轻量胶囊底色、微光边与上箭头缓动过渡,不使用底边下划线或全宽按钮。
- 主聊天的运行状态(“Droid 正在工作/回答”、压缩与等待子代理提示)显示在底部 Composer 输入框的占位提示位置:发送后且未输入内容时旋转显示,输入草稿时自动隐藏,停止后消失并恢复“继续提问”占位文字。恢复文件、未发送草稿、附件准备、引用和临时运行提示继续使用 `TranscriptView.statusContent`;切换会话清除旧会话回执,具体工具错误仍附在对应工具结果中。
- 主聊天的运行与停止状态(“Droid 正在工作/回答”、停止中 `Stopping…`、压缩与等待子代理提示)显示在底部 Composer 输入框的占位提示位置:激活且未输入内容时旋转显示,输入草稿时自动隐藏,结束后消失并恢复“继续提问”占位文字。恢复文件、未发送草稿、附件准备、引用和临时运行提示继续使用 `TranscriptView.statusContent`;切换会话清除旧会话回执,具体工具错误仍附在对应工具结果中。
- 最新活动独立显示在历史下方,后续活动到达时旧条目进入历史,不重复显示或计数;只有一条时不显示空历史入口。
“执行过程”标题后紧接历史数量,保留更早仍运行工具的计数。AI 正文按时间顺序留在过程组之间,正文前的组全部归入历史。
历史外层默认收起,打开后各条工具、命令和 thinking 默认展开,仍可单独收起;最新普通活动默认收起,手动选择优先且移入历史后保留。
Expand Down Expand Up @@ -101,7 +103,7 @@
- 切换模型、强度或模式时通过控件回显结果,不在聊天输入框上方弹出“正在更新会话设置”;
保存期间的操作限制和失败反馈照常保留。
- 等级与默认值来自 SDK 当前目录,保留“跟随主聊天”和“模型默认值”;无能力数据时
不显示强度入口。重选当前模型不重置等级,换模型只保留兼容值。
不显示强度入口。子任务模型的三个复杂度档位(轻量/中等/复杂)拆分为独立的“模型”与“推理强度”两行直选,子任务自主等级与模型默认继承项统一为“跟随主聊天”(未指定模型时推理强度显示并锁定为对应档位的 `跟随(低/中/高)`)。重选当前模型不重置等级,换模型只保留兼容值。
- 官方/BYOK/全部使用同一个 Host 来源偏好,按目录 `isCustom` 过滤所有相关选择器,
不清除范围外的已选值。继承项存在时不重复堆空列表说明;加载失败不能伪装成无结果。
- 搜索保留空格编辑、IME、方向键、Tab 与 Escape。菜单开合和焦点返回交给 Radix。
Expand Down Expand Up @@ -176,21 +178,24 @@
标题行 22px、普通条目最小 24px、正文行高 18px,复用共享尺寸 token;
标题操作按钮不能撑高整行,面板不额外叠加上下留白,引用与活动详情按内容展开。
- 输入框上方的用量面板(Context Usage 与 `/limits`)跟随 Composer 宽度,标题行右侧带刷新与关闭操作:
Context Usage 使用单条分段进度条与“色块 + 名称 + 数值”图例;`/limits`(Usage Limits)在标题行提供
`Standard`/`Droid Core` 分段切换,下方分列 `5-hour usage`、`Weekly usage`、`Monthly usage` 三条独立进度条,
刷新与关闭图标按钮保持透明底与无边框,悬停仅提亮图标颜色;Context Usage 使用单条分段进度条与“色块 + 名称 + 数值”图例;`/limits`(Usage Limits)在标题行提供
`Standard`/`Droid Core` 分段切换(激活项悬停保持反色底与文字对比,非激活项悬停仅提亮文字),下方分列 `5-hour usage`、`Weekly usage`、`Monthly usage` 三条独立进度条,
左侧紧接已用百分比,右侧显示重置图标与剩余时间(未开始窗口显示 `Use Droid to start`)。
- 近底发送保持底部;用户上滑、选择文字或操作嵌套滚动区时取消自动跟随。
显式跳底可平滑滚动,减少动画时直接到达。不能靠空白补位掩盖错位或丢内容。
工作/回复/压缩/子代理等待提示在实际回到底部后才固定;从历史位置发送或跳转期间仍留在回复末尾,
不能把“准备跟随”当成“已到达底部”。底部流式跟随时保持提示稳定,短对话紧接正文。
运行提示自行承接列表底部留白,实色背景延伸至滚动区底边,正文不能从提示下方空隙露出。
- 新提问进入聊天列表时直接切换置顶,底部按当前视口剩余高度预留动态留白跑道,AI 在置顶问题下方静止生长回复;
整轮内容超出一屏后自动向下跟随(问题保留在顶部吸顶条),短于一屏结束时保持底部留白不回弹。
用户上滑、选择文字或操作嵌套滚动区时取消自动跟随;显式跳底可平滑滚动,减少动画时直接到达。
底部状态区域(`TranscriptView.statusContent`)在实际回到底部后才固定;从历史位置跳转期间仍留在列表末尾,
底部流式跟随时保持提示稳定,短对话紧接正文,实色背景延伸至状态区底边。
- 历史问题按所属轮次吸顶、由下一问题推离。Plan 归属创建它的问题,完成仍保留摘要,
新计划不删旧计划;回复操作归属整次回答的末尾,运行中不提前显示完成操作。
问题卡片中的计划摘要行保持 28px 高,不叠加容器上下留白;字号、计数与展开步骤保持原有层级。
消息时间默认显示相对时间;悬停提示使用紧凑数字日期与本地时间,不附带时区文字。
吸顶问题进入或退出编辑时,在绘制前同步卡片与原位置占位高度;推离距离使用同一帧的实际列表边界。
- Markdown 引用使用透明底、柔和侧线;代码块和 Diff 使用共享高亮。正文可以完整选择、
复制,未知语言保留纯文本。长内容的虚拟化不能截掉真实正文或冒充完整历史。
- 深色主题下主聊天支持可选的夜空繁星背景(`droidvisx.chat.starfield`,可在管理页「常规」开关):
仅在透明 `<canvas>` 上使用离屏预渲染针尖柔光精灵绘制四层景深呼吸繁星与偶发流星,并以视口右下角为天极、以主聊天长为半径构成左上 1/4 象限顺时针缓慢旋转(斗转星移),保持原有 `--surface` 背景色不变;
浅色主题、开关关闭或面板隐藏时不运行绘制循环,`prefers-reduced-motion` 下仅渲染静态帧。

## 引用与 BTW

Expand All @@ -210,16 +215,16 @@
当前选区猜来源。来源缺失、过期或不匹配时照常粘贴文本;异步识别不得覆盖后续输入。
- 多段引用以紧凑摘要块展示,点击查看可滚动的完整原文;删除独立于展开。追加引用
不覆盖已有输入,超限明确反馈。选区动作执行前重读当前选区,不引用控件或输入框文字。
- BTW 使用代码批注布局:问题以简短身份文字与引用展示,不加大灰框或左侧竖线;
回答保留轻量助手标识,正文和代码复用共享组件。页头只显示 BTW、权限说明图标和关闭,
- BTW 问题使用右对齐自适应宽度聊天气泡(`14px 14px 3px 14px` 右下尖角圆角、中性灰/主题自适应 `--soft-surface` 底色与 `--chat-edge` 细描边,不加 `You` 文字前缀或左侧竖线);
回答保留轻量 Droid 图标与助手标识,正文和代码复用共享组件。页头只显示 BTW、权限说明图标和关闭,
Composer 与页头固定,问题在自己的回合内吸顶;保留现有面板宽度和输入区高度。
- 工具活动在回答区域集中为一行,展开查看真实调用目标及成功、失败或结果未确认状态。
- 回答按真实到达顺序展示:相邻的思考段与工具调用合并为主聊天同款「已探索」折叠组(统计含思考次数,复用 `ActivityGroupView`/`ActivityItem`/`ThinkingView`),正文片段留在各自位置;展开后单行省略展示真实调用目标(完整内容保留悬停提示)及失败或结果未确认状态。运行中的工具或思考在组内以闪动单行显示当前动作与目标。
隔离示例单独折叠展示实际代码与输出,仅结构化执行结果 `ok: true` 显示运行完成;
停止、断线或缺少结果不能补作成功,独立示例完成不代表项目测试通过。详细文本按预算保留,
省略时提示。流式回答期间同时显示停止与排队发送;已有一条排队内容时保留继续编辑能力。
省略时提示。流式回答期间发送与停止在同一位置按是否有可发送内容切换;已有一条排队内容时保留继续编辑能力。
- 等待、思考、工具和正文状态来自真实事件,不编造耗时;缺少思考文本不显示空折叠。
准备时问题立即可见,结束后才清理运行提示。
- BTW 与 Diff 代码问答复用带文字的停止按钮:提交后显示“正在停止…”,禁止重复提交;
准备与运行状态(`Preparing`、`Waiting for reply…`、`Thinking…`、`Using tools…`、`Receiving reply…`、`Stopping…`)统一显示在底部 Composer 输入框占位位置(输入草稿时自动隐藏),不在回答正文下方重复挂等待状态行。
- BTW 与 Diff 代码问答复用同一纯图标停止按钮:提交后切换为禁用的进度图标,禁止重复提交;
当前流结束后保留部分回答并显示“已停止”。停止请求失败时提示并允许重试,连接错误
不标为已停止;状态经共享 Bridge 传递,不以点击或固定延时假定后台结束。
- 关闭仅隐藏,不停止回答或清空同会话草稿;切主会话再清理。Host 接受后只清本次
Expand Down
Loading