Mitmachen
Beiträge sind willkommen – Bugfixes, Features, Übersetzungen und Doku. Diese Seite erklärt, wie das Projekt aufgebaut ist und was ein Pull Request braucht.
Bevor du anfängst
- Schau in den Issue-Tracker und auf die Roadmap. Vielleicht arbeitet schon jemand daran.
- Bei größeren Änderungen leg zuerst ein Issue an oder frag auf Discord, damit die Arbeit zum Plan passt.
- Richte deine Umgebung ein, wie in Aus dem Quellcode bauen beschrieben.
Branches und Pull Requests
| Branch | Enthält |
|---|---|
main | Den Launcher (app/, src-tauri/) und den TRS Client (client-mod/). Releases werden von hier als v… getaggt. |
website | Die Website und die TRS-API (api/). |
Branch anlegen
Forke das Repository und leg einen Branch von main an – oder von website, wenn du die Website oder die API
änderst.
Änderung machen
Halte einen Pull Request bei einem Thema. Schreib Commit-Nachrichten auf Englisch.
Prüfungen ausführen
Führ die Prüfungen unten für den Teil aus, den du geändert hast. Für den Launcher laufen sie außerdem bei jedem Pull Request in der CI. Behebe alles, bevor du um ein Review bittest.
Pull Request öffnen
Ziel ist der Branch, von dem du gestartet bist. Beschreib, was sich für Spieler ändert und wie du es getestet hast.
Prüfungen
pnpm typecheck
pnpm test
pnpm generate
cd src-tauri
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cd client-mod
./gradlew build
cd api
pnpm typecheck && pnpm lint && pnpm test
Clippy-Warnungen zählen als Fehler. Die CI des Launchers läuft unter Windows und Linux.
Wie der Code aufgebaut ist
Der Launcher folgt ein paar Regeln. Bitte halte dich daran.
- Die Logik steckt in
trs-core(src-tauri/crates/core). Die Tauri-Schicht bleibt dünn, und der Kern prüft jede Eingabe selbst. - Das Webview bekommt keine Rechte für Dateisystem, Netzwerk oder Shell. Alles läuft über eigene Befehle, unter einer strengen Content Security Policy.
- Nur ein fester Fehlercode und eine lesbare Meldung erreichen die Oberfläche. Pfade, URLs und Fehlerketten gehen
ins Log. Fehler im Kern entstehen mit einem Übersetzungscode, zum Beispiel
msg!("settings.memoryRange", "…", min = 512, max = 4096); die Oberfläche zeigt den Text auserrors.<code>. - Kein fest eingebauter Text in der Oberfläche. Jeder Text ist ein Schlüssel in den Sprachdateien (siehe Übersetzen). Die Schlüssel sind typisiert, Tippfehler lassen die Typprüfung scheitern.
Für den TRS Client:
- Gemeinsame Logik gehört nach
client-mod/commonund bleibt Java 8, weil sie in jede Version kompiliert wird. - Versionsabhängiger Code steht an wenigen Stellen und wird mit Stonecutter-Kommentaren geschrieben (siehe
client-mod/README.md). - Fair Play: keine Änderung von Reichweite oder Hitboxen, kein Auto-Klicken, und die Minimap zeigt nur geladene Chunks, ohne Höhlenansicht.
Tests
Schreib Tests für neue Logik:
- Frontend: Vitest-Dateien in
tests/. - Rust: Unit-Tests neben dem Code; ausführen mit
cargo test --workspace. - Absturz-Helfer: Eine neue Regel braucht eine Funktion in
crash/rules.rs, ein Beispiel-Log incrash/fixtures/, einen Test und die TextecrashHelper.findings.<kind>.<variant>in den Sprachdateien. - TRS Client: Unit-Tests in
client-mod/common, zum BeispielI18nTest.
Changelog
Jede Änderung, die Spieler bemerken, bekommt einen Eintrag in CHANGELOG.md, auf Englisch und Deutsch. Sammle ihn
unter ## Unreleased:
## Unreleased
### English
- **Log search.** The log view now finds text in folded stack traces too.
### Deutsch
- **Log-Suche.** Die Log-Ansicht findet Text jetzt auch in eingeklappten Stacktraces.
- Beide Sprachen haben dieselben Punkte.
- Schreib für Spieler, nicht für Entwickler: was sich für sie ändert, in einfachen Worten, ohne Datei- oder Funktionsnamen.
- Der Release-Build übernimmt den Abschnitt in das GitHub-Release und den Dialog „Neu in Version …“, den der Launcher nach einem Update zeigt. Fehlt eine Sprache, schlägt er fehl.
Lizenz
Der TRS Launcher und der TRS Client stehen unter der GNU General Public License v3.0 (GPL-3.0-only). Mit deinem Beitrag stimmst du zu, dass er unter derselben Lizenz veröffentlicht wird.
.env-Dateien. Der CurseForge-Schlüssel und die Signaturschlüssel
werden nur aus der Umgebung oder aus Dateien außerhalb des Repositorys gelesen.Aus dem Quellcode bauen
Node, pnpm und Rust einrichten, den Launcher im Dev-Modus starten, die Prüfungen ausführen, Installer bauen und die TRS-Client-Mod bauen.
Übersetzen
Wie die Übersetzungen von Launcher, TRS Client, Website und dieser Doku aufgebaut sind und wie du eine Sprache verbesserst oder hinzufügst.