<!--
  SPDX-FileCopyrightText: None
  SPDX-License-Identifier: CC0-1.0
-->

# Changelog

## v1.3.1

* Updates
  * Support OTP 29's change to require explicitly enabling exec support for
    Erlang. Nearly all Nerves users either disable exec or use Elixir to evaluate
    execs, so this probably doesn't affect many people.

## v1.3.0

This release completely removes support for the SCP protocol. This shouldn't
affect use of the `scp` commandline program since it was updated to use the SFTP
protocol in 2022. See https://www.openssh.org/txt/release-9.0.

The code is being removed to avoid needing to maintain or audit it for security
issues.

## v1.2.0

* Updates
  * Support specifying MFAs instead of function refs for the
    `:daemon_option_overrides` option. This is sometimes needed with OTP 28 to
    avoid an application environment checks.

## v1.1.0

This release removes support for Elixir 1.13.

* Updates
  * Add `NervesSSH.add_subsystem/2` and `NervesSSH.remove_system/2` for
    managing subsystems at runtime. @bjyoungblood
  * Clarify licensing and copyrights to become [REUSE](https://reuse.software/)
    compliant
  * Minor updates to fix Elixir 1.19 warnings

## v1.0.1

This release adds support for Elixir 1.18.

* Fixes
  * Automatically specify or adjust IEx's `:dot_iex` option depending on the
    Elixir version. No changes to user code is needed, but once you upgrade to
    Elixir 1.18, if you're specifying a custom `:dot_iex_path` (unlikely), you
    should update it.

## v1.0.0

This release adds support for Elixir 1.17 and removes support for Elixir 1.12
and earlier. It has no other functional differences with v0.4.3.

## v0.4.3

This release is almost entirely code cleanup and improved documentation.
The only notable change is you now must use atoms or module names for the
`:name` option with daemon processes.

* Updated
  * Remove registry and rely on GenServer name registration
  * Excluded unused `:user_passwords` key when `:pwdfun` is used

## v0.4.2

* Fixed
  * Fix all compiler warnings and deprecations with Elixir 1.15

## v0.4.1

* Fixed
  * Default `SSHSubsystemFwup` config would overwrite any user defined config
    preventing FWUP handling customization (thanks @ConnorRigby!)

## v0.4.0

* New features
  * `NervesSSH.Options` now supports a `:name` key to use when starting the
    SSH daemon. This allows a user to run multiple SSH daemons on the same
    device without name conflicts (thanks @SteffenDE)

* Fixed
  * The SSH daemon could fail to start if the system/user directories were bad
    or if the file system was not ready/mounted to support writing to disk. In
    those cases, NervesSSH now attempts to write to tmpfs at
    `/tmp/nerves_ssh/<original path>` to help prevent the daemon from crashing

## v0.3.0

`NervesSSH` now requires Elixir >= 1.10 and OTP >=23

* New features
  * Support for adding authorized public keys at runtime
  * Authorized public keys are also saved/read from `authorized_keys` file
  * Support for adding user credentials at runtime
  * Server host key is now generated on device if missing rather than
    relying on hard-coded host key provided by this lib. This should not
    be a breaking change, though you may be prompted to trust the new
    host key if `StrictHostKeyChecking yes` is set in your `~/.ssh/config`

## v0.2.3

* New features
  * Initial support for using `scp` to copy files. Not all `scp` features work,
    but uploading and downloading individual files does. Thanks to Connor Rigby
    and Binary Noggin for this feature.

## v0.2.2

* Improvements
  * Fix a deprecation warning on OTP 24.0.1 and later
  * Add support for LFE shells. LFE must be a dependency of your project for
    this to work.

## v0.2.1

* Improvements
  * Raise an error at compile-time if the application environment looks like
    it's using the `:nerves_firmware_ssh` key instead of the `:nerves_ssh` one.

## v0.2.0

This update makes using the application environment optional. If you don't have
any settings for `:nerves_ssh` in your `config.exs`, `:nerves_ssh` won't start.
You can then add `{NervesSSH, your_options}` to the supervision tree of your
choice.

## v0.1.0

Initial release
