Repository navigation
Releases: MCapricorns/mycode
Releases · MCapricorns/mycode
Release list
v0.12.39
Fixed
- MCP HTTP 收到完整 SSE 回复后立即返回,不再等待服务端关闭连接;保留超长错误响应的前缀,限制 stderr 逐行缓存,写入阻塞也受超时约束,取消调用后重新建立连接。
- 会话操作执行期间固定缓存中的账本,避免并发切换超过缓存容量后误报会话不存在;删除会话前若无法确认内存写入已停止,则保留磁盘数据。
- 发送持久化确认不再清空随后输入的草稿;跨会话撤回的引导回到原会话,重新打开时正确恢复;工具调用复用 ID 时不再关联到后续调用的结果。
- 修复文件提及菜单的 Enter 操作;粘贴普通文件路径保留为文本,图片文件 URL 正确解码空格和 Unicode 文件名;Git diff 元数据不再占用行号,正确识别以正负号开头的源码。
- 文件工具预检与执行使用一致的参数别名修复;字符串化参数正确处理 camelCase,显式 snake_case 字段不受输入顺序影响。
- 文件编辑的移位行匹配保留整行及换行语义,拒绝子串和重叠歧义;Unix 文件目录存在无关符号链接或 socket 时不再拒绝普通文件。
- 子代理输出正确脱敏 Authorization Bearer / Basic 和带引号的密钥字段;配置校验错误不再回显可能包含凭据的输入。
- 拒绝格式错误的端点地址和非公网组播下载地址;未完整结束的 Responses 响应不执行部分工具调用,空响应流报告协议错误。
- 新下载更新重置旧载荷的重试次数;macOS 打包使用独立挂载点并在失败时卸载,避免卷名冲突;发布计划避开已被 Release 占用但缺少 Git 标签的版本号。
- 缓存命中率按新输入与缓存读取之和计算,极大 token 数量不再导致百分比溢出;PowerShell CLIXML 正确保留 UTF-16 代理对。
Performance
- 模型目录在流式读取时执行大小上限,避免先分配整个异常响应;折叠的模型列表不再构建全部行;合并重复界面唤醒,减少流式输出的冗余刷新,工具目标去重改为线性扫描。
- 清理未使用的会话 worker Clone 实现和不可达更新按钮分支,合并重复校验逻辑。
Tests
- 为上述问题补充回归测试;发布脚本的浅克隆测试改用真实浅克隆,macOS 打包增加故障清理测试,离线 Wiki 保留有序步骤列表,图标校验区分像素变化与压缩器字节差异。
Full Changelog: v0.12.38...v0.12.39
v0.12.38
Fixed
- 发送菜单按当前回合和附件状态重新判断 Enter 操作,避免回合结束后残留选项吞掉发送;打断发送的附件提示覆盖快捷键与菜单入口。
- 上下文压缩结束、取消或失败后正确处理等待发送的消息;连续打断及跨会话打断保留各自草稿,后台退回的引导不再影响当前会话的同文消息。
- 仅提供 shell 或部分文件工具的自定义角色,可在缺少专用工具时使用获准的读取方式;技能标题限制为 120 个 Unicode 字符,避免异常元数据挤占提示词。
- SSE 消费端退出或输出队列已满时取消请求,及时释放读取任务和响应连接。
- shell 输出缓存分界处保留完整 UTF-8 字符和 UTF-16 代理对;拖入文本时仅丢弃截断处的合法半字符,拒绝损坏编码。
- 图片附件按实际读取字节执行大小上限;配置修复测试显式构造文件权限,不再依赖进程默认 umask。
Performance
- 文件读取按 50 KiB 展示预算构建输出,避免先复制最多 32 MiB 再截断;恰好达到预算的完整行会保留,续读位置准确。
Full Changelog: v0.12.37...v0.12.38
v0.12.37
Fixed
- MCP 工具发现读取全部分页,并对工具总数、页数和重复游标设限,避免漏掉后续工具或无限翻页。
- CodeMode 在日志进入宿主队列前执行累计 4 MiB / 1024 条预算,覆盖空日志、UTF-8 文本和重入序列化;超限终止脚本并取消未完成调用。
- Markdown 代码块、行内代码、引用、缩进代码及转义后的 XML 示例保留为文本,避免误触发工具;继续支持 MiniMax、Qwen 等端点的原始 XML 工具调用。
- 发送消息后切换会话或模型时,继续使用提交时的会话和模型;失败草稿及附件只恢复到原会话,提交期间停止和取消失败均正确清理发送状态。
Full Changelog: v0.12.36...v0.12.37
v0.12.36
Fixed
- 修复升级 GPUI 后,启动时注册
secondary-k快捷键触发 panic、双击应用无法打开的问题。快捷键通过当前平台解析为 Windows 的 Ctrl-K 或 macOS 的 Cmd-K。 - 快捷键注册失败时仅跳过该快捷键并记录诊断,继续打开主窗口;增加平台快捷键解析及无效快捷键不阻断启动的回归检查。
Full Changelog: v0.12.35...v0.12.36
v0.12.35
Added
- CodeMode 支持顶层
await、Promise 和callAsync(name, args),可通过Promise.all并发执行独立的读取与搜索;保留同步call(name, args)。 - 增加可复现的并发耗时示例与使用文档,覆盖调用依赖、错误处理、取消和资源限制。
Changed
- 写文件、shell 等独占工具继续按提交顺序执行;异步调用共享工具预算,执行记录保持调用顺序,脚本结束后取消未完成调用并拒绝启动排队中的操作。
- 更新 README、运行时说明和离线 Wiki,整理配置选择器、图片格式检测与工具策略中的重复逻辑,移除未使用的运行时辅助代码。
Performance
- CodeMode 可重叠等待支持并发的工具调用。在 Windows x64 debug 构建中,8 个各等待 50 ms 的模拟 I/O 调用,中位耗时从同步的 498.08 ms 降至并发的 61.72 ms;真实收益取决于工具延迟,测量条件与复现命令见 Wiki。
Full Changelog: v0.12.34...v0.12.35
v0.12.34
Changed
- 工作区由八个 package 合并为
mycode运行时与mycode-desktop界面,移除中间包和链式通配转导出;内部依赖边由 7 条减少到 1 条,外部依赖版本不变。 - 重写 README、运行时与 CodeMode 文档、Wiki 图谱及模块职责注释;Contributors 仅列真人,使用
.mailmap归一化真人作者别名。 - CI 增加格式、Wiki 快照、GPUI 布局测试和 Rust API 文档检查,发布脚本适配两个 package。
- 解除子代理全局并发数量上限,按需并发运行;新委派需启用角色,
agent_workflow还要求只读sentinel启用。关闭角色后仍保留已有运行的查询和停止入口。 - 子代理设置改为紧凑响应式行与内联模型、思考强度选择器,按实际工具和隔离模式标注权限,并移除旧的数据导入导出设置页。
- 升级
gpui-kit 0.8.1、parking_lot 0.13、rusqlite 0.41、jsonschema 0.60、zip 9.2等依赖,清理子目录冗余 README,更新根 README 与静态 Wiki。
Fixed
- 适配
gpui-kit 0.8.1的滚动事件与快捷键修饰键 API,修复发版门禁编译报错。 - 对齐主代理与子代理提示词、工具权限边界与工作流执行约定,复用侧栏会话行和 Markdown 缓存块。
- CodeMode 提示的调用上限直接引用实际 256 次预算,工具说明不再推荐当前运行未注册的能力;明确 review 同时要求修复时可以实施。
- Windows 子进程回归探针从当前模块路径生成名称,避免重构后静默运行零个测试;统一图片路径读取和 UTF-8 截断逻辑。
Performance
- 流式帧选择只统计达到预算所需的字符,避免反复扫描大段回复,保留 Unicode、取消刷新和事件顺序。固定 fixture 的 release 微基准与 Windows x64 binary 体积对比记录在 Wiki;本机相同构建配置下 executable 减少约 2.92%。
Full Changelog: v0.12.33...v0.12.34
v0.12.33
Added
- 子代理支持四种角色、保留运行记录、继续与引导,以及固定工作流;工作流在整合后由独立 sentinel 验收,保留的 worktree 和运行状态可在重开会话后恢复。
- 会话导航按当前项目筛选,项目快捷入口与会话的持久归属分开保存;未归属的历史会话可从独立入口访问,移除项目快捷入口不会删除历史。
Changed
- Code Mode 从 Rhai 切换为嵌入式 QuickJS,保留取消、工具调用预算和有序进度;原生图片结果只交付一次,并限制待发送图片队列的数量与体积。
- 模型目录保留网关上游来源,只合并明确等价的别名;模型选择器与命令面板统一显示规范名称和来源,并兼容已保存的选择。
- 重写中文静态 Wiki,补全当前运行时、Code Mode 与项目导航文档,保留旧锚点与源码路由,修复中文图谱标签溢出。
Fixed
- 召回消息时回退到该消息之前的完整账本前缀,支持首条消息;恢复输入前检查忙碌与过期请求,保留原历史和工作区文件。
- Windows 后台 PowerShell、MCP 与更新进程隐藏控制台窗口,同时保留输出管道、进程树取消和主动启动 GUI 的默认显示行为;保留 Windows CRT 链接依赖。
- 流空闲超时测试使用暂停的 Tokio 时间与内存响应体,消除依赖实际调度时间的偶发失败。
- Windows 控制台启动回归测试在内存中定义 P/Invoke,并直接使用 .NET 输出 API,避免外部 C# 编译与首次 cmdlet 执行造成的环境依赖;保留 30 秒期限、窗口可见性、输出管道与进程树回收断言,并加入独立阶段记录。
Full Changelog: v0.12.32...v0.12.33
v0.12.32
Changed
- 原生界面重构为顶部项目书架、会话账本与带改动轨迹的工作页;重做 wiki,统一纸白、墨黑、朱红配色和 bracket-M 图标。slogan 为「每次改动,有迹可循。」,浅色与深色保持同一套布局。
- 全局与项目规则标明来源并按优先级装配;提示词准确描述 Rhai、工具参数与既有授权,远程 MCP schema 保持按需发现。
- GitHub Actions 在 Windows ARM64 和 macOS Apple Silicon 原生执行 workspace 测试,发布等待所有平台门禁;测试覆盖 Git 换行转换与各平台的旧目录配置迁移。
Fixed
- 更新 Tokio 至 1.54.1,修复上游
tokio::time::Interval的竞态问题。 - magpie 首次生成的有效无版本绑定规范导入,不再误报损坏;临时文件访问错误不会重置配置,文件信任检查继续生效。
- 模型目录刷新后重新同步 magpie binding 和模型选择,首次打开不再依赖关闭重开;保留未保存设置和各会话已选模型,拒绝过期回复。已选模型不可用时明确报错,不会静默切换到其他模型。
- MCP 工具名冲突、带服务器前缀的误派发与搜索排序,保留连接失败的实际原因。
- codemode 的取消、错误、yield 与结果收集;内层 subagent 具有独立 ID、进度和停止入口,跨回合收集仍能恢复实时状态。停止失败时保留任务行,确认停止后才移除。
- 停止可打断请求准备、连接和上下文收缩,后台任务随驱动取消;同一会话在终态清理完成前不接受重叠回合。
- 停止事件不再积压在逐字显示队列后,隐藏会话不拖慢当前流式输出;重开会话不会重复插入工具调用和结果。
- subagent 的脏 worktree、未跟踪和忽略文件始终保留,返回可恢复路径;停止状态在附加 diff 后仍正确记录为 cancelled。
Full Changelog: v0.12.31...v0.12.32
v0.12.31
Changed
- 转录区各类内容改为卡片区分:助手回答、工具调用组各自成框,思考收进独立卡片——淡紫底色只留在边框与标题上,正文改用常规字体与中性墨色,不再是小号紫色斜体,与正文一眼可分。
- 界面加克制的配色层次,全部取自已有设计 token:工具行图标按类别着色(读取/抓取蓝、编辑与代码紫、搜索琥珀、shell 绿、子代理靛蓝),说话人名字与头像同色,思考卡边框改用思考色描边,表格里的行内代码改用强调底色加强调字色;输入框有草稿时发送键用主按钮的强调填充与描边,引导键用强调底色,发送选择浮层的「引导」「打断」两行图标分别用强调色与危险色区分。
- 工具行渲染开销削减:
run_code行每次渲染的状态计数从「完整拆分结果——逐行收集、拼接脚本输出、为每个内层调用建对象」改为零分配的单遍计数扫描;展开的 diff 预览只对实际绘制的前 80 行编号(原来每次渲染为全部行逐行克隆字符串再丢弃 80 行之后的部分);展开的普通工具结果不再在每次渲染时收集整份行向量,只在 diff 与搜索预览真正需要按行索引时才收集。
Added
- 回合进行中按回车不再直接引导:先在输入框上方弹出小浮层选择「引导本轮」(代理在下一步之前读取,当前回合不中断)或「打断并发送」(停止本轮和所有子代理后立即发送);浮层内回车确认引导、Ctrl+Enter 确认打断、Esc 关闭且草稿保留。Ctrl+G 与停止键旁的箭头仍可直接引导,Ctrl+Enter 仍可直接打断发送。
- 已发出的引导可以撤销:「引导中」条上每条待读引导带「撤销」,点击后核心从引导队列中真正移除该条(已被回合读到的不可撤销),文本回到输入框,可修改后再发。
- 复制出去的内容一律是纯文本:助手回答卡片新增悬停动作「复制为纯文本」,整条回答复制时剥除全部 markdown 标记——标题、粗体、斜体、删除线、行内代码与代码围栏只保留文字与代码本身,表格转为制表符分隔的行,图片保留替代文字,链接保留文字、文字里没有地址时在括号里附上 URL,未闭合的标记与词内下划线(如
snake_case)按字面保留;转录区的选区复制也明确钉死为纯文本,所见即所复制,不再带字体格式或 markdown 源码。
Fixed
- CI 的 clippy 检查(
cargo clippy --workspace --all-targets -- -D warnings)过不去、连带发版被堵:上一批给助手卡片加「复制为纯文本」后,卡片构建函数的参数超过 clippy 上限,两个回调现收进一个具名的动作结构体;mycode-tools里只供 Windows / macOS 启动路径使用的 spawn 与进程收尾代码,在无启动路径的平台上被判死代码,现按各平台消费者的既有 cfg 逐项收拢(无启动路径的平台上RunOutcome只被匹配、从不构造等少数情形用带理由的窄allow)。全 workspace clippy 已恢复零警告。 - 更新自替换脚本的「目标忙」重试测试在 root 下假失败:原测试靠把目录设为只读让
mv失败,但 root 无视目录权限位、替换直接成功;现改用 PATH 垫片模拟mv失败(标志文件存在时失败、移除后委托真实mv),与运行身份无关,重试循环的覆盖不变。 - 本版首次带
[release]标记的推送被上述 clippy 门禁拦下、未能发布;本条为门禁修复后重新触发的发版提交。
Full Changelog: v0.12.30...v0.12.31
v0.12.30
Fixed
- code mode 下所有内层工具只显示为裸
run_code:内层call(...)现在逐次记录工具名、目标、成败与 diff 并写入结果,run_code行标题回退解析脚本中的call("…")、显示真实工具摘要(如read · grep · edit),展开后每个内层调用按真实工具名渲染、edit/write 带 diff 预览,run_code/wait_code也有专属动词、图标与调用计数。 - subagent 面板打不开:dispatch 转发内层进度时给
agent|role|phase协议行加了名字前缀,前端严格匹配失败导致 LiveJob 永远建不起来;现在协议行原样转发,subagent 的运行行、取消按钮与面板恢复。 - Linux 下 workspace 编译失败:
fcntl_fullfsync按平台分流(Apple 用 F_FULLFSYNC、其他 unix 用 fsync)、errno 改用__errno_location,并补上canonical_from_handle与list_descendants的 Linux 实现。
Full Changelog: v0.12.29...v0.12.30