Repository navigation
Conversation
处理 PR makecindy#5738 的 review 反馈: - 访客请求直接按任务记录的 remoteHostId 选择本地或 SSH 执行,不再按路径 反查全部会话;同一路径在本地与其它 SSH 会话并存时访客不再被误判为歧义。 同账号请求仍走原有反查,行为不变 - RemoteFileBrowserManager.request 的 beforeSend 支持异步,完成后复核端点 代次;访客 SSH 请求在实际发送点按最新任务记录重新绑定目录与端点,建链 期间房主撤权或移动任务都不会再把请求发到旧目录 Signed-off-by: david <david@xd.com>
Signed-off-by: 9398-haha <9398ljlj@gmail.com>
Signed-off-by: zqchris <chrisz83@gmail.com>
Signed-off-by: zqchris <chrisz83@gmail.com>
…ment Signed-off-by: zqchris <chrisz83@gmail.com>
处理 PR makecindy#5738 的 review 反馈: - 每次 workingDir patch 同步递增任务目录代次;fs-watch 准入在查库前记下 代次,并在安装订阅的同一同步段内复核,目录中途移动时只丢弃监听,任务流照常 - SSH 搜索的 searchStart 也带上共享访客的发送前门,建链期间撤权或移动 任务目录不会再把搜索发到旧目录;同账号调用形状不变 Signed-off-by: david <david@xd.com>
Signed-off-by: zqchris <chrisz83@gmail.com>
* fix(pi): 模型切换后恢复会话思考档位,不再掉回模型默认档 用户持续报告:会话推理强度会「自动」变成低。pi 会话转录 (pi-agent-home/sessions/*.jsonl 的 thinking_level_change 事件流)给出 决定性证据:每次 model_change 之后紧跟一次 thinking_level 变化,落到 **新模型自己的默认**——声明了档位的 glm-5.3-flash 落到 high(目录 defaultEffort),未声明档位的 step-5-preview-free 落到 low;随后才被 Cindy 的档位协调器纠正回会话原值(max/high),纠正延迟或丢失时用户看到 的就是「自动掉档」。providerModelMemory / newMakerDraft / DB 三层此前已 排查为健康(makecindy#5662 修复在位),根源在 pi agent 的切换路径本身。 两处缺陷,一次修: 1. pi 的 switchModel(跨模型完整路径)在 set_model 成功后不恢复思考档位 —— pi CLI 重置成什么就是什么。现在把目标档位(显式 setOpts.effort > 会话原档位 mutableEffort)重新经 set_thinking_level 下发;新模型不支持 该档(含未声明档位的模型)时保持 pi 默认,与既有能力收敛语义一致。 mutableEffort 同步跟随实际下发值——它是对外汇报(getEffort)与后续切换 恢复的依据,脱节会让下一次切换拿旧值恢复。 2. same-route 快速路径(routeUnchanged && hot)不发 set_model、pi 档位 不动,无需处理——顺带在此登记,避免后来者误改。 测试:pi-provider-routing 新增用例(native 双 provider 双模型,均声明 low/high/max),断言跨模型切换后 set_thinking_level 跟随目标档、不带 effort 的切回恢复会话档位。已反转修复验证「不修即红」。 Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn> * fix(pi): 切模后档位恢复失败不再拖垮已确认的切换,也不误记未生效档位 Review P1 x2: - set_thinking_level 恢复请求此前没有捕获异常。若它在 set_model 成功后超时, setModel 会整体报错并跳过子代理快照收尾,快照停在 pending、委派被永久挡住。 现在恢复被拒或抛错都只记 warn,已确认的模型切换照常收尾。 - restore.success 为 false 时不再把目标档位写进 mutableEffort(对齐 setEffort 的既有语义:只在 Pi 确认生效后更新),getEffort 与后续切换不再使用被拒值。 测试:新增用例覆盖抛错、被拒、成功三路;证伪验证通过。 Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn> * test(pi): beforeEach 重置 failThinkingLevel,断言失败不再污染后续用例 Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn> --------- Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn>
处理 PR makecindy#5738 的 review 反馈:fs-watch 准入此前按规范化结果比对,却放行 访客发来的原始写法,访客可跨帧用 /task/、/task// 等别名让主机为每种写法 各起一个 watcher。现在只放行任务记录的原样路径及其规范形式,每个任务最多 两个 topic,累计数量天然有界。 Signed-off-by: david <david@xd.com>
解决 TaskMoveSubmenu.tsx 冲突:main 侧 5d84f1a 为协同远端 Worker 增加 !session.orcaRemoteLead 隐藏「复制到其他电脑」,本分支为远程 Agent 任务增加 !session.agentDeviceId。两条判据语义互补,合并保留两者。 Signed-off-by: MagicLizi <jiali@magiclizi.com>
Signed-off-by: nana <823073145@qq.com>
feat(agent): show streaming response speed and retain completed results
* fix(pi): settle definite stdio RPC loss without replaying tools Refs makecindy#5725. Preserve exit confirmation, settled results and host cancellation. Signed-off-by: zqchris <chrisz83@gmail.com> * fix(pi): preserve drained results and Stop across RPC loss races Signed-off-by: zqchris <chrisz83@gmail.com> * fix(pi): fence turn admission while RPC loss cleanup is pending Signed-off-by: zqchris <chrisz83@gmail.com> * fix(pi): fence steer mutations and EOF tail callbacks Signed-off-by: zqchris <chrisz83@gmail.com> * test(pi): close real stdout fd in RPC loss fixtures Signed-off-by: zqchris <chrisz83@gmail.com> * test(pi): use a closeable stdio pipe for Windows EOF fixtures Signed-off-by: zqchris <chrisz83@gmail.com> --------- Signed-off-by: zqchris <chrisz83@gmail.com>
受邀者(供应商分享的另一个账号)的 Agent 在分享者电脑上以分享者的系统用户运行。 此前只按黑名单关掉文件与命令工具,其余自带工具(给本机其他会话发消息、用分享者的 claude.ai 账号发布或读取、在本机读文件、WebFetch 走分享者网络等)仍可用,Agent 升级新增的工具也会自动开放给受邀者。 - Claude Code:经 SDK `tools` 只开放白名单内的自带工具;子代理不能带隔离选项; 关闭 claude.ai 连接器、Remote Control 与技能内联 shell。 - Codex:启动时取 app-server 的完整功能清单,白名单之外的功能在线程配置里逐个 关闭;清单取不到就不启动受邀者会话。 - Pi:只放行 Cindy 扩展注册的工具,Pi 自带的 powershell、codemode 等一律拦下且 不交给模型。 - 补单测与三种 Agent 的真机测试(受邀者会话发给模型的工具不超出白名单)。 - 产品规则 §9 第 5 条改为「Agent 自带工具按白名单开放」,取代 2026-10-07「联网 工具不单独处理」:WebFetch 对受邀者关闭,WebSearch 保留。 同账号远程供应商不受影响。 Signed-off-by: Lizi <jiali@magiclizi.com>
fix(shared-task): 访客可在文件浏览器读写本任务工作目录
查询由引擎自己连接的 MCP(自定义 MCP 等)时,能力目录原先只返回 ok: true 和一句“去用引擎的发现入口”,Codex 并没有这样的入口,助手 既拿不到工具也不知道原因(makecindy#5741)。 现在经发起查询的 Session 向引擎读取该服务在本任务中实际持有的工具: Codex 用带本任务 threadId 的 mcpServerStatus/list,Claude Code 用 mcpServerStatus()。有工具时返回原始工具名与截短说明;否则返回 ok: false 与明确的 engineState(not-mounted / no-tools / failed / needs-auth / pending / disabled),并区分引擎没有该入口与读取失败。 不另起进程、不调用服务工具,也不转发引擎失败原文。 Fixes makecindy#5741 Signed-off-by: Lizi <jiali@magiclizi.com>
…lose-crash fix(remote-desktop): 远程桌面结束后不再崩溃,暂停剪贴板不再误报失败
上一版把受邀者会话里白名单之外的 Codex 功能全部关闭,shell_snapshot 也被关掉了。 远程执行时 shell 快照由执行环境在受邀者电脑上按受邀者自己的 shell 配置生成, 不涉及分享者电脑;关掉它会让受邀者的命令缺少 .zshrc 等设置的环境(如 nvm、pyenv 加的 PATH),与同账号远程会话不一致。 - shell_snapshot 加入受邀者白名单。 - 单测覆盖它不被关闭;真机测试核对两种会话里命令、shell 快照、看图、子代理都开着。 Signed-off-by: Lizi <jiali@magiclizi.com>
同账号的其他电脑选了组所在电脑的供应商时,也按组分配:任务所在的电脑先问组所在电脑 「该用哪台」,再自己直接连到选中的组内电脑运行;那台撞到用量上限、登录失效或连不上时 由任务所在的电脑交接到下一台继续,并把需要冷却的电脑报告给组所在电脑。 - 组所在电脑:新增同账号通道 provider-group:remote(pick / cool / leases / view), 给同账号电脑的 maker:provider:list 补组摘要 group;分配器把其他电脑报来的运行中任务 与刚选中的临时占用计入负载。受邀者与共享任务访客调用通道一律拒绝,分享出去的目录里 去掉组摘要。 - 任务所在电脑:第一期的分配 / 自动换电脑 / 发送前换电脑抽出「组来源」,本机的组与另一台 电脑上的组共用同一套流程;另一台电脑上的组的绑定存独立文件;运行中的经组任务按轮报告; 打开远程 Agent 时带防转圈标记 groupAssigned。 - 界面:模型列表与设置页左栏里,被组收进去的远程供应商与分享不再单独列出,组那一项标 「供应商组」,设置页详情只读列出组内电脑与状态。 - 文档:provider-groups.md 改为同账号直连,protocol-compatibility.md 登记新通道与字段。 分享的人经组中转与受邀者那边的运行中换电脑留到 P2b。 Signed-off-by: Lizi <jiali@magiclizi.com>
- 受邀者的新任务按组策略选电脑:选到组所在电脑就在本机运行,选到别的电脑由组所在 电脑中转(事件、反向请求、WebSocket 帧原样转发,载荷不解码、不落盘) - 被中转过来的任务在组内电脑上一律按受邀者隔离(opaque relay 键 + 派生任务 id), 同账号组内电脑需声明 caps.guestRelay - 续接只回到原来那台;启动阶段那台接不下时换组里下一台,旧版本受邀者同样享受 - 删除受邀者时通知接过它任务的组内电脑清理(新 op forget) - 修复拉取器在长轮询期间新加的任务要等下一轮(约 10 秒)才开始拉取的问题 Signed-off-by: Lizi <jiali@magiclizi.com>
组所在电脑在中转受邀者任务时,组内电脑运行中因电脑本身原因失败(用量上限、 登录失效、服务繁忙、一轮中意外断开),先冷却那台,确认还有能接的电脑后, 在事件流里先发一张一次性换电脑凭证(providerGroupSwitch),再转出原错误。 受邀者打开任务时声明 acceptsGroupSwitch,只有持有凭证才强制全量交接并带回 groupSwitchToken 重新打开,由组所在电脑换一台续跑这一轮。撤权、暂停没有 凭证,不触发换电脑。 活动记录在桌面与手机显示「已自动换一台电脑继续」,不出现电脑名;申请弹窗 与「分享给我的供应商」详情改用新说法。新增协议字段均为可选,已登记到 protocol-compatibility。 Signed-off-by: Lizi <jiali@magiclizi.com>
同账号直连: - 组所在电脑确认组已删除时立即解除任务绑定,之后重建同一个组也不恢复自动换电脑。 - 发送前读组设置也计入 3 秒上限,组所在电脑不响应时照常发送。 - 结束一轮时的空负载报告失败后另排重试,不让已结束的任务多算 150 秒。 - 选电脑与记临时占用在同一步完成,同时来的请求不再挤到同一台;等待期间换了账号的分配作废,占用不记进新账号。 - 本机组快照按账号隔离,换账号清空重读、丢弃旧账号迟到的结果;同账号代次变化时保留快照。 - 设置页里组所在电脑自己的供应商掉登录或被停用时,组那一项照常列出,不和组员一起消失。 分享的人经组所在电脑中转: - 启动阶段每台最多试一次,组里能接的都试过才报错,不再固定最多 8 台。 - 发打开前先记下要交给哪台;删除受邀者时连同启动失败的那台一起通知,没通知到的持久记下、定期补发。 - 打开结果不明时先用同一个任务 id 请那台关掉再换下一台;等 caps 期间任务已结束则不再打开,已关闭的连接不能再打开。 - 同一次拉取带回启动与结束时不再丢掉结束通知。 - 选中时即预占负载(含组选中组所在电脑本机运行的受邀者任务),结束时释放。 - 受邀者自己填的 relay 不放宽它的运行数上限。 分享的人运行中换电脑: - 组设置关闭自动换电脑时照常冷却出问题的那台,但不发换电脑凭证。 - 用户亲自接手后的那次发送带 groupNewRound,组所在电脑清掉这一轮已换下来的电脑。 - 组选中本机运行时,一轮进行中本机 Agent 意外结束也发换电脑凭证。 - 用户在交接途中接手时,作废已登记给下一次打开的凭证。 Signed-off-by: Lizi <jiali@magiclizi.com>
sh 的语法错误退出码恰好是 2,与「跳过本轮」撞码:引号没配平的前置检查命令 每轮都被记成 skipped,任务悄悄停摆且不提醒。 - 执行前在 POSIX 上先 sh -n 预检(只解析不执行),语法错误按失败阻止本轮并 走原有失败提醒;Windows 不变 - 创建/修改任务保存前置检查命令时同样预检,语法错误当场以 INVALID_PARAMS 拒绝 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
映射命令里的虚拟路径时,路径尾部会把紧随的闭合引号一起吞进去,再按引号上下文 转义,'…/x.mjs' 被改写成 '…/x.mjs'\'',留下未闭合的引号。前置检查命令因此在 保存时就坏了。路径尾部遇到单/双引号即止。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
启动失败换下一台(nextAfterStartFailure)读到组所在电脑确认组已删除时,与发送前、运行中换电脑同样立即解除任务绑定,不必等下一次发送前检查(provider-groups.md §9.4)。读不到时不动绑定。补回 PR makecindy#5737 分支上那次修复里的这一处。 Signed-off-by: Lizi <jiali@magiclizi.com>
…k-move-project fix(desktop): 远程 Agent 任务可以移动到其他项目
* fix(remote-agent): 远控任务用分享供应商时按分享目录显示模型 A 远控 B 上的任务、Agent 在分享来的供应商(share:<id>)上时,桌面控制端此前放弃读分享目录, 转读 B 自己的目录,模型按钮显示「模型信息暂不可用」。分享按账号授予,控制端自己的已收到列表里 也有同一条时,改由控制端经自己的分享通道读该分享的目录与 Agent 能力,并把这条分享并进候选; 控制端没收到时维持原样。 Signed-off-by: david <david@xd.com> * test(remote-agent): 补远控任务 Agent 在分享上时的目录来源与面板渲染测试 把会话视图挑选本机也收到的分享抽成 controlledTaskReadableShareIds,串起会话视图与输入框的判定 验证模型目录指向 share:<id>;面板渲染测试确认打开时停在分享目录、不显示被控电脑的模型。 Signed-off-by: david <david@xd.com> --------- Signed-off-by: david <david@xd.com>
* fix(desktop): 冷 Pi 存量路由死掉时切模降级继续,不再与发送互相锁死 存量 BYOM provider 被删除/不再提供当前模型后,历史会话的切模路径仍先按 存量路由冷启动 bootstrap 以核实当前窗口;bootstrap 按 fail-closed 语义必然 失败,切模被拒、发送同样失败,会话永久卡死且无恢复入口。 现在恢复失败只记日志(完整原因仍进 Main 日志,makecindy#5508 诊断不变),并与 「跳过核实」同款语义置 coldPiRouteWithoutLiveWindowCheck:闸门矩阵对未知 当前窗口本就 fail-open 放行热切,目标路由由下一次发送懒创建;届时目标路由 bootstrap 失败会带真实原因浮现。runtime-not-live(bootstrap 声称成功但无活 会话)保留原 fail-closed 出口。 Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn> * fix(desktop): 处置 review——降级日志文案独立 + 恢复落点分支表可执行 review 反馈两条: 1. 降级路径复用「runtime selection unchanged」日志文案会误导排障(切模实际 会成功)。拆出 COLD_PI_REHYDRATION_DEGRADED_LOG_MESSAGE;fail-closed 路径仍用原文案。 2. 接线测试只有源码字符串。把恢复失败后的落点抽成可执行函数 classifyColdPiRehydrationOutcome(register 与单测共用),补分支表执行 测试:degraded 只在「恢复失败且无活会话」时成立,runtime-not-live 保留 fail-closed,有活会话一律 verified。 Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn> --------- Signed-off-by: Zhang Yunjin <zhangyunjin@zju.edu.cn>
) XD 网关已上架 Haiku 5.5 / Sonnet 5.5,但模型目录没有这两个型号;上游没实报档位时网关只能回落到 目录,查不到就下发不了 efforts,界面因此不显示思考强度。 - 随包 model-registry.json 同步服务端 xindong/cindy-server#863:新增两者的公共资料与 Claude Code / Codex 官方路由,五档 low~max、默认 medium、1M 上下文、128K 输出;revision 2026-10-10T16:00:00.000Z, 与服务端同内容。 - Anthropic 动态发现在目录缺失时,只把 Haiku 4 及更早当作 200K、不可调档;Haiku 5 起按当代模型处理。 - 导入本机 Claude Code 会话时,不再把 Haiku 5.5 归为 Haiku 4.5、Sonnet 5.5 归为 Sonnet 5。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
- 命令含 NUL 等非法参数时 execFile 同步抛错,预检改为不下结论,交给真实执行 折叠成失败结果,保持 executePreRunHook 永不 throw - 预检接入任务的取消信号,超时取配置值与 5 秒的较小者;真实执行只用剩余预算 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
…uble-tap-rename feat(mobile): 双击任务标题直接改名,改名按钮不再被键盘遮挡
WebSocket 打开后看门狗会为 hello/ack 重新计一段完整窗口;按 connect() 起算的 总时长判断会在这段新窗口内误判过期并丢弃仍有效的连接。改为记录看门狗每次启动时的 墙钟截止时刻,与看门狗同一判据。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
重连补发与过期请求替换占位帧都会把 attempts 清零,但保留了旧连接上的 firstSentAt;对端在本轮重发前就累计 ACK 的消息会把整段离线时间算作 RTT。 两处统一改走 resetReliableSendRound,firstSentAt 随本轮重置。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
…-pinch-lift-jump fix(mobile): 看图器双指先后抬起时图片不再跳动回弹
上传中、失败重试与收起徽标「+N」都压在两种模式都是深色的遮罩上, 原先用会随主题反相的 ctaText,深色模式下变成近黑,几乎看不见, 看起来像已上传完成。改用恒白的 swipeActionText(与同托盘标注角标一致), 并补双主题回归测试。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
* fix(mobile): 点开自己发出的图片时先用本地图垫底,不再黑屏重新加载 气泡缩略图用的是手机本地留存的发送图,查看器的垫底却只查远程缩略图缓存, 自己发的图从未取过远程缩略图,打开即黑屏转圈等原图。图集条目带上与气泡 同源的本地图,查看器优先用它垫底,原图到达后照旧替换。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(mobile): 看图垫底优先用持久本地副本,发件箱文件清理后不再黑屏 发送预览多指向发件箱上传文件,消息送达后即被清理;查看器改为优先用 持久保存的本地缩略副本,只有副本尚未写好的发送窗口才用发件箱地址。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> --------- Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
…work perf(device-link): 弱网下压缩远程回包、按往返时间调整重发并修复重连重复发送
- 后台运行中的普通任务持续收到列表推送时,内存只保留最近一页(80 条), 不再因运行中任务免于全局淘汰而无限增长、每条推送整窗复制排序 - 常驻的最近 5 个聊天页不在前台时暂停任务列表订阅, 任务状态变化不再带着所有后台聊天页的正文重渲染 - 本地诊断日志每 30 秒及每次 js stall 后记录内存消息条数、订阅者数、 各推送通道处理耗时和请求次数,便于定位下一次卡顿 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
- 消息条数等字段改名,避开脱敏器精确匹配的 messages 键 - 通道名改为数组里的值,不再作对象键,避免名字含 token 的通道丢失计数 - 补经过 serializeMobileDebugRecord 的断言,以及后台单窗上限保留本地系统卡的用例 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
首页任务行经首页状态和逐任务消息预览两类订阅接收更新,只记全量 store 订阅会漏掉它们。三类订阅分开记录,并补用真实 store 订阅的测试。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
* fix(mobile): 停止后消息菜单也能删除消息 删除入口不再随手机本地运行态隐藏,对齐桌面一直显示; 运行中能否删除交给被控端判定,被拒绝(SESSION_RUNNING)时提示等回复结束。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * test(mobile): 用行为测试覆盖删除入口与运行中拒绝 抽出 isSessionRunningRemoteError 识别被控端 SESSION_RUNNING 拒绝,按隧道实际 错误形态测试;渲染测试锁定本地仍显示运行中时 More 菜单保留删除项。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> --------- Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
…ice-grouping fix(sidebar): 断线时保留设备分组
Merge makecindy/cindy main@45f828920. Keep Cursor native ACP, local-workspace Cursor workers, and the mobile model-not-settled gate together with upstream provider-group agent switches and host new-task defaults. Co-authored-by: Ken <9398ljlj@gmail.com> Signed-off-by: Cursor Agent <cursoragent@cursor.com>
* fix: 远程展开运行中工作组时保留已显示的活动行 运行中的工作组折叠时显示被控端投影的几条活动行。展开后在明细读到任何 内容之前继续显示这几行,不再先清空、加载完再出现。手机与桌面共用 DeferredHistoryWork.awaitingDetails 判据。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix: 桌面展开时明细区立即打开,交接只在已打开的区域内换行 明细读到后再打开 Collapse 会先卸载活动行、再从 0 高度播放展开动画, 仍会出现空白一帧。改为展开即打开明细区(只含加载圈),活动行保留在 上方,明细到达后在已打开的区域内直接替换。手机端补组件级渲染测试。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * test: maker-shared 新用例的明细 mock 标注 HistoryDetailPage 类型 fixture 的 details mock 把空 messages 推断为 never[],新用例的 resolve 因此无法赋给 finish,包级 tsc --noEmit 报 TS2322。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> --------- Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
…-jank fix(mobile): 长时间使用后点进任务、展开项目、新建任务不再越用越卡
The merge kept upstream's normalizeBotModelChain import. register.ts no longer calls it, and desktop ESLint rejects the unused binding. nextBotModelRoute and BotModelRoute stay. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Ken <9398ljlj@gmail.com>
处理 makecindy#5818 的审核意见: - 共享任务里所有 user 消息都右对齐,改按归属判断:访客消息只有作者账号是 当前账号才染,房主消息只在不是以访客身份查看时染(作者账号只用于展示) - 伙伴群聊的自己消息与待发送气泡也应用同一配色,发出时不再换色 - 着色强度按气泡内实际出现的文字(正文、次要、弱提示、行内代码)收敛到 不低于 4.5:1;已满足的颜色不降低,补充按真实主题色的对比度测试 - 保存失败的提示提供「重试」,强制再写一次,不被「颜色未变化」跳过 Signed-off-by: kirozeng <kirozeng@gmail.com>
* fix(scheduler): 没指定模型的定时任务跟随新建任务默认,不再写死 Sonnet 4.6 定时任务(及脚本定时任务)留空模型时,运行期按新建任务口径实时解析 (模型, 来源):先用新建任务里显式选过且仍可用的模型,否则按「没选过」的 校准规则挑(区域标记 → 草稿种子 → 订阅优先的第一项);一个可用来源都 没有就明确失败。删除 scheduler-host/model-defaults.ts 与 renderer 的 schedulerFallbackModel。 - 草稿校准逻辑移到 apps/desktop/src/shared/draftModelCalibration.ts, 新增 resolveNewTaskDefaultRoute,main 与 renderer 共用;main 侧读 newMakerDefaultsCache 的草稿镜像。 - 桌面定时任务表单第三级回退改用同一解析,供应商清单到位后回填。 - 手机共享定时任务表单不再预填 Sonnet 4.6 / gpt-5.5,留空由运行电脑解析。 - /learn、IM 卡片新建任务、分享导入缺草稿偏好、协同 Worker 的最后兜底 同样不再写死型号。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(scheduler): 默认模型与来源成对落库,已有任务投递不再要求默认路由 - 桌面定时任务表单第三级回退把新建任务默认的来源与模型一起回填(不覆盖用户已选来源), 模型标签同源显示;避免 runner 把空来源重新解析成原生默认(可能是网关)。 - 心跳绑定会话首次按新建任务口径解析默认模型时,同样把来源写入会话并与模型同轮落库。 - 有模型或来源偏好时不再因清单发现失败换掉草稿记着的来源,与新建任务一致。 - 脚本定时任务投递到已有任务时不解析、不校验默认路由,只有新建任务才需要。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(scheduler): 无人值守默认模型解析按当前账号读取新建任务草稿镜像 getNewTaskDraftSelection 与 getSelectedNewMakerRoute 一样按 owner 隔离;切账号后新 renderer 尚未推送快照的窗口内返回 null,不用上一个账号的模型 / 来源偏好。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(scheduler): 定时任务表单一二级默认回退也带上与模型成对的来源 一级取任务记忆的来源,二级取对话草稿记着的来源,与第三级一致;避免显式模型配空来源后 被 runner 重新解析到原生默认来源。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(scheduler): 表单初始化与模板换 agent 时成对应用默认模型与来源 makeDefaultForm 与 resolveTemplateAgentFields 改用 getScheduleDefaultRoute,任务记忆的来源 优先,否则取默认路由成对的来源;至此表单所有默认模型入口(初始化、清单到位回填、模板换 agent、模型标签显示)都按模型与来源成对处理。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(scheduler): 默认模型限定在已定来源内并整对应用 getScheduleDefaultRoute 增加 preferredProviderId:给定来源时只接受同来源的一、二级结果, 第三级只在该来源内挑;表单初始化、清单到位回填、模板换 agent、模型标签显示统一传入 已定来源并整对应用返回的 (模型, 来源),不再拿别处的来源拼模型。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> --------- Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
* fix(voice): 长段语音润色不再因返回数据超限而失败 润色返回的长度上限原本按流式数据的原始字节计算。网关每个事件只带 1~2 个字, 却包着约 180 字符的 JSON,润色结果超过约 550 字就必然超限,长段语音只能保留 原始识别文本。 手机与桌面改为按模型实际输出的文字计算上限(仍为 64,000 字),并对单个未结束 的 SSE 事件做同样的上限保护;手机端的流式与整包两条读取路径都已覆盖。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> * fix(voice): 润色响应保留整体与单个事件上限 只按输出文字计算上限后,网关持续发送不含文字的 SSE 事件,或单个完整事件 很大但文字很少时,都不会被拦下。现在三项上限并存:模型输出文字与单个 SSE 事件各不超过 64,000 字符,整个响应不超过 2,000,000 字符(约为托管服务 1,024 token 输出上限的 10 倍)。手机端流式与整包两条读取路径同样适用。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com> --------- Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
…le-color feat(mobile): 新增「我的消息气泡颜色」设置
Merge makecindy/cindy main@47da2a9c9. Keep Cursor native ACP, local-workspace Cursor workers, and the mobile model-not-settled gate together with upstream's new-task schedule default, voice polish limit, and mobile bubble color. Co-authored-by: Ken <9398ljlj@gmail.com> Signed-off-by: Cursor Agent <cursoragent@cursor.com>
Signed-off-by: zqchris <chrisz83@gmail.com>
Signed-off-by: nana <823073145@qq.com>
…ion-layout fix(mobile): 修复版本卡片拥挤并缩小更新按钮
…-images feat(media): 支持 Art 接入自定义图片和视频来源
* fix(remote-agent): resolve hosted Claude SDK request identities Signed-off-by: MagicLizi <jiali@magiclizi.com> * test(remote-agent): clean provider proxy fixtures on startup failure Signed-off-by: MagicLizi <jiali@magiclizi.com> --------- Signed-off-by: MagicLizi <jiali@magiclizi.com>
* fix(bots): allow model recovery during teammate creation Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * docs(design): refresh inventory for teammate model recovery Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): preserve invitation recovery across profile and mobile settings Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(ci): give desktop typecheck sufficient heap Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(mobile): retain invitation history during recovery Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(mobile): require a model when creation default is empty Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): validate advertised creation default against live catalog Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): recheck inherited model before remote creation Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): validate desktop invitation route before persistence Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): resolve legacy implicit sources before creation validation Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(mobile): open history search on reused session routes Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): validate changed primary routes before local save Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): retain creation draft during provider setup Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): normalize legacy selection before save validation Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * fix(bots): scope creation model override to visible primary Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> * ci: reuse upstream desktop typecheck heap configuration Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> --------- Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com> Co-authored-by: Chris <4436110+zqchris@users.noreply.github.com>
Merge makecindy/cindy main@fa3fc88d3. Keep Cursor native ACP, local-workspace Cursor workers, and the mobile model-not-settled gate together with upstream bot model recovery, custom image and video providers, and hosted Claude provider routing. Co-authored-by: Ken <9398ljlj@gmail.com> Signed-off-by: Cursor Agent <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Validate the Cursor ACP fixes from upstream PR makecindy#5611 against upstream main at 44809ba.
This draft runs the existing repository CI in the contributor fork while the upstream Actions run awaits maintainer approval. The feature branch contains native Cursor integration, lifecycle and plan fixes, complete desktop type coverage, and draft model synchronization.
Local validation: desktop and mobile typechecks, maker-core build, 1,988 targeted tests, lint for all modified desktop files, and native Cursor multi-turn/edit/resume/cancel/MCP smoke tests pass. GUI and real Memory validation are in progress in an isolated development instance.