- Change appended path from tree/master/ to blob/HEAD/
- blob/ is correct for file links (tree/ is for directories)
- HEAD resolves to default branch regardless of name (master/main)
- Add unit tests for check_and_sanitize_markdown_root()
Co-Authored-By: Claude Opus 4.5 <[email protected]>
The armv7 pip fallback fails because packages like pycryptodome,
bitarray, and regex need C compilation but gcc/python3-dev weren't
installed.
This adds build-essential and python3-dev conditionally only on armv7,
keeping amd64/arm64 images lean (they use uv with pre-built wheels).
Co-Authored-By: Claude Opus 4.5 <[email protected]>
The previous change used `COPY --from=ghcr.io/astral-sh/uv:latest` which
fails on armv7 because uv doesn't publish armv7 images.
This fix:
- Uses curl to install uv (works on amd64/arm64)
- Falls back to pip for armv7 where uv isn't available
- Adds ca-certificates and curl to apt dependencies
- Re-adds python3-pip for the fallback path
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Replace pip with uv for faster dependency installation
- Use uv.lock for reproducible builds with `uv sync --frozen`
- Expand .dockerignore to reduce build context from 937MB to ~9MB
- Remove multi-stage build (no longer needed with uv)
- Optimize layer caching by copying lockfile before source
- Consolidate LABEL instructions into single layer
- Use JSON notation for CMD (proper signal handling)
- Update syntax directive to 1.12
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Replace legacy setup.py with modern pyproject.toml using hatchling
build backend. Update README with current installation instructions.
Fixes#2854
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Solc reports source locations as byte offsets, but the mutator code was
using Python string indexing which operates on character counts. For
files with multi-byte Unicode characters (e.g., Japanese comments),
this caused mutations to be applied at wrong positions.
- Change test_patch() to read/write files in binary mode
- Fix apply_patch() offset calculation to use byte length