Hi,
first, thanks a lot for your nice work!
While testing, I have found semantical mistake in File\Upload processor on line 162:
if ((boolean)$this->modx->getOption('upload_translit')) { $internalName = $this->modx->filterPathSegment($internalName); $internalName = $this->mediaSource->sanitizePath($internalName); }
The code above uses filterPathSegment method which is not suitable for file names, because it replaces the dot with the dash.
This leads in "file extension" error, becasue without the dot, there is simply no extension found.