You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
distant/CHANGELOG.md

13 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

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)

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

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

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