# Changelog
## unreleased
## v2.0.1
* Updated
* You can now use a single URI for defining the NervesHub instance you are connecting.
* `CAStore` is now an optional dep. If you have included `CAStore` in your Nerves project it will be used, otherwise `:public_key` will be the fallback.
* Firmware uploads will default to using HTTP1 as HTTP2 streaming issues exist with the `Tesla` usage of `Mint`
## v2.0.0
Update for compatibility with NervesHub 2.0
* Removed
* Remove signing devices (and users) by NervesHub. It is now expected that users
manage their own device signer certificates. Device certificates can still be
created locally with `mix nerves_hub.device cert create --signer-cert /path/signer-cert.pem --signer-key /path/signer-key.pem`
* Remove resolving public keys for fwup. This must now be explicitly set
* Updated
* Swap to the Mint adapter instead of `:hackney`
* Added
* `:nerves_hub_user_api` has now been merged into this lib
## v0.12.0
* Enhancements
* Support token authentication with NervesHub - This should be backwards compatible
but does emit a warning when the user peer client cert is used for authentication.
Use `mix nerves_hub.user auth` to generate a token if your NervesHub instance
supports it, or create in the user settings of the web.
* Bug Fixes
* Fixes a variable mismatch (thanks @pojiro)
## v0.11.1
* Bug Fixes
* Fixes issue using a `:ca_store` module from the root project by forcing
a full compile of the project, which implicitly loads the needed module.
## v0.11.0
* Breaking Changes
* This release includes a change to how CA certificates are used in the connection
to NervesHub. If you are connecting to the publicly hosted https://nerves-hub.org,
then no changes are required.
If you are manually supplying `:ca_certs` config value to connect to another instance
of NervesHub, then you will need to update you config following the new instructions
for [Configuration](https://github.com/nerves-hub/nerves_hub_user_api#configuration)
in the NervesHubUserAPI README.
## v0.10.5
* Bug Fixes
* Fixes issue rendering devices when the device does not have any tags
* Enhancements
* Certificate serials are now also displayed as a hex value to match OpenSSL output
* Add cert description to ca_certificate list
* More specific location output when creating user auth cert
## v0.10.4
* Enhancements
* Added `mix nerves_hub.device cert import DEVICE_ID CERT_PATH` for adding
trusted device certificates.
* Changed Deployment `is_active` true/false to `state` on/off to match wording
on the server.
## v0.10.3
* Bug fixes
* Fix deprecation warnings for `nerves_hub_user_api` calls
## v0.10.2
* Enhancements
* More results printout in the `nerves_hub.device bulk_create` task which reports
errors, malformed lines, and successful creates.
## v0.10.1
* Bug fixes
* Ignore whitepace in base64-encoded string input
## v0.10.0
* Breaking changes
* Decouples deprecated `:nerves_hub` config values and will fail compilation if used.
To set your organization for the CLI, use `:nerves_hub_cli` key:
```elixir
config :nerves_hub_cli, org: "my-org"
```
* Enhancements
* `mix nerves_hub.device bulk_create --csv path/to/file.csv` - Support bulk upload
from CSV definitions
* Add ability to use your own signer CA and key locally when creating device certificate
`mix nerves_hub.device cert create --signer-cert path/to/cert --signer-key path/to/key`
## v0.9.1
* Enhancements
* Updated user auth to support logging in with username or email.
* Improved error message formatting.
## v0.9.0
Backwards incompatible changes:
The NervesHubUserAPI.Device and NervesHubUserAPI.DeviceCertificate endpoints
have moved to include `product` as part of its path.
* Update dependencies
* [nerves_hub_user_api v0.6.0](https://github.com/nerves-hub/nerves_hub_user_api/releases/tag/v0.6.0)
## v0.8.0
* Enhancements
* Added mix tasks
* `mix nerves_hub.org user list` - List the users and their role for the
organization.
* `mix nerves_hub.org user add USERNAME ROLE` - Add an existing user to an
org with a role.
* `mix nerves_hub.org user update USERNAME ROLE`- Update an existing user
in your org with a new role.
* `mix nerves_hub.org user remove USERNAME` - Remove an existing user from
having a role in your organization.
* `mix nerves_hub.product user list PRODUCT_NAME` - List the users and their
role for the product.
* `mix nerves_hub.product user add PRODUCT_NAME USERNAME ROLE` - Add an
existing user to a product with a role.
* `mix nerves_hub.product user update PRODUCT_NAME USERNAME ROLE`- Update an
existing user for your product with a new role.
* `mix nerves_hub.product user remove PRODUCT_NAME USERNAME` - Remove an
existing user from having a role for your product.
* Added filtering for `mix nerves_hub.device list`
* `--identifier` - (Optional) Only show device matching an identifier
* `--description` - (Optional) Only show devices matching a description
* `--tag` - (Optional) Only show devices matching tags. Multiple tags can be
supplied.
* `--status` - (Optional) Only show devices matching status
* `--version` - (Optional) Only show devices matching version
## v0.7.2
* Bug fixes
* Fixed error when running `mix nerves_hub.device list` and there weren't any
devices
## v0.7.1
* Enhancements
* Added device deletion support
* Improved formatting when listing devices
* Tag entry is always comma-separated now (it previously was space
delimited, but that was inconsistent with the GUI)
## v0.7.0
* Enhancements
* Change dependency `nerves_hub_core` to `nerves_hub_user_api`
* Updated prompts for deployment and device tags
## v0.6.0
This release makes a backwards incompatible API change that affects
how fwup public keys are shared with other projects. This should
only affect the `nerves_hub` library and should be handled by mix dependency
constraints.
* Backwards incompatible changes
* The API to share fwup public keys has changed. This should only affect the
`nerves_hub` library and should be handled by mix dependency constraints.
* `mix nerves_hub.ca_certificate create` is now `register`. (It never created
a certificate.
* Enhancements
* Show API endpoint when running commands - this makes it more obvious when
you're running against api.nerves-hub.org vs. your own instance
## v0.5.1
* Enhancements
* Added mix task `mix nerves_hub.device list` - List all devices for an org.
* Document `--ttl` option in `mix nerves_hub.firmware publish`.
* Expect `:nerves_hub` in application config instead of mix project config.
* Bump `nerves_hub_core` dep to `0.2.0`.
* Bug Fixes
* Failed mix tasks exit with non-zero status code to facilitate CI.
* Rework how a password is obtained when calling `mix nerves_hub.user auth`.
## v0.5.0
* Enhancements
* Added mix tasks
* `mix nerves_hub.ca_certificate list` - List all CA certificates for an org.
* `mix nerves_hub.ca_certificate create CERT_PATH` - Add a CA certificate.
* `mix nerves_hub.ca_certificate delete CERT_SERIAL`- Delete a CA certificate.
* The API modules have been moved to `nerves_hub_core` for runtime reusability.
* Bug Fixes
* Improved error handling when uploading unsigned firmware.
## v0.4.0
* Enhancements
* Updated mix tasks
* `mix nerves_hub.product create` - Will take the product name from the
Mix project config by default.
* `mix nerves_hub.device burn` - Will now call `mix burn` instead of
`mix firmware.burn`.
* Certificate functions are performed in Erlang and no longer call out to
openssl.
* Updated Docs and CLI prompts.
## v0.3.0
* Enhancements
* Added mix tasks
* `mix nerves_hub.key export KEY_NAME` - Export a firmware signing key
* `mix nerves_hub.user cert export` - Export the current user certificate
* Updated mix tasks
* `mix nerves_hub.firmware publish` - Added ability to set firmware TTL by
passing `--ttl seconds`.
* Added environment variable `NERVES_HUB_NON_INTERACTIVE` for use with running
`nerves_hub_cli` from non-interactive terminals such as CI. This answers `y`
to all `y/n` prompts.
* Allow passing binary public keys to `config :nerves_hub, public_keys: []`.
## v0.2.0
* Enhancements
* Update account name to username.
* Added mix task for importing existing fwup keys.
`mix nerves_hub.key import KEY_NAME PUBLIC_KEY_FILE PRIVATE_KEY_FILE`
* Updated documentation to list environment variables needed to running CI.
* Added support for setting firmware signing keys in the environment.
## v0.1.0
Initial release