* chore: update linter and spellchecker for readme
* docs: add basic directions for managing installations
* chore: replace old repo links
* feat: dirs for darwin support
---------
Co-authored-by: Vilsol <me@vil.so>
* perf(ftp): use MLST or LIST first to determine if path exists over ftp
* perf(ftp): optimistically check directories from target path up when creating directory
* fix(ftp): skip . and .. in ReadDir
* perf(remote): parallelize old mod removal
* perf(remote): parallelize install validation
* perf(remote): remove unnecessary validation in GetGameVersion
* pref(remote): reduce amount of Validate and GetPlatform calls
* chore: remove unnecessary error handling
* fix: log by default (ficsit-cli.log in CWD)
* chore: update readme with info on code generation
* chore: regenerate docs for default log file location
* feat: compatibility info state and note display. wip: keybind to switch view modes not working
* fix: move render code out to a function, but it still isn't quite working yet
* feat: display mod reference below mod name
* Fix compat toggle with
* Show scroll up/down on quick help
* chore: fix merge conflict
* chore: run go install mvdan.cc/gofumpt@latest; gofumpt -l -w .
* chore: run gci.exe write --skip-generated -s standard -s default -s 'prefix(github.com/satisfactorymodding/ficsit-cli)' -s blank -s dot .
* chore: update readme linting info and run golangci-lint --version
* fix: log file is defaulted to empty again
* fix(#33): update render to return just string
* fix(#33): renderModInfo returns only string
* fix(#33): reollback func namechange
* refactor(#33): remove redundant viewport refresh
* refactor(#33): update is not required after setting content
* refactor(#33): remove unrequired log
* docs(#33): update documentation to latest generated
* docs(#33): update cache reference to not contain username
* docs(#33): fix local dir references too
* refactor(#33): replace vague variable with more helpful
* Add directions about using dev schema when generate command fails
* Fix issues from earlier merge conflict
---------
Co-authored-by: Jack Stupple <jack.stupple@protonmail.com>
* 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
* feat: parallel apply command
fix: show general help for --help flag
fix: don't append channel if it doesn't exist
chore: build against windows and linux
* chore: lint
* feat: use mod version targets
* chore: lint
* chore: remove unused
* chore: target dev on ci
* fix: rename WindowsNoEditor target to Windows
fix: close file reader
* fix: ensure closure of downloaded mod
* fix: ensure all important events are sent
* fix: lock adding files to cache
---------
Co-authored-by: mircearoata <mircearoatapalade@gmail.com>
* chore: move mod downloading to cli/cache
* feat: data providers, ficsit and local
* feat: keep cache in memory, load on init
* feat: log invalid cache files instead of returning error
* chore: make linter happy
* feat: fill cached mod Authors field from CreatedBy
* chore: make linter happy again
* feat: add icon and size to cached mods
* feat: cache the cached file hashes
* fix: change to new provider access style
---------
Co-authored-by: Vilsol <me@vil.so>
* feat: vanilla toggle per install
* fix: update set-vanilla cmd description
* fix: use viper for the set-vanilla off flag
* fix: writing lockfile when the directory didn't exist
* fix: check for nil selected install in header vanilla message
---------
Co-authored-by: Vilsol <me@vil.so>
* refactor: separate resolving tests
* feat: use pubgrub to resolve dependencies
* feat: show friendly mod name in error message
* feat: show single version in error message when only one matches
* ci: update go version to match go.mod
* feat: format FactoryGame incompatibility and term
* chore: fetch all necessary data of the version at once
* chore: upgrade pubgrub
* chore: upgrade pubgrub
* ci: update golangci-lint version for go 1.21
* chore: lint
* chore: update go version in readme
* chore: readme update to include relevant paths
* chore: clarify log message
* fix: stop loading unrelated mod data in Installed Mods screen when no mods are installed