v0.9.0: Performance optimizations + UI simplification

Performance (ported from Linearr):
- rapidfuzz C extension for Levenshtein (20-50x faster when available)
- Pure Python early termination fallback via threshold parameter
- Normalization cache: precompute_normalizations() avoids redundant normalize_name() calls
- fuzzy_match() and find_best_match() use cached results
- ETA updated from 7.73s to 0.1s per item

UI simplification:
- Profile Name: free text → dynamic dropdown from database
- Match Sensitivity: number 0-100 → named presets (Relaxed/Normal/Strict/Exact)
- Tag Handling: 4 booleans → single dropdown (Strip All/Keep Regional/Keep All)
- Channel Database: per-country booleans → single dropdown
- All changes backward compatible with legacy field IDs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
PiratesIRC
2026-04-04 22:05:13 -05:00
parent ca19976ff7
commit 47250b5781
5 changed files with 556 additions and 197 deletions

11
.gitignore vendored
View File

@@ -44,3 +44,14 @@ htmlcov/
# Data files (cache)
/data/
*.log
# AI/Tool config
.claude/
.serena/
GEMINI.md
# Local session files
*.zip
*.txt
C--Users-btoll-claude-dispatcharr-Stream-Mapparr/
docs/superpowers/