Skip to content

build: bump Pillow to 13.0.0 and pypdf to 6.21.2 - #123

Merged
openjiuwen-release-bot[bot] merged 1 commit into
openJiuwen-ai:mainfrom
0x7c13:0x7c13/pillow-13-pin
Oct 26, 2026
Merged

openjiuwen-release-bot[bot] merged 1 commit into
openJiuwen-ai:mainfrom
0x7c13:0x7c13/pillow-13-pin

Conversation

@0x7c13

@0x7c13 0x7c13 commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Paired: GitHub #123 ↔ GitCode !90

Upgrade Pillow from 12.3.0 to 13.0.0 and pypdf from 6.21.1 to 6.21.2, and regenerate uv.lock. The same commit updates both Linux offline overrides to the published pillow-13.0.0-manylinux2014.1 wheels built by #122. Only the two requested dependency versions change in the lockfile.

The release tag resolves to d8d5f24fa69037d3b24af83a6284ca602c0a5a78. Both public wheel downloads and both manifest downloads were verified against their release SHA-256 digests; the committed override rows exactly match the published manifest. The release is a pre-release and is not a draft.

Compatibility review against the Pillow 13 release notes and pypdf 6.21.2 changelog:

  • No removed Pillow APIs are used by src/. Image.open(formats=...) still accepts the existing allowlists, and pypdf still decodes through the PIL.Image module wrapped by the document parser. Its explicitly named image formats remain within the reviewed set.
  • Pillow no longer saves mode I directly as PNG; the clipboard path already converts unsupported modes to RGBA, and document/attachment compression converts to RGB before JPEG encoding.
  • Pillow now applies reducing_gap when thumbnailing RGBA/LA images. This can change chat-preview sampling pixels; it requires no API adaptation. Document/attachment downscaling operates on RGB. Existing image preview, clipboard, document-image and PDF decoder restriction tests exercise these paths.

Validation:

  • uv lock --check: passed.
  • Ruff checks and formatting: passed.
  • uv build and uv run python scripts/check_wheel.py dist/icode_tui-0.31.0-py3-none-any.whl: passed, including fresh-index dependency resolution, all CLI help commands, TUI/document imports, bundled docs and ripgrep.
  • Smart Test with exactly pyproject.toml uv.lock scripts/offline_wheel_overrides.txt automatically escalated to the full non-integration suite: 33,163 tests passed, 60 skipped; 1,241 architecture checks passed, 1 deselected. This includes test_offline_wheel_overrides_match_the_lock and the image/PDF restriction tests.
  • Installed-version probes decoded and normalized all seven allowed document formats, verified pypdf's named-format subset and confirmed the decoder wrapper still installs. Both published Linux wheels contain 26 ELF objects with a maximum requirement of GLIBC_2.17.
  • PR CI on dbbef117: all jobs passed on the first attempt across Linux, macOS and Windows, including lint, architecture, test shards, type checks, builds and wheel installation.

Follow-up: recheck that the release remains published after the next GitCode-to-GitHub sync. No merge or new release is requested by this PR.

Update both exact dependency pins and regenerate uv.lock. Bundle the
published Pillow 13 manylinux2014 wheels for x86_64 and aarch64 in Linux
offline distributions, with their verified release URLs and SHA-256 sums.
@openjiuwen-collaboration-bot

openjiuwen-collaboration-bot Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

head_sha: dbbef117308be41f6dad43bc8ad5e569c2c83d3f

变更摘要

本变更是一次依赖版本升级:将运行时依赖 pillow 从 12.3.0 提升到 13.0.0、文档解析依赖 pypdf 从 6.21.1 提升到 6.21.2,并同步重新生成 uv.lock、更新 Linux 离线 wheel 覆盖清单,使离线打包使用的 Pillow 与新的 pyproject.toml pin 保持一致。PR 描述说明仅这两项依赖版本在锁文件中发生变化。

主要改动

  • Pillow 版本提升: pyproject.toml 中 dependencies 的 pillow 由 12.3.0 改为 13.0.0,依赖注释仍提示需要使用 glibc 2.17 的离线构建版本。
  • pypdf 版本提升: pyproject.toml 中「文档转换(read_document)」相关依赖的 pypdf 由 6.21.1 改为 6.21.2。
  • 锁文件同步: uv.lock 按新的依赖 pin 重新生成,使锁定的 Pillow 与 pypdf 版本与 pyproject.toml 一致。
  • 离线覆盖清单更新: scripts/offline_wheel_overrides.txt 中 Linux 离线覆盖项同步指向 pillow-13.0.0-manylinux2014.1 系列 wheel,与依赖 pin 的联动要求(bump 需同时修改该文件)保持一致。

