ducaale/xh
66.0
Adequate · 29 September 2026
9.2k
lines of production code
Rust
primary language
2
measurements over time
What this system is
xh is a command-line HTTP client that facilitates sending requests and displaying formatted responses with syntax highlighting for various data formats. It supports advanced features such as digest authentication, HTTP message signatures, and request compression, while providing shell autocompletion and cross-platform installation. The system includes comprehensive documentation and a robust test suite to ensure reliable behavior across different HTTP methods and response types.
How it got here
2020 — Initial release and dependency overhaul
4 changes.
This period marks the initial release of the xh HTTP client, featuring the core build logic, installation scripts, and comprehensive documentation. It includes a major dependency overhaul that renamed the project from yahc to xh, upgraded the CLI framework to clap v4.4, and enhanced HTTP capabilities with Digest authentication and HTTP Message Signatures. The release also established a foundational integration test suite to validate core CLI behaviors.
2021 — Documentation and shell completion improvements
4 changes.
This period focused on enhancing the project's usability and maintainability by introducing structured documentation templates and comprehensive shell autocompletion scripts for multiple shells. Additionally, test coverage was expanded with new fixtures for HTTPS certificates and compressed responses to support more robust testing scenarios.
2022–2024 — syntax highlighting and test infrastructure
5 changes.
This period focused on enhancing the user interface with comprehensive syntax highlighting definitions and color themes for various web languages. Concurrently, significant effort was dedicated to building a robust test server infrastructure and expanding integration test coverage for core HTTP behaviors and formatting features.
Features
Add ANSI, Fruity, Monokai, and Solarized syntax themes
Four new text-editor color themes—ANSI Dark, Fruity, Monokai, and Solarized—are now available in the assets/themes directory. These themes define syntax highlighting for common language constructs (such as strings, comments, and errors) and include specific styling for HTTP request headers, methods, URLs, and reason phrases, allowing users to select a visual style that matches their preference.
assets/themes · high confidence
Add shell autocompletion scripts for Bash, Zsh, Fish, Elvish, Nushell, and PowerShell
The \xh\ command now includes generated shell completion scripts for Bash, Zsh, Fish, Elvish, Nushell, and PowerShell. These files provide tab-completion for all available flags, including specific value suggestions for options like \--pretty\, \--style\, \--auth-type\, \--ssl\, and \--http-version\, as well as file path completion for arguments like \--output\ and \--cert\. This allows users to easily discover and fill in command-line arguments in their respective shells.
completions · high confidence
Added syntax highlighting definitions for JSON, CSS, HTML, JavaScript, and XML
New syntax highlighting files have been added to the assets/syntax directory, enabling proper code coloring and structure recognition for JSON, CSS, HTML, JavaScript, and XML files. The JSON definition supports key-value pairs, strings, numbers, booleans, and nulls. The CSS definition covers selectors, properties, at-rules, and color values. The HTML definition handles tags, attributes, embedded CSS/JS, and comments. The JavaScript definition includes support for modern syntax like imports/exports and async functions. The XML definition supports tags, namespaces, entities, and CDATA sections.
assets/syntax · high confidence
Initial release of xh with installation scripts and documentation
This change introduces the initial version of the xh HTTP client, including the core build logic (build.rs) that compiles syntax highlighting themes and syntax definitions at compile time. It provides cross-platform installation scripts (install.sh for Unix-like systems and install.ps1 for Windows) that download pre-built binaries and handle PATH configuration. The release also includes comprehensive documentation (README.md, FAQ.md, CHANGELOG.md) and a release checklist to guide future updates.
(repo-wide) · high confidence
Introduce digest authentication and HTTP message signatures
The tool now supports Digest authentication (RFC 2617) via the \--auth-type digest\ flag, implemented as a middleware that automatically retries requests upon receiving a 401 response with a valid challenge. Additionally, it adds support for HTTP Message Signatures (RFC 9421) via the \--unstable-m-sig-\*\ flags, allowing users to cryptographically sign requests using Ed25519 or RSA keys. This includes automatic signing of redirects and support for specifying signature components and algorithms.
src · high confidence
Behavioural changes
Documentation of syntax themes and demo creation tools
The assets folder now includes a README that credits the syntaxes and themes used (including Sublime-HTTP, json-kv, and Pygments-based themes like Solarized, Monokai, and Fruity) and documents the tools used to create the demo GIF. Additionally, symlinks for the xhs command and its man page have been added to support the demo environment.
assets · high confidence
Improved HTTP header display with real reason phrases and XML pretty-printing
The formatting module now displays the actual HTTP reason phrase (e.g., 'Not Found') alongside status codes in responses, rather than omitting it or showing a generic placeholder. Header values are decoded using Latin-1 or UTF-8 to ensure accurate representation, with non-ASCII characters handled gracefully. Additionally, XML responses are now pretty-printed for better readability, while JSON formatting remains unchanged. The module also introduces a new palette system for consistent syntax highlighting across headers and other formatted content.
src/formatting · high confidence
Introduce structured man page and Markdown documentation templates
The documentation build system now uses dedicated template files (\doc/man-template.roff\ and \doc/md-template.md\) to generate the man page (\doc/xh.1\) and Markdown documentation (\doc/xh.1.md\). These templates provide a structured, sectioned view of the tool, explicitly documenting positional arguments (METHOD, URL, REQUEST\_ITEM), all command-line options (including \--pretty\ styles and \--format-options\), exit status codes (0–6), environment variables (such as \XH\_CONFIG\_DIR\, \NO\_COLOR\, and proxy settings), configuration file locations, and usage examples. This replaces the previous ad-hoc documentation approach with a consistent, maintainable format that accurately reflects the current v0.26.2 feature set.
doc · high confidence
Test coverage
Added test coverage for HTTP message signatures, request compression, downloads, logging, and XML formatting; Added test fixtures for HTTPS certificates and compressed responses; Added test server infrastructure for HTTP and Unix socket testing; Initial integration test suite for CLI behavior.
Dependencies
Major dependency overhaul and project rename to xh v0.26.2
The project has been renamed from 'yahc' to 'xh' and bumped to version 0.26.2, requiring Rust edition 2024 and MSRV 1.85.0. This update replaces the CLI framework from structopt to clap v4.4 (with derive features) and upgrades the HTTP client from reqwest 0.10 to 0.13.2, enabling features like HTTP/2, SOCKS, and system-proxy support. Additional significant dependency changes include replacing regex with regex-lite, adding brotli and zstd (ruzstd) decoding support, introducing cookie\_store for session management, and switching to termcolor for cross-platform terminal coloring. The Cargo.lock format has also been updated to version 4.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 65 → 66 (+1.4)
- Rubric changed (rubric-2026.09.9 → rubric-2026.09.17) — scores are not directly comparable.
Lenses
- Code Health 83 → 83 (+0.0)
- Architecture 100 → 99 (-1.2)
- Maturity 54 → 54 (+0.0)
- Readiness 73 → 72 (-1.3)
- Security 65 → 76 (+11.4)
Resolved (2)
- Documentation: no usage examples (README.md)
- Off-boarding risk: anonymized user #1
New (16)
- Inverted test pyramid
- Low cohesion: Buffer (LCOM4 8) (src/buffer.rs)
- Medium vulnerability: RUSTSEC-2026-0285 (Cargo.lock)
- Off-boarding risk: anonymized user #1
- Outdated: clap
- Outdated: clap_complete
- Outdated: clap_complete_nushell
- Outdated: cookie_store
- Outdated: encoding_rs
- Outdated: encoding_rs_io
- Outdated: flate2
- Outdated: hyper
- Outdated: log
- Outdated: reqwest
- Outdated: rustls
- Outdated: time
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ducaale/xh was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 29 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 2404aceecc08b0b2d100fedc96f57745cd5904dc — the exact code this score is about.
- Scored under rubric-2026.09.17 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-705631bb727e.