Skip to content

Latest commit

 

History

History
62 lines (47 loc) · 2.69 KB

CONTRIBUTING.md

File metadata and controls

62 lines (47 loc) · 2.69 KB

Contributing to HiRoute

HiRoute accepts issues and pull requests through higress-group/HiRoute. Please search existing issues before opening a new one and keep each pull request focused on one coherent change.

Use the code map to find each capability's production owner and representative tests. Read tests as product documentation before reorganizing coverage; preserve unique failure assertions while reducing coupling to internal file layout.

Development environment

The Rust version is pinned by rust-toolchain.toml. The Desktop UI uses Node.js 24 and npm; the website uses Node.js 22 and npm. Install the native packages listed in .github/actions/ci-setup/action.yml when building the backend on Debian or Ubuntu.

Common checks are:

cargo fmt --check
cargo clippy --locked --workspace --exclude hiroute-desktop --all-targets --all-features -- -D warnings
cargo test --locked --workspace --exclude hiroute-desktop --all-features

cd apps/desktop
npm ci --ignore-scripts
npm run build
npm test

cd ../website
npm ci --ignore-scripts
npm test
npm run build

Run the checks relevant to your change before opening a pull request. Native macOS Desktop behavior and real-provider integration require their respective environments; describe any such checks that you could not run.

Language boundaries

English is the default language for source comments, GitHub metadata, and Markdown files without a language suffix. Put a Simplified Chinese translation in a sibling *.zh-CN.md file and keep links within the reader's current language whenever a translated page exists. Label each language switch in the target language: use 简体中文 from English and English from Chinese. Website guide sources use the existing *.en.md and *.zh.md convention.

Desktop and website components may contain both locales in source, but every user-visible sentence must be selected by the active locale; do not leave English decorative copy on a Chinese page or Chinese fallback copy on an English page. Product names, protocol names, commands, paths, code, API fields, and model/provider identifiers remain unchanged. Synthetic multilingual fixtures are allowed when they test Unicode or localized behavior.

Internal issue specifications, handoffs, and workflow instructions are outside this public-language boundary.

Do not commit API keys, account data, real conversation content, diagnostic archives, or machine-specific configuration. Use synthetic fixtures in tests. Security issues and crash reports follow SECURITY.md.

By contributing, you agree that your contribution is licensed under Apache License 2.0.