xh/CHANGELOG.md
2025-05-02 15:20:05 +01:00

381 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## [0.24.1] - 2025-05-02
### Features
- Support RFC 5987 encoding for Content-Disposition filenames, see #416 (@zuisong)
### Bug fixes
- Fix crash on empty zstd response body, see #411 (@blyxxyz)
### Other
- Improve rustls errors for invalid certificates, see #413 (@blyxxyz)
## [0.24.0] - 2025-02-18
### Features
- Add `--generate` option to generate the man page and shell completions at runtime,
see #393 (@fgimian)
- Add support for Elvish and Nushell shell completions, see #393 (@fgimian)
- Add `--compress` for compressing request body, see #403 (@zuisong)
### Bug fixes
- Store default paths for cookies without an explicit path attribute,
see #401 (@otaconix)
### Other
- Support generating man page with reproducible timestamp via `SOURCE_DATE_EPOCH`,
see #402 (@nc7s)
- Upgrade cookie_store to 0.21.1, see #397 (@kranurag7)
## [0.23.1] - 2025-01-02
### Security fixes
- Upgrade to ruzstd v0.7.3 to fix RUSTSEC-2024-0400, see #396 (@zuisong)
### Bug fixes
- Warn on combination of `--continue` and `Range` header, #394 (@blyxxyz)
### Other
- Enable logging in `rustls` and `tracing`-using dependencies, see #390 (@blyxxyz)
## [0.23.0] - 2024-10-12
### Features
- 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` and `location` 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)
### Bug fixes
- Apply TLS options to non-HTTPS URLs, see #372 (@blyxxyz)
### Other
- Ignore `NO_COLOR` if set to empty string, see #370 (@blyxxyz)
## [0.22.2] - 2024-07-08
### Security fixes
- Prevent directory traversal in server-supplied filenames, see #379 (@blyxxyz)
## [0.22.0] - 2024-04-13
### Features
- 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)
### Other
- Upgrade to hyper v1, see #357 (@zuisong)
- Use `serde-transcode` to optimize JSON formatting, see #362 (@blyxxyz)
## [0.21.0] - 2024-01-28
### Features
- Display remote address in metadata when `-vv` or `--meta` flag is used,
see #348 (@zuisong)
### Other
- Default `XH_CONFIG_DIR` to `~/.config/xh` in macOS, see #353 (@ducaale)
## [0.20.1] - 2023-11-19
### Features
- Add `--resolve` for overriding DNS resolution, see #327 (@ducaale)
## [0.19.4] - 2023-10-22
### Other
- Explicitly enable serde's derive feature, see #334 (@jayvdb)
## [0.19.3] - 2023-10-21
### Other
- Make `network-interface` an optional dependency, see #332 (@blyxxyz)
## [0.19.2] - 2023-10-21
### Features
- 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)
### Bug fixes
- Disable cURL's URL globbing, see #325 (@ducaale)
- Improve PATH handling in `install.ps1`, see #264 (@henno)
### Other
- Update Rustls to v0.21.0, see #311 (@ducaale)
## [0.18.0] - 2023-02-20
### Features
- 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)
### Bug fixes
- Fix panic when when parsing connection timeout, see #295 (@sorairolake)
### Breaking changes
- Remove `-m` as a short flag for `--multipart`, see #299 (@ducaale)
## [0.17.0] - 2022-11-08
### Features
- 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)
### Other
- Allow building xh using native-tls only, see #281 (@jirutka)
- Warn users when translating `--follow` + non GET method, see #280 (@jgoday)
## [0.16.1] - 2022-05-22
### Bug fixes
- fix HEAD request failing on compressed response, see #257 (@ducaale)
### Other
- Configurable install dir for `install.sh` via `XH_BINDIR` env variable,
see #256 (@lispyclouds)
- Use exit status 2 and 6 for `request timeout` and `too many redirects` errors
respectively, see #258 (@sorairolake)
## [0.16.0] - 2022-04-17
### Features
- Add support for URLs with leading `://` to allow quick conversion of
pasted URLs into HTTPie/xh command e.g `http://httpbin.org/json`
`$ http ://httpbin.org/json`, see #232 (@ducaale)
- Support sending multiple request headers with the same key, see #242 (@ducaale)
### Bug fixes
- Don't remove `content-encoding` and `content-length` headers while processing
gzip/deflate/brotli encoded responses, see #241 (@ducaale)
### Other
- 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)
## [0.15.0] - 2022-01-27
### Features
- 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)
### Bug fixes
- Expand tilde in request items that contain a path, see #209 (@ducaale)
- Get version from `-V` when generating manpages, see #214 (@ducaale)
### Other
- 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)
## [0.14.1] - 2021-11-26
### Bug fixes
- Do not print response body unconditionally, see #197 (@blyxxyz)
### Other
- 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)
## [0.14.0] - 2021-11-15
### Features
- 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)
### Bug fixes
- Preserve case of `--verify` path, see #181 (@blyxxyz)
### Other
- Enable LTO on the release profile, see #177 (@sorairolake)
- Replace `lazy_static` with `once_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)
## [0.13.0] - 2021-09-16
### Features
- 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)
### Bug fixes
- Apply header title case for consecutive dashes, see #170 (@blyxxyz)
- Avoid printing unnecessary line separators when `--all` flag is used, see #174 (@ducaale)
### Other
- Include Debian package in release artifacts, see #172 (@ducaale)
## [0.12.0] - 2021-08-06
### Features
- Add support for HTTPie's [Sessions](https://httpie.io/docs#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)
## [0.11.0] - 2021-07-26
### Features
- 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)
### Bug fixes
- Do not hardcode `/tmp` in the install script, see #149 (@blyxxyz)
### Other
- Re-enable HTTP/2 adaptive window, see #150 (@blyxxyz)
### Breaking changes
- `--check-status` is now on by default. You can opt-out of this change by enabling xh's
[strict compatibility mode](https://github.com/ducaale/xh#strict-compatibility-mode),
see #155 (@ducaale)
## [0.10.0] - 2021-05-17
### Features
- 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)
### Bug fixes
- Fix progress bar ETA when resuming download, see #116 (@blyxxyz)
- Replace `deflate` in Accept-Encoding to `br`, 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)
### Other
- Unvendor jsonxf, see #124 (@blyxxyz)
- Add config file for clippy, see #123 (@sorairolake)
## [0.9.2] - 2021-03-24
### Bug fixes
- 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 mitsuhiko/indicatif#144 in narrow terminals, see #114 (@blyxxyz)
### Other
- 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)
## [0.9.1] - 2021-03-16
### Bug fixes
- 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)
### Other
- 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)
## [0.9.0] - 2021-03-08
### Features
- 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)
## [0.8.1] - 2021-03-01
### Features
- 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)
## [0.8.0] - 2021-02-28
### Features
- 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 hosts 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 as `xhs`, `https`, or `xhttps`, 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)
### Other
- 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)
## [0.7.0] - 2021-02-12
### Features
- 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)
### Other
- Rename ht binary to xh
## [0.6.0] - 2021-02-08
### Features
- 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)
### Other
- 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)
## [0.5.0] - 2021-02-07
### Features
- 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 pic@cat.png;type=image/png`
- Add `--follow` and `--max-redirects` for configuring redirect behaviour, see #19 (@Till--H)
### Bug fixes
- 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)
### Other
- Init parsing regex for RequestItem once, see #22 (@jRimbault)
## [0.4.0] - 2021-02-06
### Features
- Support streaming responses. This on by default for unformatted responses and can also
be enabled via the `--stream` flag
## [0.3.5] - 2021-01-31
### Features
- Support output redirection for downloads e.g `ht -d httpbin.org/json > temp.json`
### Other
- Upgrade to Tokio 1.x.