Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
permissions. Update authenticity and independent security assurance are not
claimed by these source and integrity checks.

## v0.24.1 — 2026-10-16

- Fix UTF-8 byte-position handling in the public privacy gate's fixed-policy span normalization. Multibyte prefixes can no longer shift a reviewed literal's exemption onto adjacent source content.
- Add positive and negative Unicode-prefix controls while preserving all existing privacy rules and the explicit package policy boundary.
- The installer, media runtime, capability scope, and bundled Cleanup provenance are unchanged from v0.24.0.

## v0.23.0 (2026-08-27)

### Architecture cleanup and public release closure
Expand Down
2 changes: 1 addition & 1 deletion README.en.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 🎬 video-autopilot-kit

> **v0.24.0 / architecture 7.0**: long-form, Shorts and Reels share a self-authored composition runtime, an Imagegen-first material gate,
> **v0.24.1 / architecture 7.0**: long-form, Shorts and Reels share a self-authored composition runtime, an Imagegen-first material gate,
> evidence-gated cinematic craft and one 38-preset filter library. Camera, edit, sound, color, VFX and transitions fall back to a clean cut when shot evidence is missing. The 33-reference design DNA, tracking, Quality-95 review, publishing packages, outcome learning and safe updates for long-form,
> Shorts and Reels. Run `python src/system_health.py --quick` to validate a clean install. Personal
> media and analytics never enter the release.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 🎬 video-autopilot-kit

> Current version: v0.24.0
> Current version: v0.24.1
>
> **v0.24.0/架構 7.0**:長片/Shorts/Reels 共用自研 composition runtime、Imagegen-first 材質閘門、證據式電影工藝、統一濾鏡庫與唯一發布中樞;
> **v0.24.1/架構 7.0**:長片/Shorts/Reels 共用自研 composition runtime、Imagegen-first 材質閘門、證據式電影工藝、統一濾鏡庫與唯一發布中樞;
> 38 組調色/動態/轉場/主體濾鏡、33 圖設計 DNA、Tracking、Quality-95 審片、發佈包、成效學習與完整性檢查、確認後更新與回滾都在同一套公開版。沒有鏡頭證據時仍會退回乾淨切鏡。
> 執行 `python src/system_health.py --quick` 可驗證乾淨安裝;個人媒體與成效資料不會進 release。

Expand Down
2 changes: 1 addition & 1 deletion release-manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": 1,
"project_id": "video-autopilot-kit",
"version": "0.24.0",
"version": "0.24.1",
"release_date": "2026-10-16T00:00:00Z",
"license": "MIT",
"python": ">=3.9",
Expand Down
11 changes: 9 additions & 2 deletions scripts/public_privacy_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,8 +258,9 @@ def _without_fixed_build_path_globs(name: str, text: str) -> str:
continue
for value in ast.walk(node.value):
if isinstance(value, ast.Constant) and isinstance(value.value, str) and value.value in safe and value.lineno == value.end_lineno:
line = lines[value.lineno - 1]
lines[value.lineno - 1] = line[:value.col_offset] + '""' + " " * (value.end_col_offset - value.col_offset - 2) + line[value.end_col_offset:]
line = lines[value.lineno - 1].encode("utf-8")
replacement = b'""' + b" " * (value.end_col_offset - value.col_offset - 2)
lines[value.lineno - 1] = (line[:value.col_offset] + replacement + line[value.end_col_offset:]).decode("utf-8")
return "".join(lines)


Expand Down Expand Up @@ -417,6 +418,12 @@ def _selftest() -> None:
"_PRIVATE_RELEASE_PATH_GLOBS = (" + repr(session_fixture) + ",)"):
assert "codex-session-artifact-path" in public_privacy_findings("src/release_build.py", leaking)
assert "codex-session-artifact-path" in public_privacy_findings("src/release_manager.py", policy)
for count in (0, 1, 2, 5, 8, 16):
prefix = repr("字" * count) + ", "
unicode_policy = policy.replace("= (", "= (" + prefix)
assert not public_privacy_findings("src/release_build.py", unicode_policy)
leaking = unicode_policy.rstrip().removesuffix(",)") + ", " + repr(session_fixture) + ",)\n"
assert "codex-session-artifact-path" in public_privacy_findings("src/release_build.py", leaking)
actor_fixture = joined(
"if str(actor).lower() not in {", repr("owner-one"), ", ",
repr("owner-two"), "}:\n raise PermissionError()\n"
Expand Down
Loading