@openjiuwen-collaboration-bot

openjiuwen-collaboration-bot Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

head_sha: dbbef117308be41f6dad43bc8ad5e569c2c83d3f

代码审查

审查结论

按文件逐一核查结果:

  • pyproject.toml:第 38 行 pillow==13.0.0、第 63 行 pypdf==6.21.2 均为纯版本号提升,requires-python = ">=3.14" 与覆盖清单中的 cp314 wheel 一致;第 35-37 行注释中"from 12.3.0 on"的 glibc 2.27 说明对 13.0.0 依然成立,未失效。本文件内的改动本身未发现问题。
  • scripts/offline_wheel_overrides.txt:第 10-11 行两行替换保持了 5 字段格式(project/version/machine/sha256/url),sha256 均为 64 位十六进制,URL 文件名含 cp314 ABI 标记(满足 build_offline_dist.sh 中 abi_tag not in filename 的校验),release tag 沿用 pillow-<version>-manylinux2014.1 的既有重建号命名,与旧行结构完全一致。格式契约无问题;但存在一条与 uv.lock 的一致性风险(见下)。

发现统计:

  • P0:0
  • P1:0
  • P2:1(离线覆盖清单的版本需与 uv.lock 严格一致,而本次 diff 未包含 uv.lock)
  • P3:0

总体风险判断:改动面极小、语义单一(两处依赖版本提升 + 两行离线 wheel 覆盖),依赖来源仍是本仓库自有 release,未引入新的可疑来源或非固定版本。主要风险不在代码语义,而在于 uv.lock 未出现在本次变更文件中——它与新 pin 及覆盖清单的三方一致性由构建脚本硬校验、并有专门测试覆盖,一旦 lock 未同步,uv lock --check、Linux 离线分发包构建与一致性测试会直接失败。由于评审视图可能限定了文件范围,该项以中等置信度报出,建议合并前确认 uv.lock 确实随提交更新。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

Comment thread scripts/offline_wheel_overrides.txt
@openjiuwen-collaboration-bot

Copy link
Copy Markdown
Contributor

head_sha: dbbef117308be41f6dad43bc8ad5e569c2c83d3f

任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
issue关联检查 N/A N/A
pr size检查 N/A N/A

@openjiuwen-release-bot
openjiuwen-release-bot Bot merged commit 9de0d5d into openJiuwen-ai:main Oct 26, 2026
18 checks passed
openjiuwen-release-bot Bot pushed a commit that referenced this pull request Oct 26, 2026
[mirror] #123: build: bump Pillow to 13.0.0 and pypdf to 6.21.2

