Skip to content

Conversation

@Vladush
Copy link
Owner

@Vladush Vladush commented Jan 27, 2026

Description

I upgraded the OpenCV dependency to version 4.12.0, switched to a static build strategy, and implemented comprehensive documentation and CI improvements. This PR consolidates several refactors including version bumping, documentation auditing, and bug fixes for video call compatibility.

Key Changes

  • Dependency Upgrade: Upgraded to OpenCV 4.12.0 (Static) and YuNet 2023mar.
  • History Rewrite: Removed opencv_static (binary) and opencv_build (source) directories from the repository history to significantly reduce repository size and resolve linting issues.
  • Documentation Overhaul:
    • Bumped project version to 0.9.7.
    • Updated CHANGELOG.md with release notes.
    • Refined README.md, CONTRIBUTING.md, docs/CONFIGURATION.md, and docs/SECURITY_ASSESSMENT.md for clarity and consistency.
  • Feature Enhancements:
    • Dynamic Input Sizing: Enabled dynamic input sizing for Face Detection (YuNet).
    • Debug Logging: Improved debug logging and configuration output (show-config).
    • Video Call Fix: Adjusted timing and timeouts to improve compatibility during active video calls (busy camera handling).
  • CI Enhancements:
    • Updated .github/workflows/ci.yml to build OpenCV from source and cache the artifacts preventing binary tracking.
    • Fixed markdownlint failures by correcting blockquote syntax.
    • Fixed build-clang failures by adding missing dependencies (libpam0g-dev, libgtest-dev) and configuring CC/CXX environment variables.
    • Corrected model installation paths in CI (changed /etc to /usr/share) to match test expectations.
  • Config Update: Modified CMakeLists.txt to prioritize the locally built static OpenCV.

Compatibility Note

  • Embeddings: The face recognition model (face_recognition_sface_2021dec.onnx) remains unchanged from the previous version. Existing user embeddings are fully compatible and no migration is required.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

How Has This Been Tested?

  • CI Build: Verified that build-opencv script runs, caches correctly, and that linting passes (after history rewrite).
  • Cross-Compilation: Verified successful tests on build-gcc and build-aarch64 after fixing model paths.
  • Local Verification: Verified cmake conditional logic for finding OpenCV.
  • Functional Testing: Verified face detection with dynamic sizing and video call compatibility.

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

- Fix FetchContent timestamp policy (CMP0135) in CMakeLists.txt
- Implement robust rate-limiting tests in test_auth_logic.cpp
- Modernize C++ usage (headers, casts, const) across PAM and service
- Extract IPC protocol to src/common/
- Deep clean of build configuration
- **Build**: Disabled excessive GTest installation in CMake to resolve package conflicts.
- **Tests**: Increased lockout duration in test_auth_logic.cpp to prevent flakiness on slower emulated architectures.
- **Docker**: Fixed FetchContent SSL errors (added ca-certificates) and ensure models are correctly installed before running tests.
- **Cleanup**: Updated .gitignore to exclude log files.
…dels

- **CI**: Added  step to , , and  jobs to ensure tests running on host can find models in .
- **CI**: Added missing  step to .
- **Models**: Updated  and  to fetch models from Hugging Face (OpenCV Zoo mirror).
- **Models**: Updated YuNet model to .
…face detection, and include Git hash or build date in the version string.
- Promoted isValidUsername to public utility in utils.hpp

- Removed unused headers (numeric, string_view)

- Fixed CMake CMP0135 warning for googletest

- Resolved test linking errors
- Updated Dockerfiles to install models to /usr/share/linuxcampam/models

- Updated .dockerignore to exclude opencv_static and build artifacts to prevent cross-arch contamination
@Vladush Vladush force-pushed the feature/opencv-upgrade-static branch from 5e9fa36 to 0891b24 Compare January 27, 2026 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants