mirror of
https://github.com/chipsenkbeil/distant.git
synced 2024-11-11 01:10:30 +00:00
19 KiB
19 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
- New
SetPermissions
enum variant on protocol request - New
set_permissions
method availableDistantApi
and implemented by local server (ssh unavailable due to https://github.com/wez/wezterm/issues/3784) - Implementation of
DistantChannelExt::set_permissions
[0.20.0-alpha.6]
Changed
- Renamed
distant_core::data
todistant_core::protocol
- CLI
--lsp
now accepts an optionalscheme
to be used instead ofdistant://
, which is the default RemoteLspProcess
now takes a second argument,scheme
, which dictates whether to translatedistant://
or something else
0.20.0-alpha.5
Added
- CLI now offers the following new subcommands
distant fs copy
is a refactoring ofdistant client action copy
distant fs exists
is a refactoring ofdistant client action exists
distant fs read
is a refactoring ofdistant client action file-read
,distant client action file-read-text
, anddistant client action dir-read
distant fs rename
is a refactoring ofdistant client action rename
distant fs write
is a refactoring ofdistant client action file-write
,distant client action file-write-text
,distant client action file-append
,distant fs make-dir
is a refactoring ofdistant client action dir-create
distant fs metadata
is a refactoring ofdistant client action metadata
distant fs remove
is a refactoring ofdistant client action remove
distant fs search
is a refactoring ofdistant client action search
distant fs watch
is a refactoring ofdistant client action watch
distant spawn
is a refactoring ofdistant client action proc-spawn
withdistant client lsp
merged in using the--lsp
flagdistant system-info
is a refactoring ofdistant client action system-info
- Search now supports
upward
as a directional setting to traverse upward looking for results rather than recursing downward
Changed
- CLI subcommands refactored
distant client select
moved todistant manager select
distant client action
moved todistant action
distant client launch
moved todistant launch
distant client connect
moved todistant connect
distant client lsp
moved todistant lsp
distant client repl
moved todistant api
distant client shell
moved todistant shell
Removed
distant-core
crate no longer offers theclap
feature
Fixed
distant launch manager://localhost
now rejects a bind address ofssh
as theSSH_CONNECTION
environment variable isn't available in most cases
0.20.0-alpha.4 - 2023-03-31
Added
- Default configuration for
config.toml
- Ability to generate default configuration using
distant generate config /path/to/config.toml
--current-dir
option fordistant client shell
anddistant client lsp
Changed
- Updated a variety of dependencies to latest versions
0.20.0-alpha.3 - 2022-11-27
Added
Frame::empty
method as convenience forFrame::new(&[])
ClientConfig
to supportReconnectStrategy
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
methodsread
andwrite
no longer return anio::Result<...>
and instead returnOption<Frame<...>>
and nothing respectivelyFrame::read
method now supports zero-size itemsClient::inmemory_spawn
andUntypedClient::inmemory_spawn
now take aClientConfig
as the second argument instead ofReconnectStrategy
- 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
andConnectionWatcher
to support watching changes to the client connection, supportingclone_connection_watcher
andon_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
andor
types forSearchQueryCondition
Changed
SearchQueryCondition
now escapes regex for all types exceptregex
- 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 andnum_cpus
crate to calculate thread count
Fixed
- Resolution of
BindAddress
now properly handles hostnames ranging fromlocalhost
toexample.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 shellSystemInfo
via ssh backend now reports os when windows detectedCapabilities
request/response for server and manager that report back the capabilities (and descriptions) supported by the server or managerSearch
andCancelSearch
request/response for server that performs a search usinggrep
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 aSearcher
and canceling an ongoing search query distant client action search
now supported, waiting for results and printing them out
- New
Changed
SystemInfo
data type now includes two additional fields:username
andshell
. Theusername
field represents the name of the user running the server process. Theshell
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
andcmd.exe
as the default shell based on the family returned by a system info requestdistant client shell
properly terminates master pty when the shell exits, resolving the hanging that occurred for Windowscmd.exe
andpowershell.exe
upon exit- ssh launch with login shell now only uses
sh
when remote family isunix
- 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 withshutdown
that supports three options:never
- server will never shutdown automaticallyafter=N
- server will shutdown after N secondslonely=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
andDistantSingleKeyCredentials
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
withHostParseError
that follows the DoD Internet Host Table Specification and subsequent RFC-1123
Changed
Destination
now has direct fields for scheme, username, password, host, and port that are populated from parsingDestination
no longer wrapsuriparse::URI
and all references to implementing/wrapping have been removed
Fixed
ssh
option to specify external binary not working onlaunch
due to the key being mis-labeled asssh.bind
instead ofssh.bin
- All ssh settings were not being applied with manager handlers due to some key
checks being incorrect (e.g.
backend
instead ofssh.backend
). This has now been corrected and settings now properly get applied
Removed
- The ssh settings of
ssh.user
andssh.port
were unused as these were now being taking from the destinationssh://[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 toDestination
Fixed
DistantManagerRouter
no longer silently fails whendistant.args
is provided that includes double quotes within it
Changed
Map
implementation ofDisplay
now escapes\
and"
Map
implementation ofFromStr
now handles escaped\
and"
- Split
fallback_scheme
forDistantManagerConfig
intolaunch_fallback_scheme
(defaulting to ssh) andconnect_fallback_scheme
(defaulting to distant); this means that subsequent use ofdistant client launch [user@]host[:port]
will now default to ssh instead of failing due to lack of distant launch handler - Expose
windows-pipe
andunix-socket
config and cli options regardless of platform (so they can be provided without worrying about which OS) - Lock
--access
todistant 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 forclient select
- Choices are provided via
{"type": "select", "choices": ["...", ...], "current": 0}
- Selection is specified via
{"type": "selected", "choice": 0}
- Choices are provided via
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
subcommanddistant manager service
subcommand contains functionality to install, start, stop, and uninstall the manager as a service on various operating systemsdistant manager info
will print information about an active connectiondistant manager list
will print information about all connections
distant generate
subcommanddistant generate schema
will produce JSON schema for server request/responsedistant generate completion
will produce completion file for a specific shell
Changed
distant launch
is nowdistant client launch
distant action
is nowdistant client action
distant shell
is nowdistant client shell
distant listen
is nowdistant 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
andchipsenkbeil/distant:0.16.4
Fixed
0.16.3 - 2022-05-29
Added
- New
--ssh-backend
option for CLI that acceptslibssh
orssh2
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
andresolve_file_type
- For
ProcSpawn
:args
(empty list),persist
, andpty
(nothing)
- For
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 newRequestData::Watch
,RequestData::Unwatch
, andResponseData::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
orVec<u8>
- Rename
--detached
and associated to--persist
Removed
- Github actions no longer use paths-filter so every PR & commit will test everything
distant-lua
anddistant-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 andXChaCha20Poly1305
dependency in place oforion
for encryptionCodec
trait to support encode & decodeXChaCha20Poly1305Codec
that encrypts/signs using XChaCha20Poly1305PlainCodec
that does no encrypting/signingSessionChannelExt
trait for friendlier methodsMailbox
and internalPostOffice
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 toRemoteProcess
Changed
- Refactor Transport to take generic Codec
- Rewrite to no longer use blake256
- Refactor
Session
to use a newSessionChannel
underneath - Refactor
Response
to always include an origin_id field instead of being optional - Update
ProcStdout
,ProcStderr
, andProcDone
to include origin id - Replace
verbose
option withlog-level
- Replace
DISTANT_AUTH_KEY
withDISTANT_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
andSystemInfo
response data types to support subtypes as singular parameters - Replace
--daemon
in favor of opposite parameter--foreground
Removed
DistantCodec
k256
dependencyTransport::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