Release Notes
🎉 First minor since v1.0 — and the first release with a proper home on the web. https://cha.to01.icu is now a real product page, not just a README dump. Star the repo, share the link, and tell your linter Cha said hi.
The analyzer itself didn't move — every --version-visible behavior is identical to v1.19.0. What landed is the documentation, presentation, and integration story: somewhere we can actually point new users.
Added
- Bilingual documentation site at https://cha.to01.icu — landing page (oranda) plus a full mdbook tree at
/book/(English) and/book/zh-CN/(中文). 60+ pages covering install, quick-start, every CLI subcommand, every output format, LSP integration for VS Code / Helix / Neovim / Zed, configuration reference, JSON Schema, plugin development, six worked recipes (migrate from clippy, monorepo CI, suppress in legacy code, custom plugin in 50 lines, calibrate to your codebase, baseline workflow), three contributor guides (architecture, writing a smell, releasing), and an academic-references page tracing every smell back to its source. - Cookbook recipes — six task-oriented walkthroughs:
migrate-from-clippy,monorepo-ci,suppress-legacy,custom-plugin-50loc,calibrate,baseline. Each starts with a problem statement and ends with copy-pasteable commands. Authored in English and Chinese (the Chinese versions are written natively, not translated, so the prose style matches the rest of zh-CN). - Contributor guides —
contributing/architecture.mddocuments the seven-crate workspace and data flow with mermaid diagrams;writing-a-smell.mdwalks throughMiddleManAnalyzeras the worked example;releasing.mdis the runbook forcargo xtask bump→release. - Configuration reference — every
.cha.tomlkey, grouped by plugin, with thresholds and defaults sourced fromcha-core/src/plugins/. JSON Schema reference page documentingcha schemaoutput and how to wire it into IDEs. - Bilingual landing page (
LANDING.md) — hero with logo + tagline + three CTAs, six feature cards (detectors, WASM SDK, LSP, git-aware analysis, output formats, two-level cache), 30-second get-started block, smell-category table, and editor integration links. Replaces the previous "README dumped into the homepage" experience. - CJK-aware search via Pagefind 1.4 — replaces mdbook's bundled elasticlunr (which silently dropped non-ASCII tokens, leaving the zh-CN tree un-searchable). Press
sor/on any docs page to open a modal that indexes both language trees. - Per-page social meta + branded OG card — every page emits
og:title/og:image/twitter:cardso Slack / iMessage / 微信 link previews show a real card instead of a 32×32 favicon. The 1200×628 card embeds the Cha logo and is regenerable viapython3 static/gen_og_card.py. - Custom 404 page — site-wide warm-themed 404 with the Cha logo and shortcuts back into the live parts of the site, replacing GitHub Pages' generic gray 404.
- Language switcher in mdbook header — the toolbar globe icon switches between EN and zh-CN trees and remembers per-page equivalents.
xtask docs-check— verifies every page referenced inbook/src(-zh-CN)/SUMMARY.mdactually exists; runs as part ofcargo xtask ciso a broken SUMMARY can't ship.xtask i18n-check— flags zh-CN pages whose git ctime trails their English counterpart, surfacing translation drift.xtask docgen-cli— generatesbook/src/reference/cli-manual.mdfromcha help-markdownso the CLI manual page in docs always matches the binary's actual--help. Hiddencha help-markdownsubcommand added for this.- VS Code extension page — full inventory of what each LSP capability looks like inside VS Code (wavy underlines, lightbulbs, code-lens overlays, inlay hints, hover cards, semantic-token modifier, status-bar workspace scan progress) plus the
cha.disabledPluginssetting documentation.
Fixed
- tree-sitter S-expression query link — the link in
docs/plugin-development.mdand the zh-CN translation pointed at/syntax-highlighting/queries, which 404s on the current tree-sitter docs site. Updated to/using-parsers/queries/. docs/plugin-development.mdFunctionInfo/ClassInfofield tables — were bare struct dumps; now per-field semantic tables (type + what each field actually drives) for both languages.- README plugin table — every entry now has an anchor link into
docs/plugins.md's detailed description, in bothREADME.mdandREADME.zh-CN.md. The previousUnstableDependencyrow (which never matched a real detector) was removed andasync_callback_leakadded.
Changed
- Project homepage —
https://cha.to01.icuis the canonical entry point. README still works on github.com but now points at the docs site for anything beyond the quick-start. - CI — the
Webworkflow builds the EN tree via oranda, re-builds the zh-CN tree via mdbook withMDBOOK_BOOK__SRC=src-zh-CN, indexes both with Pagefind, and restorespublic/CNAME+ dropspublic/404.htmlafter oranda's clean. Deploys viaJamesIves/github-pages-deploy-action@v4.6.4.
Notes for upgraders
Nothing to do. cha analyze produces the same output, .cha.toml accepts the same keys, every CLI flag still works. This is a documentation release: the binary moves from "had a single README" to "had a 60-page bilingual docs site" without changing anything you'd notice from the terminal.
If you want to celebrate by reading something other than --help: https://cha.to01.icu.
Install cha-cli 1.20.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/W-Mai/Cha/releases/download/v1.20.0/cha-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/W-Mai/Cha/releases/download/v1.20.0/cha-cli-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install W-Mai/cellar/cha-cliDownload cha-cli 1.20.0
| File | Platform | Checksum |
|---|---|---|
| cha-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| cha-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| cha-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| cha-cli-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| cha-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| cha-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| cha-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |