🚀 ducaale/xh - Release Notes
v0.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)
v0.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)
v0.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)
v0.22.2 (2024-07-08)
### Security fixes
- Prevent directory traversal in server-supplied filenames, see #379 (@blyxxyz)
v0.22.0 (2024-04-12)
### 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)
v0.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)
v0.20.1 (2023-11-19)
## Features
- Add `--resolve` for overriding DNS resolution, see #327 (@ducaale)
v0.19.4 (2023-10-22)
## Other
- Explicitly enable serde's derive feature, see #334 (@jayvdb)
v0.19.3 (2023-10-21)
### Other
- Make `network-interface` an optional dependency, see #332 (@blyxxyz)
**Note for package maintainers**: When building xh with `--no-default-features`, make sure to enable the `network-interface` feature if there are no build errors like in https://github.com/ducaale/xh/issues/330
v0.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)
v0.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)
v0.17.0 (2022-11-08)
### Features
- Add support for [nested json syntax](https://httpie.io/docs/cli/nested-json), see #217 (@ducaale)
- Add Support for bearer auth in `.netrc`, see #267 (@porglezomp)
- Add `--ipv4` and `--ipv6` flags for forcing IPv4 and IPv6 respectively, 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)
v0.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)
v0.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)
v0.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)
v0.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)
v0.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)
v0.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)
v0.12.0 (2021-08-05)
### 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 listing default args in a config file, see #165 (@ducaale)
v0.11.0 (2021-07-26)
### Features
- Support HTTPie's `REQUESTS_CA_BUNDLE` & `CURL_CA_BUNDLE` env variables, see #146 (@ducaale)
- Enable color + wrapping for _--help_ output, 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)