Repository navigation
Releases
Hokan 0.1.0
v0.1.0
Hokan 0.1.0 is the first stable release. It includes the command discovery
improvements from beta.17 and strengthens the boundaries between shell editing,
foreground programs, and local filesystem completion.
- Filesystem completion now requires a known local-path argument. Package names,
repository names, image names, expressions, and unknown command arguments no
longer trigger directory scans merely because they contain/or./.
Known file arguments, redirections, and supported local installation paths
retain completion. Native shell Tab remains available when no Hokan list is open. - Each prompt owns its completion tasks, AI results, pending Tab actions, and
confirmations. Results from an earlier prompt cannot act on a later one, and
foreground confirmation input stays with the running program. - Delayed terminal color replies are tracked across program exit, including
fragmented headers, so recognized replies do not become shell input within
the two-second grace period. Active programs still receive their replies. - Missing or misspelled paths offer explicit repairs and readable parent paths.
Accepting a repair only fills the command; it never creates a directory or
executes the corrected command. - Command-help probes use the interactive shell's PATH, including script
interpreters and helpers. Cached help is refreshed when PATH or the executable
changes. - Duplicate shell start notifications are handled without disrupting command
history. Recoverable protocol diagnostics stay in opt-in debug logs. - Dependencies have been refreshed within the Rust 1.96 compatibility boundary.
发布后的默认更新渠道为 stable。已有 beta 用户可运行:
hokan upgrade --channel stable --yesRestart Hokan after upgrading. Existing configuration and history are retained.
Unknown command arguments no longer receive speculative filesystem candidates;
define an explicit path argument contract when adding support for a new command.
macOS and Linux automated checks cover shell/PTY behavior, release-mode tests,
formatting, Clippy, packaging, and dependency policy. Terminal-application,
theme, remote-SSH, and hardware certification remains limited to the evidence in
the compatibility matrix.
Publishing a stable version does not mark pending combinations as certified.
Release assets include macOS and Linux archives for x86_64 and aarch64, SPDX
SBOMs, SHA-256 checksums, and an Ed25519 signature verified against the updater's
pinned public key.
v0.1.0-beta.17
v0.1.0-beta.17
This beta improves command discovery across CLI help formats and adds a shared
regression corpus covering 15 applications, rather than special-casing AIPass.
- Recommend documented commands even when their descriptions are empty. This
fixes AIPass command groups and Codex MCP subcommands, among other CLIs. - Recognize single-space description columns, long command names, nested command
categories, ANSI colors, and OSC hyperlinks. Deno, GitHub CLI, and Swift
examples are included in the regression corpus. - Keep an indented
usagecommand separate from the help's usage heading, and
avoid treating category headings or description continuations as commands. - Merge complementary help probes. Cargo's
--listdiscovers installed
extensions omitted from its root help while preserving flags and aliases.
Explicitly abbreviated command tables no longer reject undocumented commands
in history as if the table were exhaustive. - Keep all discovered Python module recommendations instead of silently stopping
at 500. An explicitcompletion.max_candidateslimit still applies globally. - Allow background help probes up to 1200 ms for cold CLIs; completion queries
continue without waiting for these subprocesses.
The shared fixtures cover 32 help samples and 785 expected recommendations from
AIPass, Cargo, rustup, uv, GitHub CLI, Docker CLI, Go, npm, pnpm, Bun, Deno,
Codex CLI, Claude Code, RTK, and Swift. This validates the documented samples;
undocumented commands and unrecognized help layouts can still require specs.
Real-terminal certification remains subject to the compatibility matrix.
本次 beta 改善通用 CLI 命令发现,覆盖空描述、单空格列、长名称、命令分组及彩色帮助,
并补齐 Cargo 已安装扩展命令,移除 Python 模块推荐的 500 项隐藏上限。
共享回归样本覆盖 15 个应用、32 份帮助输出和 785 项预期推荐;不扩大真实终端认证声明。
Update an existing beta installation with:
hokan upgrade --channel beta --yesRestart Hokan after upgrading to use the new binary.
v0.1.0-beta.16
v0.1.0-beta.16
This beta expands completion lists, fixes cyclic navigation and selection
stability, and authenticates updates with signed release checksums. It also
includes the history and Zsh fixes prepared for beta.15, which was not published.
- Completion lists have no candidate-count limit by default. PATH commands,
command help, and history no longer stop at hidden 1000, 200, or 50-entry caps.
Every applicable provider can finish and contribute incremental results. - Built-in command specifications are supplemented by help and man-page results.
Typing an exact executable or subcommand still shows longer matching names;
useful continuations of the exact command retain priority. - Arrow and page keys wrap through the full list. Initial Page Down selects the
first page, and Page Up selects the last page. Selection remains on the same
command when a later provider replaces a duplicate suggestion. - History navigation handles repeated keys while results load. Zsh clears stale
inline suggestions after a completion is accepted. - The updater verifies an Ed25519 signature on
SHA256SUMSbefore downloading
the archive, then verifies its SHA256 before installation. Releases include
SHA256SUMS.sigalongside all four platform archives and SPDX SBOMs. - Failed GitHub update requests can fall back to HTTPS relays. Set
HOKAN_UPDATE_MIRRORSto customize relay templates, or set it to an empty
string to disable them. All update sources use the same pinned signing key;
--forcecannot bypass verification or allow a downgrade. - Large completion, history, help-parser, and terminal-test files are split into
smaller modules without changing their public interfaces.
Existing configurations with a positive completion.max_candidates keep that
limit. Set max_candidates = 0 under [completion] to show all matching results;
ui.max_rows continues to control only the visible list height.
Real-terminal certification remains subject to the
compatibility matrix.
This beta does not expand those certification claims.
Update an existing beta installation with:
hokan upgrade --channel beta --yesRestart Hokan after upgrading to use the new binary. Older clients can upgrade
directly to this first signed release; this release cannot reinstall unsigned
historical releases.
Release validation
- Native macOS: formatting, all-target checks, Clippy, debug and release tests, release build, Cargo audit, dependency policy, and source packaging passed. The release suite passed 952 tests with 3 intentionally ignored, including all 71 PTY tests.
- Candidate CI: Linux and macOS tests, current stable Rust, and supply-chain checks passed.
- Release workflow: all four platform builds and publication passed. Downloaded assets passed Ed25519 and SHA256 verification, archive-layout checks, and binary-to-SBOM checksum checks.
- Published Apple Silicon macOS binary: version, doctor JSON, specification validation, and temporary Zsh/Bash/Fish install, backup, idempotence, setup alias, and uninstall checks passed.
- Isolated beta.14-to-beta.16 upgrade, binary backup, signed reinstall, and an uncached automatic update check passed against the published release.
- Physical-terminal certification remains limited to the compatibility matrix linked above.
v0.1.0-beta.14
v0.1.0-beta.14
This beta fixes background stripes left behind when closing or moving completion
overlays containing Chinese and other wide characters.
- Overlay cleanup now explicitly clears every column occupied by a wide glyph,
including its continuation cells, while preserving replacement shell text. - Directory errors appear in a compact notice with the cause and recovery
guidance before the path. Long messages wrap within the notice, and normal
completion returns when the path is corrected. - HTTP clients honor system proxy settings and support SOCKS proxies alongside
the standard proxy environment variables. - Update checks explain GitHub API rate limits and the retry time instead of
reporting a generic HTTP failure.
Real-terminal certification remains subject to the
compatibility matrix;
this beta does not expand those certification claims.
Existing beta users can update with:
hokan upgrade --channel beta --yesRestart Hokan after upgrading to use the new binary.
v0.1.0-beta.13
v0.1.0-beta.13
This beta reduces completion work during rapid typing and keeps the suggestion
list steadier while providers and shell redraws catch up.
- Completion sources now share cumulative ranking work at approximately one
frame per update. The first usable batch stays immediate, the final batch
includes all collected candidates, and unread results are replaced by the
newest batch. Suppressed queries cancel queued provider work. - Refreshing a visible list briefly coalesces partial results instead of
repeatedly shrinking and expanding its rows. Empty intermediate batches
preserve the visible list; only the final result closes an empty list.
Existing buffer checks continue to reject stale candidate activation. - Closing an empty list also discards queued frames, preventing old rows from
reappearing. Frames invalidated by intervening shell output are retried until
committed, even when no further provider result arrives. - Shell output that can scroll the screen erases the overlay before forwarding
those bytes, preventing suggestion cells from leaking into scrollback. - Git recommendations chosen from repository state retain their priority when
generic command help finishes loading, keepinggit initandgit clone
visible outside a repository. - Installation checks Nerd Font availability and installs the pinned,
checksum-verified Symbols-Only fonts into the user font directory when local
coverage is missing. Remote sessions keep font setup on the client terminal. - The TLS dependencies are updated to rustls 0.23.45 and rustls-webpki 0.103.15,
addressing RUSTSEC-2026-0285. - Selecting a
cdsuggestion with Enter now changes directory immediately;
Tab continues to insert it. This behavior is configurable. - Terminal titles follow the foreground program and return to the shell title
when it exits, while preserving titles set by applications themselves. - Update checks continue during long-running sessions. Manual and automatic
updates follow the installed binary's channel, ignore legacy channel pins,
and leave the current installation unchanged when a channel has no releases. - Installation and upgrades validate writable directories, reject unsafe local
files, serialize replacement, and preserve a backup of the previous binary.
In a local macOS release-mode benchmark with eight synthetic sources and 64
candidates per source, median completion pipeline time decreased from 2.73 ms
to 0.73 ms, and emitted batches per query decreased from eight to two. This
measures collection and ranking, not terminal transport or end-to-end input
latency. The repeatable benchmark is tests/completion_performance.rs.
Real-terminal certification remains subject to the
compatibility matrix; this beta does not expand those
certification claims.
Existing beta users can update with:
hokan upgrade --channel beta --yesAutomatic updates take effect on the next Hokan launch.
v0.1.0-beta.12
v0.1.0-beta.11
v0.1.0-beta.10
v0.1.0-beta.10
This beta fixes recommendation and terminal interaction races, and repairs
self-updates against the actual release archives.
- Keep dismissed suggestions closed until input changes or the list is reopened.
- Preserve meaningful quoted, escaped, multiline, and Unicode whitespace in
history and completion filtering. - Reuse substring-search state and avoid UTF-8 decoding for ASCII fuzzy
queries when scanning large histories, while preserving Unicode matching. - Require confirmation when a known high-risk operation appears alongside
syntax whose risk cannot be determined. - Reject stale cursor reports and restore terminal input modes correctly when
a command is queued before the initial prompt. - Finish outstanding cursor queries before restoring terminal modes on exit,
with a bounded wait for terminals that do not respond. - Make release archives readable by both existing updaters and the installer.
- Stage updates beside the executable, serialize concurrent installs, preserve
the original backup, and verify the exact reported program version. - Default new beta installations to the beta update channel, preserve explicit
channel settings, respect automatic-update opt-outs, and throttle failed
background retries as well as successful checks. - Publish releases only after all archives, checksums, and SBOMs are uploaded.
- Fix flaky terminal fixtures and update the withdrawn chacha20 dependency.
Existing beta users whose configuration explicitly tracks stable can switch once:
hokan upgrade --channel beta --yesAutomatic updates run silently when a Hokan session starts, at most once per
configured interval (30 minutes by default). The next launch uses the updated
binary. Set [update].enabled = false or HOKAN_NO_AUTO_UPDATE=1 to disable them.
If an older updater cannot replace an installation whose cache is on a different
disk, rerun the beta installer documented in the README to obtain this fix.