# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Deprecated features that will be removed in the next major version (12.X.X). - `--local` will be removed from `sporestack server list`. ## [Unreleased] - Nothing yet. ## [11.1.0 - 2024-03-16] ## Added ### Library - `ssh_key` to `client.Client()` and to `client.Token()`. This acts as a default SSH key when launching servers this way. ### CLI - Support for automatic per-token SSH keys (can be overridden with `--ssh-key-file` still.) To generate, run: `ssh-keygen -C "" -t ed25519 -f ~/.sporestack/sshkey/{token}/id_ed25519` - This means that you don't have to pass `--ssh-key-file` if you are using a token that has a locally associated SSH key. - When launching a server with `sporestack server launch`, it will suggest adding a readymade configuration to `~/.ssh/config` to utilize whatever key you selected. ## Summary These changes should make it easier to stay private with SporeStack, conveniently, by utilizing a SSH key per token. In general, we recommend using one unique SSH key per token that you have. ## [11.0.1 - 2024-02-29] ## Fixed - If a server is deleted during the launch wait phase, it will give up rather than trying to wait forever for an IP address that will never come. - `--hostname` matching is smarter in case of duplicate hostnames. ## [11.0.0 - 2024-02-26] ## Changed - Various command/help cleanups. - If you want the CLI features, you will have to `pip install sporestack[cli]` instead of just `pip install sporestack`. - `--no-local` is now the default for `sporestack server list`. ## Removed - Deprecated fields from responses and requests. - `legacy_polling=True` support for token add/topup. ## [10.8.0 - 2024-01-03] ## Added - Support for paying invoices without polling. - `--qr/--no-qr` to `sporestack token topup` and `sporestack token create`. - `--wait/--no-wait` to `sporestack token topup` and `sporestack token create`. - `sporestack token invoice` support to view an individual invoice. ## Removed - Python 3.7 support. ## [10.7.0 - 2023-10-31] ## Added - Added `suspended_at` to server info response object. - Added `autorenew_servers` to token info response object. - Added `suspended_servers` to token info response object. ## [10.6.3 - 2023-09-18] ## Changed - Bumped httpx timeouts from 5 seconds to 60 seconds (this may be fine-tuned in the future). ## [10.6.2 - 2023-07-07] ## Changed - Make package compatible with Pydantic v1.10.x and v2. ## [10.6.1 - 2023-07-07] ## Changed - Mark package as being compatible with Pydantic v1.10.X. It's not yet ready with v2. Does not seem to be possible to make the release compatible with both. ## [10.6.0 - 2023-05-25] ## Added - `sporestack server update-hostname` command. ## [10.5.0 - 2023-05-12] ## Changed - Use fancy table output for `sporestack server list`. ## Added - `sporestack token invoices` command. ## [10.4.0 - 2023-05-12] ## Changed - `pip install sporestack[cli]` recommended if you wish to use CLI features. This will be required in version 11. - Implement [Rich](https://github.com/Textualize/rich) for much prettier output on `token info`, `server regions`, `server flavors`, and `server operating-systems`. Other commands to follow. ## [10.3.0 - 2023-05-12] ## Added - `regions` to `APIClient` and `Client`. - `sporestack server regions` command. ## [10.2.0 - 2023-05-03] ## Changed - Updated client to support new `forgotten_at` field and `deleted_by`. ## [10.1.2 - 2023-04-14] ## Fixed - HTTP 4XX errors now raise a `SporeStackUserError` instead of `SporeStackServerError`. ## [10.1.1 - 2023-04-14] ## Added - `burn_rate_cents` to `TokenInfo` to replace `burn_rate`. - `burn_rate_usd` to `TokenInfo`. ## Changed - `sporestack token info` will now show burn rate in dollar amount ($0.00) instead of cents. ## Fixed - `sporestack server operating-systems` was updated to the new API behavior. (Unfortunately, was a breaking change.) ## [10.1.0 - 2023-04-14] ## Added - `token_info()` to `APIClient`. - `info()` to `Client.token`. - `changelog()` to `APIClient`. - `changelog()` to `Client`. - `sporestack token info` command. ## Improved - Improved some docstrings and help messages. ## [10.0.1 - 2023-04-13] ## Fixed - Fixed critical issue on Python versions earlier than 3.10. ## [10.0.0 - 2023-04-12] ## Changed - No more `retry` options in `api_client`. Use try/except for `SporeStackServerError`, instead, to retry on 500s. - Exception messages may be improved. ## [9.1.1 - 2023-04-12] ### Changed - Bug fix with `default_factory` issue. ## [9.1.0 - 2023-03-28] ### Added - Token messages support. - `deleted_at` field in Server Info respones. ### Changed - Fixes to be compatible with API updates. ## [9.0.0 - 2023-02-08] ### Added - `Client` added to `client` - `/server/quote` support - `--no-wait` option for `sporestack server launch` to not wait for an IP address to be assigned. ### Changed - Now uses `httpx` instead of `requests` ## [8.0.0 - 2023-02-07] ### Changed - `api_client` now exposes methods under APIClient() - `client` added with Server and Token. - CLI reworked some. `sporestack server info` now returns plain text info. `sporestack server json` returns info in JSON format. ## [7.3.0 - 2022-11-28] ### Fixed - Fixed broken `sporestack server topup` after API changes. ## [7.2.1 - 2022-11-01] ### Changed - Fixed on Python 3.7 and 3.8. ## [7.2.0 - 2022-11-01] ### Changed - Use new format for new tokens. ## [7.1.2 - 2022-11-01] ### Changed - Fixed launch output with recent API changes. ## [7.1.1 - 2022-09-29] ### Changed - Fixed hostname related bug when launching a server. ## [7.1.0 - 2022-09-27] ### Added - `sporestack server autorenew-enable/disable` ### Changed - Show autorenew status and associated token in `sporestack server list` (not in all cases, however) ## [7.0.0 - 2022-09-07] ### Added - `sporestack server list` now accepts `--local` or `--no-local`. - `sporestack server operating-systems` ### Changed - `sporestack server` subcommands take `--hostname` or `--machine-id`. - `sporestack server flavors` output is slightly more readable. ### Removed - `sporestack server delete` (in favor of: `sporestack server destroy`) - `sporestack server get-attribute` ## [6.2.0 - 2022-09-07] ### Added - Allow for new *beta* `--autorenew` feature with `sporestack server launch`. ### Changed - No longer save server JSON to disk for new servers. ## [6.1.0 - 2022-06-14] ### Changed - Use servers launched by token endpoint in `sporestack server list`. - Send server hostname to SporeStack API at launch time. ## [6.0.3 - 2022-04-22] ### Changed - Bug fixes. ## [6.0.2 - 2022-04-22] ### Changed - Replace setuptools with flit. ## [6.0.1 - 2022-04-22] ### Changed - Use `requests` session for improved performance, in particular for `sporestack server list`. ## [6.0.0 - 2022-04-14] ### Fixed - Use specified API endpoint for `sporestack server list` command. ## [6.0.0a3 - 2022-04-05] ### Removed - Get rid of deprecated TokenEnable usage. ## [6.0.0a2 - 2022-04-01] ### Added - `--quote` / `--no-quote` to launch/topup. Prompt by default if price to draw from token is acceptable. ### Removed - affiliate_amount ### Fixed - Protect files in ~/.sporestack with aggressive `umask`. ## [6.0.0a1 - 2022-03-31] Remember to backup your ~/.sporestack folder as any tokens you generate will be stored there! ### Changed - Now token-centric. You can only use `sporestack` to launch or topup servers from a token. - `sporestack launch/info/topup`, etc, moved to `sporestack server launch/info/topup`, etc. - `--token` argument takes the name of the token, and not the key. Defaults to `primary`. - `--ssh-key-file` now defaults to `~/.ssh/id_rsa.pub`. - Import generated tokens from the key with: `sporestack token import (token reference name, default is primary) --key (the token key in hex format)` ### Added - New token commands: `sporestack token create/list` ## [5.2.3 - 2022-03-30] ### Added - Use `~/.sporestack/servers` instead of `~/.sporestack`. Will migrate existing servers automatically. ## [5.2.2 - 2022-02-24] ### Added - Better `sporestack list` expired server handling. ## [5.2.1 - 2022-02-10] ### Added - New, 32 character machine ID format. (Old, 64 hex character format still supported.) - CHANGELOG.md in Keep a Changelog format. ## [5.2.0 - 2022-01-31] ### Added - `sporestack rebuild` command. ## [5.1.2 - 2021-10-18] ### Added - Send `sporestack-python/version` in Use-Agent header.