Gracias por interesarte en mejorar CubicLauncher. Este documento resume cómo colaborar sin romper el build ni el estilo del proyecto.
- Node.js >= 20
- Bun >= 1.x
- Rust >= 1.85 (edition 2024)
- Tauri CLI v2
git clone https://github.com/CubicLauncherDevs/CubicLauncher.git
cd CubicLauncher
bun installSiempre corré estos comandos antes de subir cambios:
# Frontend
bun run lint # ESLint + plugin Svelte
bun run check # svelte-check + TypeScript
bun run format # Prettier en src/
# Backend (Rust)
cd src-tauri
cargo fmt --check
cargo clippy -- -D warnings
cd ..- Los mensajes de commit van en español, en infinitivo o imperativo.
- Ejemplos válidos:
Arreglar warns de viteAgregar drawer de descarga de versionesRefactorizar manejo de errores en VersionSelectorStep
- Usá runes:
$state,$derived,$effect,$props,$bindable. - No uses
$state(...)para envolverSvelteMapniSvelteSet; ya son reactivos por sí solos. - Evitá
any. Para íconos SVG tipá el...restconSVGAttributes<SVGSVGElement>. - Preferí
$derived/$derived.bysobre$state+$effectcuando solo calculás un valor. - Agregá
keya los bloques{#each}. - Para props pasadas pero no usadas en el template, usalas, renombralas a
_nombreo ajustá la interfaz.
- Seguí
cargo fmt. - Resolvé todos los warnings de
cargo clippy. - Los errores deben serializarse como
{"code":"...","params":{...}}para i18n en el frontend.
Si agregás textos nuevos en la UI, agregalos en:
src/lib/i18n/es.jsonsrc/lib/i18n/en.jsonsrc/lib/i18n/de.jsonsrc/lib/i18n/fr.json
Cuando abras un PR, asignale al menos una de estas labels para que el changelog quede organizado:
| Label | Uso |
|---|---|
breaking |
Cambio que rompe compatibilidad con versiones anteriores. |
feature |
Nueva funcionalidad visible para el usuario. |
core |
Cambios en la lógica de backend Rust (servicios, crates, commands). |
ui |
Cambios puramente visuales en Svelte o CSS. |
i18n |
Nuevas traducciones o cambios en archivos de idioma. |
bug / fix / patch |
Corrección de errores o hotfix. |
perf |
Mejoras de rendimiento. |
test |
Nuevos tests o modificaciones de tests. |
docs |
Cambios en documentación. |
chore / refactor / deps / ci |
Tareas de mantenimiento. |
ignore-for-release |
Cambios que no deben aparecer en el changelog. |
CubicLauncher usa un flujo de release en dos etapas:
- Crear el tag: al pushear un tag
v*(p. ej.v31.0.0), el workflowBuild Release Draftcompila la app en todas las plataformas y sube los binarios a un Release Draft de GitHub con notas autogeneradas. - Publicar manualmente: cuando el draft esté listo, ejecutá el workflow
manual
Publish Releasedesde GitHub Actions. Solo en ese momento el release se vuelve público y el updater de Tauri lo empieza a distribuir.
Para prereleases (v*-alpha*, v*-beta*, v*-rc*) el proceso es el mismo,
pero el release se marca como prerelease. Además, cada push a la rama
develop dispara una build de prerelease que deja los binarios como artefactos
de la ejecución, sin crear un release público.
- Abrí un issue primero si el cambio es grande o puede discutirse.
- Trabajá en una rama propia.
- Hacé commits pequeños y descriptivos.
- Actualizá este archivo si cambian las reglas del proyecto.
- Abrí un PR y asegurate de que pasen los checks de CI (
lint,check, tests de Rust, build del frontend, etc.). - Una vez mergeado a
mainodevelop, el equipo decide cuándo publicar un nuevo tag y ejecutar el release correspondiente.