| --- |
| title: Primeiros Passos |
| --- |
| |
| # Primeiros Passos |
|
|
| ## Clonar o Repositório |
|
|
| ```bash |
| git clone https://github.com/mayocream/koharu.git |
| cd koharu |
| ``` |
|
|
| ## Pré-requisitos |
|
|
| - [Rust](https://www.rust-lang.org/tools/install) 1.95 ou mais recente (Rust 2024 edition) |
| - [Bun](https://bun.sh/) 1.0 ou mais recente |
|
|
| ### Windows |
|
|
| - Visual Studio C++ build tools |
| - [CUDA Toolkit 13.0](https://developer.nvidia.com/cuda-13-0-0-download-archive) para builds CUDA |
| - [AMD HIP SDK](https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html) para ZLUDA |
|
|
| ### macOS |
|
|
| - Xcode Command Line Tools (`xcode-select --install`) |
|
|
| ### Linux |
|
|
| - Toolchain C/C++ da distro (`build-essential` ou equivalente) |
| - [LLVM](https://llvm.org/) 15 ou mais recente para builds com aceleração GPU |
|
|
| ## Instalar Dependências |
|
|
| ```bash |
| bun install |
| ``` |
|
|
| A toolchain Rust é resolvida automaticamente a partir do `rust-toolchain.toml` no primeiro build. |
|
|
| ## Executar Localmente |
|
|
| ```bash |
| bun run dev |
| ``` |
|
|
| Isso inicia o app Tauri em modo dev contra a UI empacotada. |
|
|
| ## Build de Release |
|
|
| ```bash |
| bun run build |
| ``` |
|
|
| Os binários ficam em `target/release-with-debug/` ou `target/release/` dependendo do profile. |
|
|
| ## Comandos do Dia a Dia |
|
|
| Sempre use `bun cargo` para comandos Rust — é assim que as feature flags de plataforma (CUDA, Metal, Vulkan) são aplicadas corretamente. |
|
|
| ```bash |
| bun cargo check # verificação de tipos |
| bun cargo clippy -- -D warnings # lint |
| bun cargo fmt -- --check # checagem de formatação |
| bun cargo test --workspace --tests # testes unitários e de integração |
| ``` |
|
|
| Formatação de UI e configs usa [oxfmt](https://github.com/oxc-project/oxfmt): |
|
|
| ```bash |
| bun run format |
| bun run format:check |
| ``` |
|
|
| Testes unitários da UI: |
|
|
| ```bash |
| bun run test:ui |
| ``` |
|
|
| ## Trabalho com ML |
|
|
| Ao iterar em `koharu-ml` ou `koharu-llm`, habilite o backend que bate com a sua máquina: |
|
|
| ```bash |
| # Windows / Linux com NVIDIA |
| bun cargo test -p koharu-ml --features=cuda |
| |
| # macOS (Apple Silicon) |
| bun cargo test -p koharu-ml --features=metal |
| ``` |
|
|
| Detalhes da seleção de backend estão em [Aceleração e Runtime](../explanation/acceleration-and-runtime.md). |
|
|
| ## Documentação |
|
|
| A documentação mora em `docs/en-US/`, `docs/ja-JP/`, `docs/zh-CN/` e `docs/pt-BR/`. Construa cada locale que você editou: |
|
|
| ```bash |
| zensical build -f docs/zensical.toml -c |
| zensical build -f docs/zensical.ja-JP.toml |
| zensical build -f docs/zensical.zh-CN.toml |
| zensical build -f docs/zensical.pt-BR.toml |
| ``` |
|
|
| Ao adicionar uma página nova, registre-a na nav do `zensical*.toml` correspondente. |
|
|
| ## Antes de Abrir um PR |
|
|
| Rode só as checagens que batem com o que você mudou. Não precisa rodar tudo em todo PR. |
|
|
| - **Mudanças em Rust** — `bun cargo fmt -- --check`, `bun cargo check`, `bun cargo clippy -- -D warnings`, `bun cargo test --workspace --tests` |
| - **Mudanças na UI** — `bun run format`, `bun run test:ui` |
| - **Integração desktop** — `bun run build` |
| - **Docs** — compile cada locale que você editou |
|
|
| ## Expectativas de PR |
|
|
| - **Um objetivo por PR.** Correção de bug *ou* refactor *ou* feature nova — não tudo junto. |
| - **Siga os padrões existentes.** Se o arquivo já tem uma convenção, combine com ela. |
| - **Descreva o que mudou e como verificou.** Screenshots ou clipes curtos para UI; before/after para pipeline. |
| - **Sem shims de retrocompatibilidade.** Substitua o código antigo no lugar — nada de pastas `v2/` nem aliases deprecated. |
| - **Sem refactors oportunistas.** Se achou algo a limpar sem relação, abra um PR separado. |
|
|
| PRs pequenos e focados são revisados mais rápido do que PRs grandes e misturados. |
|
|
| ## Páginas Relacionadas |
|
|
| - [Build a Partir do Código-fonte](../how-to/build-from-source.md) |
| - [Executar nos Modos GUI, Headless e MCP](../how-to/run-gui-headless-and-mcp.md) |
| - [Solução de Problemas](../how-to/troubleshooting.md) |
|
|