Auto-Rename Hardening: 9 weitere Bugs aus 10-Agent-Audit gefixt
B) Symlink-Following + Library-Cross-Risk verhindert
- collectFilesByExtensions skippt jetzt Symbolic Links / Junctions
(entry.isSymbolicLink) — der v1.7.107-Korruptions-Vektor kann nicht
mehr ueber Reparse-Points zurueckkehren
- autoRenameExtractedVideoFiles bricht ab wenn extractDir mit
mkvLibraryDir ueberlappt (in beide Richtungen) → keine Cross-
Package-Korruption durch fehlerhafte User-Konfig
- collectMkvFilesToLibrary mit gleichem Schutz fuer sourceDir<->targetDir
C) Long-Path Silent Skip behoben
- buildSafeAutoRenameTargetPath prueft jetzt zusaetzlich Gesamtpfad-
Laenge (247 chars conservative Windows-Limit), nicht nur Datei-
Namen-Laenge. Fallback zu kuerzerem Pfad greift jetzt zuverlaessig
D) Hybrid-Extract Partial-Write Race entschaerft
- Files mit mtime juenger als 2s werden uebersprungen (im naechsten
Scan re-evaluiert). Verhindert Rename auf gerade-noch-gschriebene
MKVs waehrend Hybrid-Extract parallel arbeitet
- Konfigurierbar via fileStabilizeMinAgeMs (Tests: VITEST=true => 0)
E) Retry-Logik fuer transiente Rename-Fehler
- renamePathWithExdevFallback retried jetzt EBUSY/EACCES/EPERM/EEXIST
mit 200/500/1000ms Backoff. Antivirus, Indexer, OneDrive, offene
Player-Locks → automatisch geheilt statt permanent geskippt
F) Subtitle/.nfo Companion-Files werden mit-umbenannt UND mit-verschoben
- Neue Helper renameCompanionFiles + moveCompanionFiles erkennen Subs
(.srt/.ass/.ssa/.sub/.idx/.vtt/.smi) und Metadaten (.nfo) am Basis-
Namen-Match. Auch Sprach-Tags wie .de.srt bleiben erhalten
- Mediaplayer kann Subs nach Library-Move wieder automatisch laden
G) Sample-Token False-Positive entschaerft
- Dateien die sampleTokenRe matchen bekommen Size-Check: nur als Sample
behandelt wenn ≤150 MB. Series mit "Sample" im Titel (z.B.
"Sample.Squad.S01E01.mkv") werden jetzt korrekt umbenannt
- Sample-Subfolder-Detection bleibt unveraendert (eindeutig)
H) UNC + Casing-only Rename: jetzt via renamePathWithExdevFallback
- Casing-Rename benutzt jetzt den gleichen Helper, bekommt automatisch
toWindowsLongPathIfNeeded und Retry-Logik
I) Multi-MKV in selbem Folder: numerischer Suffix statt Skip
- Wenn Ziel existiert: probiert .2, .3, ... bis .99 bevor aufgegeben.
A/B-Parts oder alternate-Audio-Files in selbem Folder werden jetzt
korrekt mit Suffix differenziert statt 2./3. File silent zu droppen
J) Episode-Token Coverage: xX-Format hinzugefuegt
- Neuer SCENE_EPISODE_X_RE erkennt 1x01, 10x100, etc. (aeltere
Scene-Releases). Quality-Tokens wie 1080p werden NICHT falsch
als 1080xX matched (kein zweiter Number-Group)
Tests:
- Symlink-Guard: extractDir==mkvLibraryDir → 0 renamed, File unangetastet
- Companion: .srt/.de.srt/.nfo bei Rename mitbenannt
- Multi-MKV-Collision: 2 Files → suffix .2 statt skip
- Episode-Token: 1x01/10x100 erkannt, 1080p nicht falsch matched
589/589 Tests gruen.