New files:
.github/workflows/freebsd-release.yml:
- Triggers on version tags (v*) and manual dispatch
- Builds frontend with npm
- Validates Python syntax
- Runs compatibility tests
- Creates release tarball with checksums
- Tests package in FreeBSD VM (vmactions/freebsd-vm)
- Uploads to GitHub Releases with release notes
scripts/build-freebsd.sh:
- Standalone build script for local builds
- Works on FreeBSD, Linux, or macOS
- Options: --version, --output, --skip-frontend, --skip-tests, --clean
- Generates tarball with SHA256 and MD5 checksums
- Self-contained with dependency checking
BUILD.md:
- Complete documentation for building FreeBSD packages
- Quick start guide for automated and local builds
- Package contents and installation instructions
- Troubleshooting section
- Development workflow guide
The release package includes:
- Pre-built React frontend
- Django application code
- FreeBSD installation script
- Compatibility test suite
- Build metadata
New scripts added:
scripts/test_in_jail.sh:
- Creates a FreeBSD jail for isolated testing
- Pulls latest changes from the repository
- Runs freebsd_start.sh with auto-confirm
- Validates all services start correctly
- Runs the compatibility test suite
- Supports --keep-jail for debugging
- Supports --branch to test specific branches
- Supports --rebuild to force fresh jail
scripts/ci_test.sh:
- Lightweight CI script for GitHub Actions etc.
- Runs syntax validation (bash + python)
- Runs static compatibility tests
- Doesn't require FreeBSD environment
- Exit code indicates pass/fail
Usage:
# Full jail test (on FreeBSD)
sudo ./scripts/test_in_jail.sh --branch main --verbose
# CI tests (any platform)
./scripts/ci_test.sh
Add batch EPG association endpoint and improve EPG matching logic
- Implemented a new API endpoint to associate multiple channels with EPG data in a single request.
- Enhanced the EPG matching process to normalize TVG IDs and log relevant information.
- Updated frontend to handle batch EPG associations efficiently, falling back to legacy methods when necessary.