Repository navigation
Documentación
English · Español
Tapete (se llamó Proxy Builder hasta la 4.0.0; véase Cambio de nombre a Tapete) es una aplicación de escritorio y Android (Tauri 2 + Rust + React/TypeScript) para preparar, probar y jugar decks de Magic: The Gathering: biblioteca, estadísticas, mesa de juego, amigos, editor de cartas y PDF listo para imprimir. Este wiki es la referencia para entender, ampliar, depurar y rehacer la app. La presentación para usuarios es el README.md del repositorio.
Cada página describe el código tal como está ahora, con rutas y símbolos reales, e intenta explicar por qué las cosas están hechas así. Lo que no se ha comprobado en el código va marcado como Deducido:.
| Si quieres… | Lee |
|---|---|
| Usar la app | Guía de usuario |
| Usarla en un móvil o una tableta | Móvil |
| Pasar decks a otro equipo | Pasar decks |
| Compilarla y ejecutarla | Preparación del entorno de desarrollo |
| Entender todo el sistema en diez minutos | Arquitectura |
| Conocer las reglas que debe cumplir todo cambio | Convenciones |
| Buscar un término | Glosario |
| Saber qué hace cada fichero | Índice de ficheros |
- Preparación del entorno de desarrollo: requisitos, política de pnpm, comandos, bindings, hooks.
-
Tests y CI: vitest, tests de cargo, tests dorados, cada puerta
pnpm check*, los workflows del CI. - Versiones y actualizaciones automáticas: el script de release, el modelo de firma (con la clave de Android), el APK de Android, el actualizador de la app.
- Cambio de nombre a Tapete: qué tocó el paso de Proxy Builder a Tapete, qué se queda como estaba y por qué.
- Licencia: GPL-3.0-or-later, dónde se declara, qué no cubre y qué licencias de dependencias son compatibles.
- Convenciones: reglas de arquitectura, diseño, i18n y código, con su razón.
- Arquitectura: capas, límites de proceso, ubicación de los datos, diagramas.
-
IPC y manejo de errores: todos los comandos,
AppError, bindings, trabajos largos y eventos. -
Capa de aplicación Rust: arranque,
AppState, el protocolopbimg://, miniaturas, configuración de Tauri y la capa de Android (tls.rs,ciclo.rs, el plugin de Kotlin).
-
Modelo del mazo:
Deck,DeckCard, orígenes, marcas, ajustes de impresión. - Almacenamiento y blobs: esquema SQLite y migraciones, almacén de blobs, caché, carpetas de datos.
-
Formato del paquete de mazo: el fichero
.pbdeck. - Biblioteca de mazos: etiquetas, favoritos, notas, portadas y detalles sin conexión.
- Parseo de la lista del mazo: formatos aceptados, el parser, el exportador de listas, importación de Archidekt.
- Integración con Scryfall: cliente, resolución, idiomas, búsqueda, detección de fichas.
- Fuentes externas: las fuentes permitidas que no son Scryfall (Cockatrice, magicthegathering.io, MTGJSON).
- Identificación de cartas y OCR: vincular imágenes propias con la carta real, OCR, vinculación en bloque.
-
Motor de maquetación:
PagePlan, la geometría única de pantalla y papel. - Imagen y PDF: encuadre, sangrado, esquinas, el escritor de PDF.
- Exportación: el trabajo de exportación, presets, exportación de la lista.
- El sello de las cartas: el sello «Tapete · No a la venta» en toda carta impresa o exportada, por qué no se puede apagar, dónde va, idiomas y letras.
- Vista previa en vivo: las hojas, las casillas, arrastrar y soltar, desmontaje de imágenes.
- Estadísticas: estadísticas del deck, precios, probabilidades.
- Visión general del diseñador: conceptos y encaje en la app.
-
Motor del diseñador: el motor de pintado (
proxy-core::diseno). - Composición del diseñador: cartas de varias caras, layouts, habilidades, cuerpos.
- Packs de marcos: el formato de pack, packs integrado, Original y descargables, letras libres.
- Capa de aplicación del diseñador: la parte de Tauri.
- Interfaz del diseñador: la vista «Diseñar».
- Diálogo Editar carta: «Editar carta».
-
Motor de la mesa: el motor puro de la mesa de juego (
crates/mesa): modelo, acciones, azar, visibilidad, deshacer y repetición, equipos, orden de turnos, muertes, encuentros al mejor de y el resumen de una partida. - Mesa de juego: la pestaña «Jugar»: la sesión alrededor del motor, la preparación de imágenes, guardar y seguir, el tapete, el tablero, varios jugadores (partida local, disposiciones, equipos, formatos, muertes), el arrastre, los menús, los atajos, el registro y el chat, el resumen del final, el historial y la repetición, los sonidos y los ajustes.
- Juego en línea: las partidas en red: P2P con iroh con un host e invitados, el código directo y sus enlaces, el traspaso del anfitrión sin servidor, las imágenes por la red, ausentes y expulsiones, los relés.
- Amigos y mensajes: amigos, mensajes cifrados de extremo a extremo e invitaciones a partidas por el servidor de Tapete: consentimiento, peticiones firmadas, la clave de cifrado, el número de seguridad, el bucle de sincronización, los enlaces y el QR.
- Móvil: los diseños de móvil y tableta, las reglas táctiles, el botón «atrás», el ciclo de vida, ficheros y compartir en Android, el TLS, los límites y lo que no se ha probado.
- Pasar decks: enviar y recibir decks entre equipos: equipos cerca, el código y el QR, la oferta, con o sin proxies, reemplazar un deck que ya existe.
- Arquitectura del frontend: estructura, componentes compartidos, configuración de compilación.
- Stores de estado: los stores de zustand y su flujo de datos.
-
Internacionalización:
t(), diccionarios, los tres tipos de idioma. - Temas y skins: temas, skins, materiales, temas de tweakcn.
-
Iconos: los iconos de Iconify, el paquete generado (
pnpm iconos), el selector de iconos y su cliente en Rust. - Ajustes y shell: el shell de la app y el diálogo de ajustes.
- Tutoriales: el recorrido guiado de cada pantalla y el botón de ayuda.
- Panel de la lista del mazo, Añadir carta y variantes, Explorador de sets: los paneles y diálogos para conseguir cartas.
- Búsqueda de cartas: la pantalla Buscar, para consultar cualquier carta sin deck.
El inglés es el idioma de referencia. Cada página tiene su versión en español, con su título en español como nombre de página (sin prefijos), y una barra con el enlace al otro idioma justo bajo el título. GitHub no tiene selector de idioma para los wikis, así que el cambio se hace con esa barra y con el enlace de la barra lateral.
El wiki forma parte de lo que significa «terminado»: cualquier cambio que añada, modifique o quite una función, comando, ajuste, formato, migración, regla de arquitectura o paso de la release actualiza las páginas afectadas en todos los idiomas en el mismo trabajo. Convenciones:
- Ficheros planos
Nombre-Pagina.md; enlaces[Texto](Nombre-Pagina)sin.md; el nombre de la versión en español es su título traducido, con guiones (Guía-de-usuario). - Cada página empieza con un resumen de una a tres frases y acaba con una lista «Véase también».
- Rutas y símbolos entre comillas invertidas, comprobados contra el código; lo dudoso va marcado como Deducido: (en inglés, Inferred:).
- Mermaid para los diagramas. Sin secretos, sin rutas absolutas locales, sin fechas ni nombres de persona.
- Las páginas nuevas se enlazan desde Documentation, desde Documentación y desde la barra lateral (con el enlace de cada idioma en la misma línea).
Use and build · Uso y desarrollo
- User-Guide · Guía de usuario
- Development-Setup · Preparación del entorno de desarrollo
- Testing-and-CI · Tests y CI
- Releases-and-Auto-Updates · Versiones y actualizaciones automáticas
- Conventions · Convenciones
- Rename-to-Tapete · Cambio de nombre a Tapete
- License · Licencia
Architecture · Arquitectura
- Architecture · Arquitectura
- IPC-and-Error-Handling · IPC y manejo de errores
- Rust-App-Layer · Capa de aplicación Rust
Data · Datos
- Deck-Model · Modelo del mazo
- Storage-and-Blobs · Almacenamiento y blobs
- Deck-Package-Format · Formato del paquete de mazo
- Deck-Library · Biblioteca de mazos
Getting cards · Conseguir cartas
- Decklist-Parsing · Parseo de la lista del mazo
- Scryfall-Integration · Integración con Scryfall
- External-Sources · Fuentes externas
- Card-Identification-and-OCR · Identificación de cartas y OCR
Layout, images, PDF · Maquetación, imagen y PDF
- Layout-Engine · Motor de maquetación
- Imaging-and-PDF · Imagen y PDF
- Export · Exportación
- The-Card-Stamp · El sello de las cartas
- Live-Preview · Vista previa en vivo
- Statistics · Estadísticas
Card designer · Diseñador de cartas
- Designer-Overview · Visión general del diseñador
- Designer-Engine · Motor del diseñador
- Designer-Composition · Composición del diseñador
- Frame-Packs · Packs de marcos
- Designer-App-Layer · Capa de aplicación del diseñador
- Designer-UI · Interfaz del diseñador
- Card-Editor-Dialog · Diálogo Editar carta
Game table · Mesa de juego
- Game-Engine · Motor de la mesa
- Game-Table · Mesa de juego
- Online-Play · Juego en línea
- Friends-and-Messages · Amigos y mensajes
Mobile · Móvil
Frontend · Frontend
- Frontend-Architecture · Arquitectura del frontend
- State-Stores · Stores de estado
- Internationalization · Internacionalización
- Themes-and-Skins · Temas y skins
- Icons · Iconos
- Settings-and-Shell · Ajustes y shell
- Tutorials · Tutoriales
- Decklist-Panel · Panel de la lista del mazo
- Add-Card-and-Variants · Añadir carta y variantes
- Card-Search · Búsqueda de cartas
- Set-Browser · Explorador de sets
Reference · Referencia