Developer guide¶
RimLoc is a Rust localization core/services stack with a Tauri 2 desktop application.
Current architecture¶
source
↓
LocalizationAdapter
↓
canonical project / SourceEntry inventory
↓
translations · revisions · TM · glossary · validation
↓
rimloc-services
↓
RimLocClient / CLI
↓
React desktop / automation / future integrations
Key directories:
crates/— Rust domain/core/services/adapters/import/export/CLI;gui/tauri-app/frontend-react/— intended production React frontend;gui/tauri-app/frontend-v2/— frozen Svelte fallback;gui/tauri-app/src-tauri/— Tauri bridge/config;docs/— canonical MkDocs sources;test/,testlab/— fixtures and acceptance infrastructure.
Read AGENTS.md before agent-driven repository changes.
Rust checks¶
cargo build --workspace
cargo test --workspace
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
Some desktop/Linux builds need Tauri/WebKit/GTK system packages; CI keeps GUI-specific dependencies in the GUI job.
React frontend¶
cd gui/tauri-app/frontend-react
npm ci
npx tsc --noEmit
npm run build
Run Tauri with the React config:
cd ../src-tauri
cargo tauri dev --config tauri.react.conf.json
The Svelte fallback is intentionally frozen during convergence; do not modify it casually.
CLI¶
cargo run -p rimloc-cli -- --help
cargo run -p rimloc-cli -- scan --root ./test/TestMod --format json
cargo run -p rimloc-cli -- validate --root ./test/TestMod
PO commands are interchange adapters, not the canonical project architecture.
Adding a localization adapter¶
Start with Localization Adapters and the deeper architecture document.
The important rule: environment/game semantics stay in the adapter. Generic project/TM/glossary/editor behavior stays generic.
Documentation¶
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-docs.txt
mkdocs build --strict
The documentation site is the canonical public documentation source. GitHub Wiki is intentionally not used as a second technical source of truth.
Security-sensitive changes¶
Changes involving filesystem writes, Tauri permissions/IPC, network/provider credentials, shell execution, parsing untrusted input, or automation bridges need explicit security review and adversarial tests.
See:
- SECURITY.md
docs/security/deny.toml
CI / releases¶
CI is intended to validate current Rust + React code while avoiding unnecessary runner use for docs-only changes.
Release publication is currently controlled/manual during pre-beta. Do not create tags, publish crates, sign/notarize, or create a GitHub Release unless the owner explicitly requests a release operation.