Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3930 commits
Select commit Hold shift + click to select a range
2328744
docs(design): 补记 09-07 圆角裁决的授权记录
kirozeng Sep 8, 2026
c9b337f
fix(codex): 区分 native fork 与 legacy fork 参数
DavidShenXD Sep 8, 2026
bcbe640
fix(anthropic-compat-proxy): 回环端口 ECONNREFUSED 的 502 明确提示本地代理 / SSH 隧…
FicoHub Sep 8, 2026
785c721
fix(skillhub): 保护外部导入源及共享停用偏好
xd-bobo Sep 8, 2026
ee09e9a
fix(desktop): 点击灵动岛完成任务后立即收起提示 (#4094)
dashhuang Sep 8, 2026
e9a6548
fix(desktop): 远程任务顶部仅保留异常提示 (#4106)
dashhuang Sep 8, 2026
d94ddc1
fix(desktop): 清除伙伴消息的灵动岛未读状态 (#4054)
dashhuang Sep 8, 2026
d05a257
fix(remote-desktop): 将桌面捕获隔离到专用沙箱窗口
dashhuang Sep 8, 2026
043eaec
Merge pull request #4072 from kirozeng/docs/visible-layer-radius-regi…
kirozeng Sep 8, 2026
655539e
fix(skillhub): 校验发现根归属并统一技能互斥键
xd-bobo Sep 8, 2026
94573ab
fix(desktop): bound foreground worktree validation and batch Git prob…
dashhuang Sep 8, 2026
7481d6a
Merge latest upstream/main into routine-triggers
zqchris Sep 8, 2026
c651c37
Merge pull request #4114 from makecindy/cindy/fierce-kernighan
DavidShenXD Sep 8, 2026
d0a3021
fix(mobile): 修复 Android 听写输入文字重影
DavidShenXD Sep 8, 2026
96ab9eb
Merge origin/main (#4072 圆角登记框架): 对齐可见层登记,收拢用量图表交互登记
kirozeng Sep 8, 2026
b57c5ee
fix(mobile): 统一待发送与正式消息的附件布局 (#4069)
dashhuang Sep 8, 2026
f6bb669
fix(skillhub): 保存停用发现入口并限制插件技能启停
xd-bobo Sep 8, 2026
f3203a7
Merge pull request #4076 from kirozeng/fix/usage-chart-shapes-and-dat…
kirozeng Sep 8, 2026
fb54a6f
fix(model-picker): 优化搜索排序与远程模型选择 (#4105)
zqchris Sep 8, 2026
35bac02
Merge pull request #4119 from makecindy/cindy/silent-hopper
DavidShenXD Sep 8, 2026
bbde636
fix(skillhub): 按原始注册表名称卸载大小写变体
xd-bobo Sep 8, 2026
ae20637
fix(remote-desktop): 校验本地控制授权入口并明确安全边界
dashhuang Sep 8, 2026
9cbab75
Merge upstream/main and regenerate design inventory
zqchris Sep 8, 2026
99660bc
fix(skillhub): 保留外部导入与详情跳转的项目范围
xd-bobo Sep 8, 2026
e8676a1
fix(desktop): make worktree recycling durable and reference-aware
DavidShenXD Sep 8, 2026
f8d2676
fix(desktop): schedule worktree recycling on demand and limit concurr…
DavidShenXD Sep 8, 2026
c9a7a43
fix(models): decouple guest provider settings from gateway media
zqchris Sep 8, 2026
e17ca01
fix(mobile): size share images from local files
DavidShenXD Sep 8, 2026
8269247
fix(models): retain redacted media initialization errors
zqchris Sep 8, 2026
3f53c14
fix(skillhub): 冻结活动任务的停用技能物理身份
xd-bobo Sep 8, 2026
4021474
fix(desktop): avoid worktree scan buildup on window focus
DavidShenXD Sep 8, 2026
b5d0959
chore(remote-desktop): 同步主干并重建设计台账
dashhuang Sep 8, 2026
4cdc41f
fix(desktop): preserve worktrees when recovery or runtime evidence is…
DavidShenXD Sep 8, 2026
d69df29
fix(mobile): preserve inline images and clean cancelled writes
DavidShenXD Sep 8, 2026
4fe4211
fix(remote-desktop): 退出播放时释放 iOS 音频会话
dashhuang Sep 8, 2026
f87d248
fix(core): release startup leases after confirmed Pi exit
DavidShenXD Sep 8, 2026
5c0e4e0
Merge pull request #4122 from makecindy/cindy/noble-cohen
DavidShenXD Sep 8, 2026
be07c6a
fix(skillhub): 原生确认卸载并校验启动停用目标
xd-bobo Sep 8, 2026
5114007
fix(desktop): 开发启动按地区选择服务器端点
dashhuang Sep 8, 2026
5004489
fix(skillhub): 纳入置顶和已创建任务的项目目录
xd-bobo Sep 8, 2026
280d277
fix(desktop): make all login accounts reachable (#3323)
weikl666 Sep 8, 2026
f8fbf30
fix(desktop): read legacy worktree references conservatively
DavidShenXD Sep 8, 2026
79fe64a
fix(codex): Chat bridge 按每个对话附带 x-opencode-session 稳定会话头,修复 OpenCode …
FicoHub Sep 8, 2026
079519b
fix(pi): preserve skill identities across settings rewrites
xd-bobo Sep 8, 2026
222579f
fix(desktop): 按需检查当前任务的 worktree
DavidShenXD Sep 8, 2026
3477a37
fix(worktree): close final recycle race and auth lease
DavidShenXD Sep 8, 2026
e083819
fix(skillhub): exclude internal rename backups from packages
xd-bobo Sep 8, 2026
5bf2387
fix(bots): refresh derived defaults when provider and engine state ch…
zqchris Sep 8, 2026
5122621
fix: stabilize Cindy Make and permission approvals
MagicLizi Sep 8, 2026
ac7c60a
merge: Cindy Make permission fixes
MagicLizi Sep 8, 2026
b2465d2
merge: sync latest origin/main
MagicLizi Sep 8, 2026
4a058ee
fix(bots): filter recovery model routes by installed runtimes
zqchris Sep 8, 2026
688478a
test(pi): avoid bulk filesystem writes in alias budget coverage
xd-bobo Sep 8, 2026
8ab2e01
fix(bots): protect routine settlement and internal schedule access
zqchris Sep 8, 2026
67727b9
fix(desktop): 同步 worktree 存活状态并限制探测超时
DavidShenXD Sep 8, 2026
c114a72
fix(worktree): persist lease retries and recovery state
DavidShenXD Sep 8, 2026
9605e0e
fix(bots): connect remote harness task tools
zqchris Sep 8, 2026
851b2eb
Merge upstream/main and preserve routine translations
zqchris Sep 8, 2026
e6d41a5
chore: 同步 main 并合并远程桌面术语与设计清单
dashhuang Sep 8, 2026
d35671c
fix(bots): resume empty default-chain profiles when sources recover
zqchris Sep 8, 2026
b8e308f
chore: rerun PR checks after refreshing base
zqchris Sep 8, 2026
dbc9c73
fix(skillhub): match installed market copies across name casing
xd-bobo Sep 8, 2026
9f14afb
merge: 同步 main 并保留 Auto 拒绝理由与 MCP 提示
dashhuang Sep 8, 2026
fd0788a
Merge pull request #4121 from makecindy/guest-provider-list
zqchris Sep 8, 2026
3910378
feat(bots): unify persistent account authorization cards
zqchris Sep 8, 2026
340d45c
fix(desktop): support worktree references in inline db worker
DavidShenXD Sep 8, 2026
8b6c024
fix(bots): require applied remote helper configuration
zqchris Sep 8, 2026
1b52f5e
fix(skillhub): associate market copies by registry slug
xd-bobo Sep 8, 2026
cfff46a
fix(bots): refresh inherited settings and wait for runtime roster
zqchris Sep 8, 2026
82e7c3c
fix(desktop): 更新 worktree 基准脚本状态模拟
DavidShenXD Sep 8, 2026
61a4877
fix(bots): restore empty defaults and lock pending creation
zqchris Sep 8, 2026
c37ba2c
fix(bots): include remote helper in frozen capabilities
zqchris Sep 8, 2026
2ff578f
fix(bots): synchronize routine lifecycle and start event publishers
zqchris Sep 8, 2026
d01d563
fix(bots): keep source recovery available after onboarding dismissal
zqchris Sep 8, 2026
c7609f8
fix(desktop): 保留 worktree 失效状态
DavidShenXD Sep 8, 2026
2f08bd5
fix(desktop): 保留注册 worktree 的规范路径引用
DavidShenXD Sep 8, 2026
072754d
fix(bots): require helper before remote Claude startup
zqchris Sep 8, 2026
2c40983
fix: coordinate skill mutations across clients and scan worktree details
xd-bobo Sep 8, 2026
af028cc
fix(remote-desktop): cover cold capture startup in negotiation budget
dashhuang Sep 8, 2026
de65473
fix(bots): use static routine dependencies and retryable deletion
zqchris Sep 8, 2026
564ba91
fix: release leases on pre-start failures
DavidShenXD Sep 8, 2026
a5d332e
fix(desktop): 切换任务时重置 worktree 存活状态
DavidShenXD Sep 8, 2026
0d1a5c7
Merge pull request #4066 from zqchris/fix-bot-send-and-codex-tools
zqchris Sep 8, 2026
e3df7ac
fix(desktop): 保留暂停探测状态并规范探测错误
DavidShenXD Sep 8, 2026
a2f9a49
fix(bots): drain active routines before stopping or replacing engine
zqchris Sep 8, 2026
01c7d12
fix(desktop): atomically replace pooled worktree records
DavidShenXD Sep 8, 2026
1f607d9
fix(bots): bound event receipts and defer routines during scheduler s…
zqchris Sep 8, 2026
cefbca1
fix(remote-desktop): isolate renewals and first-frame capture
dashhuang Sep 8, 2026
e07d852
fix(desktop): 同步恢复后的 worktree 存活快照
DavidShenXD Sep 8, 2026
ec2c59c
fix(bots): bound and deduplicate routine source status reports
zqchris Sep 8, 2026
231d68e
fix(desktop): restore pooled generation after reset failure
DavidShenXD Sep 8, 2026
37e3536
fix(bots): filter routine runs before sidebar SQL results
zqchris Sep 8, 2026
9785f7e
chore: sync main before authorization card PR
zqchris Sep 8, 2026
f4bfb32
fix(desktop): complete in-process worktree cleanup barriers
DavidShenXD Sep 8, 2026
f425197
fix(bots): preserve authorization continuation and durable card identity
zqchris Sep 8, 2026
9fe9bda
fix(bots): await owner database readiness for routine startup
zqchris Sep 8, 2026
2181424
fix(bots): reject authorization continuation after rewind
zqchris Sep 8, 2026
b3b99c6
fix(bots): fence authorization creation and continuation against hist…
zqchris Sep 8, 2026
f97bbce
fix(worktree): roll back failed pool reuse and shutdown cleanup
DavidShenXD Sep 8, 2026
95d29c1
fix(bots): enforce plugin policy throughout authorization
zqchris Sep 8, 2026
d096f00
fix(bots): sanitize routine plugin errors and await read effects
zqchris Sep 8, 2026
57a643b
fix(bots): reject authorization for inactive teammates
zqchris Sep 8, 2026
b7b56bc
fix(mobile): captcha 加载失败文案补网络指引 (#3205)
lengjingxu Sep 8, 2026
eec2a49
fix(bots): bound routine requests before engine readiness
zqchris Sep 8, 2026
1aa4041
fix(bots): revalidate card actions and refresh restored reopen state
zqchris Sep 8, 2026
0f9a630
fix(worktree): safely recreate saved branches during recovery
DavidShenXD Sep 8, 2026
d2f9ef9
feat(desktop): 会话已加载窗口显式建模,孤岛接回主段后零成本跳转 (#3693)
Michael-Yu2978 Sep 8, 2026
24f7269
fix(bots): settle authorization action recovery failures
zqchris Sep 8, 2026
6ccb25b
Merge remote-tracking branch 'upstream/main' into bot-authorization-c…
zqchris Sep 8, 2026
aeaa885
fix(bots): bound routine envelopes and require stable permissions
zqchris Sep 8, 2026
6678fd3
fix(desktop): 工作目录缺失时恢复目录并继续对话 (#4060)
dashhuang Sep 8, 2026
66adfb5
feat(mobile): 支持详细本地 Debug 日志与手动上传摘要 (#4092)
dashhuang Sep 8, 2026
f93cfcb
fix(bots): preserve local authorization credential links
zqchris Sep 8, 2026
ca4bdc9
fix(voice-input): 改进个人词汇学习,候选两次自动入库 (#4095)
dashhuang Sep 8, 2026
dfbcfc6
fix(mobile): 新建任务按设备记住上次显式选择的项目目录,重进不再回退到最近首项 (#4113)
FicoHub Sep 8, 2026
dd7b352
merge: 同步 main 并隔离目录恢复提示与审批原文
dashhuang Sep 8, 2026
d81d2e9
Merge remote-tracking branch 'upstream/main' into bot-authorization-c…
zqchris Sep 8, 2026
4dd95d8
fix(desktop): 将任务简介中的 Markdown 转为可读纯文本 (#4130)
dashhuang Sep 8, 2026
89eb06a
fix(windows): allow packaged barrier helper cold start
DavidShenXD Sep 8, 2026
10928e6
fix(codex): 修复切换压缩工具 ID 错配及独立代理恢复 (#4129)
zqchris Sep 8, 2026
7bf942a
feat(models): 统一模型资料优先级并接入服务端本地目录 (#4108)
dashhuang Sep 8, 2026
7f7c758
fix(mobile): 恢复消息菜单图标并统一跨端规范 (#4133)
dashhuang Sep 8, 2026
637f0a8
fix(pi): restore plugin cards and shared runtime controls (#4132)
zqchris Sep 8, 2026
8eb6249
fix(worktree): keep retrying deferred recycle requests
DavidShenXD Sep 8, 2026
5668df5
fix(chat): 简化 Subagent 标题并保持卡片紧凑 (#4140)
dashhuang Sep 8, 2026
9630a9c
fix(bots): 支持伙伴全局模型恢复默认 (#4143)
zqchris Sep 8, 2026
afa8a51
fix(pi): 继承用户全局约定到隔离运行目录 (#4126)
zqchris Sep 8, 2026
05601fd
Merge remote-tracking branch 'upstream/main' into bot-authorization-c…
zqchris Sep 8, 2026
92df1bc
fix(bots): revalidate queued routine revisions and permissions
zqchris Sep 8, 2026
c6d9ca9
merge: reconcile bot defaults with upstream reset settings
zqchris Sep 8, 2026
a1f19b9
fix(bots): recheck credential requirements before completing reauthor…
zqchris Sep 8, 2026
e3ad8a3
Merge upstream/main into routine-triggers
zqchris Sep 8, 2026
6e6de4c
fix(bots): route remote authorization cancellation to owning host
zqchris Sep 8, 2026
eee1f4f
Merge remote-tracking branch 'origin/main' into cindy/sincere-ritchie
DavidShenXD Sep 8, 2026
ad81887
fix(bots): stop advancing disabled routine timers
zqchris Sep 8, 2026
a46dce0
fix(bots): expose source connection in empty model recovery
zqchris Sep 8, 2026
73bb4c9
fix(auto-review): 清除分享导入中的伪造授权证据
dashhuang Sep 8, 2026
fadf2a2
fix(mobile): 修复听写停止后的输入光标位置
DavidShenXD Sep 8, 2026
efc2b00
fix(mobile): 修复 Windows CN 模拟器重建
DavidShenXD Sep 8, 2026
effe2a7
fix(mobile): 同步新建任务草稿选区
DavidShenXD Sep 8, 2026
c079fe3
fix(bots): preserve reauthorization intent and fence rewound card cre…
zqchris Sep 8, 2026
ecb7911
fix(mobile): 保留 Android 模拟器 Metro 门禁
DavidShenXD Sep 8, 2026
7e97a68
fix(mobile): 修复 Windows Metro 归属探测
DavidShenXD Sep 8, 2026
875a1bf
fix(mobile): 完善听写停止和 Windows 模拟器环境
DavidShenXD Sep 8, 2026
176555e
fix(mobile): 保留停止听写后的用户选区
DavidShenXD Sep 8, 2026
b3a5e0e
fix(mobile): 按用户操作保留听写最终选区并校验 SDK 路径
DavidShenXD Sep 8, 2026
60ea495
fix(mobile): 校验 Windows Metro 路径和 Gradle Java 环境
DavidShenXD Sep 8, 2026
20b72e1
fix(mobile): 校验 Metro owner 与监听进程的关联
DavidShenXD Sep 8, 2026
801fde5
fix(mobile): 随听写替换平移用户选区
DavidShenXD Sep 8, 2026
42d7181
fix(mobile): 处理停止听写选区事件与 Windows Metro 路径
DavidShenXD Sep 8, 2026
3f52784
fix(mobile): 加强 Android SDK 与 Metro 构建门禁
DavidShenXD Sep 8, 2026
b00f836
fix(mobile): 校验首次听写选区与 Metro 区域
DavidShenXD Sep 8, 2026
b38e3b9
fix(mobile): ignore delayed dictation selection echoes
DavidShenXD Sep 8, 2026
e6d3804
fix(bots): preserve canonical history access without model routes
zqchris Sep 8, 2026
2b1f0e8
fix(desktop): 持久化回收恢复中间状态
DavidShenXD Sep 8, 2026
d5d4241
fix(bots): veto cancelled continuations and retire failed OAuth links
zqchris Sep 8, 2026
1755088
fix(bots): revoke stale runtime roster during refresh
zqchris Sep 8, 2026
e232909
fix(mobile): track Metro environment fingerprint
DavidShenXD Sep 8, 2026
a95fc0d
fix(auto-review): 为重连后的追加指令恢复历史授权限制
dashhuang Sep 8, 2026
2e8ee54
fix(bots): require reauth suggestion before reconnecting setup plans
zqchris Sep 8, 2026
c32a7db
fix(bots): fence pre-clear requests and close failed cancellations
zqchris Sep 8, 2026
fad2a2f
test(windows): 放宽 PowerShell 路径探针预算
DavidShenXD Sep 8, 2026
609fd92
test(desktop): settle diff scroll timers before teardown
DavidShenXD Sep 8, 2026
0a23d92
fix(mobile): keep desktop connected when audio playback fails
dashhuang Sep 8, 2026
2582f7d
Merge origin/main into dash/mobile-remote-desktop
dashhuang Sep 8, 2026
33dcb15
fix(desktop): 改名素材优先使用群聊用户正文
dashhuang Sep 8, 2026
5ad2e35
fix(remote-desktop): retain outstanding viewer heartbeat challenge
dashhuang Sep 8, 2026
ee896a8
fix(desktop): 将群聊正文投影限定为 AI 改名
dashhuang Sep 8, 2026
e5806b1
fix(remote-desktop): keep viewer heartbeat after control release
dashhuang Sep 8, 2026
c23a2a9
fix(remote-desktop): isolate capture renderer dependency cache
dashhuang Sep 8, 2026
ed798f1
fix(remote-desktop): bound permissions and fallback frame failures
dashhuang Sep 8, 2026
9b06668
Merge pull request #4127 from makecindy/cindy/sincere-ritchie
DavidShenXD Sep 8, 2026
0981a66
fix(remote-desktop): 收尾后台画中画失败并限制权限探测等待
dashhuang Sep 8, 2026
a0a8050
Merge pull request #4136 from makecindy/cindy/lively-leakey
DavidShenXD Sep 8, 2026
53363c7
feat(browser): add per-start (unauthenticated) proxy server support
cofyc Aug 30, 2026
5ead3cc
merge: resolve main conflicts in local skill management
xd-bobo Sep 9, 2026
4d2cd78
Merge pull request #3687 from qsoyq/add-esc-plugin-market-back-naviga…
MagicLizi Sep 9, 2026
341ff39
Merge pull request #3856 from Stella-xixi/codex/fix-pasted-path-log-r…
MagicLizi Sep 9, 2026
9bd4b90
fix(skillhub): persist uninstall cleanup through failures and restarts
xd-bobo Sep 9, 2026
278d78e
Merge pull request #4041 from zqchris/bot-available-default-model
MagicLizi Sep 9, 2026
bf24d6f
Merge pull request #4078 from makecindy/dash/fix-auto-review-authoriz…
MagicLizi Sep 9, 2026
1358f71
Merge pull request #4067 from makecindy/routine-triggers
MagicLizi Sep 9, 2026
138b4da
Merge pull request #4131 from makecindy/dash/fix-dev-region-endpoints
MagicLizi Sep 9, 2026
1bdba5d
Merge pull request #4134 from makecindy/cindy/silent-hopper
MagicLizi Sep 9, 2026
ebcb181
Merge pull request #4148 from makecindy/dash/fix-title-hook-user-text
MagicLizi Sep 9, 2026
95eeda0
chore: sync main and preserve authorization card integration
zqchris Sep 9, 2026
8c7e44e
merge: sync main and regenerate design inventory
xd-bobo Sep 9, 2026
edbd2e2
perf(device-link): 按可见内容分页并按需读取工作详情
dashhuang Sep 7, 2026
142d989
fix(history): 保留分页意图并修复旧 Host 降级与工具错误展示
dashhuang Sep 7, 2026
2ef049c
fix(history): 等待有效刷新并以详情快照展示工作内容
dashhuang Sep 8, 2026
e842cd6
fix(history): 恢复远程投影视图的计划历史发现
dashhuang Sep 8, 2026
90b8cec
fix(device-link): 完成冷缓存交接并释放空闲历史视图
dashhuang Sep 8, 2026
9d5d970
fix(device-link): 将历史过滤登记绑定到当前控制连接
dashhuang Sep 8, 2026
6bf3817
fix(history): preserve original folding and source ownership
dashhuang Sep 8, 2026
02ad4aa
fix(mobile): bind history lifecycle to current source
dashhuang Sep 8, 2026
edfcb81
fix(remote): retain local user bubbles in history view
dashhuang Sep 8, 2026
ebfb97b
fix(mobile): preserve recovery outcomes after history rebase
dashhuang Sep 8, 2026
0814089
fix(device-link): reset history views on destructive pushes
dashhuang Sep 8, 2026
403118b
fix(mobile): 保持流式正文直到历史接管
dashhuang Sep 8, 2026
0d5a465
fix(chat): 共用远程流式正文与历史交接
dashhuang Sep 8, 2026
f094a3c
fix(history): 修复交互刷新与折叠内容定位
dashhuang Sep 8, 2026
894f553
fix(mobile): 保留重进任务的历史视图并避免重复定位
dashhuang Sep 8, 2026
8f976ab
fix(device-link): 保留所有展开运行组的实时详情
dashhuang Sep 8, 2026
0271164
fix(mobile): 历史消息定位就绪后立即显示
dashhuang Sep 8, 2026
4689b02
fix(mobile): iOS 上翻历史时立即启动预取
dashhuang Sep 8, 2026
bef6114
fix(device-link): 限制历史投影扫描并复用原读取降级
dashhuang Sep 8, 2026
4e3df24
feat(mobile): 为历史视图增加 1 GiB 磁盘缓存
dashhuang Sep 8, 2026
95c4db7
fix(history): 限制缓存序列化并阻止降级后恢复旧投影
dashhuang Sep 8, 2026
9bd98f6
fix(history): 保留思考快照直到持久化完成
dashhuang Sep 8, 2026
e6c7429
fix(mobile): 保留历史磁盘缓存中的业务字段
dashhuang Sep 8, 2026
4696246
fix(mobile): 同步删除历史投影并规范详情重试
dashhuang Sep 8, 2026
39c7853
perf(mobile): 取消历史和媒体磁盘缓存容量淘汰
dashhuang Sep 8, 2026
711a984
fix(mobile): 历史列表显示后解除原生透明度动画绑定
dashhuang Sep 8, 2026
ad2b0e6
fix(history): 流式交接保留历史消息的权威顺序
dashhuang Sep 8, 2026
321fe56
fix(device-link): bound first sends to the receive window
dashhuang Sep 8, 2026
a9619cc
fix(history): 收敛订阅恢复与可见分页边界
dashhuang Sep 8, 2026
d5eb2f0
fix(remote): 对齐任务状态与已读确认
dashhuang Sep 8, 2026
453fbbd
docs(design): 同步调度文件台账
dashhuang Sep 8, 2026
bd50847
fix(history): 兼容实时详情落库后的消息身份
dashhuang Sep 8, 2026
5d814b5
fix(remote): 同步应用退出后的中断红点
dashhuang Sep 8, 2026
574dda5
fix(history): 衔接首次读取期间的详情变更通知
dashhuang Sep 9, 2026
3f40366
perf(history): 按详情页读取实时引用
dashhuang Sep 9, 2026
f7dba0e
fix(mobile): 降级时作废旧历史磁盘投影
dashhuang Sep 9, 2026
7501691
fix(device-link): 保留离线设备缓存入口并暂停远程读取
dashhuang Sep 9, 2026
faa3c60
fix(device-link): 对齐中断入口并释放离线订阅
dashhuang Sep 9, 2026
183c102
merge: 同步 main 并保留远程桌面改动
dashhuang Sep 9, 2026
f409dfb
fix(mobile): 对齐任务内历史定时失败提示
dashhuang Sep 9, 2026
7939926
fix(remote-desktop): 收敛画中画与分辨率转换的连接状态
dashhuang Sep 9, 2026
e529734
fix(skillhub): serialize background maintenance with uninstall transa…
xd-bobo Sep 9, 2026
c5544d0
Merge pull request #4065 from makecindy/dash/mobile-remote-desktop
MagicLizi Sep 9, 2026
f32cf9a
Merge pull request #4081 from makecindy/dash/remote-history-on-demand
MagicLizi Sep 9, 2026
d93513b
chore: sync main and preserve authorization history sanitization
zqchris Sep 9, 2026
703270d
fix(bots): recheck subscribed authorization and guard credential actions
zqchris Sep 9, 2026
bd4ce12
Merge pull request #4098 from makecindy/feat/local-skill-management
xd-bobo Sep 9, 2026
0249f6a
fix(bots): guard OAuth credential commits against withdrawn cards
zqchris Sep 9, 2026
7d7703a
Merge pull request #3420 from cofyc/feat/browser-proxy-server
MagicLizi Sep 9, 2026
30165a9
fix(model-providers): 智谱 / Z.ai Coding Plan 预设补 Claude Code 的 GLM-5.3…
FicoHub Sep 9, 2026
c5143fa
chore: sync main after OAuth credential boundary fix
zqchris Sep 9, 2026
6e82f3b
chore: sync latest main without changing authorization flow
zqchris Sep 9, 2026
f9ee4a0
fix(bots): validate shared authorization owners before credential commit
zqchris Sep 9, 2026
79c89d1
fix(codex): repair subscription recovery and paginated forks (#4142)
zqchris Sep 9, 2026
6559d26
feat(design-system): DS-6 完成表单与确认组件复用 (#4135)
kirozeng Sep 9, 2026
63cc7e2
fix(models): 修复三引擎上下文预算与默认值生效 (#4156)
zqchris Sep 9, 2026
6568583
fix(mobile): 保持消息发送交接时的预览与布局连续 (#4149)
dashhuang Sep 9, 2026
a31eb20
fix: 自动化等入口统一模型选择器并支持切换 Harness (#4061)
zqchris Sep 9, 2026
d2f5a9c
fix(scheduler): 换 agentKind 时丢弃上一引擎的模型路由,schedule_update 支持 null 清空 (…
FicoHub Sep 9, 2026
5453837
fix(file-browser): 无 NUL 字节的 PDF 按二进制识别,进入既有 PdfPreview (#4162)
FicoHub Sep 9, 2026
f914cba
fix(mobile): 连接提示统一悬浮并延迟一秒显示 (#4150)
dashhuang Sep 9, 2026
56c0e50
Merge pull request #4146 from zqchris/bot-authorization-cards
MagicLizi Sep 9, 2026
3d3e300
feat(skillhub): install organization skills by department policy
Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 2 additions & 4 deletions .easignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,15 @@ packages/*
!packages/auth-client/**
!packages/device-link
!packages/device-link/**
!packages/device-link-protocol
!packages/device-link-protocol/**
!packages/maker-shared
!packages/maker-shared/**
!packages/model-providers
!packages/model-providers/**
!packages/voice-input-core
!packages/voice-input-core/**

# mobile 的 device-link 传递依赖 cindy-protocol submodule;EAS 上传必须带源码。
!cindy-protocol
!cindy-protocol/**

tools/*
!tools/shared
!tools/shared/fetch-with-timeout.mjs
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
.githooks/** text eol=lf
# SQLite migration 内容参与用户数据库 drift hash;跨平台统一 LF。
apps/desktop/drizzle/**/*.sql text eol=lf
# design-tokens 影子层生成物参与「磁盘 = 内存生成」字节一致守卫;Windows
# autocrlf 检出转 CRLF 会让该守卫假红(classification.test.ts 实测),固定 LF。
packages/design-tokens/src/**/*.json text eol=lf
# sqlite-vec 扩展二进制(平台特定 .dylib / .dll)—— 走 Git LFS
apps/desktop/native/sqlite-vec/**/*.dylib filter=lfs diff=lfs merge=lfs -text
apps/desktop/native/sqlite-vec/**/*.dll filter=lfs diff=lfs merge=lfs -text
Expand All @@ -21,6 +24,9 @@ apps/desktop/native/sqlite-vec/**/*.so filter=lfs diff=lfs merge=lfs -text
# cindy-updater.exe 不再进 git/LFS——Windows 打包的 prePackage 每次都从
# apps/desktop/cindy-updater/ 现场 cargo build 并覆盖 resources/ 下的产物
# (见 forge.config.ts buildCindyUpdater);路径已在 .gitignore 中排除。
# Windows updater 的两个 VC Runtime DLL 很小且必须让 release 构建完全离线可复现,
# 因此有意直接入 Git(不走 LFS);来源、版本和 sha256 见同目录 manifest.json。
apps/desktop/resources/cindy-updater-runtime/*.dll -text
# Pencil 设计稿(加密二进制,体积大且改动频繁)—— 走 Git LFS
*.pen filter=lfs diff=lfs merge=lfs -text
# Vendored browser-control-runtime:由 scripts/browser-runtime/sync.mjs 从上游同步生成,非手写源码。
Expand Down
6 changes: 1 addition & 5 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
# 默认所有路径由维护者 review。
# 默认所有路径由维护者团队 review。
#
# 生效前提(缺一条 GitHub 就静默跳过该 owner,不报错):
# - team 必须真实存在于 makecindy 组织下,slug 与此处一致;
# - 该 team 必须对本仓库有 write 及以上权限;
# - 个人账号同样需要对本仓库有 write 及以上权限。
# 组织级设置见 https://github.com/orgs/makecindy/teams
#
# 这里同时列出 team 与个人:即使 team 尚未建好或未授权,自动指派仍然生效。
# team 确认可用后可以删掉个人账号那一项。
* @makecindy/maintainers
5 changes: 5 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ branch/worktree、Metro 归属与 __DEV__ build label 证据。 -->
- [ ] system prompt
- [ ] 协议兼容
- [ ] 权限 / 安全 / 用户数据
- [ ] 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
- [ ] 原生层 / fingerprint / OTA
- [ ] 跨平台差异
- [ ] 其他:
Expand All @@ -83,6 +84,10 @@ branch/worktree、Metro 归属与 __DEV__ build label 证据。 -->
<!-- 命中 SQLite migration、system prompt、协议、原生层、fingerprint/OTA 或跨平台差异时,
必须写清影响和回滚/降级方式;不涉及风险时明确写“无”。

命中「存量插件兼容」时,必须写明「存量插件影响:无」或「有 + 迁移与提示方案」,并说明
基于旧布局的升级用例跑在哪。会让用户已装插件失效或需要重装/重新确认的改动与冷更同级,
需把关人对该影响明确确认;规则见 docs/dev-rules/plugin-security-and-authoring.md 第 5 节。

改动会改变 mobile runtime fingerprint(即触发冷更)时,还要写明为什么冷更不可避免、
存量装机的影响范围与发版节奏建议;这类 PR 与技术框架变动同级,需仓库指定的把关人针对
冷更明确确认后才能合并(提交者身份不构成例外),规则见
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
245 changes: 203 additions & 42 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,50 +18,27 @@ env:
XDT_SKIP_AGENT_BIN_INSTALL: '1'
ELECTRON_SKIP_BINARY_DOWNLOAD: '1'
ELECTRON_OVERRIDE_DIST_PATH: '${{ github.workspace }}/.electron-stub-dist'
NODE_OPTIONS: '--max-old-space-size=4096'
# 8192: desktop tsc 全量 typecheck 峰值内存随仓体增长已突破 4GB(2026-08-02 起
# 所有 PR 的 verify 在 Typecheck desktop 步骤稳定 OOM,含纯 mobile 改动);
# 公开仓 ubuntu-latest runner 内存 16GB,8GB heap 安全。
NODE_OPTIONS: '--max-old-space-size=8192'

jobs:
verify:
# 静态检查、类型检查和 runner 自测与 Linux 单测分片并行。这里不装
# bundled ripgrep;它只在 Desktop 单测收集时需要,由单测分片自行安装。
verify-checks:
runs-on: ubuntu-latest
timeout-minutes: 40

steps:
# 主仓与公开 submodule 都使用 GitHub 默认的只读访问路径。
- name: Checkout client
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
lfs: true

# .gitmodules 来自 PR 分支,fork PR 可以把 cindy-protocol 的 url / path 改成
# 任意仓库。先钉死来源再 sync/update,避免 CI 拉取并 pnpm install 第三方仓库
# 内容。gitlink 的 commit 同样来自 PR,但只能从 makecindy/cindy-protocol 拉取,
# 外部无法向该仓库推送,所以来源钉死后取到的一定是本组织的历史。
- name: Verify cindy-protocol submodule source
run: |
set -euo pipefail
expected_url='https://github.com/makecindy/cindy-protocol.git'
expected_path='cindy-protocol'
actual_url="$(git config -f .gitmodules --get submodule.cindy-protocol.url || true)"
actual_path="$(git config -f .gitmodules --get submodule.cindy-protocol.path || true)"
if [ "$actual_url" != "$expected_url" ] || [ "$actual_path" != "$expected_path" ]; then
echo "::error file=.gitmodules::cindy-protocol submodule 来源不符: url='$actual_url' path='$actual_path'(期望 url='$expected_url' path='$expected_path')"
exit 1
fi
echo "cindy-protocol submodule 来源校验通过: $actual_url"

# 本 job 只做本仓 typecheck / 单测 / 各类 guard。cindy-protocol 是公开的
# workspace 依赖,需要 checkout 以供 pnpm install 解析,但不在本 job 运行
# 协议仓自己的 CI。
# 公开客户端不包含内建插件种子;相关单测只在 os.tmpdir 里自造夹具。
# 公开仓不提供官方发布流程。
- name: Fetch cindy-protocol submodule
run: |
git submodule sync -- cindy-protocol
git submodule update --init --force --recursive -- cindy-protocol

- name: Setup pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6
with:
run_install: false

Expand All @@ -75,14 +52,17 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

# XDT_SKIP_AGENT_BIN_INSTALL 跳过了 postinstall 的全部 agent 二进制,但
# runtime-configs.ts 模块顶层的 bundledRipgrepDir() 缺 rg 时直接 throw,
# 会让 apps/desktop 单测在收集阶段全挂——ripgrep 必须单独装回来。
# install:ripgrep 不带 --best-effort,不受上面的 skip 环境变量影响。
- name: Install bundled ripgrep
env:
GITHUB_TOKEN: ${{ github.token }}
run: pnpm install:ripgrep
# test:unit 的 runner 自测不能跟着 Vitest 分片重复执行;在检查 job 中跑一次,
# 两个 Linux 单测分片只负责 workspace unit tier。
- name: Run test runner self-tests
run: pnpm test:runner

# No private service checkout or secrets: exercise production clients over real
# loopback WebSockets with bounded fault injection. Failure blocks verify.
- name: Run Device Link connection integration tests
run: |
pnpm --filter desktop exec tsc --project ../../scripts/device-link/tsconfig.json
pnpm test:device-link

- name: Check endpoint literals
run: pnpm check:endpoints
Expand All @@ -98,7 +78,15 @@ jobs:
- name: Check i18n glossary
run: pnpm check:i18n-glossary

# desktop 的 tsc 峰值内存已经贴着全局 4096MB 上限(2026-08-03 本地实测
# 约 4.2GB,`--extendedDiagnostics` 下 Types ~125 万、Instantiations ~277 万),
# 在 runner 上会随机 OOM(FATAL ERROR: Ineffective mark-compacts near heap
# limit)。已排除单点热点:移走最大的单个测试文件只省 ~5MB、移走 1400 行的
# 插件页组件只省 ~14MB,skipLibCheck 也早已开启——是整仓类型规模的自然结果,
# 不是某处写法。这一步单独给更大的堆,其它步骤维持全局值。
- name: Typecheck desktop
env:
NODE_OPTIONS: '--max-old-space-size=6144'
run: pnpm --filter desktop typecheck

- name: Typecheck mobile
Expand All @@ -109,11 +97,184 @@ jobs:
XDT_MIGRATION_BASE_REF: ${{ github.event.pull_request.base.sha || github.event.before || 'origin/main' }}
run: pnpm --filter desktop db:validate

- name: Run client and package unit tests
run: pnpm test:unit

- name: Run scheduler architecture guard
run: pnpm ci:scheduler-guard

- name: Run mobile scope guard
run: pnpm --filter mobile test:scope

# Linux 单测使用与 Windows 相同的确定性 Vitest 分片。两个分片分别覆盖每个
# workspace 经 Vitest 切分后的测试文件,并集等于完整 unit tier;不重复 test:runner。
linux-unit-shards:
name: Linux unit tests (${{ matrix.shard }}/2)
runs-on: ubuntu-latest
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
shard: [1, 2]
env:
XDT_UNIT_TEST_SHARD: ${{ matrix.shard }}/2

steps:
- name: Checkout client
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
lfs: true

- name: Setup pnpm
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6
with:
run_install: false

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

# XDT_SKIP_AGENT_BIN_INSTALL 跳过了 postinstall 的全部 agent 二进制,但
# runtime-configs.ts 模块顶层的 bundledRipgrepDir() 缺 rg 时直接 throw,
# 会让 apps/desktop 单测在收集阶段全挂——每个分片都必须单独装回来。
- name: Install bundled ripgrep
env:
GITHUB_TOKEN: ${{ github.token }}
run: pnpm install:ripgrep

- name: Run client and package unit test shard
# package script 会传递 npm_execpath,让子进程复用当前 pnpm 入口。
run: pnpm run test:workspaces --tier unit

# 真实进程与 Unix socket 覆盖独立执行一次,不混入日常 unit 或两个分片。
- name: Run Pi manager integration tests
if: matrix.shard == 1
run: pnpm run test:workspaces --tier integration --workspace @cindy/maker-pi-manager

# localDb suites are outside the unit tier; exercise these DB boundaries on both OSes.
- name: Run companion database regressions
if: matrix.shard == 1
run: pnpm --filter desktop exec vitest run src/main/localDb/ipc/__tests__/botCanonicalSession.test.ts src/main/localDb/ipc/__tests__/botRemoteResourceProvider.test.ts

# 保留原 required check 名 verify;检查 job 或任一 Linux 分片失败、取消都阻断。
verify:
name: verify
if: ${{ always() }}
needs:
- verify-checks
- linux-unit-shards
runs-on: ubuntu-latest
steps:
- name: Require checks and both Linux unit shards
env:
VERIFY_CHECKS_RESULT: ${{ needs.verify-checks.result }}
LINUX_UNIT_SHARDS_RESULT: ${{ needs.linux-unit-shards.result }}
run: |
test "$VERIFY_CHECKS_RESULT" = "success"
test "$LINUX_UNIT_SHARDS_RESULT" = "success"

# Linux 全绿不能覆盖 path separator、盘符、大小写和文件系统能力差异。两个
# Windows 分片并行运行,分片并集仍完整覆盖 test:unit,不能缩成少量 smoke。
windows-unit-shards:
name: Windows unit tests (${{ matrix.shard }}/2)
runs-on: windows-latest
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
shard: [1, 2]
env:
XDT_UNIT_TEST_SHARD: ${{ matrix.shard }}/2

steps:
- name: Checkout client
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
lfs: true

- name: Setup pnpm
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6
with:
run_install: false

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install bundled ripgrep
env:
GITHUB_TOKEN: ${{ github.token }}
run: pnpm install:ripgrep

# 保留 Windows 路径、进程与锁的自测覆盖,但两个分片只执行一次。
- name: Run Windows test runner self-tests
if: matrix.shard == 1
run: pnpm test:runner

- name: Run client and package unit tests
# 通过 package script 传递
# npm_execpath,避免 Windows 子进程退回 PATH 上的 pnpm.cmd。
run: pnpm run test:workspaces --tier unit

# localDb suites are outside the unit tier; exercise these DB boundaries on both OSes.
- name: Run companion database regressions
if: matrix.shard == 1
run: pnpm --filter desktop exec vitest run src/main/localDb/ipc/__tests__/botCanonicalSession.test.ts src/main/localDb/ipc/__tests__/botRemoteResourceProvider.test.ts

# 保留稳定的必需检查名,并确保任一分片失败或取消都会阻断汇总门禁。
windows-unit:
name: Windows unit tests
if: ${{ always() }}
needs: windows-unit-shards
runs-on: ubuntu-latest
steps:
- name: Require both Windows unit shards
env:
WINDOWS_UNIT_SHARDS_RESULT: ${{ needs.windows-unit-shards.result }}
run: test "$WINDOWS_UNIT_SHARDS_RESULT" = "success"

git-integration:
name: Desktop Git integration
runs-on: ubuntu-latest
timeout-minutes: 25

steps:
- name: Checkout client
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
lfs: true

- name: Setup pnpm
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6
with:
run_install: false

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install bundled ripgrep
env:
GITHUB_TOKEN: ${{ github.token }}
run: pnpm install:ripgrep

- name: Run Desktop Git integration tests
run: pnpm test:git-integration
Loading