xiatian
9fbd8addbe
Merge remote-tracking branch 'upstream/main' into codex/sheet-dropdown-source-range
2026-08-15 13:40:55 +08:00
xiatian
92195a58a3
fix(sheet): align SourceRange review contract
2026-08-15 13:40:47 +08:00
Dennis
596bdce3a1
feat(wiki): align and harden shortcut workflows
2026-08-14 22:18:43 +08:00
栩朝
15a2fea0dc
fix(chat): split references and harden card updates
...
Split chat message and group references by task, update intent routing and context budget, distinguish accepted card updates from verified writes, and explain the ambiguous chat --from flag.
2026-08-14 18:38:31 +08:00
chichuan
05868610f0
Merge branch 'main' into codex/sheet-dropdown-source-range
2026-08-14 18:33:24 +08:00
chichuan
a6f69a06ce
fix(drive): --latest 扫描不完整时拒绝产出 Top-N 并杜绝 sortTime 泄露
...
P1-a sortTime 泄露进输出契约 —— 采集端无条件写内部排序字段 sortTime,而 emit 仅在单层(reqDepth==1)经 stripDriveDepthDecorations 整体剥离。depth>1 的所有路径都把 sortTime 漏进 stdout;#971 引入的 --type/时间区间过滤同样读该字段,泄露面随之扩大。修法:在 emitDriveDepthResult 尾部无条件 delete,一处覆盖正常 emit / SIGINT 取消 / unrecoverable partial 三条路径。采集端保持不动(内部字段,排序与筛选时才读)。
P1-b 不完整扫描仍以退出码 0 产出「Top-N」 —— 尾部拒绝 guard 只拦全局截断,不拦递归途中目录读取失败;后者把可恢复失败记进 errs[] 后照常 emit,Top-N 落在漏扫子树的不完整集合上却冒充全局最新。修法:guard 扩为 latest>0 && (truncated || len(errs)>0),走新增 driveLatestIncompleteError(LATEST_SCAN_TRUNCATED / LATEST_SCAN_INCOMPLETE 双 token,二者同真时都带,目录失败详情排在截断之前);unrecoverable 分支在 latest>0 时不吐 partial,直接回根因错误。
恢复命令必须能原样复现原候选集:driveLatestScope 快照查询域(--workspace / --space-id)、扫描根(--folder)与全部过滤条件(--pattern / --type / --start / --end),缺任一项,用户照抄后就在另一个集合上取 Top-N,看起来成功却答非所问。扫描根取 runDriveListDepth 实际使用的 rootFolderID 而非重读 flag:用户可能传 URL,解析后的 ID 才是真正被扫的目标。「按原范围重跑」原样带回原 --folder,原调用在空间根时不带。
拒绝产出后 errors[] 不再进 stdout,目录名与服务端错误文本从 JSON(编码会转义)挪进纯文本 stderr —— 原样透传会让 ANSI/OSC 序列被终端执行,可清屏、伪造彩色成功、隐藏后续输出、改窗口标题,Agent 场景还会污染上下文。改为复用仓库既有的 output.SanitizeForTerminal(canonical 实现在 pkg/validate),再把它按设计保留的换行与制表符折成空格。Reason 无需处理:它是 classifyDriveDepthReason 的固定三值映射。latest=0 的既有路径仍把原值放进 errors[] JSON,不受影响。
Windows 下恢复命令的注入面:POSIX 单引号在 cmd.exe 里不是引用,--space-id 传入 sp-7 加 & 加 whoami 时,单引号包裹后的片段粘贴进 cmd 仍会执行 whoami;而唯一做真 shell 往返验证的测试被 build tag 排除在 Windows 之外。不采用「按目标 shell 生成引用」的路线:cmd.exe 的双引号挡不住 %VAR% 展开,PowerShell 的内嵌单引号写法又与 POSIX 不同,且生成命令时无法知道用户会粘贴进哪个 shell。改为平台分流 —— POSIX 构建继续单引号内联;Windows 构建只内联全部由白名单字符组成的值,含元字符的值不进命令,降级为占位符加 strconv.Quote 展示行并标注非可执行(与 internal/auth 展示 profile 标识的既有做法同一思路)。安全性由此不再依赖引用是否正确,而依赖「不受信任的值不进入可执行命令」这个更强的不变量。
顺带修掉白名单里的一个漏洞:% 原本免引用(当初为 URL 的 %20),但 cmd.exe 会无条件展开 %VAR%,于是 %PATH% 这类值会被判为安全并原样内联。% 已移除,POSIX 侧只是多一对无害引号;并新增逐字符断言,锁定白名单不含 POSIX sh / PowerShell / cmd.exe 三套元字符,同时作为该缺陷的回归锁。
两条平台策略写成与构建平台无关的纯函数,平台文件只做一行编译期绑定,因此 Windows 形态能在 POSIX 机器上端到端验证 —— 否则该分支在 POSIX 上永不可达,平台覆盖率门禁会直接报未覆盖(第一版实测 97.3451%)。另做了一次本地全量模拟:临时把 POSIX 绑定切到 Windows 策略后跑全部测试,唯一失败的是专门断言绑定的那条,据此确认没有断言会在 Windows runner 误报,并借此修掉两条原本只在 POSIX 下成立的断言。
SIGINT 取消路径刻意不套用该防线:取消由用户主动发起、退出码 130 已明确告知结果不完整,partial 是用户的预期产物。已加注释说明并补测试锁定该契约。
skill 文档(mono/multi 两份 drive.md)原在过滤章节声明「触顶截断 truncated=true、退出码 0」,同章节又说明可与 --latest 组合 —— 组合后该描述不再成立,故补一条拒绝产出的说明,并注明 Windows 下的占位符形态,避免 agent 按旧契约预期退出码或误解析。
测试命名统一 TestCrossPlatformCoverage 前缀:平台覆盖率门禁 run-platform-coverage-gate.sh 只跑匹配 ^(TestAllShortcuts|TestCrossPlatformCoverage) 的测试。本 PR 因新增带平台名的 go:build 文件被判定 platform_sensitive,Coverage (macOS) / (Windows) 由 SKIPPED 转为实跑;不带该前缀时新增语句在平台 profile 里是零覆盖,实测 69.0476%,改名后 100.0000%(当前 114 条语句仍为 100%)。已在测试文件头写明该前缀是门禁约定而非命名风格。
发布说明按 .changes fragment 机制落在 .changes/899-drive-latest-incomplete-scan.md,不改 CHANGELOG.md。
2026-08-14 14:02:36 +08:00
chichuan
41a3724e9e
Merge branch 'main' into feat/drive-sync-family
2026-08-13 22:07:16 +08:00
chichuan
671a41437d
Merge branch 'main' into feat/drive-sync-family
2026-08-13 17:58:26 +08:00
chichuan
8c00068364
fix(drive): harden folder mirror safety
2026-08-13 15:49:59 +08:00
卷心菜
75bd518447
fix(drive): honor --type folder in --latest top-N and harden filter mutexes
2026-08-13 15:19:46 +08:00
卷心菜
9c59206d2f
feat(drive): add drive list --type/--start/--end client-side filtering
2026-08-13 14:12:13 +08:00
xiatian
5065e4bfb6
Merge remote-tracking branch 'upstream/main' into codex/sheet-dropdown-source-range
2026-08-13 13:49:52 +08:00
xiatian
2778bef5bd
feat(sheet): support source range dropdowns and read completion
2026-08-13 11:46:58 +08:00
Dennis
a203572ee3
feat(chat): unify shortcut auto-pagination controls
2026-08-13 11:35:27 +08:00
chichuan
357b0955b1
Merge remote-tracking branch 'origin/main' into feat/drive-sync-family
...
# Conflicts:
# skills/multi/dingtalk-drive/SKILL.md
2026-08-12 21:33:52 +08:00
RuiGong01
f875b1bc87
Merge branch 'main' into dws_optimization
2026-08-12 20:54:37 +08:00
chichuan
1dabfa1dc6
fix(drive): keep pull partial results on stdout
2026-08-12 20:48:45 +08:00
chichuan
9818f7779a
Merge branch 'main' into feat/drive-sync-family
2026-08-12 20:08:13 +08:00
chichuan
21c6581975
docs(drive): keep confirmation out of examples
2026-08-12 18:31:09 +08:00
长真
2c46213257
docs(chat): to #85387314 clarify image markdown guide
2026-08-12 18:04:17 +08:00
ruigong
51dc3df91b
fix(skill): clarify document-space routing in doc/drive/wiki descriptions
2026-08-12 17:14:20 +08:00
chichuan
dacf166935
fix(drive): require confirmation for folder sync writes
2026-08-12 16:34:10 +08:00
chichuan
f6a699227e
Merge branch 'main' into feat/drive-sync-family
2026-08-12 12:44:39 +08:00
chichuan
1d4c51a4d3
feat(drive): add local/Drive folder status, pull, push and sync
2026-08-12 11:37:47 +08:00
Dennis
ae309b5846
feat(drive): harden and expand shortcut workflows
2026-08-12 11:11:46 +08:00
玉澜
8cf23ee7cb
Merge remote-tracking branch 'upstream/main' into feat/skill-mode-migration
2026-08-12 08:47:01 +08:00
前津
bbc2eb111c
Merge remote-tracking branch 'upstream/main' into feat/card-send-native-mentions
2026-08-12 00:54:37 +08:00
前津
eebd6b2a1c
fix(chat): accept card update acknowledgement
2026-08-11 23:44:53 +08:00
john
6140e503ec
Merge branch 'main' into feat/skill-mode-migration
2026-08-11 23:31:08 +08:00
前津
b1bfe6002d
Revert "docs(skill): route create-only cards to native command"
...
This reverts commit 8e8e3a3ce8 .
2026-08-11 22:54:02 +08:00
Dennis
38832448d2
Merge remote-tracking branch 'origin/main' into codex/minutes-shortcuts
2026-08-11 22:53:51 +08:00
前津
8e8e3a3ce8
docs(skill): route create-only cards to native command
2026-08-11 22:52:24 +08:00
john
4b93a1cb28
Merge branch 'main' into feat/pull_knowledge_base_dynamic_1
2026-08-11 22:05:50 +08:00
前津
f8258576ef
feat(chat): support mentions in native card creation
2026-08-11 19:42:06 +08:00
Dennis
66468c703f
fix(minutes): preserve upload recovery and schema compatibility
2026-08-11 17:06:22 +08:00
john
c170a464e1
Merge branch 'main' into feat/skill-mode-migration
2026-08-11 17:00:13 +08:00
fengbai
fdf3e8cc3b
docs(skills): sync calendar reference between mono and multi layouts
2026-08-11 16:21:20 +08:00
john
16273de554
Merge branch 'main' into feat/skill-mode-migration
2026-08-11 16:13:48 +08:00
john
aabee99e3f
Merge branch 'main' into feat/skill-mode-migration
2026-08-11 15:35:23 +08:00
克谨
7849116a69
Merge remote-tracking branch 'origin/main' into codex/fix-im-reliability
2026-08-11 15:17:59 +08:00
chichuan
211a5fa393
Merge branch 'main' into codex/aitable-workflow-run-history
2026-08-11 14:33:14 +08:00
玉澜
9e3a083c27
Merge remote-tracking branch 'origin/main' into feat/skill-mode-migration
2026-08-11 14:12:43 +08:00
克谨
d38868c8aa
Merge origin/main into codex/fix-im-reliability
2026-08-11 13:51:27 +08:00
xlb1130
9377abc5f6
Merge branch 'main' into feat/im-page-all-pagination
2026-08-11 12:38:16 +08:00
玉澜
fbdb5e8d4d
Merge remote-tracking branch 'origin/main' into feat/skill-mode-migration
2026-08-11 12:07:58 +08:00
克谨
e8ca78fe49
Merge origin/main into codex/fix-im-reliability
2026-08-11 12:07:27 +08:00
玉澜
cc7e7bf0e0
Merge remote-tracking branch 'origin/main' into feat/skill-mode-migration
...
# Conflicts:
# internal/app/skill_setup.go
# internal/app/skill_setup_test.go
2026-08-11 12:06:59 +08:00
克谨
28bc577e88
Merge origin/main into codex/fix-im-reliability
2026-08-11 11:50:22 +08:00
李晟
28227b19c7
Merge branch 'main' into codex/aitable-workflow-run-history
2026-08-11 11:28:44 +08:00
chichuan
2ec25ebb98
Merge branch 'main' into fix/minutes-permission-apply-policy-int
2026-08-11 11:08:54 +08:00