mirror of
https://github.com/chipsenkbeil/distant.git
synced 2024-11-15 06:12:56 +00:00
389 lines
15 KiB
Markdown
389 lines
15 KiB
Markdown
# 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).
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
|
|
- Default configuration for `config.toml`
|
|
- Ability to generate default configuration using
|
|
`distant generate config /path/to/config.toml`
|
|
- `--current-dir` option for `distant client shell` and `distant client lsp`
|
|
|
|
## [0.20.0-alpha.3]
|
|
|
|
### Added
|
|
|
|
- `Frame::empty` method as convenience for `Frame::new(&[])`
|
|
- `ClientConfig` to support `ReconnectStrategy` and a duration serving as the
|
|
maximum time to wait between server activity before attempting to reconnect
|
|
from the client
|
|
- Server sends empty frames periodically to act as heartbeats to let the client
|
|
know if the connection is still established
|
|
- Client now tracks length of time since last server activity and will attempt
|
|
a reconnect if no activity beyond that point
|
|
|
|
### Changed
|
|
|
|
- `Frame` methods `read` and `write` no longer return an `io::Result<...>`
|
|
and instead return `Option<Frame<...>>` and nothing respectively
|
|
- `Frame::read` method now supports zero-size items
|
|
- `Client::inmemory_spawn` and `UntypedClient::inmemory_spawn` now take a
|
|
`ClientConfig` as the second argument instead of `ReconnectStrategy`
|
|
- Persist option now removed from `ProcSpawn` message and CLI
|
|
- Bump minimum Rust version to 1.64.0
|
|
|
|
### Removed
|
|
|
|
- `--no-shell` option is removed as we automatically detect and use the PTY of
|
|
the remote system using a default shell
|
|
|
|
## [0.20.0-alpha.2] - 2022-11-20
|
|
|
|
### Added
|
|
|
|
- New `ConnectionState` and `ConnectionWatcher` to support watching changes to
|
|
the client connection, supporting `clone_connection_watcher` and
|
|
`on_connection_change` methods for the client
|
|
|
|
### Changed
|
|
|
|
- Server will now drop the connection if it receives an error (other than
|
|
WouldBlock) while trying to read from the transport, rather than just logging
|
|
the error, regardless of whether the error is resumable
|
|
|
|
## [0.20.0-alpha.1] - 2022-11-19
|
|
|
|
**NOTE: This is incomplete as v0.20.0 is a near-complete rewrite internally.**
|
|
|
|
### Added
|
|
|
|
- New `contains` and `or` types for `SearchQueryCondition`
|
|
|
|
### Changed
|
|
|
|
- `SearchQueryCondition` now escapes regex for all types except `regex`
|
|
- Removed `min_depth` option from search
|
|
- Updated search to properly use binary detection, filter out common ignore
|
|
file patterns, and execute in parallel via the `ignore` crate and `num_cpus`
|
|
crate to calculate thread count
|
|
|
|
### Fixed
|
|
|
|
- Resolution of `BindAddress` now properly handles hostnames ranging from
|
|
`localhost` to `example.com`
|
|
- Parsing of `BindAddress` no longer causes a stack overflow
|
|
|
|
## [0.19.0] - 2022-08-30
|
|
### Added
|
|
|
|
- `SystemInfo` via ssh backend now detects and reports username and shell
|
|
- `SystemInfo` via ssh backend now reports os when windows detected
|
|
- `Capabilities` request/response for server and manager that report back the
|
|
capabilities (and descriptions) supported by the server or manager
|
|
- `Search` and `CancelSearch` request/response for server that performs a
|
|
search using `grep` crate against paths or file contents, returning results
|
|
back as a stream
|
|
- New `Searcher` available as part of distant client interface to support
|
|
performing a search and getting back results
|
|
- Updated `DistantChannelExt` to support creating a `Searcher` and canceling
|
|
an ongoing search query
|
|
- `distant client action search` now supported, waiting for results and
|
|
printing them out
|
|
|
|
### Changed
|
|
|
|
- `SystemInfo` data type now includes two additional fields: `username` and
|
|
`shell`. The `username` field represents the name of the user running the
|
|
server process. The `shell` field points to the default shell associated with
|
|
the user running the server process
|
|
|
|
### Fixed
|
|
|
|
- `distant client shell` will now use the default shell from system info, or
|
|
choose between `/bin/sh` and `cmd.exe` as the default shell based on the
|
|
family returned by a system info request
|
|
- `distant client shell` properly terminates master pty when the shell exits,
|
|
resolving the hanging that occurred for Windows `cmd.exe` and
|
|
`powershell.exe` upon exit
|
|
- ssh launch with login shell now only uses `sh` when remote family is `unix`
|
|
- ssh backend implementation of copy now works more widely across windows
|
|
systems by switching to `powershell.exe` to perform copy
|
|
|
|
## [0.18.0] - 2022-08-18
|
|
### Changed
|
|
|
|
- `shutdown-after` replaced with `shutdown` that supports three options:
|
|
1. `never` - server will never shutdown automatically
|
|
2. `after=N` - server will shutdown after N seconds
|
|
3. `lonely=N` - server will shutdown N seconds after no connections
|
|
|
|
## [0.17.6] - 2022-08-18
|
|
### Fixed
|
|
|
|
- `shutdown-after` cli parameter and config option now properly shuts down
|
|
server after N seconds with no connections
|
|
|
|
## [0.17.5] - 2022-08-18
|
|
### Fixed
|
|
|
|
- Handle `RecommendedWatcher` failing with an unsupported OS function on M1 Mac
|
|
architecture running a Linux container via Docker
|
|
([notify #423](https://github.com/notify-rs/notify/issues/423))
|
|
|
|
## [0.17.4] - 2022-08-18
|
|
### Fixed
|
|
|
|
- Parsing of a host for `Destination` now correctly handles IPv6 addresses such
|
|
that `::1` and `[::1]:12345` are captured into host and port
|
|
- Displaying of `Distant` and `DistantSingleKeyCredentials` now properly wrap
|
|
IPv6 addresses in square brackets when a port is available
|
|
|
|
## [0.17.3] - 2022-08-18
|
|
### Added
|
|
|
|
- New `ClientConnectConfig` to support connect settings, specifically for ssh
|
|
- `Host` with `HostParseError` that follows the
|
|
[DoD Internet Host Table Specification](https://www.ietf.org/rfc/rfc0952.txt)
|
|
and subsequent [RFC-1123](https://www.rfc-editor.org/rfc/rfc1123)
|
|
|
|
### Changed
|
|
|
|
- `Destination` now has direct fields for scheme, username, password, host, and
|
|
port that are populated from parsing
|
|
- `Destination` no longer wraps `uriparse::URI` and all references to
|
|
implementing/wrapping have been removed
|
|
|
|
### Fixed
|
|
|
|
- `ssh` option to specify external binary not working on `launch` due to the
|
|
key being mis-labeled as `ssh.bind` instead of `ssh.bin`
|
|
- All ssh settings were not being applied with manager handlers due to some key
|
|
checks being incorrect (e.g. `backend` instead of `ssh.backend`). This has
|
|
now been corrected and settings now properly get applied
|
|
|
|
### Removed
|
|
|
|
- The ssh settings of `ssh.user` and `ssh.port` were unused as these were now
|
|
being taking from the destination `ssh://[username:]host[:port]`, so they
|
|
have now been removed to avoid confusion
|
|
- Remove `uriparse` dependency
|
|
|
|
## [0.17.2] - 2022-08-16
|
|
### Added
|
|
|
|
- `replace_scheme` method to `Destination`
|
|
|
|
### Fixed
|
|
|
|
- `DistantManagerRouter` no longer silently fails when `distant.args` is
|
|
provided that includes double quotes within it
|
|
|
|
### Changed
|
|
|
|
- `Map` implementation of `Display` now escapes `\` and `"`
|
|
- `Map` implementation of `FromStr` now handles escaped `\` and `"`
|
|
- Split `fallback_scheme` for `DistantManagerConfig` into
|
|
`launch_fallback_scheme` (defaulting to ssh) and `connect_fallback_scheme`
|
|
(defaulting to distant); this means that subsequent use of
|
|
`distant client launch [user@]host[:port]` will now default to ssh instead of
|
|
failing due to lack of distant launch handler
|
|
- Expose `windows-pipe` and `unix-socket` config and cli options regardless of
|
|
platform (so they can be provided without worrying about which OS)
|
|
- Lock `--access` to `distant manager listen` as a cli parameter and move it
|
|
out of `[network]` config to be tied to manager config only
|
|
|
|
## [0.17.1] - 2022-08-16
|
|
### Added
|
|
|
|
- New `format` option available for `client select`
|
|
- Choices are provided via `{"type": "select", "choices": ["...", ...], "current": 0}`
|
|
- Selection is specified via `{"type": "selected", "choice": 0}`
|
|
|
|
### Fixed
|
|
|
|
- `distant client launch` using `--format json` now properly prints out id in
|
|
JSON format (`{"type": "launched", "id": "..."}`)
|
|
- `distant client connect` using `--format json` now properly prints out id in
|
|
JSON format (`{"type": "connected", "id": "..."}`)
|
|
|
|
## [0.17.0] - 2022-08-09
|
|
### Added
|
|
|
|
- `distant manager` subcommand
|
|
- `distant manager service` subcommand contains functionality to install,
|
|
start, stop, and uninstall the manager as a service on various operating
|
|
systems
|
|
- `distant manager info` will print information about an active connection
|
|
- `distant manager list` will print information about all connections
|
|
- `distant generate` subcommand
|
|
- `distant generate schema` will produce JSON schema for server
|
|
request/response
|
|
- `distant generate completion` will produce completion file for a specific
|
|
shell
|
|
|
|
### Changed
|
|
|
|
- `distant launch` is now `distant client launch`
|
|
- `distant action` is now `distant client action`
|
|
- `distant shell` is now `distant client shell`
|
|
- `distant listen` is now `distant server listen`
|
|
- Minimum supported rust version (MSRV) has been bumped to `1.61.0`
|
|
|
|
### Fixed
|
|
|
|
- Shell no longer has issues with fancier command prompts and other
|
|
terminal-oriented printing as `TERM=x256-color` is now set by default
|
|
|
|
### Removed
|
|
|
|
- Networking directly from distant client to distant server. All connections
|
|
are now facilitated by the manager interface with client -> manager -> server
|
|
- Environment variable output as part of launch is now gone as the connection
|
|
is now being managed, so there is no need to export session information
|
|
|
|
## [0.16.4] - 2022-06-01
|
|
### Added
|
|
- Dockerfile using Alpine linux with a basic install of distant, tagged as
|
|
`chipsenkbeil/distant:0.16.3` and `chipsenkbeil/distant:0.16.4`
|
|
|
|
### Fixed
|
|
- [Issue #90](https://github.com/chipsenkbeil/distant/issues/90)
|
|
- [Issue #103](https://github.com/chipsenkbeil/distant/issues/103)
|
|
|
|
## [0.16.3] - 2022-05-29
|
|
### Added
|
|
- New `--ssh-backend` option for CLI that accepts `libssh` or `ssh2` for
|
|
native backend ssh support
|
|
- `distant_ssh2::SshBackend` now supports parsing from a `&str` and producing a
|
|
`&'static str` from an instance
|
|
|
|
## [0.16.2] - 2022-05-27
|
|
### Changed
|
|
- The following fields now default to false when missing in JSON request body
|
|
- For `DirRead`: `absolute`, `canonicalize`, `include_root`
|
|
- For `DirCreate`: `all`
|
|
- For `Remove`: `force`
|
|
- For `Watch`: `recursive`
|
|
- For `Metadata`: `canonicalize` and `resolve_file_type`
|
|
- For `ProcSpawn`: `args` (empty list), `persist`, and `pty` (nothing)
|
|
|
|
## [0.16.1] - 2022-05-13
|
|
### Changed
|
|
- Lock in to Rust openssl 0.10.38 as it is the last version that supports using
|
|
openssl 3.x.x before reverting
|
|
|
|
## [0.16.0] - 2022-05-12
|
|
### Added
|
|
- New `environment` session type that prints out environment variable
|
|
definitions for use in an interactive session or to evaluate
|
|
- Shell support introduced for ssh & distant servers, including a new shell
|
|
command for distant cli
|
|
- Support for JSON communication of ssh auth during launch (cli)
|
|
- Add windows and unix metadata files to overall metadata response data
|
|
- Watch and unwatch cli commands powered by underlying `Watcher` core
|
|
implementation that uses new `RequestData::Watch`, `RequestData::Unwatch`,
|
|
and `ResponseData::Changed` data types to communicate filesystem changes
|
|
|
|
### Changed
|
|
- Default session type for CLI (launch, action, etc) is `environment`
|
|
- Replace cbor library with alternative as old cbor lib has been abandoned
|
|
- Refactor some request & response types to work with new cbor lib
|
|
- Updated cli to always include serde dependency
|
|
- Expose `origin_id` of remote process as method
|
|
- Rename ProcRun -> ProcSpawn, ProcStarted -> ProcSpawned
|
|
- Update ProcStdin, ProcStdout, and ProcStderr to use list of bytes instead
|
|
of a string as a parameter; RemoteProcess and RemoteLspProcess now support
|
|
reading and writing using either `String` or `Vec<u8>`
|
|
- Rename `--detached` and associated to `--persist`
|
|
|
|
### Removed
|
|
- Github actions no longer use paths-filter so every PR & commit will test
|
|
everything
|
|
- `distant-lua` and `distant-lua-test` no longer exist as we are focusing
|
|
solely on the JSON API for integration into distant
|
|
|
|
## [0.15.1] - 2021-11-15
|
|
### Added
|
|
- `--key-from-stdin` option to listen cli command to read key from stdin
|
|
instead of generating
|
|
- More logging to distant and ssh handler *proc run* methods
|
|
- Disclaimer to distant session about dns resolution
|
|
|
|
### Changed
|
|
- Improve the distant-core readme
|
|
|
|
### Removed
|
|
- DNS resolution for ssh session
|
|
|
|
## [0.15.0] - 2021-10-16
|
|
### Added
|
|
- distant-ssh2 subcrate to provide an alternate session as an ssh client
|
|
- distant-lua subcrate for lua lib
|
|
- `rpassword` & `wezterm-ssh` dependencies for distant-ssh2 and
|
|
`XChaCha20Poly1305` dependency in place of `orion` for encryption
|
|
- `Codec` trait to support encode & decode
|
|
- `XChaCha20Poly1305Codec` that encrypts/signs using *XChaCha20Poly1305*
|
|
- `PlainCodec` that does no encrypting/signing
|
|
- `SessionChannelExt` trait for friendlier methods
|
|
- `Mailbox` and internal `PostOffice` to manage responses to requests
|
|
- Method parameter to support distant & ssh methods for action and lsp subcommands
|
|
- Support compiling distant cli on windows (#59)
|
|
- `status` method to `RemoteProcess`
|
|
|
|
### Changed
|
|
- Refactor Transport to take generic Codec
|
|
- Rewrite to no longer use blake256
|
|
- Refactor `Session` to use a new `SessionChannel` underneath
|
|
- Refactor `Response` to always include an *origin_id* field instead of being
|
|
optional
|
|
- Update `ProcStdout`, `ProcStderr`, and `ProcDone` to include origin id
|
|
- Replace `verbose` option with `log-level`
|
|
- Replace `DISTANT_AUTH_KEY` with `DISTANT_KEY` for environment variable parsing
|
|
- Refactor to support Minimum Supported Rust Version (MSRV) of 1.51.0
|
|
- Rename core -> distant-core in project directory structure
|
|
- Upgrade tokio to 1.12
|
|
- Update `Metadata` to be
|
|
- cloneable
|
|
- debuggable
|
|
- serializable
|
|
- deserializable
|
|
- Refactor `Metadata` and `SystemInfo` response data types to support
|
|
subtypes as singular parameters
|
|
- Replace `--daemon` in favor of opposite parameter `--foreground`
|
|
|
|
### Removed
|
|
- `DistantCodec`
|
|
- `k256` dependency
|
|
- `Transport::from_handshake` as no longer doing *EDCH key exchange*
|
|
|
|
### Fixed
|
|
- Stdout/stderr being sent before *proc_start* by adding *post_hook* support
|
|
to handler such that *proc_run* tasks are not spawned until *proc_start* is
|
|
sent as response
|
|
- `InmemoryStreamWriteHalf` implementation of AsyncWrite now properly yields
|
|
pending upon full channel and no longer locks up
|
|
- stdout, stderr, and stdin of `RemoteProcess` no longer cause deadlock
|
|
|
|
[Unreleased]: https://github.com/chipsenkbeil/distant/compare/v0.19.0...HEAD
|
|
[0.19.0]: https://github.com/chipsenkbeil/distant/compare/v0.18.0...v0.19.0
|
|
[0.18.0]: https://github.com/chipsenkbeil/distant/compare/v0.17.6...v0.18.0
|
|
[0.17.6]: https://github.com/chipsenkbeil/distant/compare/v0.17.5...v0.17.6
|
|
[0.17.5]: https://github.com/chipsenkbeil/distant/compare/v0.17.4...v0.17.5
|
|
[0.17.4]: https://github.com/chipsenkbeil/distant/compare/v0.17.3...v0.17.4
|
|
[0.17.3]: https://github.com/chipsenkbeil/distant/compare/v0.17.2...v0.17.3
|
|
[0.17.2]: https://github.com/chipsenkbeil/distant/compare/v0.17.1...v0.17.2
|
|
[0.17.1]: https://github.com/chipsenkbeil/distant/compare/v0.17.0...v0.17.1
|
|
[0.17.0]: https://github.com/chipsenkbeil/distant/compare/v0.16.4...v0.17.0
|
|
[0.16.4]: https://github.com/chipsenkbeil/distant/compare/v0.16.3...v0.16.4
|
|
[0.16.3]: https://github.com/chipsenkbeil/distant/compare/v0.16.2...v0.16.3
|
|
[0.16.2]: https://github.com/chipsenkbeil/distant/compare/v0.16.1...v0.16.2
|
|
[0.16.1]: https://github.com/chipsenkbeil/distant/compare/v0.16.0...v0.16.1
|
|
[0.16.0]: https://github.com/chipsenkbeil/distant/compare/v0.15.1...v0.16.0
|
|
[0.15.1]: https://github.com/chipsenkbeil/distant/compare/v0.15.0...v0.15.1
|
|
[0.15.0]: https://github.com/chipsenkbeil/distant/compare/v0.14.0...v0.15.0
|