Entwickler

Mitmachen

Branches und Pull Requests, Code-Regeln, Tests, der Changelog auf Englisch und Deutsch und die Lizenz GPL-3.0.

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

BranchEnthält
mainDen Launcher (app/, src-tauri/) und den TRS Client (client-mod/). Releases werden von hier als v… getaggt.
websiteDie 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

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 aus errors.<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/common und 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 in crash/fixtures/, einen Test und die Texte crashHelper.findings.<kind>.<variant> in den Sprachdateien.
  • TRS Client: Unit-Tests in client-mod/common, zum Beispiel I18nTest.

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.

Committe keine Geheimnisse, API-Schlüssel oder .env-Dateien. Der CurseForge-Schlüssel und die Signaturschlüssel werden nur aus der Umgebung oder aus Dateien außerhalb des Repositorys gelesen.