* feat: sftp
test: add tests for ftp and sftp
* chore: ci fixes
* chore: potential race fix
* fix: simplify existence checks
* fix: split path differently for ftp
* fix: 🤷
* chore: add debug print
* chore: lint
* chore: idk dude
* chore: ?
* chore: more logs
* chore: wipe mods before tests
* chore: logs
* chore: wat
* chore: wait?
* chore: no errors
* chore: gh actions are 💩
* fix: always sync after copy
* chore: remove some test logs
* chore: remove test progress watcher
* refactor: change progress to writer
* chore: logs
* chore: different logs
* chore: whoops
* chore: moar logs
* chore: even moar logs
* chore: what is life
* chore: why are we here
* chore: we are just bags of water floating through space
* chore: are you real?
* chore: ?
* chore: if you get a single update now I call bs
* chore: ok what if we just do one?
* chore: ok what if we do two?
* chore: this should not work
* chore: wait no, this one
* chore: fml
* chore: remove logs
* chore: what if we just wait a little
* chore: retry
* chore: move error
* chore: verbose log
* chore: remove explicit sleep
* chore: remove debug
* fix: linux pathing on windows
* fix: clean paths properly
* fix: fuck ftp
* fix: send update on vanilla
* feat: parallel ftp
* fix: remove potential credential leak