Skip to content

Releases

v2.4.0 — 支持 WebP,加 --strict 闸门

Choose a tag to compare

@Stephen-pc Stephen-pc released this 03 Nov 14:48

这版最重要的一件事:能认 WebP 了

AI 出图现在大量存成 WebP,而此前它拿不到 WebP 的宽高。后果不是「少查一项」——w/h 为 None 之后,尺寸、比例、多图一致性三组判定会集体静默跳过,你看到的是「格式不支持」,看不到真正的原因。

现在三种变体(VP8 / VP8L / VP8X)都能读,含 alpha 标志:

$ publish-size-check --check ai.webp --target 小红书

### ai.webp
    1024×1024px

    [X]  小红书 / 笔记封面(方版) —— 不能发布
         结论: 救不了:像素不足,必须从源文件按更大尺寸重新导出(放大无效)
         [X] 格式 .webp 不在接受列表 jpg/jpeg/png 内
             修法: 另存为 jpg 格式后重新提交
         [X] 宽度 1024px 小于要求 1080px
             修法: 重新导出为 ≥1080px 宽(放大现有图片无法恢复清晰度)

格式和尺寸一次说清,不用来回试。

新增 --strict:把尺寸检查变成发布闸门

- name: 检查配图尺寸
  run: |
    pip install .
    publish-size-check --check assets/*.png --target 小红书 --strict

有 error 级问题时退出码 1;warn / info 不阻断——它们分别是「可以发但有风险」和「了解一下」,拿来卡流水线会把正常发布一起拦住。

不加 --strict 时退出码恒为 0,与旧版完全一致,升级不会悄悄卡住你已有的流水线。

--json 的 stdout 现在是纯 JSON

之前人类可读的正文和 JSON 混在 stdout,| jq 会因为首行是 ### a.png 直接失败。现在报告走 stderr:

publish-size-check --check cover.png --target 小红书 --json \
  | jq -r '.results[0].targets[0].verdict'

修掉的一处假报错

.jpg 文件遇到 accepted_formats: ["jpeg"] 会被误报格式错误——等价只做了一个方向。你照着提示改成另一种写法,结果还是报错。现在 jpg/jpeg、tif/tiff 都做了归一化。

其它

  • --version 可用(此前会掉进 argparse 用法错误并返回 2)。
  • demo.py 在管道下输出顺序错位已修(结论先出、标题后出)。
  • 回归测试 46 → 75 项,插件形态下无法验证的检查如实跳过,不伪装成通过。

升级

git pull && python demo.py          # 源码使用
pip install --upgrade .             # 命令行工具
/plugin update publish-check@publish-size-check   # 插件形态

完整变更见 CHANGELOG。

v2.2.0 — 可装成 CodeBuddy / WorkBuddy 插件

Choose a tag to compare

@Stephen-pc Stephen-pc released this 12 Oct 14:35

装法

/plugin marketplace add Stephen-pc/publish-size-check
/plugin install publish-check@publish-size-check
/reload-plugins

不装插件也能用:把仓库根目录整个复制到 ~/.workbuddy-ai/skills/publish-size-check/ 即可。

这个版本做了什么

把仓库从「一个技能」升级成「一个技能 + 一个插件市场」。同一份代码,两种装法。

新增

  • .codebuddy-plugin/marketplace.json —— 市场清单
  • plugins/publish-check/ —— 插件包(plugin.json + skills/publish-check/)
  • 装成插件后自动获得版本管理与团队分发:/plugin update 升级;写进 .codebuddy/settings.json 让协作者自动获得

变更

  • demo.py 新增 _find_skill_root():插件会被复制进版本化 cache,相对路径会变,所以改成按候选顺序探测。仓库形态与插件形态下均可直接运行
  • CI 新增 插件包一致性 任务:双入口文件逐字节比对 + 清单字段校验 + 插件形态冒烟测试

为什么没有 hooks / MCP server / 斜杠命令

插件还能挂 commands/、agents/、hooks/、MCP server。这里故意都不挂:

  • 不需要 hook —— 寄生自检靠 SKILL.md 里的触发协议,装了插件就自动生效,没必要在你机器上跑钩子
  • 不需要 MCP server —— 那要求常驻进程和 stdio 协议,与「零依赖、跑完就退出」的设计直接冲突
  • 不需要斜杠命令 —— 技能本身就能被自然语言触发,多一个命令只是多一个要维护的入口

每多挂一个组件,用户装之前的信任成本就高一档。

质量

  • 53 项回归测试通过
  • CI 16 个任务全绿:3 系统 × 4 Python 版本 + 零依赖守卫 + Windows 编码 + 规格库时效 + 插件包一致性
  • 远端与本地逐文件 blob SHA 比对完全一致

完整更新日志:https://github.com/Stephen-pc/publish-size-check/blob/main/CHANGELOG.md

v2.1.1 — Windows 中文输出修复

Choose a tag to compare

@Stephen-pc Stephen-pc released this 12 Oct 13:50

发布尺寸检查 2.1.1

对照目标平台的几何规格,检查图片能不能发、是哪一项参数过不了。零依赖、原件只读。

本次修复

Windows 上输出中文会直接崩溃。 Windows 的 Python 默认按控制台代码页(cp1252 / cp936)编码 stdout,而本工具输出全是中文,一运行就抛 UnicodeEncodeError 退出。Linux / macOS 默认 UTF-8,所以这个 bug 在开发机上完全看不到——是 CI 的 Windows 任务抓出来的。

修的时候还连踩两个坑,一并修掉:

  1. 只修了 spec.py 和 demo.py,漏了 test_spec.py 自己——它同样打印中文标题。
  2. 编码自测最初把 test_spec.py 作为子进程目标,导致递归启动整套测试,直接把机器拖死。改用最小探针。
  3. _force_utf8_stdout() 改为幂等——多个入口会各自调用一次,重复 reconfigure 同一流会出问题。

加固

  • 回归测试 49 → 53,覆盖 cp1252 / cp936 / ascii 三种窄编码
  • 新增 CI 任务「Windows 控制台编码」,在真实 Windows 上守这条

安装

git clone https://github.com/Stephen-pc/publish-size-check.git
cd publish-size-check
python demo.py          # 一键看效果
python scripts/spec.py --check cover.png --target 小红书

需要 Python 3.8+,不需要任何第三方包。