Bienvenido al repositorio oficial de Ember SDK. Este kit de desarrollo proporciona todas las herramientas y APIs necesarias para construir, empaquetar y distribuir aplicaciones nativas para EmberOS utilizando tecnologías web estándar (HTML, CSS, JavaScript).
- Integración Nativa: Acceso directo al sistema de archivos, notificaciones, audio global y gestión de ventanas de EmberOS.
- Renderizado DOM-First: Optimizado para interfaces construidas con HTML y CSS puro, minimizando el uso de recursos y garantizando la compatibilidad por hardware (sin depender de
<canvas>). - Compatibilidad Universal: Soporte integrado tanto para las Nuevas APIs (
window.Ember) como para la arquitectura Legacy (window.EmberAPI). - Empaquetado Simple: Todo el código fuente y los metadatos se distribuyen de forma segura en un único archivo JSON con extensión
.emb.
Toda aplicación se define mediante un manifiesto. Crea un archivo llamado mi_app.emb con la siguiente estructura básica:
{
"id": "com.usuario.hola_mundo",
"title": "Hola Mundo",
"icon": "data:image/svg+xml;base64,...",
"width": 400,
"height": 300,
"developer": "Tu Nombre",
"version": "1.0",
"permissions": ["notifications"],
"code": "/* El código de tu app en formato string va aquí */"
}Dentro de la propiedad "code", inserta tu lógica en JavaScript. Recuerda siempre renderizar dentro del contenedor provisto por el sistema:
// Obtener el contenedor del sistema de forma segura
const container = (window.Ember && window.Ember.UI)
? Ember.UI.getContainer()
: (window.EmberAPI ? EmberAPI.ui.container : document.body);
// Construir la interfaz usando DOM puro
container.innerHTML = `
<div style="font-family: sans-serif; padding: 20px; color: white;">
<h1>¡Hola desde EmberOS!</h1>
<button id="btn-saludo" style="padding: 8px 16px; cursor: pointer;">Saludar</button>
</div>
`;
// Interactuar con las APIs del sistema
document.getElementById('btn-saludo').addEventListener('click', () => {
if (window.Ember && window.Ember.Notifications) {
Ember.Notifications.show({ title: 'Hola', body: '¡Bienvenido a Ember SDK!' });
} else {
console.log('¡Bienvenido a Ember SDK!');
}
});La SDK moderna se expone a través del objeto global window.Ember. Aquí tienes un resumen de los módulos clave:
Ember.UI.getContainer(): Devuelve el nodo<div>raíz asignado a tu aplicación.Ember.Window.setTitle(title): Actualiza el título dinámico de la ventana.Ember.FS.openFileDialog(options): Llama al explorador de archivos nativo y devuelve una Promesa con los archivos.Ember.Notifications.show(options): Envía alertas al centro de notificaciones de EmberOS.Ember.Audio.getVolume()/.on(): Permite leer y reaccionar a los cambios de volumen global.Ember.Process.getArguments(): Recupera los parámetros de inicio (como un archivo que el usuario intentó abrir).
Para la documentación completa, profunda y con todos los ejemplos de IPC, por favor consulta la Documentación Oficial de la API.
- Evita usar
<canvas>innecesariamente: Para visualizadores de audio, animaciones o UI compleja, utiliza manipulación directa del DOM y transiciones CSS (transform,opacity,will-change). Es más eficiente en EmberOS. - Aislamiento: Tu app corre en un entorno gestionado. No manipules
document.bodyni reemplaces eventos globales dewindowque puedan interferir con el sistema operativo. - Garbage Collection: Libera listeners de eventos, bucles
requestAnimationFramey nodos de WebAudio cuando tu app entre en suspensión o se cierre.
Si deseas mejorar la SDK, reportar bugs o sugerir nuevas características para el ecosistema de EmberOS, por favor abre un Issue o envía un Pull Request en este repositorio.