Changelog

You can test the unpublished version of cihai-cli before it’s released, see developmental releases.

pip:

$ pip install --user --upgrade --pre cihai-cli

pipx:

$ pipx install \
    --suffix=@next \
    --pip-args '\--pre' \
    --force \
    'cihai-cli'

Then run the suffixed command as cihai@next info .

uv:

$ uv add cihai-cli --prerelease allow

uvx:

$ uvx --from 'cihai-cli' --prerelease allow cihai

cihai-cli 0.33.x (unreleased)

Notes on the upcoming release will go here.

cihai-cli 0.33.x refreshes the documentation experience around the command-line workflow. The CLI reference becomes easier to scan, bookmark, and share, while the documentation site moves onto the shared gp-sphinx platform used across the git-pull ecosystem. The command surface itself is unchanged.

What’s new

Linkable CLI reference arguments (#339)

The CLI Reference reference now gives every command option and positional argument its own permalink. That makes it possible to link directly to arguments on cihai info, cihai reverse, and Completions instead of sending readers to the top of a long command page.

Argument metadata now renders as structured key/value rows for default values, types, choices, and required markers. Required arguments get a compact amber tag, metadata styling works in both light and dark modes, and metavars with underscores are highlighted as one token.

Documentation landing pages for CLI workflows (#344)

The homepage now leads with the actual cihai workflow: installation, cihai info, cihai reverse, and the note that the Unihan database is downloaded on first use. The CLI section uses cards for info, reverse, and completions, while project pages collect contributing, code style, and release notes away from the first-run path.

Documentation

Faster, steadier docs navigation (#342)

The site gained self-hosted IBM Plex fonts, fallback font metrics, explicit image dimensions, badge placeholders, and SPA-style internal navigation. Those changes reduce font flash, layout shift, repeated asset downloads, and abrupt page swaps while preserving regular static HTML output for search engines and direct links.

Copy-pasteable command examples (#343)

Shell examples across the docs and changelog now use console blocks with a prompt marker and one logical command per block. Long commands use continuation lines so examples are readable without making copy/paste awkward.

Shared gp-sphinx documentation platform (#345, #346, #347, #348)

cihai-cli now consumes the published gp-sphinx documentation stack instead of carrying repo-local Sphinx extensions, templates, stylesheets, and JavaScript. The migration keeps the CLI reference features but moves maintenance to shared packages, including sphinx-autodoc-argparse for argparse pages and sphinx-autodoc-api-style for card-style internal API docs.

The docs stack was then bumped through gp-sphinx 0.0.1a8 and 0.0.1a16. Those updates bring the renamed autodoc packages, the argparse domain, namespaced CSS, the gp-furo-theme Tailwind v4 Furo respin, and sphinx-vite-builder so theme assets are built and packaged by the shared docs platform.

cihai-cli 0.32.0 (2026-01-24)

cihai-cli 0.32.0 is the CLI documentation overhaul release. It adds color-aware help examples to the actual command line, replaces the older Sphinx argparse extension with a richer in-tree documentation engine, and marks the package as typed for downstream tools.

What’s new

Colored CLI help output (#337)

cihai --help, cihai info --help, and cihai reverse --help now include syntax-highlighted examples. Color output respects NO_COLOR and FORCE_COLOR, so terminals, CI logs, and documentation builds can each select the right rendering mode.

CLI reference engine for argparse output (#337)

The docs replaced sphinx-argparse with sphinx_argparse_neo, a maintained argparse documentation path ported into this project. It provides custom Pygments lexers for usage/help output, transforms epilog examples into normal documentation sections, exposes argparse roles, and strips ANSI escape codes when colored help is rendered into Sphinx.

Development

Typed package marker (#337)

cihai-cli now ships py.typed for PEP 561 type checker discovery. The release also added the docutils and Pygments type stubs needed to keep the documentation extensions under strict mypy.

cihai-cli 0.31.1 (2026-01-24)

cihai-cli 0.31.1 keeps the CLI aligned with the trusted-publishing release of the core cihai library. It also moves local developer commands from Make to Just and updates documentation deployment credentials to the newer OIDC flow.

Breaking changes

Minimum cihai~=0.36.1 (was ~=0.36.0). The bump picks up cihai’s PyPI Trusted Publisher release and the corresponding trusted unihan-etl dependency chain. (#338)

Documentation

Docs deployment moved to AWS OIDC authentication and the AWS CLI, removing the older long-lived credential path from the publishing workflow.

Development

Makefile -> Justfile (#333)

Development tasks moved from Makefile to justfile. Project documentation now uses just commands for test, lint, type-check, and docs workflows.

cihai-cli migrated package publishing to PyPI Trusted Publisher. (#332)

cihai-cli 0.31.0 (2025-11-01)

cihai-cli 0.31.0 is the Python 3.10 baseline release. It follows the core cihai library to 0.36.0, keeps the test matrix current with Python 3.14, and adopts deferred annotations consistently across the package.

Breaking changes

Minimum Python is now 3.10; Python 3.9 is no longer supported. Python 3.9 reached end of life on October 31, 2025. See the Python release timeline and PEP 596 for the upstream schedule. (#330)

Minimum cihai~=0.36.0 (was ~=0.35.0).

Development

Python 3.14 was added to the test matrix. (#329)

The codebase now uses from __future__ import annotations and enables Ruff’s PEP-compliant annotation checks for UP006 and UP007. That defers annotation resolution at runtime while moving style enforcement into the normal lint gate. (#324)

cihai-cli 0.30.0 (2024-12-21)

cihai-cli 0.30.0 is a maintenance release for the Python 3.9 floor. It drops Python 3.8, follows cihai to its Python 3.9-compatible release line, and applies the current Ruff autofix set across the project.

Breaking changes

Minimum Python is now 3.9; Python 3.8 is no longer supported. Python 3.8 reached end of life on October 7, 2024. See PEP 569 for the upstream release schedule. (#323)

Minimum cihai~=0.35.0 (was ~=0.34.0). That also brings in unihan-etl>=0.37.0, which requires Python 3.9. (#323)

Development

Ruff 0.8.4 was applied with all selected automated fixes, including preview and unsafe fixes, then formatted the tree. (#323)

$ ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .

cihai-cli 0.29.0 (2024-11-26)

cihai-cli 0.29.0 moves project management from Poetry to uv and packaging from Poetry’s build backend to Hatchling. The release is maintenance-only for users, but it changes the contributor and release toolchain substantially.

Breaking changes

Project management moved from Poetry to uv (#321)

uv is now the project and dependency manager. Locking, local installs, and contributor setup use uv instead of Poetry.

Build backend moved to Hatchling (#321)

The package build system moved from poetry to hatchling. See the Python Packaging User Guide’s build backend overview for the packaging model.

Development

Ruff 0.4.2 code-quality fixes were applied, including f-string modernization in places where the linter could safely improve readability. (#312)

cihai-cli 0.28.0 (2024-04-06)

cihai-cli 0.28.0 is a maintenance release focused on documentation hygiene and the latest cihai 0.33.x dependency line.

Documentation

Plain-text links in the docs are now automatically linkified.

Development

Minimum cihai~=0.33.0 (was ~=0.32.0). The bump follows cihai’s Ruff linting updates.

cihai-cli 0.27.0 (2024-04-01)

cihai-cli 0.27.0 is a maintenance release for the cihai 0.32.x dependency line and the Ruff 0.3 toolchain. It keeps the CLI aligned with Unihan ETL fixes while modernizing lint command usage.

Development

Minimum cihai~=0.32.0 (was ~=0.31.0), including unihan-etl>=0.34.0.

Ruff was bumped from 0.2.2 to 0.3.0 and CI now runs ruff check . instead of the older ruff . command form. (#309)

Ruff 0.3.4 automated fixes were applied across active branches before the release. (#310)

$ ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .

cihai-cli 0.26.0 (2024-02-09)

cihai-cli 0.26.0 brings the CLI onto the Unihan 15.1 data line through cihai 0.31.0 and unihan-etl 0.33.1. Users get the current Unicode data compatibility without changing the cihai info or cihai reverse command model.

What’s new

Unihan 15.1 compatibility (#308)

The cihai dependency now supports Unihan 15.1.0, released September 1, 2023 in TR38 revision 35. The underlying unihan-etl bump also includes the earlier kRSUnicode double apostrophe fix.

Development

Ruff linting was strengthened with flake8-commas, flake8-builtins, and flake8-errmsg rule families. (#307)

cihai-cli 0.25.0 (2023-12-09)

cihai-cli 0.25.0 is a maintenance release for docstring coverage, CI cleanup, and the cihai 0.30.x dependency line.

Documentation

Functions, methods, classes, and packages gained docstrings. (#304)

Development

Minimum cihai~=0.30.0 (was ~=0.29.0). The cihai release includes pydocstyle-oriented docstrings and fixes for unused character utility functions.

The pytest configuration moved into pyproject.toml, and pydocstyle checks were added to Ruff. (#301, #304)

CodeQL moved from an advanced configuration file to GitHub’s default setup. (#304)

cihai-cli 0.24.0 (2023-11-19)

cihai-cli 0.24.0 is a maintenance release for Python 3.12 packaging metadata, Poetry dependency-group cleanup, and the switch from Black to Ruff formatting.

Development

Pytest configuration now lives in pyproject.toml, Python 3.12 appears in the package classifiers, and Poetry development dependencies use dependency groups instead of extras. (#301)

Formatting moved from Black to ruff format, keeping Black-compatible style while removing a separate formatter dependency. (#302)

Minimum unihan-etl>=0.29.0 through the cihai dependency line.

Poetry was bumped from 1.6.1 to 1.7.0, and the eradicate Ruff rule family was removed after too many false positives.

GitHub Actions dependencies were updated to clear workflow warnings, including dorny/paths-filter 2.11.1.

cihai-cli 0.23.0 (2023-07-22)

cihai-cli 0.23.0 is a maintenance release that follows cihai 0.28.0 for pytest plugin updates.

Development

Minimum cihai~=0.28.0 (was ~=0.27.0).

cihai-cli 0.22.0 (2023-07-18)

cihai-cli 0.22.0 is a maintenance release that picks up cihai 0.27.0 and the unihan-etl pytest fixes beneath it.

Development

Minimum cihai~=0.27.0 (was ~=0.26.0), including unihan-etl 0.27.0 pytest fixes. (#300)

cihai-cli 0.21.2 (2023-07-18)

cihai-cli 0.21.2 is a maintenance release for Ruff-driven code-quality fixes.

Development

Ruff fixes were applied across the project. (#299)

cihai-cli 0.21.1 (2023-07-02)

cihai-cli 0.21.1 restores the main user workflows after regressions in the previous release.

Fixes

cihai info and cihai reverse were fixed. (#297, #298)

cihai-cli 0.21.0 (2023-07-01)

cihai-cli 0.21.0 is a maintenance release for stricter Ruff enforcement and the cihai 0.26.x dependency line.

Development

Ruff strictness increased and the resulting code improvements were applied. (#295)

Minimum cihai~=0.26.0 (was ~=0.25.0), including matching lint updates in unihan-etl 0.25.0.

cihai-cli 0.20.0 (2023-06-25)

cihai-cli 0.20.0 is a dependency maintenance release. It follows cihai through 0.25.0 and picks up the zhon 2.0 regular-expression warning fix through unihan-etl.

Development

Minimum cihai~=0.25.0 (was ~=0.23.0). The dependency chain includes unihan-etl 0.24.0 and zhon 2.0.0, which fixes pytest regular-expression warnings. (#298)

cihai-cli 0.19.0 (2023-06-24)

cihai-cli 0.19.0 follows cihai and unihan-etl’s dataclass-based configuration work.

Development

Minimum cihai~=0.22.1 (was ~=0.21.0). The dependency chain includes unihan-etl 0.22.2 with dataclasses.dataclass-based configuration.

cihai-cli 0.18.0 (2023-06-19)

cihai-cli 0.18.0 follows cihai’s pathlib and typing cleanup.

Development

Minimum cihai~=0.22.1. This dependency line relies on pathlib-based paths and improved type annotations.

cihai-cli 0.17.0 (2023-06-04)

cihai-cli 0.17.0 is the Python 3.8 baseline release. It drops Python 3.7, tightens typing, and follows cihai into its SQLAlchemy 2.0 dependency line.

Breaking changes

Python 3.7 support was dropped. Python 3.7 reached end of life on June 27, 2023, and Python 3.8 provides typing.TypedDict and typing.Protocol without typing_extensions. (#290)

Development

Strict mypy compliance was added. (#277)

Tests moved from pytest’s tmpdir / py.path.local fixture to tmp_path / pathlib.Path. (#292)

Unnecessary typing_extensions.TypedDict imports were removed where the Python floor made stdlib typing.TypedDict available. typing_extensions remains needed for NotRequired until the project can require Python 3.11. (#292)

Minimum cihai~=0.21.0 includes strict typing work and the SQLAlchemy 2.0 migration from the core library.

cihai-cli 0.16.0 (2023-05-29)

cihai-cli 0.16.0 is the final Python 3.7-compatible release and the first release to consolidate linting and formatting on Ruff.

Breaking changes

0.16.0 is the final release that supports Python 3.7.

Development

Formatting, import sorting, and linting moved from isort, flake8, and Black-era tooling to Ruff.

Poetry was bumped from 1.4.0 to 1.5.0.

Minimum cihai~=0.19.0 and unihan-etl 0.19.1 carry the same Ruff migration in the dependency stack.

cihai-cli 0.15.2 (2022-10-02)

cihai-cli 0.15.2 is a maintenance release for the cihai 0.18.x line and docs navigation.

Documentation

The migration page was added, and the completions page link was restored.

Development

Minimum cihai~=0.18.3 (was ~=0.18.1), including unihan-etl 0.18.2 typing updates for merge_dict.

cihai-cli 0.15.1 (2022-10-02)

cihai-cli 0.15.1 fixes CLI help text descriptions.

Fixes

Command help descriptions now render correctly.

cihai-cli 0.15.0 (2022-10-02)

cihai-cli 0.15.0 replaces Click with stdlib argparse. The command names remain focused on character lookup and reverse definition search, but the CLI no longer needs Click at runtime.

Breaking changes

The command-line implementation moved from click to argparse. (#286)

Development

The Click dependency was removed. (#286)

cihai-cli 0.14.0 (2022-10-01)

cihai-cli 0.14.0 follows cihai 0.18.1 and removes the kaptan dependency from the installed stack.

Dependencies

Minimum cihai>=0.18.1; kaptan is no longer installed through the cihai dependency chain.

cihai-cli 0.13.1 (2022-10-01)

cihai-cli 0.13.1 speeds up CI and updates Poetry for the 1.2 dependency constraint model.

Development

Release publishing moved into a separate job so normal CI does not pull the PyPI upload image. CodeQL was also cleaned up. (#285)

Poetry moved from 1.1.x to 1.2.x, including the corrected Click constraint for Poetry 1.2.

cihai-cli 0.13.0 (2022-09-11)

cihai-cli 0.13.0 is a project-structure and documentation-testing release. It moves to a src/ layout, broadens lint coverage, and starts testing docs examples as part of the normal validation path.

Development

The package moved to a src/ layout. (#284)

flake8-bugbear and flake8-comprehensions were added to the lint stack. (#281, #282)

Documentation

The changelog now renders through linkify_issues, table-of-contents rendering was fixed for Sphinx autodoc pages, and docs doctests run through pytest_doctest_docutils. (#283)

cihai-cli 0.12.0 (2022-08-21)

cihai-cli 0.12.0 follows cihai 0.16.0 and the strict typing work in unihan-etl 0.17.x.

Development

Minimum cihai~=0.16.0.

cihai-cli 0.11.0 (2022-08-20)

cihai-cli 0.11.0 restores the separate cihai-cli distribution as the way to install the command-line frontend. This avoids making cihai’s library package carry the CLI extra as the primary install path.

Breaking changes

Install the CLI through cihai-cli again.

Before, cihai 0.9 through 0.14 and cihai-cli 0.5 through 0.10 used the cihai extra:

$ pip install cihai[cli]

After cihai 0.15 and cihai-cli 0.11, install the CLI package directly:

$ pip install cihai-cli

Modern uv workflows can add the CLI to a project:

$ uv add cihai-cli

Install it as a user-wide tool:

$ uv tool install cihai-cli

Or run it on demand:

$ uvx --from cihai-cli cihai --version

See cihai#326 and cihai-cli#279.

cihai-cli 0.10.x (2022-08-20)

cihai-cli 0.10.x removes Python 2 compatibility code left over after the earlier support drop.

Breaking changes

Python 2 compatibility modules and imports were removed. Python 2.x had already been officially dropped in 0.7.0. (#278)

cihai-cli 0.9.0 (2022-08-16)

cihai-cli 0.9.0 updates Python compatibility, adds the first doctest path, and switches the documentation theme to Furo.

Breaking changes

Python 3.6 support was removed. (#269)

What’s new

Python 3.10 support was added. (#269)

Documentation

Doctest support was added, and the docs moved to the Furo theme. (#276)

Development

Poetry was updated to the 1.1 line, CI dependency caching was improved with actions/setup-python, and initial mypy validation was added. (#255, #269, #276)

Tests moved from tmpdir to tmp_path.

cihai-cli 0.8.1 (2021-06-16)

cihai-cli 0.8.1 updates the cihai dependency to 0.12.

Development

Minimum cihai~=0.12.0.

cihai-cli 0.8.0 (2021-06-16)

cihai-cli 0.8.0 converts project documentation to Markdown.

Documentation

The documentation source moved to Markdown. (#252)

cihai-cli 0.7.2 (2021-06-15)

cihai-cli 0.7.2 updates the cihai dependency to fix a SQLAlchemy issue.

Fixes

Minimum cihai>=0.11.1 for the SQLAlchemy fix.

cihai-cli 0.7.1 (2021-06-15)

cihai-cli 0.7.1 fixes README packaging.

Fixes

The README is included correctly in package metadata.

cihai-cli 0.7.0 (2021-06-15)

cihai-cli 0.7.0 removes legacy Python support and updates packaging metadata for the Python 3-only line.

Breaking changes

Python 2.7 and Python 3.5 support were dropped, along with deprecated __future__ imports and modesets. (#251)

Development

Black was updated to 21.6b0, and trove classifiers were updated for Python 3.9.

cihai-cli 0.6.0 (2020-08-09)

cihai-cli 0.6.0 is an infrastructure release for packaging, documentation hosting, and GitHub Actions.

Documentation

The docs became self-hosted and gained site metadata and icons. (#248)

Development

Packaging and publishing moved to Poetry, Travis CI moved to GitHub Actions, and Makefiles were overhauled. (#248, #249)

cihai-cli 0.5.1 (2020-07-03)

cihai-cli 0.5.1 continues the packaging migration and fixes a Python 2 help display bug.

Fixes

Help output works again on Python 2.x.

Development

Project dependency management moved from Pipfile to Poetry. (#247)

cihai-cli 0.5.0 (2019-08-18)

cihai-cli 0.5.0 updates package metadata and relaxes dependency constraints around the then-current cihai[cli] install model.

Development

project_urls were added to setup.py, the README was fixed to use plain reStructuredText, and package requirements were loosened.

The documented install path at the time was:

$ pip --user install cihai[cli]

Pytest and other support packages were updated.

cihai-cli 0.5.0a (2018-09-08)

cihai-cli 0.5.0a improves version reporting.

What’s new

cihai -V and cihai -version now show the cihai backend version. (#91)

cihai-cli 0.4.1 (2018-07-21)

cihai-cli 0.4.1 updates Sphinx and cihai to fix dependency issues around kaptan and PyYAML.

Fixes

Sphinx moved from 1.7.5 to 1.7.6, and cihai moved from 0.8.0 to 0.8.1.

cihai-cli 0.4.0 (2018-06-24)

cihai-cli 0.4.0 improves the default character detail output and modernizes the project’s development stack for the Pipenv era.

What’s new

The info command now includes Vietnamese phonetic data in the default output.

Documentation

Documentation moved to NumPy-style docstrings, and the license was updated from New BSD to MIT. Future commits and contributions are licensed to the cihai software foundation, including commits by Tony Narlock.

Development

Project tooling moved toward Pipenv, with tmuxp config updates, an added Pipfile, new isort/flake8 tests, a make sync_pipfile task, and package updates across Sphinx, pytest, releases, vulture, alagitpull, and lint tooling.

cihai-cli 0.3.2 (2017-05-26)

cihai-cli 0.3.2 bumps the cihai dependency.

Development

Minimum cihai~=0.7.4.

cihai-cli 0.3.1 (2017-05-20)

cihai-cli 0.3.1 bumps the cihai dependency.

Development

Minimum cihai~=0.7.2.

cihai-cli 0.3.0 (2017-05-20)

cihai-cli 0.3.0 shapes the original CLI into the command vocabulary that still matters today: concise character details by default and reverse lookup by term.

Breaking changes

The lookup command was renamed to reverse.

What’s new

The default output now shows human-friendly fields. Use -a or --all to show all fields.

Fixes

Output no longer includes extra newlines, printing uses click.echo, and Unicode handling was fixed for Python 2.7 tests and CLI output.

cihai-cli 0.2.1 (2017-05-20)

cihai-cli 0.2.1 fixes early package and CLI variable issues.

Fixes

CLI variables were adjusted and a package dependency issue was fixed.

cihai-cli 0.2.0 (2017-05-20)

cihai-cli 0.2.0 is the initial project release.

What’s new

Initial command-line frontend for cihai.