Ralph Desktop is a Tauri 2.x + Svelte 5 desktop app for orchestrating CLI coding agents (Claude Code/Codex/OpenCode).
src/: Svelte frontend (components, stores, services, routes)src-tauri/: Rust backend (commands, engine, adapters, storage)
- Frontend dev:
pnpm dev - Tauri dev:
pnpm tauri dev - Frontend checks:
pnpm check - Rust tests:
cargo test(run insidesrc-tauri)
- Keep UI aligned to the VS Code Dark Modern style (use the existing
bg-vscode-*,text-vscode-*,border-vscodeutility classes). - All user-facing strings should use
svelte-i18nkeys fromsrc/lib/i18n/locales. - When adding or updating i18n keys, update all locales and use the system-installed Codex CLI to generate translations.
- Brainstorm flow is AI-driven only; avoid re‑introducing preset/questionnaire flows unless explicitly requested.
- App data lives under
~/.ralph-desktop/(config, projects, logs).
- Keep versions in sync across
package.jsonandsrc-tauri/tauri.conf.json. - Use
scripts/bump-version.mjswhen updating release versions.
package.json: name = ralph-desktop, version = 0.1.1src-tauri/tauri.conf.json: version = 0.1.1src-tauri/Cargo.toml: name = ralph-desktop, version = 0.1.1, authors = 刘小排src-tauri/Cargo.lock: sync via cargo build/check after Cargo.toml changes
src-tauri/src/main.rsmust referenceralph_desktop_libafter renaming the crate.src-tauri/Cargo.lockshould be regenerated after Cargo.toml changes (run cargo check/build).- Release requirement docs mention v0.1.0 intentionally; update only when bumping release docs.
- Headless webview E2E runs via
pnpm test:e2e(uses Playwright). - E2E mode is enabled with
VITE_E2E=1and uses mocked tauri services. - CLI coverage runs sequentially: Codex then Claude (override with
--cli). - E2E temp paths use
/tmp/ralph-e2e-*and artifacts go to./artifacts/e2e/. - Set
E2E_HOST/E2E_PORTif needed; default host islocalhost. ./artifactsis gitignored; keep temporary outputs out of version control.