• 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.


  • 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, 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 in the NervesHubUserAPI README.


  • 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


  • 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.


  • Bug fixes
    • Fix deprecation warnings for nerves_hub_user_api calls


  • Enhancements
    • More results printout in the nerves_hub.device bulk_create task which reports errors, malformed lines, and successful creates.


  • Bug fixes
    • Ignore whitepace in base64-encoded string input


  • 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:
      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


  • Enhancements
    • Updated user auth to support logging in with username or email.
    • Improved error message formatting.


Backwards incompatible changes:

The NervesHubUserAPI.Device and NervesHubUserAPI.DeviceCertificate endpoints have moved to include product as part of its path.


  • Enhancements
    • Added mix tasks
      • mix user list - List the users and their role for the organization.
      • mix user add USERNAME ROLE - Add an existing user to an org with a role.
      • mix user update USERNAME ROLE- Update an existing user in your org with a new role.
      • mix 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


  • Bug fixes
    • Fixed error when running mix nerves_hub.device list and there weren't any devices


  • 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)


  • Enhancements
    • Change dependency nerves_hub_core to nerves_hub_user_api
    • Updated prompts for deployment and device tags


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 vs. your own instance


  • 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.


  • 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.


  • 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.


  • 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: [].


  • 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.


Initial release