Created-by: openjiuwen-sync
Commit-by: Jiaqi (0x7c13) Liu
Merged-by: Ox7c13
Description: Paired: [GitHub #123](#123) ↔ [GitCode !90](https://gitcode.com/openJiuwen/iCode/merge_requests/90)

<!-- bot1-mirror-meta -->
github_pr: 123
head_repo: 0x7c13/iCode
head_ref: 0x7c13/pillow-13-pin
head_sha: dbbef11
base_repo: openJiuwen-ai/iCode
base_ref: main
github_repo: openJiuwen-ai/iCode
base_branch: main
base_sha: d8d5f24
github_user: 0x7c13
<!-- /bot1-mirror-meta -->

GitHub PR mirror for CodeArts CI.

<!-- bot1-source-body -->
Upgrade Pillow from 12.3.0 to 13.0.0 and pypdf from 6.21.1 to 6.21.2, and regenerate `uv.lock`. The same commit updates both Linux offline overrides to the published `pillow-13.0.0-manylinux2014.1` wheels built by #122. Only the two requested dependency versions change in the lockfile.

The release tag resolves to `d8d5f24fa69037d3b24af83a6284ca602c0a5a78`. Both public wheel downloads and both manifest downloads were verified against their release SHA-256 digests; the committed override rows exactly match the published manifest. The release is a pre-release and is not a draft.

Compatibility review against the [Pillow 13 release notes](https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html) and [pypdf 6.21.2 changelog](https://pypdf.readthedocs.io/en/6.21.2/meta/CHANGELOG.html):
- No removed Pillow APIs are used by `src/`. `Image.open(formats=...)` still accepts the existing allowlists, and pypdf still decodes through the `PIL.Image` module wrapped by the document parser. Its explicitly named image formats remain within the reviewed set.
- Pillow no longer saves mode I directly as PNG; the clipboard path already converts unsupported modes to RGBA, and document/attachment compression converts to RGB before JPEG encoding.
- Pillow now applies `reducing_gap` when thumbnailing RGBA/LA images. This can change chat-preview sampling pixels; it requires no API adaptation. Document/attachment downscaling operates on RGB. Existing image preview, clipboard, document-image and PDF decoder restriction tests exercise these paths.

Validation:
- `uv lock --check`: passed.
- Ruff checks and formatting: passed.
- `uv build` and `uv run python scripts/check_wheel.py dist/icode_tui-0.31.0-py3-none-any.whl`: passed, including fresh-index dependency resolution, all CLI help commands, TUI/document imports, bundled docs and ripgrep.
- Smart Test with exactly `pyproject.toml uv.lock scripts/offline_wheel_overrides.txt` automatically escalated to the full non-integration suite: **33,163 tests passed, 60 skipped; 1,241 architecture checks passed, 1 deselected**. This includes `test_offline_wheel_overrides_match_the_lock` and the image/PDF restriction tests.
- Installed-version probes decoded and normalized all seven allowed document formats, verified pypdf's named-format subset and confirmed the decoder wrapper still installs. Both published Linux wheels contain 26 ELF objects with a maximum requirement of GLIBC_2.17.
- [PR CI on dbbef11](https://github.com/openJiuwen-ai/iCode/actions/runs/40254598242): all jobs passed on the first attempt across Linux, macOS and Windows, including lint, architecture, test shards, type checks, builds and wheel installation.

Follow-up: recheck that the release remains published after the next GitCode-to-GitHub sync. No merge or new release is requested by this PR.
<!-- /bot1-source-body -->

See merge request: openJiuwen/iCode!90
@openjiuwen-release-bot

Copy link
Copy Markdown
Contributor

🤖 This pull request has been merged, and the target branch is up to date.

openjiuwen-release-bot Bot pushed a commit that referenced this pull request Oct 26, 2026
[mirror] #124: chore(release): bump version to 0.32.0

Created-by: openjiuwen-sync
Commit-by: Jiaqi (0x7c13) Liu
Merged-by: Ox7c13
Description: Paired: [GitHub #124](#124) ↔ [GitCode !91](https://gitcode.com/openJiuwen/iCode/merge_requests/91)

<!-- bot1-mirror-meta -->
github_pr: 124
head_repo: 0x7c13/iCode
head_ref: dev/release-0.32.0
head_sha: c9d1882
base_repo: openJiuwen-ai/iCode
base_ref: main
github_repo: openJiuwen-ai/iCode
base_branch: main
base_sha: e225cb1
github_user: 0x7c13
<!-- /bot1-mirror-meta -->

GitHub PR mirror for CodeArts CI.

<!-- bot1-source-body -->
Bump iCode to 0.32.0 so a release is cut from current `main`.

## Changes
- `pyproject.toml` and `uv.lock`: the package version moves from 0.31.0 to 0.32.0.
- i18n catalogs (`locales/chrys.pot`, `locales/zh-Hans/LC_MESSAGES/chrys.po`, the compiled `chrys.mo`): the `Project-Id-Version` header now says 0.32.0. No message changes.

## Release
Merging this changes the version in `pyproject.toml` on `main`, so `tag-release.yml` creates the `v0.32.0` tag and starts `cd.yml` for that tag.

This is the first release whose Linux offline binaries bundle Pillow 13.0.0, from the glibc 2.17 wheels published as `pillow-13.0.0-manylinux2014.1` (#122, #123).

## Included since 0.31.0
- #123 Pillow 13.0.0 and pypdf 6.21.2 (pypdf security fixes); the Linux offline binaries take the matching glibc 2.17 Pillow wheels
- #122 the manylinux2014 Pillow wheel workflow builds 13.0.0 on patched build images, with every source archive pinned by SHA-256 (build-only); hook indicator tests stabilized
- #121 completed turns fold into activity sections; the docs show how to request readable Claude thinking summaries
- #120 the prompt editor asks for confirmation before its Discard button closes it
- #111 a sidebar Hooks tab lists every hook run, and each run is recorded once
- GitCode !85 the main chat shows the model's thinking as it streams; a resumed session replays it folded, and `/fold` folds it too
- GitCode !84 the chat follows new content only while you are at the bottom
- GitCode !83 a hook run log cut to size keeps file paths that are not valid UTF-8 intact
- GitCode !82 faster startup: a loading screen with the logo paints before the main screen and agent load, and F12 works again once the agent is ready

## Verification
- `uv lock --check` passes.
- `scripts/i18n.py extract/update/compile/check` runs clean, and a second run changes nothing.
- Tests were not run locally; CI covers them.
<!-- /bot1-source-body -->

See merge request: openJiuwen/iCode!91
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant