Contribuir
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
- Mira el gestor de incidencias y la hoja de ruta. Quizá alguien ya esté en ello.
- Para cambios grandes, abre primero una incidencia o pregunta en Discord, para que el trabajo encaje con el plan.
- Prepara tu entorno como se describe en Compilar desde el código.
Ramas y pull requests
| Rama | Contiene |
|---|---|
main | El launcher (app/, src-tauri/) y el TRS Client (client-mod/). Las versiones se etiquetan aquí como v…. |
website | La 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
cd client-mod
./gradlew build
cd api
pnpm typecheck && pnpm lint && pnpm test
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 deerrors.<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/commony 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 encrash/fixtures/, una prueba y los textoscrashHelper.findings.<kind>.<variant>en los archivos de idioma. - TRS Client: pruebas unitarias en
client-mod/common, por ejemploI18nTest.
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.
.env. La clave de CurseForge y las claves de firma solo se leen del
entorno o de archivos fuera del repositorio.Compilar desde el código
Prepara Node, pnpm y Rust, inicia el launcher en modo desarrollo, ejecuta las comprobaciones, crea instaladores y compila el mod TRS Client.
Traducir
Cómo están organizadas las traducciones del launcher, del TRS Client, de la web y de esta documentación, y cómo mejorar o añadir un idioma.