diff --git a/.env.example b/.env.example index 9c708d4..5ee4794 100644 --- a/.env.example +++ b/.env.example @@ -33,7 +33,7 @@ FORCE_CPU=false ENABLE_CACHE=true CACHE_DIR=/app/.if_cache HF_HOME=/models/huggingface -INSIGHTFACE_HOME=/models +INSIGHTFACE_HOME=/models/.insightface # ── Tracker overrides (one-shot — remove after use) ─────────────────────────── # DRY_RUN=true # Preview selection without downloading/uploading diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e40cf9..e090def 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.2.1] - 2026-06-12 + +### Fixed + +- **Container startup reinstalling packages**: `entrypoint.sh` used `uv run`, which performs a sync check on every startup and re-downloaded `ruff` and rebuilt the package each time. Replaced with direct `.venv/bin/python` calls to skip the sync entirely. +- **InsightFace double `models/` path**: `INSIGHTFACE_HOME=/models` caused InsightFace to download Buffalo_L to `/models/models/buffalo_l` (InsightFace always appends `models/` to the root). Updated default in `compose.yml` and `.env.example` to `/models/.insightface`. + ## [0.2.0] - 2026-06-12 First release of winnow. Forked from [if-curator](https://github.com/ds-sebastian/if_curator) by Sebastian and rewritten for headless Docker deployment. diff --git a/README.md b/README.md index 025e946..fe241bb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Publish Docker Image](https://github.com/sudolulo/winnow/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/sudolulo/winnow/actions/workflows/docker-publish.yml) [![Release](https://github.com/sudolulo/winnow/actions/workflows/release.yml/badge.svg)](https://github.com/sudolulo/winnow/actions/workflows/release.yml) [![Lint](https://github.com/sudolulo/winnow/actions/workflows/lint.yml/badge.svg)](https://github.com/sudolulo/winnow/actions/workflows/lint.yml) [![Test](https://github.com/sudolulo/winnow/actions/workflows/test.yml/badge.svg)](https://github.com/sudolulo/winnow/actions/workflows/test.yml) +[![Immich](https://img.shields.io/badge/Immich-v1.106%2B-violet?style=for-the-badge)](https://immich.app) [![Frigate](https://img.shields.io/badge/Frigate-Ready-green?style=for-the-badge)](https://frigate.video) **Docs:** [Setup Guide](docs/setup.md) · [Troubleshooting](docs/troubleshooting.md) · [FAQ](docs/faq.md) diff --git a/compose.yml b/compose.yml index 1faab0d..efec92a 100644 --- a/compose.yml +++ b/compose.yml @@ -38,7 +38,7 @@ services: - ENABLE_CACHE=true - CACHE_DIR=/app/.if_cache - HF_HOME=/models/huggingface - - INSIGHTFACE_HOME=/models + - INSIGHTFACE_HOME=/models/.insightface # ── Tracker overrides (one-shot, remove after use) ──────────────────── # - DRY_RUN=true # Preview selection without downloading/uploading diff --git a/entrypoint.sh b/entrypoint.sh index ecad74b..1237f13 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -4,13 +4,13 @@ export PYTHONUNBUFFERED=1 # 1. Run the job immediately on startup echo "▶ Running on startup..." -uv run python -m winnow.cli +/app/.venv/bin/python -m winnow.cli # 2. If a schedule exists, start the scheduler if [ -n "${CRON_SCHEDULE:-}" ]; then echo "▶ CRON_SCHEDULE set to: $CRON_SCHEDULE" echo "▶ Switching to scheduled mode..." - exec uv run python3 /app/scheduler.py + exec /app/.venv/bin/python /app/scheduler.py else echo "▶ No schedule set, exiting." fi diff --git a/pyproject.toml b/pyproject.toml index 1371441..9b873fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "winnow" -version = "0.2.0" +version = "0.2.1" description = "Immich to Frigate training sets" license = "MIT" requires-python = ">=3.12" diff --git a/uv.lock b/uv.lock index b17c83e..68ccb08 100644 --- a/uv.lock +++ b/uv.lock @@ -2289,7 +2289,7 @@ wheels = [ [[package]] name = "winnow" -version = "0.2.0" +version = "0.2.1" source = { editable = "." } dependencies = [ { name = "croniter" },