- Massive code refactoring.
- AWS and GCP instances are on-demand by default. To run a spot instance use the `spotInstance: true` parameter for AWS and `preemptibleInstance: true` for GCP.
- AWS EC2 volumes and GCP disks are retained by default.
- Changes for the `spotty run` command:
- It syncs the project with the instance before running a script (the `-S, --sync` flag was replaced with the `--no-sync` flag).
- Added support for custom arguments. They can be provided to the script after the double-dash ("--") argument.
- Scripts now support shebang (!) to use custom interpreters.
- The "restart" flag was removed as it doesn't work well with the "docker exec" process.
- Added the `spotty exec` command to execute custom commands in the container (for example, to run python scripts in the container with PyCharm).
- Added the `-C` flag to the `spotty start` command to start or restart a container without restarting the instance itself.
- Added the `instanceProfileArn` parameter to specify custom instance profiles for AWS instances (tsdalton, 42).
- Nitro-based instances support (64, 66).
- Added support for multiple container configurations in the `spotty.yaml` file (44).
- Container configuration supports custom environmental variables.
- `cfn-init` logs automatically downloaded to the local machine if the instance failed to start (52, 44, 48).
- Added support for the `spotty.override.yaml` file. It overrides the values of the main `spotty.yaml` file and supposed to be added to the `.gitignore` file.
- Added the "local" provider to build and run docker containers locally.
- Added the "remote" provider to run containers on any accessible via SSH machine with the Docker installed.
- `spotty ssh` command was renamed to `spotty sh` as it didn't make sense for the "local" provider and also it's shorter.
- `ports` parameter was moved from the container config to the instance config.
- Disabled the host network mode by default as it doesn't work on macOS (added the `ports` parameter to the container configuration to publish specific ports to the host OS).
- GCP provider uses the "common-gce-gpu-image" image as a base image by default.
- Dropped support for the custom AWS AMI and the custom GCP image.
- Added the `runAsHostUser` parameter to run containers as a host user.
- Added the `-u` flag to `spotty run` and `spotty sh` commands to connect to the container as a root user.