Release v1.9.0: Add video-comparer skill and enhance transcript-fixer

## New Skill: video-comparer v1.0.0
- Compare original and compressed videos with interactive HTML reports
- Calculate quality metrics (PSNR, SSIM) for compression analysis
- Generate frame-by-frame visual comparisons (slider, side-by-side, grid)
- Extract video metadata (codec, resolution, bitrate, duration)
- Multi-platform FFmpeg support with security features

## transcript-fixer Enhancements
- Add async AI processor for parallel processing
- Add connection pool management for database operations
- Add concurrency manager and rate limiter
- Add audit log retention and database migrations
- Add health check and metrics monitoring
- Add comprehensive test suite (8 new test files)
- Enhance security with domain and path validators

## Marketplace Updates
- Update marketplace version from 1.8.0 to 1.9.0
- Update skills count from 15 to 16
- Update documentation (README.md, CLAUDE.md, CHANGELOG.md)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
daymade
2025-10-30 00:23:12 +08:00
parent bd0aa12004
commit 9b724f33e3
49 changed files with 15357 additions and 270 deletions

View File

@@ -18,16 +18,6 @@ import os
import sys
from pathlib import Path
# Handle imports for both standalone and package usage
try:
from core import CorrectionRepository, CorrectionService
except ImportError:
# Fallback for when run from scripts directory directly
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from core import CorrectionRepository, CorrectionService
def validate_configuration() -> tuple[list[str], list[str]]:
"""
@@ -56,6 +46,10 @@ def validate_configuration() -> tuple[list[str], list[str]]:
# Validate SQLite database
if db_path.exists():
try:
# CRITICAL FIX: Lazy import to prevent circular dependency
# circular import: core → utils.domain_validator → utils → utils.validation → core
from core import CorrectionRepository, CorrectionService
repository = CorrectionRepository(db_path)
service = CorrectionService(repository)
@@ -64,9 +58,9 @@ def validate_configuration() -> tuple[list[str], list[str]]:
print(f"✅ Database valid: {stats['total_corrections']} corrections")
# Check tables exist
conn = repository._get_connection()
cursor = conn.execute("SELECT name FROM sqlite_master WHERE type='table'")
tables = [row[0] for row in cursor.fetchall()]
with repository._pool.get_connection() as conn:
cursor = conn.execute("SELECT name FROM sqlite_master WHERE type='table'")
tables = [row[0] for row in cursor.fetchall()]
expected_tables = [
'corrections', 'context_rules', 'correction_history',