Skip to content

v1.40.0

Latest

Choose a tag to compare

@riba2534 riba2534 released this 28 Aug 13:02

本轮以「深度 review + 实物验证」为主线,系统校准了 CLI 与飞书官方 API 的契约。
命令面几乎无变化(36 个命令组零增减,新增 3 个子命令),但修掉了一批静默出错的问题。

从不可用恢复为可用

功能 此前 现在
mail triage 100% 失败(page_size 必填未发送) 正常返回邮件列表
sheet write 写布尔值 整批失败(API 拒绝 JSON Boolean) 正常写入并识别为布尔单元格
sheet protect / unprotect 被误判「官方已废弃」而禁用 恢复可用(实测端点返回 code=0)
calendar agenda 查 >40 天 直接报错 193103 自动切分,90 天窗口返回 334 个日程
schema / api 元数据 overlay 完全不生效,停在 12 服务 / 152 方法 15 服务 / 250 方法
calendar event-search --start 传毫秒 解析成公元 56971 年 13 位自动识别为毫秒

修复数据破坏路径(原实现 exit 0 静默发生)

  • doc content-update --mode replace_all:不带 # 的模糊标题选择器同时命中父标题与子标题时,
    外层范围会吞掉未匹配的兄弟章节(实测 7 块文档替换后只剩 2 块)。现 fail-closed 要求明确选择器。
  • drive pull --delete-local / push --delete-remote:身份静默降级 Bot 后远端视图更小、差集更大,
    会误删本地文件。现拒绝降级执行。
  • event last-consumer 注销:会抹掉窗口期内新 consumer 刚建立的订阅(新 consumer 已 ready 却收不到事件)。
    现注销后复检并幂等补订阅。
  • calendar agenda:午夜发生 DST 跳变的时区区间倒挂,静默返回空结果。
  • wiki delete:确认提示未提级联范围(--include-children 默认 true)。现按实际范围提示。

安全

  • 取 tenant token 曾用裸 http.Post,绕过重定向/凭证策略层——app_secret 可随 3xx 重放且无超时。
    统一改走带 host 校验与凭证剥离的 HTTP client(共 4 处)。
  • wiki delete 的 loopback 豁免曾用前缀匹配,127.0.0.evil.com 可绕过 HTTPS 约束。改用 net.ParseIP
  • 分片上传 block_size 守卫在 64 位平台永久失效,畸形值会导致 panic。加合理上限。

新增命令

  • markdown patch — 对云盘原生 .md 做局部补丁
  • schema status — 查元数据来源与版本(embedded / cache / runtime)
  • slides get — 获取演示文稿信息

向前兼容性

命令名、子命令、flag 零删除零改名api 输出结构未变;stderr 新增的告警不污染 stdout(-o json 管道安全)。

有 4 处「以前静默通过、现在报错」,其中 3 处以前本就拿不到正确结果。唯一需要改脚本的是:

doc content-update --mode replace_all --selection-by-title "模糊词" 若同时命中父子标题,现在报错。
改法:加标题级别("## 子标题")或改用 --mode replace_range

token.json 是旧版本(无 app_id),执行一次 feishu-cli auth token --bind-legacy-app --as user

完整变更见 CHANGELOG.md