mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
* fix(ai): pin protobuf<5 on arm64 so mediapipe face landmarks work aarch64 has no mediapipe wheel above 0.10.18, and 0.10.18 calls MessageFactory.GetPrototype (removed in protobuf 5+). With protobuf unpinned, the paddle/onnxruntime deps pull protobuf 7.x into the shared AI venv and break mediapipe FaceLandmarker, so red-eye-removal fails on every input (blur-faces and smart-crop keep working via a prebuilt graph). Split mediapipe by platform and pin protobuf>=4.25.3,<5 for aarch64 only. x86_64 keeps mediapipe 0.10.35, which works with protobuf 7, so requirements-gpu.txt (amd64 only) stays unpinned. Also fixes a latent issue where mediapipe>=0.10.21 was unsatisfiable on aarch64. Verified live on the arm64 container: red-eye-removal completes on real jpg and heic faces; OCR (tesseract) and paddle import unaffected. Claude-Session: https://claude.ai/code/session_01VtvE6K8iEr5jGFJJpHEaPA * fix(ai): pin protobuf<5 in arm64 bundles lacking a mediapipe constraint Bundles are built from docker/feature-manifest.json, not requirements.txt, so this is the change that actually fixes the shipped arm64 bundles. On arm64, object-eraser-colorize (onnxruntime), ocr (paddle) and transcription (faster-whisper pulls onnxruntime) install a protobuf-dependent package with no mediapipe to cap protobuf, so they bake protobuf 7.x. All bundles share one /data/ai/venv at install time, so whichever of those installs last overwrites protobuf to 7.x and breaks mediapipe FaceLandmarker (red-eye-removal). Pin protobuf>=4.25.3,<5 in those three arm64 lists (appended last so it downgrades after the puller installs). The four mediapipe bundles already resolve <5. Dry-run on aarch64 confirmed paddle + protobuf 4.25.9 resolve with no conflict. Claude-Session: https://claude.ai/code/session_01VtvE6K8iEr5jGFJJpHEaPA * refactor(ai): keep protobuf fix in feature-manifest.json only requirements.txt is not consumed by the Docker image build (the base /opt/venv is installed from a hardcoded package list, and the ML libs ship via bundles), so the requirements changes had no effect on shipped artifacts and only tripped the dependency-review scanner on the protobuf range. Revert them; the operative arm64 bundle fix lives entirely in docker/feature-manifest.json. Claude-Session: https://claude.ai/code/session_01VtvE6K8iEr5jGFJJpHEaPA