- Handle responses compressed in zstd format, see #364 (@zuisong)
- Suppress warnings when
-qq
flag is used, see #371 (@blyxxyz) - Add
--debug
option for logging and backtraces, see #371 (@blyxxyz) - Decode
content-disposition
andlocation
headers as UTF-8, see #375 (@zuisong) - Print headers as latin1, with the UTF-8 decoding also shown if applicable, see #377 (@blyxxyz)
- Print the actual reason phrase sent by the server instead of guessing it from the status code, see #377 (@blyxxyz)
- Apply TLS options to non-HTTPS URLs, see #372 (@blyxxyz)
- Ignore
NO_COLOR
if set to empty string, see #370 (@blyxxyz)
- Prevent directory traversal in server-supplied filenames, see #379 (@blyxxyz)
- Support http2-prior-knowledge, see #356 (@zuisong)
- Directly bind to interface name on supported platforms, see #359 (@ducaale)
- Enable stream when content-type is
text/event-stream
, see #360 (@zuisong) - Decode utf-8 encoded string when formatting non-streaming JSON response, see #361 (@zuisong)
- Upgrade to hyper v1, see #357 (@zuisong)
- Use
serde-transcode
to optimize JSON formatting, see #362 (@blyxxyz)
- Display remote address in metadata when
-vv
or--meta
flag is used, see #348 (@zuisong)
- Default
XH_CONFIG_DIR
to~/.config/xh
in macOS, see #353 (@ducaale)
- Add
--resolve
for overriding DNS resolution, see #327 (@ducaale)
- Explicitly enable serde's derive feature, see #334 (@jayvdb)
- Make
network-interface
an optional dependency, see #332 (@blyxxyz)
- Add
--interface
for binding to a local IP address or interface, see #307 (@ducaale) - Translate
--raw
flag when using--curl
, see #308 (@ducaale) - Support duplicate header keys in session files, see #313 (@ducaale)
- Support persisting cookies from multiple domains, see #314 (@ducaale)
- Control output formatting (JSON indent-level, header sorting, etc)
via
--format-options
, see #318 (@Bnyro) and #319 (@ducaale)
- Disable cURL's URL globbing, see #325 (@ducaale)
- Improve PATH handling in
install.ps1
, see #264 (@henno)
- Update Rustls to v0.21.0, see #311 (@ducaale)
- Support reading query param and header values from a file, see #288 (@ducaale)
- Highlight Syntax errors found while tokenizing a JSON path, see #260 (@ducaale)
- Support outputting the metadata of a response via
--meta
,--print=m
or-vv
, see #240 (@ducaale)
- Fix panic when when parsing connection timeout, see #295 (@sorairolake)
- Remove
-m
as a short flag for--multipart
, see #299 (@ducaale)
- Add support for nested json syntax, see #217 (@ducaale)
- Add Support for bearer auth in
.netrc
, see #267 (@porglezomp) - Support forcing ipv4/ipv6, see #276 (@zuisong)
- Allow building xh using native-tls only, see #281 (@jirutka)
- Warn users when translating
--follow
+ non GET method, see #280 (@jgoday)
- fix HEAD request failing on compressed response, see #257 (@ducaale)
- Configurable install dir for
install.sh
viaXH_BINDIR
env variable, see #256 (@lispyclouds) - Use exit status 2 and 6 for
request timeout
andtoo many redirects
errors respectively, see #258 (@sorairolake)
- Add support for URLs with leading
://
to allow quick conversion of pasted URLs into HTTPie/xh command e.ghttp://httpbin.org/json
→$ http ://httpbin.org/json
, see #232 (@ducaale) - Support sending multiple request headers with the same key, see #242 (@ducaale)
- Don't remove
content-encoding
andcontent-length
headers while processing gzip/deflate/brotli encoded responses, see #241 (@ducaale)
- Replace structopt with clap3.x, see #216 (@ducaale) and #235 (@blyxxyz)
- Improve output coloring performance by switching to incremental highlighting, see #228 (@blyxxyz)
- Faster
--stream
output formatting by switching to full buffering and manual flushing, see #233 (@blyxxyz) - Automate the generation of negation flags, see #234 (@blyxxyz)
- Display download's elapsed time as seconds, see #236 (@ducaale)
- Add support for
--raw
flag, see #202 (@ducaale) - Add Fruity theme, see #206 (@ducaale)
- Use a custom netrc parser that supports comments and is more faithful to HTTPie, see #207 (@blyxxyz)
- Add browser-style text encoding detection, see #203 (@blyxxyz)
- Enable using OS certificate store with rustls, see #225 (@austinbutler)
- Improve quoting and update options from
--curl
, see #200 (@blyxxyz)
- Expand tilde in request items that contain a path, see #209 (@ducaale)
- Get version from
-V
when generating manpages, see #214 (@ducaale)
- Statically link C-runtime for MSVC Windows, see #221 (@ducaale)
- Add
install.ps1
for Windows, see #220 (@ChrisK-0) - Add aarch64 support, see #213 (@myhro)
- Do not print response body unconditionally, see #197 (@blyxxyz)
- Do not rebuild when no syntax or theme file has changed, see #194 (@blyxxyz)
- Remove curl from
dev-dependencies
by replacing httpmock with hyper, see #190 (@ducaale)
- Add
--http-version
for forcing a specific http version, see #161 (@ducaale) - Support overwriting response's mime and charset via
--response-mime
and--response-charset
respectively, see #184 (@ducaale) - Add support for digest authentication, see #176 (@ducaale)
- Add
--ssl
option for forcing a specific TLS version, see #168 (@blyxxyz)
- Preserve case of
--verify
path, see #181 (@blyxxyz)
- Enable LTO on the release profile, see #177 (@sorairolake)
- Replace
lazy_static
withonce_cell
, see #187 (@sorairolake) - Include enabled features in
--version
flag's output, see #188 and #191 (@sorairolake) - Support displaying units smaller than a second in download result, see #192 (@sorairolake)
- Change to use binary prefix in
--download
, see #193 (@sorairolake)
- Add
--all
flag for printing intermediate requests and responses, see #137 (@ducaale) - Support customising what sections are printed from intermediary requests and responses
via the
--history-print
flag, see #137 (@ducaale)
- Apply header title case for consecutive dashes, see #170 (@blyxxyz)
- Avoid printing unnecessary line separators when
--all
flag is used, see #174 (@ducaale)
- Include Debian package in release artifacts, see #172 (@ducaale)
- Add support for HTTPie's Sessions, see #125 (@ducaale)
- Send and display headers names as title case for non-HTTP/2 requests and responses, see #167 (@blyxxyz)
- Support using the system's TLS library via
--native-tls
flag, see #154 (@blyxxyz) - Support reading args from a config file, see #165 (@ducaale)
- Support
REQUESTS_CA_BUNDLE
&CURL_CA_BUNDLE
env variables, see #146 (@ducaale) - Enable color and wrapping for
--help
, see #151 (@QuarticCat) - Add monokai theme, #157 (@ducaale)
- handle responses compressed in deflate format, see #158 (@ducaale)
- Support setting the filename for multipart uploads, see #164 (@blyxxyz)
- Do not hardcode
/tmp
in the install script, see #149 (@blyxxyz)
- Re-enable HTTP/2 adaptive window, see #150 (@blyxxyz)
--check-status
is now on by default. You can opt-out of this change by enabling xh's strict compatibility mode, see #155 (@ducaale)
- Support reading DataField and JsonField value from a file, see #118 (@ducaale)
- Add percentage of progress to download progress bar, see #119 (@sorairolake)
- Add the timeout flag, see #131 (@sorairolake)
- Support installation via a shell script, see #122 (@ducaale)
- Support reading request body from file, see #140 (@blyxxyz)
- Fix progress bar ETA when resuming download, see #116 (@blyxxyz)
- Replace
deflate
in Accept-Encoding tobr
, see #128 (@sorairolake) - Set Accept-Encoding to
identity
in download mode, see #130 (@sorairolake) - Replace HTTP/2 adaptive window by fixed window to prevent crashes, see #138 (@blyxxyz)
- Fix a bug where same file cannot be re-downloaded, see #139 (@ducaale)
- Enforce accept-encoding to be
identity
in download mode, see #141 (@ducaale)
- Unvendor jsonxf, see #124 (@blyxxyz)
- Add config file for clippy, see #123 (@sorairolake)
- Escape backslash in JSON highlighting definition, see #108 (@blyxxyz)
- Do not require filenames to be valid unicode, see #112 (@blyxxyz)
- Preserve the order of JSON keys in requests, see #113 (@ducaale)
- Keep bar coloring consistent with other colored output (e.g. don't color it if $NO_COLOR is set), see #114 (@blyxxyz)
- Prevent console-rs/indicatif#144 in narrow terminals, see #114 (@blyxxyz)
- JSON records are now separated by double newlines, see #109 (@blyxxyz)
- Writing to a redirect or a file now doesn't stream unless you use --stream, like HTTPie, and it properly decodes the response when it needs to, see #111 (@blyxxyz)
- Writing formatted JSON to a file is now significantly faster, see #111 (@blyxxyz)
- Use adaptive window for HTTP/2, see #115 (@blyxxyz)
- Don't include the
--verify
flag in usage when it is not used, see #100 (@ducaale) - Don't color progress indicators when color is disabled, see #103 (@ducaale)
- JSON requests coloring is now twice as fast, see #96 (@blyxxyz)
- Unify flags and options in help, see #100 (@ducaale)
- Replace ansi_term by termcolor for better Windows support, see #105 (@blyxxyz)
- Add
--no-FLAG
variants of flags. This is useful for disabling any flags you might have in your alias, see #86 (@blyxxyz) - Support non-standard HTTP methods, see #89 (@blyxxyz)
- Add support for getting credentials from .netrc plus a
--ignore-netrc
flag to disable that functionality, see #87 (@dwink)
- Highlight Javascript and CSS, see #82 (@blyxxyz)
- Check if text is actually JSON before formatting it, see #82 (@blyxxyz)
- Default to a content-type of application/json when reading a body from stdin, see #82 (@blyxxyz)
- More robust detection of the method and URL arguments, see #55 (@blyxxyz)
- Improvements to the generation downloaded filenames, see #56 (@blyxxyz)
--continue
now works for resuming downloads. It was incomplete before, see #59 (@blyxxyz)--check-status
is supported, and is automatically active for downloads (so you don't download error pages), see #59 (@blyxxyz)- Add the
--proxy
option, see #62 (@otaconix) - Add
--bearer
flag for Bearer Authentication and remove--auth-type
, see #64 (@blyxxyz) - Add support for manpages, see #64 (@blyxxyz)
- Add help subcommand for printing long help and update
--help
to print short help, see #64 (@blyxxyz) - Support escaping characters in request items with backslash, see #66 (@blyxxyz)
- Add support for
--verify
to skip the host’s SSL certificate verification, see #44 (@jihchi, @otaconix) - Add support for
--cert/cert-key
for using client side certificate for the SSL communication, see #44 (@jihchi, @otaconix) - Add
--curl
flag to print equivalent curl command, see #69 (@blyxxyz) - Replace
--default-scheme
by--https
.--default-scheme
is still kept as an undocumented flag, see #73 (@blyxxyz) - If
xh
is invoked asxhs
,https
, orxhttps
, run as if--https
was used, see #73 (@blyxxyz) - Support
NO_COLOR
environment variable to turn colors off by default, see #73 (@blyxxyz) - Make
--json
/--form
/--multipart
override each other and force content-type. If you use multiple of those flags, all but the last will be ignored. And if you use them without request items the appropriate headers will still be set, see #73 (@blyxxyz) - Try to detect undeclared JSON response bodies: If the response is javascript or plain text, check if it's JSON, see #73 (@blyxxyz)
- Add shell autocompletion generation, see #76 (@blyxxyz)
- Make structopt usage more consistent, see #67 (@blyxxyz)
- Remove use of async, make --stream work consistently, see #41 (@blyxxyz)
- Introduce clippy and fmt in CI, see #75 (@ducaale)
- Follow redirects if downloading a file, see #51 (@blyxxyz)
- Allow form value regex to match newlines, see #46 (@blyxxyz)
- Adds --headers option, see #42 (@sanpii)
- Rename ht binary to xh
- Add support for OPTIONS HTTP method, see #17 (@plombard)
- Add
--body
flag for printing only response body, see #38 (@idanski) - Add content length to file upload stream, see #32 (@blyxxyz)
- Include User-Agent header in outgoing requests, see #33 (@blyxxyz)
- Ensure filename from
content-disposition
doesn't overwrite existing files, isn't a hidden file, or doesn't end up outside the current directory, see #37 (@blyxxyz) - Bubble errors up to main() instead of panicking see #37 (@blyxxyz)
- Add support for HEAD requests, see #16 (@Till--H)
- Support setting the content-type for files in multipart requests e.g
ht httpbin.org/post --multipart [email protected];type=image/png
- Add
--follow
and--max-redirects
for configuring redirect behaviour, see #19 (@Till--H)
- Render white text as the default foreground color, see #21 (@blyxxyz)
- Don't insert lines when streaming json.
- Do not explicitly add
Host
header, see #26 (@blyxxyz)
- Init parsing regex for RequestItem once, see #22 (@jRimbault)
- Support streaming responses. This on by default for unformatted responses and can also
be enabled via the
--stream
flag
- Support output redirection for downloads e.g
ht -d httpbin.org/json > temp.json
- Upgrade to Tokio 1.x.