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

@@ -448,24 +448,24 @@ class CorrectionService:
List of rule dictionaries with pattern, replacement, description
"""
try:
conn = self.repository._get_connection()
cursor = conn.execute("""
SELECT pattern, replacement, description
FROM context_rules
WHERE is_active = 1
ORDER BY priority DESC
""")
with self.repository._pool.get_connection() as conn:
cursor = conn.execute("""
SELECT pattern, replacement, description
FROM context_rules
WHERE is_active = 1
ORDER BY priority DESC
""")
rules = []
for row in cursor.fetchall():
rules.append({
"pattern": row[0],
"replacement": row[1],
"description": row[2]
})
rules = []
for row in cursor.fetchall():
rules.append({
"pattern": row[0],
"replacement": row[1],
"description": row[2]
})
logger.debug(f"Loaded {len(rules)} context rules")
return rules
logger.debug(f"Loaded {len(rules)} context rules")
return rules
except Exception as e:
logger.error(f"Failed to load context rules: {e}")