Skip to content

v1.38.3

Choose a tag to compare

@riba2534 riba2534 released this 31 Jul 03:43
· 7 commits to main since this release

图片显示尺寸绑定加固(Bug 修复版)

在 v1.38.2 之后对「docx 图片块显式宽高绑定」(e76f4c8)做了完整 review,本版一次性修复评审发现的全部问题:

修复

  • EXIF 安全回退:JPEG 带 Orientation 5-8(显示时宽高转置的旋转,常见于手机竖拍照片)时不再下发本地解码宽高,退回服务端推断,避免显示框宽高比写反。内置轻量 EXIF 段扫描(只读 SOS 之前的段头,不解码图像数据)
  • 格式补全:引入 golang.org/x/image 注册 webp / bmp / tiff 解码器。网络下载图片最常见的 webp 此前无法本地解码、仍会落回服务端推断(1600px 缩略图 bug 的根因路径),现已显式绑定真实像素
  • 降级兜底:带宽高的 replace_image 请求被服务端以非临时错误拒绝时,自动降级为 token-only 重绑一次(等价旧行为),避免整个绑定/导入失败
  • 告警治理:图片解码失败的 ⚠ 提示改为仅 --verbose 输出(doc add / doc content-update 等静默路径不再刷屏);表格单元格图片的消息前缀修正为「单元格图片 N」,不再与顶层图片编号混淆

内部改进

  • 删除零调用的 ReplaceImage 兼容包装,收敛为唯一入口 ReplaceImage(doc, block, token, ReplaceImageOptions{Width, Height, Align, Caption})doc media-insert 不再手工构造 replace_image 请求体
  • board upload-image 复用共享的头部解码 helper(原先整图解码只为读尺寸),顺带获得 webp/bmp/tiff 支持
  • 新增单元测试:解码 helper 全格式/失败路径/EXIF 方向、EXIF 解析器大小端、payload 字段规则

实测验证

  • doc import:png 640x360 / webp 550x368 / 表格单元格 png 300x200 均显式落块(API 回读确认);EXIF Orientation=6 JPEG 正确回退服务端推断
  • doc media-insert:webp + --align + --caption 全部经新选项正确落块
  • board upload-image --dry-run:webp 正常识别,EXIF 旋转图明确提示改用 --width/--height

安装

curl -fsSL https://raw.githubusercontent.com/riba2534/feishu-cli/main/install.sh | bash

Full Changelog: v1.38.2...v1.38.3