feat: reduce build size — replace Pillow with cv2, refactor build scripts
All checks were successful
Build Release / create-release (push) Successful in 1s
Build Release / build-docker (push) Successful in 42s
Lint & Test / test (push) Successful in 2m50s
Build Release / build-windows (push) Successful in 3m27s
Build Release / build-linux (push) Successful in 1m59s
All checks were successful
Build Release / create-release (push) Successful in 1s
Build Release / build-docker (push) Successful in 42s
Lint & Test / test (push) Successful in 2m50s
Build Release / build-windows (push) Successful in 3m27s
Build Release / build-linux (push) Successful in 1m59s
- Create utils/image_codec.py with cv2-based image helpers - Replace PIL usage across all routes, filters, and engines with cv2 - Move Pillow from core deps to [tray] optional in pyproject.toml - Extract shared build logic into build-common.sh (detect_version, cleanup, etc.) - Strip unused NumPy/PIL/zeroconf/debug files in build scripts
This commit is contained in:
55
TODO.md
55
TODO.md
@@ -1,26 +1,37 @@
|
||||
# Auto-Update Phase 1: Check & Notify
|
||||
# Build Size Reduction
|
||||
|
||||
## Backend
|
||||
- [ ] Add `packaging` to pyproject.toml dependencies
|
||||
- [ ] Create `core/update/__init__.py`
|
||||
- [ ] Create `core/update/release_provider.py` — ABC + data models
|
||||
- [ ] Create `core/update/gitea_provider.py` — Gitea REST API implementation
|
||||
- [ ] Create `core/update/version_check.py` — semver normalization + comparison
|
||||
- [ ] Create `core/update/update_service.py` — background service + state machine
|
||||
- [ ] Create `api/schemas/update.py` — Pydantic request/response models
|
||||
- [ ] Create `api/routes/update.py` — REST endpoints
|
||||
- [ ] Wire into `api/__init__.py`, `dependencies.py`, `main.py`
|
||||
## Phase 1: Quick Wins (build scripts)
|
||||
|
||||
## Frontend
|
||||
- [ ] Add update banner HTML to `index.html`
|
||||
- [ ] Add Updates tab to `settings.html`
|
||||
- [ ] Add `has-update` CSS styles for version badge in `layout.css`
|
||||
- [ ] Add update banner CSS styles in `components.css`
|
||||
- [ ] Create `features/update.ts` — update check/settings/banner logic
|
||||
- [ ] Wire exports in `app.ts`
|
||||
- [ ] Add i18n keys to `en.json`, `ru.json`, `zh.json`
|
||||
- [x] Strip unused NumPy submodules (polynomial, linalg, ma, lib, distutils)
|
||||
- [x] Strip debug symbols from .pyd/.dll/.so files
|
||||
- [x] Remove zeroconf service database
|
||||
- [x] Remove .py source from site-packages after compiling to .pyc
|
||||
- [x] Strip unused PIL image plugins (keep JPEG/PNG/ICO/BMP for tray)
|
||||
|
||||
## Phase 2: Replace Pillow with cv2
|
||||
|
||||
- [x] Create `utils/image_codec.py` with cv2-based image helpers
|
||||
- [x] Replace PIL in `_preview_helpers.py`
|
||||
- [x] Replace PIL in `picture_sources.py`
|
||||
- [x] Replace PIL in `color_strip_sources.py`
|
||||
- [x] Replace PIL in `templates.py`
|
||||
- [x] Replace PIL in `postprocessing.py`
|
||||
- [x] Replace PIL in `output_targets_keycolors.py`
|
||||
- [x] Replace PIL in `kc_target_processor.py`
|
||||
- [x] Replace PIL in `pixelate.py` filter
|
||||
- [x] Replace PIL in `downscaler.py` filter
|
||||
- [x] Replace PIL in `scrcpy_engine.py`
|
||||
- [x] Replace PIL in `live_stream_manager.py`
|
||||
- [x] Move Pillow from core deps to [tray] optional in pyproject.toml
|
||||
- [x] Make PIL import conditional in `tray.py`
|
||||
- [x] Move opencv-python-headless to core dependencies
|
||||
|
||||
## Phase 4: OpenCV stripping (build scripts)
|
||||
|
||||
- [x] Strip ffmpeg DLL, Haar cascades, dev files (already existed)
|
||||
- [x] Strip typing stubs (already existed)
|
||||
|
||||
## Verification
|
||||
- [ ] Lint check: `ruff check src/ tests/ --fix`
|
||||
- [ ] TypeScript check: `npx tsc --noEmit && npm run build`
|
||||
- [ ] Tests pass: `py -3.13 -m pytest tests/ --no-cov -q`
|
||||
|
||||
- [x] Lint: `ruff check src/ tests/ --fix`
|
||||
- [x] Tests: 341 passed
|
||||
|
||||
Reference in New Issue
Block a user