
Security News
Re-Enabled GitHub Actions Expose Thousands of Repositories to Mini Shai-Hulud
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.
Librería frontend moderna, ligera y sin dependencias, con sistema reactivo propio, JSX personalizado y ciclo de vida declarativo para construir SPAs eficientes.

Boxels es una librería frontend diseñada para desarrollar aplicaciones web modernas del lado del cliente.
Está construida con TypeScript y enfocada en bajo consumo, control total y excelente experiencia de desarrollo.
Incluye un sistema reactivo propio, un motor optimizado de ciclo de vida y renderizado para Single Page Applications (SPA), y una versión personalizada de JSX sin dependencias externas.
⚠️ Actualmente
Boxelsno soporta renderizado del lado del servidor (SSR). Esta funcionalidad está en evaluación para futuras versiones.
📄 La documentación detallada y técnica de cada módulo se encuentra en la carpeta
./docs/**.
Este proyecto cuenta con un Código de Conducta. Por favor, revísalo antes de contribuir.
Aquí tienes el fragmento que puedes insertar justo después de la sección principal y antes de la tabla de contenidos. Este mensaje explica que existe una CLI oficial (box) para facilitar el uso de Boxels:
Para mejorar la experiencia de desarrollo con Boxels, puedes usar la CLI oficial con el comando box.
Te permite:
npm install -g boxels-config
Una vez instalada, puedes ejecutar
box --helppara ver los comandos disponibles.
Boxels incluye soporte para desarrollar aplicaciones multiplataforma mediante un módulo especial ubicado en boxels/multiplatform.
Este módulo proporciona wrappers y extensiones para funcionalidades nativas en:
Todas las plataformas comparten la misma semántica y API base. El sistema selecciona automáticamente la implementación adecuada en tiempo de ejecución.
Algunas funcionalidades incluidas:
useCamera)store)httpClient)notifier)El módulo
multiplatformestá diseñado para ser extensible y respetar la filosofía de bajo acoplamiento de Boxels.
Instala Boxels usando npm:
npm install boxels
Requiere Node.js v18 o superior.
signal, computed, effect, persistentSignal.<Show>, <For>, <Lazy>, <RouterOutlet>, <Fragment>.$lifecycle:mount, $lifecycle:unmount, etc.import { mount } from 'boxels/core';
const App = () => (
<main>
<h1>Hola desde Boxels 👋</h1>
</main>
);
mount(document.body, App());
.boxBoxels permite definir componentes de manera modular usando archivos .box, que combinan lógica, template y estilos en un solo archivo.
Ejemplo de componente:
<script lang="ts">
import { signal } from 'boxels/core';
const counter = signal(1);
function handleClick() {
counter.update(c => c + 1);
}
</script>
<h1 class={styles.title}>Soy un box</h1>
<h2>{counter}</h2>
<p>¡Hola! Mi nombre es {props.name}.</p>
<button type="button" $on:click={handleClick}>Actualizar contador</button>
<style lang="scss">
.title {
font-size: 4rem;
}
</style>
<script>: contiene la lógica del componente, incluyendo reactividad y funciones.{props}: acceso a las propiedades pasadas al componente.{styles}: objetos de clases generadas automáticamente para estilos scoped.$on:event: binding declarativo de eventos (por ejemplo, $on:click).import BoxComponent from './components/MyBox.box';
mount(document.body, <BoxComponent name="Juan" />);
Los estilos declarados en
<style>se aplican de manera scoped, evitando colisiones con otros componentes.
Para poder usar archivos .box en tu proyecto Vite, necesitas instalar e importar el plugin oficial de Boxels:
// vite.config.ts
import { defineConfig } from 'vite';
import { boxComponentPlugin } from 'boxels/plugins';
export default defineConfig({
plugins: [
boxComponentPlugin({
// Opcional: personaliza extensiones o JSX import
extensions: ['.box'],
jsxImport: 'boxels'
})
]
});
Debido a su naturaleza, boxComponentPlugin permite usar cualquier tipo de JSX, ya sea React, Preact o incluso JSX personalizado. Esto facilita su integración en distintos proyectos y librerías que ya utilicen JSX, sin limitar tu flujo de desarrollo.
Si quieres conocer por qué nació Box, su filosofía y la razón detrás de su diseño, hemos preparado documentación detallada en la carpeta:
./docs/**
En estos documentos encontrarás:
Motivación: por qué surge la necesidad de un formato como .box.
Ventajas del enfoque: modularidad, aislamiento de estilos, flujo declarativo.
Integración flexible: aunque Boxels define su propia sintaxis JSX, no estás limitado a ella. El plugin oficial (boxComponentPlugin) es agnóstico, lo que significa que puedes usar:
Extensiones personalizables: incluso puedes cambiar la extensión .box por otra que se adapte a tu flujo.
Esto hace que Boxels sea friendly y fácil de integrar en proyectos existentes, sin imponer un ecosistema rígido.
Consulta la documentación completa en ./docs/** para más detalles.
¿Tienes ideas, mejoras o encontraste un bug? ¡Tu ayuda es bienvenida! Sigue estos pasos para contribuir:
Revisa los issues abiertos.
Haz un fork del repositorio.
Crea una rama con tu cambio:
git checkout -b feature/mi-cambio
Realiza tus cambios y haz commit:
git commit -m "feat: agrega nueva funcionalidad"
Haz push y abre un Pull Request.
Consulta la guía de contribución para más detalles.
Agradecemos a todas las personas que han contribuido a Boxels:
kkokotero |
¿Quieres aparecer aquí? ¡Envía tu PR!
Este proyecto está licenciado bajo la MIT License.
FAQs
Librería frontend moderna, ligera y sin dependencias, con sistema reactivo propio, JSX personalizado y ciclo de vida declarativo para construir SPAs eficientes.
The npm package boxels receives a total of 0 weekly downloads. As such, boxels popularity was classified as not popular.
We found that boxels demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.

Research
/Security News
The compromise affects MemTensor's MemOS, an open source memory framework for large language models (LLMs) and AI agents. Both npm package @memtensor/memos-cloud-openclaw-plugin and the PyPI package MemoryOS are compromised. They drop cross-platform Go binaries that exfiltrate developer secrets.