Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
d12bcb1
chore(deps): update dependency chenxiaolong/custota to v6.3 (#320)
pixincreate Jul 18, 2026
bfcd44f
chore(deps): update dependency chenxiaolong/avbroot to v3.32.0 (#319)
pixincreate Jul 18, 2026
b383eb3
chore(deps): update actions/setup-python action to v7 (#325)
pixincreate Jul 21, 2026
db7983b
chore(deps): update renovatebot/github-action action to v46.1.20 (#324)
pixincreate Jul 21, 2026
0089227
chore(deps): update https://github.com/chenxiaolong/my-avbroot-setup.…
pixincreate Jul 21, 2026
cffebdd
chore(deps): update dependency chenxiaolong/msd to v2.4 (#322)
pixincreate Jul 21, 2026
99c6462
chore(deps): update dependency chenxiaolong/bcr to v3.5 (#321)
pixincreate Jul 21, 2026
eee093b
chore(deps): update dependency chenxiaolong/avbroot to v3.32.1 (#326)
pixincreate Jul 23, 2026
a0153c7
chore(deps): update https://github.com/chenxiaolong/my-avbroot-setup.…
pixincreate Jul 23, 2026
abdd07d
chore(deps): update renovatebot/github-action action to v46.1.21 (#328)
pixincreate Jul 28, 2026
c35c331
chore(deps): update dependency chenxiaolong/avbroot to v3.32.2 (#329)
pixincreate Jul 30, 2026
4f0569a
chore(deps): update renovatebot/github-action action to v46.2.0 (#330)
pixincreate Jul 30, 2026
5d2270d
chore(deps): update renovatebot/github-action action to v46.2.1 (#331)
pixincreate Aug 4, 2026
ecfb4b5
chore(deps): update dependency chenxiaolong/avbroot to v3.33.0 (#332)
pixincreate Aug 6, 2026
ec82a92
chore(deps): update swatinem/rust-cache action to v2.9.2 (#333)
pixincreate Aug 6, 2026
d1f4d69
chore(deps): update dependency chenxiaolong/custota to v6.4 (#334)
pixincreate Aug 7, 2026
bb7456d
fix: install Python deps from pyproject.toml via uv (#335)
pixincreate Aug 7, 2026
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
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,10 @@ jobs:
toolchain: stable 2 weeks ago

- name: Build and Cache Rust Dependencies
uses: Swatinem/rust-cache@v2.9.1
uses: Swatinem/rust-cache@v2.9.2

- name: Install Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Pin all changed workflow actions to immutable commit SHAs.

Both updated references use mutable tags, violating the repository’s blanket action-pinning policy:

  • .github/workflows/release.yml#L172-L172: pin actions/setup-python to the verified full SHA for v7.
  • .github/workflows/renovate.yml#L28-L28: pin renovatebot/github-action to the verified full SHA for v46.1.20.
🧰 Tools
🪛 zizmor (1.26.1)

[error] 172-172: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

📍 Affects 2 files
  • .github/workflows/release.yml#L172-L172 (this comment)
  • .github/workflows/renovate.yml#L28-L28
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml at line 172, Replace the mutable
actions/setup-python v7 reference in .github/workflows/release.yml:172-172 with
the verified full immutable commit SHA for v7. Also replace the mutable
renovatebot/github-action v46.1.20 reference in
.github/workflows/renovate.yml:28-28 with its verified full commit SHA,
preserving the existing action versions.

Source: Linters/SAST tools

with:
python-version: "3.12-dev"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/renovate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@v7

- name: Self-hosted Renovate
uses: renovatebot/github-action@v46.1.19
uses: renovatebot/github-action@v46.2.1
with:
configurationFile: .github/renovate.json5
# https://docs.renovatebot.com/modules/platform/github/#running-using-a-fine-grained-token
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@

# Python virtual environment
venv

# OMO
.omo
10 changes: 5 additions & 5 deletions src/declarations.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ USER="pixincreate" # GitHub username
# Application version variables
VERSION[AFSR]="${VERSION[AFSR]:-1.0.4}"
VERSION[ALTERINSTALLER]="${VERSION[ALTERINSTALLER]:-2.4}"
VERSION[AVBROOT]="${VERSION[AVBROOT]:-3.31.0}"
VERSION[AVBROOT_SETUP]="e4f80bb54aa5ae8de6109edd7d0873d5b4966748" # Commit hash
VERSION[BCR]="${VERSION[BCR]:-3.4}"
VERSION[CUSTOTA]="${VERSION[CUSTOTA]:-6.2}"
VERSION[AVBROOT]="${VERSION[AVBROOT]:-3.33.0}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== declarations.sh relevant lines =="
sed -n '1,80p' src/declarations.sh 2>/dev/null || true

echo "== util_functions.sh AVBROOT/url references =="
rg -n "AVBROOT|avbroot|VERSION\[" src/util_functions.sh src/declarations.sh 2>/dev/null || true

echo "== local git diff summary =="
git diff --stat 2>/dev/null || true

echo "== upstream AVBRoot release metadata =="
python3 - <<'PY'
import json, urllib.request
url = "https://api.github.com/repos/chenxiaolong/avbroot/releases/latest"
try:
    with urllib.request.urlopen(url, timeout=20) as r:
        data = json.load(r)
        print("latest_release_tag:", data.get("tag_name"))
        print("latest_release_name:", data.get("name"))
        print("published_at:", data.get("published_at"))
except Exception as e:
    print("ERROR:", type(e).__name__, str(e))

for i in range(1, 6):
    url = f"https://api.github.com/repos/chenxiaolong/avbroot/releases?per_page=20&page={i}"
    print(f"\npage {i} releases:")
    try:
        with urllib.request.urlopen(url, timeout=20) as r:
            for item in json.load(r)[:5]:
                print("-", item.get("tag_name") or "<nil>", item.get("published_at"))
    except Exception as e:
        print("ERROR:", type(e).__name__, str(e))
PY

Repository: 0cwa/PixeneOS

Length of output: 9633


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== util_functions.sh download function around AVBRoot release URLs =="
sed -n '335,380p' src/util_functions.sh 2>/dev/null || true

echo "== fetch all known AVBRoot releases containing v3.33.0 or v3.32.2 =="
python3 - <<'PY'
import urllib.request, json, ssl

ctx = ssl.create_default_context()
ctx.check_hostname=False
ctx.verify_mode=ssl.CERT_NONE

releases=[]
for page in range(1,10):
    url = f"https://api.github.com/repos/chenxiaolong/avbroot/releases?per_page=100&page={page}"
    try:
        with urllib.request.urlopen(url, timeout=20, context=ctx) as r:
            data = json.load(r)
    except Exception as e:
        print(f"page {page} error:", repr(e))
        break
    if not data:
        break
    releases.extend(data)

for tag in ["v3.33.0", "v3.32.2"]:
    hits = [r for r in releases if r.get("tag_name") == tag]
    print("tag:", tag, "count", len(hits))
    if hits:
        print(hits[0].get("published_at"), hits[0].get("assets", [])[:3])

latest = None
for r in releases:
    if not latest or r.get("published_at", "") > latest.get("published_at",""):
        latest=r
print("latest:", latest.get("tag_name"), "published", latest.get("published_at"))
PY

Repository: 0cwa/PixeneOS

Length of output: 2627


🌐 Web query:

chenxiaolong avbroot releases v3.33.0 v3.32.2

💡 Result:

As of August 6, 2026, there are no official releases for avbroot versions v3.33.0 or v3.32.2 [1][2]. The latest available version of avbroot is v3.32.0, which was published on July 18, 2026 [2].

Citations:


Use a published AVBRoot release.

VERSION[AVBROOT] is turned into the release URL chenxiaolong/avbroot/releases/download/v<version>/avbroot-<version>-<ARCH>.zip. v3.33.0 is not published on the upstream release page, so the default download path fails. Set this to a published, compatible tag before merging.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/declarations.sh` at line 31, Update the default VERSION[AVBROOT] value in
the declarations configuration to a published, compatible upstream AVBRoot
release tag, preserving the existing release URL construction and override
behavior.

VERSION[AVBROOT_SETUP]="848deb1311a72fcb9b582cef79e0be558ae64db8" # Commit hash
VERSION[BCR]="${VERSION[BCR]:-3.5}"
VERSION[CUSTOTA]="${VERSION[CUSTOTA]:-6.4}"
VERSION[GRAPHENEOS]="${VERSION[GRAPHENEOS]:-}"
VERSION[MAGISK]="${VERSION[MAGISK]:-}"
VERSION[MSD]="${VERSION[MSD]:-2.3}"
VERSION[MSD]="${VERSION[MSD]:-2.4}"
VERSION[OEMUNLOCKONBOOT]="${VERSION[OEMUNLOCKONBOOT]:-1.4}"

# Magisk
Expand Down
24 changes: 9 additions & 15 deletions src/util_functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ function env_setup() {
local afsr="${WORKDIR}/tools/afsr"
local custota_tool="${WORKDIR}/tools/custota-tool"
local my_avbroot_setup="${WORKDIR}/tools/my-avbroot-setup"
local requirements_file="${my_avbroot_setup}/requirements.txt"
local pyproject_file="${my_avbroot_setup}/pyproject.toml"

# Add the paths to the PATH environment variable just so that the script can find them
if ! command -v avbroot &>/dev/null && ! command -v afsr &>/dev/null && ! command -v custota-tool &>/dev/null; then
Expand All @@ -277,22 +277,16 @@ function env_setup() {
enable_venv

# Install required Python packages
if [[ -f "${requirements_file}" ]]; then
local missing_packages=false
while read -r package; do
[[ -z "${package}" ]] && continue
if ! pip list | grep -i "^${package%%[=><]*}" &>/dev/null; then
missing_packages=true
break
fi
done <"${requirements_file}"

if [[ "${missing_packages}" == "true" ]]; then
echo -e "Installing required Python packages from requirements.txt..."
pip3 install -r "${requirements_file}"
if [[ -f "${pyproject_file}" ]]; then
if ! command -v uv &>/dev/null; then
echo -e "uv not found. Installing..."
python3 -m pip install uv
fi

echo -e "Installing required Python packages from pyproject.toml..."
uv pip install -r "${pyproject_file}"
else
echo -e "Warning: requirements.txt not found at ${requirements_file}"
echo -e "Warning: pyproject.toml not found at ${my_avbroot_setup}"
fi
}

Expand Down