← Ver todos los documentos

Guaba Core · Documentación de diseño

Tecnologías y responsabilidades

Tecnologías propuestas para compartir el contenedor entre web y escritorio.

Especificación inicial

Base definida

TecnologíaResponsabilidad
RustImplementar el contenedor, sus eventos y su estado compartido. Se utilizará la edición 2024.
eguiDibujar las regiones, controles, menús, pestañas y pantallas.
eframeIntegrar egui con la ventana de escritorio o con el navegador.
CargoGestionar dependencias, compilación y pruebas.
rustupGestionar el compilador y los destinos de compilación.
WebAssemblyEjecutar la aplicación Rust dentro del navegador.
TrunkConstruir y servir el paquete web durante el desarrollo.
Serde + serde_jsonLeer la configuración JSON y serializar las preferencias de interfaz.

eframe está diseñado para alojar una misma aplicación egui en escritorio y web. Esta capacidad se documenta en su contrato App. La plantilla oficial separa el arranque nativo del arranque web.

Qué se comparte

Las mismas estructuras Rust definen el layout, los componentes, los temas, las pestañas y sus interacciones. Se compilan dos artefactos diferentes:

flowchart TD
    S[Contenedor compartido en Rust y egui]
    S --> D[Arranque de escritorio con eframe]
    S --> W[Arranque web con eframe]
    D --> N[Ejecutable nativo]
    W --> A[WebAssembly y archivos de arranque]
    A --> B[Navegador]

El soporte multiplataforma del framework no equivale a una validación ya realizada en este proyecto. La primera comprobación propuesta será Windows más Chrome y Edge. La matriz de sistemas operativos y navegadores adicionales se acordará y probará por separado.

Qué cambia por plataforma

AspectoEscritorioWeb
Inicioeframe::run_nativeeframe::WebRunner sobre un canvas
DistribuciónEjecutable compilado para el sistema elegidoArchivos estáticos servidos por HTTP/HTTPS
TamañoVentana del sistema operativoÁrea disponible en el navegador
CierreSe puede interceptar una solicitud de cierre de la ventanaLa salida depende del ciclo de vida y las restricciones del navegador
PreferenciasAdaptador de almacenamiento local de escritorioAdaptador de almacenamiento del navegador

La integración web necesita HTML y código de arranque generado. Los controles de egui se dibujan en un canvas; el HTML/CSS del prototipo no se transforma automáticamente en componentes egui. Referencia de arranque.

Renderizado

eframe ofrece integraciones de renderizado mediante wgpu y glow. La propuesta para el primer contenedor es wgpu en escritorio y glow/WebGL en web. Se validará la creación del contexto gráfico en la primera compilación y se registrará el backend definitivo para cada destino. Cambiar el renderer no debe modificar los componentes del contenedor. Opciones del framework.

Si el navegador no puede iniciar el renderer seleccionado, la página de arranque mostrará un error comprensible y una acción para reintentar.

Versiones reproducibles

Al crear el proyecto Rust se deberán registrar:

  • La versión exacta del compilador en rust-toolchain.toml.
  • Una misma línea compatible de egui y eframe en Cargo.toml.
  • Las dependencias resueltas en Cargo.lock, versionado con la aplicación.
  • La versión de Trunk utilizada en desarrollo y construcción web.

No se fija una versión exacta en esta especificación porque aún no se ha creado ni compilado el proyecto Rust. La familia 0.36 apareció en la referencia consultada; la selección final debe comprobarse mediante una compilación de ambos destinos.

Herramientas de esta etapa

El contenedor puede construirse con las bibliotecas anteriores y componentes propios de egui. La referencia visual de PhotoCraft no requiere incorporar su motor de imágenes, sus crates de edición ni su biblioteca craft-ui.

Trunk se usa para el proceso de construcción web. Sus capacidades y comandos se consultan en el repositorio oficial y su documentación.