Skip to content

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:

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.

More developer docs