Desarrolladores

Contribuir

Ramas y pull requests, reglas del código, pruebas, el changelog en inglés y alemán y la licencia GPL-3.0.

Las contribuciones son bienvenidas: correcciones, funciones, traducciones y documentación. Esta página explica cómo está organizado el proyecto y qué necesita un pull request.

Antes de empezar

Ramas y pull requests

RamaContiene
mainEl launcher (app/, src-tauri/) y el TRS Client (client-mod/). Las versiones se etiquetan aquí como v….
websiteLa web y la API de TRS (api/).

Crea una rama

Haz un fork del repositorio y crea una rama desde main, o desde website si cambias la web o la API.

Haz tu cambio

Limita cada pull request a un tema. Escribe los mensajes de commit en inglés.

Ejecuta las comprobaciones

Ejecuta las comprobaciones de abajo para la parte que cambiaste. Para el launcher, la CI también las ejecuta en cada pull request. Arregla todo antes de pedir una revisión.

Abre el pull request

El destino es la rama desde la que empezaste. Describe qué cambia para los jugadores y cómo lo probaste.

Comprobaciones

pnpm typecheck
pnpm test
pnpm generate
cd src-tauri
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

Los avisos de Clippy cuentan como errores. La CI del launcher se ejecuta en Windows y Linux.

Cómo está hecho el código

El launcher sigue unas pocas reglas. Respétalas, por favor.

  • La lógica vive en trs-core (src-tauri/crates/core). La capa de Tauri se mantiene fina y el núcleo comprueba cada entrada por sí mismo.
  • El webview no tiene permisos de sistema de archivos, red ni shell. Todo pasa por comandos propios, con una Content Security Policy estricta.
  • A la interfaz solo llegan un código de error fijo y un mensaje legible. Las rutas, las URL y las cadenas de errores van al registro. Los errores del núcleo se crean con un código de traducción, por ejemplo msg!("settings.memoryRange", "…", min = 512, max = 4096); la interfaz muestra el texto de errors.<code>.
  • Nada de texto fijo en la interfaz. Cada texto es una clave en los archivos de idioma (mira Traducir). Las claves están tipadas, así que una errata hace fallar la comprobación de tipos.

Para el TRS Client:

  • La lógica común va en client-mod/common y se queda en Java 8, porque se compila en cada versión.
  • El código específico de cada versión está en pocos sitios y se escribe con comentarios de Stonecutter (mira client-mod/README.md).
  • Juego limpio: sin cambios de alcance ni de hitboxes, sin autoclic, y el minimapa solo muestra chunks cargados, sin vista de cuevas.

Pruebas

Añade pruebas para la lógica nueva:

  • Frontend: archivos de Vitest en tests/.
  • Rust: pruebas unitarias junto al código; se ejecutan con cargo test --workspace.
  • Asistente de errores: una regla nueva necesita una función en crash/rules.rs, un registro de ejemplo en crash/fixtures/, una prueba y los textos crashHelper.findings.<kind>.<variant> en los archivos de idioma.
  • TRS Client: pruebas unitarias en client-mod/common, por ejemplo I18nTest.

Changelog

Cada cambio que noten los jugadores lleva una entrada en CHANGELOG.md, en inglés y alemán. Recógela bajo ## 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.
  • Los dos idiomas tienen los mismos puntos.
  • Escribe para jugadores, no para desarrolladores: qué cambia para ellos, con palabras sencillas y sin nombres de archivos ni de funciones.
  • El build de publicación copia la sección en la versión de GitHub y en el diálogo «Novedades de la versión …» que muestra el launcher tras actualizar. Falla si falta un idioma.

Licencia

El TRS Launcher y el TRS Client están bajo la GNU General Public License v3.0 (GPL-3.0-only). Al contribuir, aceptas que tu aportación se publique bajo la misma licencia.

No subas secretos, claves de API ni archivos .env. La clave de CurseForge y las claves de firma solo se leen del entorno o de archivos fuera del repositorio.