Skip to content

Releases: BKDDFS/PerfectFrameAI

v3.0.4

10 Feb 00:07
e6d8c5f

Choose a tag to compare

3.0.4 (2026-02-10)

Bug Fixes

  • set Dependabot target branch to dev (#87) (ab5e902)

v3.0.3

09 Feb 23:26
227efce

Choose a tag to compare

3.0.3 (2026-02-09)

Bug Fixes

v3.0.2

31 Jan 12:03
99be0dc

Choose a tag to compare

3.0.2 (2026-01-31)

Bug Fixes

  • simplify Dockerfile and reduce Trivy CVE alerts (#70) (3215e7d)

v3.0.1

31 Jan 11:01
2e262c6

Choose a tag to compare

3.0.1 (2026-01-31)

Bug Fixes

  • address security scorecard alerts (#68) (c392f28)

v3.0.0

31 Jan 00:15

Choose a tag to compare

PerfectFrameAI v3.0.0

This major release modernizes the entire codebase, improves developer experience, and reduces Docker image size by ~450MB.

⚠️ Breaking Changes

Module Rename

  • extractor_service/perfectframe/ - all imports must be updated
  • extractor_service/main.pyperfectframe/app.py

Python Version

  • Now requires Python 3.11-3.13 (previously 3.10-3.12)

Removed Components

  • service_manager module removed - no more Python wrapper around Docker
  • config.py removed - configuration now via docker-compose.yaml
  • start.py removed - use docker compose up directly
  • Poetry removed - migrated to uv for faster installs

ML Framework

  • TensorFlow removed - replaced with ONNX Runtime (~500MB → ~50MB)

✨ New Features

macOS ARM64 Support

  • Native builds on Apple Silicon (M1/M2/M3)
  • Conditional platform flag - uses --platform linux/amd64 only on non-ARM64 systems

GPU/CPU Automatic Fallback

  • onnxruntime-gpu on Linux/Windows (CUDA support)
  • onnxruntime on macOS (no CUDA on Apple Silicon)
  • Automatic detection - no manual configuration needed

Pre-commit Hooks

New .pre-commit-config.yaml with:

  • Ruff - linting with ALL rules enabled
  • docformatter - Google-style docstrings
  • detect-secrets - prevents accidental credential commits
  • pytest - runs tests before commit

100% Test Coverage Enforcement

  • Coverage check via --cov-fail-under=100
  • Blocks commits and CI if coverage drops

🏗️ Architecture Changes

Simplified Project Structure

Before:                          After:
extractor_service/               perfectframe/
├── Dockerfile                   ├── app.py
├── app/                         ├── dependencies.py
│   └── ...                      └── ...
service_manager/                 Dockerfile (root)
└── ...                          docker-compose.yaml

Test Structure Flattened

  • tests/extractor_service/ + tests/service_manager/ merged into tests/unit/, tests/integration/, tests/e2e/

Code Consolidation

  • InceptionResNetNIMA + _ONNXModel merged into single NIMAEvaluator class
  • Common test fixtures consolidated in tests/common.py

🔄 CI/CD Improvements

New Workflows

Workflow Purpose
release.yml Automated releases with release-please
pr-title.yml Conventional commit validation
codeql.yml CodeQL security scanning
scorecard.yml OpenSSF Scorecard integration

Release Automation

  • release-please - automatic changelog and version bumps
  • SBOM attestation - Software Bill of Materials on every release
  • Versioned filenames - e.g. perfectframe-v3.0.0.tar.gz

CI Enhancements

  • Pre-commit hooks run in CI (can't bypass with --no-verify)
  • All GitHub Actions updated to latest versions
  • Trivy security scanning (pinned to v0.28.0)
  • Added dev branch to CI and CodeQL workflows

🔒 Security

Container Hardening

  • Non-root user - container no longer runs as root
  • Proper file permissions for non-root operation

Workflow Security

  • Permissions moved from workflow level to job level (least privilege)

Secret Detection

  • .secrets.baseline added for detect-secrets
  • Prevents accidental credential commits

License Change

  • GPL-3.0 → Apache 2.0 - more permissive for commercial use

🧹 Code Quality

Linting Migration

  • Pylint → Ruff with ALL rules enabled
  • Sensible ignores configured in pyproject.toml

Type System Improvements

  • New type aliases: Image, Images, ImagesBatch, ScoresArray, ImageResolution
  • ExtractorName enum used consistently (replaces strings)
  • Runtime type checks replace # type: ignore comments

Testing Improvements

  • Migrated from unittest.mock to pytest-mock
  • Added pytest-timeout for hanging test detection
  • New E2E tests for Docker on ARM64

🐛 Bug Fixes

  • Race condition fixed - _active_extractor flag now set immediately in start_extractor (not inside background task)
  • Silent failures now logged - exception logging in ExtractorManager.__run_extractor(), cv2.imwrite() return value checked
  • Typos fixed - compering_group_sizecomparing_group_size, ulrurl
  • Test fix - added missing parentheses to assert_not_called() call
  • Model download - proper requests.RequestException handling

📦 Dependency Updates

Category Before After
Build System Poetry uv 0.9.26
ML Framework TensorFlow 2.18.0 ONNX Runtime
Python 3.12 3.13

New Dependencies

  • pytest-mock - cleaner mock syntax
  • pytest-timeout - test timeout enforcement

Dependabot

  • Added uv package ecosystem for automatic dependency updates

📚 Documentation

README

  • Improved Usage section with clear CPU/GPU mode instructions
  • Removed Tests and Roadmap sections
  • Added v3.0 to version comparison table

Removed

  • Polish README (.github/README.pl.md)

Added

  • CODEOWNERS file for automatic review assignment

🐳 Docker

  • Dockerfile moved from extractor_service/ to project root
  • Merged RUN instructions for smaller image layers
  • Removed curl and healthcheck (not needed)
  • Service renamed in docker-compose: extractor_serviceperfectframe
  • Non-root user with proper permissions

📋 Requirements

  • Python 3.11-3.13
  • Docker (optional)
  • GPU with CUDA (optional - automatic fallback to CPU)

PerfectFrameAI v2.3.2

11 Jul 12:49
d7dfabd

Choose a tag to compare

Update dependencies/security

PerfectFrameAI v2.3.1

09 Jun 09:27
770041a

Choose a tag to compare

Release Notes

New Features

Support for Additional Video and Image Extensions:
Expanded support to include more video and image file formats, enhancing the versatility and compatibility of our software.

Updates

Test Updates:

Updated tests.png to reflect the latest changes and improvements in the testing suite.
Integrations

Codecov Integration:

Integrated Codecov for code coverage analysis to ensure higher code quality and maintainability.

PerfectFrameAI v2.3.0

29 May 09:59
a9d334a

Choose a tag to compare

Release Notes

Enhancements

  • Add SonarCloud
  • Add GitHub Actions: Add testing code before pull request via GitHub Actions
  • Dependencies Module: Added a new dependencies module.
  • Created At Badge: Added a 'created at' badge to the project.
  • OpenCVVideo Method Name Change: Renamed get_next_video_frames to get_next in OpenCVVideo.
  • Image Normalization: Moved image normalization from the evaluator to extractors.
  • Extractor Factory Method: Renamed get_extractor() to create_extractor() in ExtractorFactory.
  • ServiceShutdownSignal: Moved ServiceShutdownSignal inside DockerManager.
  • ServiceInitializer: Made ServiceInitializer attributes protected.
  • Manager Status: Added "created" status to manager and corresponding tests.
  • CPU-Only Flag: Added a CPU-only flag for improved configurability.

Documentation

  • README Updates:
    • Added new flag information.
    • Updated requirements section.
    • Fixed paths in docker-compose.yaml and adjusted method 2.
    • Changed README files' test sections after moving tests to the root folder.

Bug Fixes

  • Path Fixes: Fixed paths in Docker compose files and method descriptions in README.
  • Test Imports: Moved extractor service tests and service manager tests to the root directory and fixed import paths.
  • Image Evaluator: Modified _get_image_evaluator() to return ImageEvaluator instead of a specific implementation.
  • Fix all known issues in tests

v2.2.1

24 May 10:04
6fb2cb9

Choose a tag to compare

Release Notes

Enhancements

  • Updated the README.md to include a table comparing RAM usage optimization between v1.0 and v2.0.

  • Dependency Updates:

    • Bumped the requests package version to 3.32. This ensures compatibility with the latest features and security updates.

Bug Fixes

  • Fix for Requests Package Update:
    • Addressed an issue where an update in the requests package was causing a failure in the Docker setup. The fix ensures that the application runs smoothly with the latest version of the requests package.
  • Add missing input and output directories.

PerfectFrameAI v2.2.0

21 May 20:17
1c5e06d

Choose a tag to compare

Release Notes

New Features

  • Versioning to API Endpoints (v2):
    • Added versioning to API endpoints to support multiple versions and improve backward compatibility.

Improvements

  • Optimized Model Handling:
    • Added functionality to skip unnecessary model downloading and evaluator creation, resulting in faster initialization times and reduced resource usage.

Bug Fixes

  • High RAM Usage Issue:
    • Fixed an issue causing high RAM usage due to the accumulation of frames in memory before they are written to disk. This fix improves performance and stability, especially on systems with limited memory.
  • Python Versioning Fix:
    • Corrected the Python versioning in pyproject.toml for the fcs-filesystem (TensorFlow) to ensure compatibility and smooth deployment.
  • Manual Garbage Collection:
    • Implemented manual garbage collecting and deleting of references to manage memory more efficiently.