17 KiB
17 KiB
Versionado IA - UB24/Elementor
Rama de trabajo
ai/ub24-builder-v1
Estado de sincronizacion (14 Febrero 2026)
- Local:
ai/ub24-builder-v1 - Remoto:
origin/ai/ub24-builder-v1 - Divergencia verificada:
0/0(sin commits pendientes entre local y remoto)
Regla de trabajo
- Cada cambio funcional se guarda en un commit separado.
- Cada commit se registra con su hash.
- Cada commit debe incluir comando de reversion rapida.
- La rama debe quedar sincronizada con remoto al cerrar bloque de trabajo.
Convencion de mensaje
feat(builder): ...fix(builder): ...refactor(builder): ...chore(versioning): ...
Flujo con Gitea
- Trabajo local en
ai/ub24-builder-v1. - Push continuo a
origin/ai/ub24-builder-v1. - Merge cuando validemos en local y Raspberry.
Protocolo fijo de sincronizacion (siempre)
- Verificar rama activa:
git branch --show-current - Actualizar referencias remotas:
git fetch origin --prune - Medir divergencia:
git rev-list --left-right --count ai/ub24-builder-v1...origin/ai/ub24-builder-v1 - Si el resultado no es
0 0, sincronizar antes de continuar. - Despues de cada lote validado:
git add <archivos>git commit -m "tipo(scope): mensaje"git push origin ai/ub24-builder-v1
- Registrar hash y objetivo en este archivo y en
codex/HISTORIAL_CAMBIOS.md.
Protocolo de inicio de sesion (obligatorio)
- Levantar entorno al iniciar cada sesion, sin esperar pedido del usuario.
- Verificar que servicios locales de trabajo esten activos (app/builder segun tarea).
- Si la tarea requiere validacion remota, conectarse a Raspberry y comprobar estado antes de editar.
Regla operativa de contexto/token
- Trabajar por iteraciones cortas y versionar rapido para no perder avance cuando el presupuesto de tokens sea bajo.
- Priorizar cambios de alto impacto visual/funcional antes de detalles menores.
- Si el usuario avisa limite de tokens, cerrar cada bloque con commit y registro en este archivo.
Registro de hashes
Baseline
- Commit:
cb99f26 - Objetivo: crear rama y politica de versionado para trabajo IA.
- Revert:
git revert <hash>git reset --hard <hash_anterior>(solo con aprobacion explicita)
Correccion historial
- Commit:
fe8657e - Objetivo: revertir commit no deseado y mantener separacion de cambios.
- Revert:
git revert fe8657e
Fix local Elementor
- Commit:
22e564e - Objetivo: robustecer arranque local y carga de themes en Windows (BOM + logs seguros).
- Revert:
git revert 22e564e
Fase 1 Builder (visual pro)
- Commit:
1c04f04 - Objetivo: consolidar estilos reutilizables y subir calidad visual en hero, features, cards y contact del preview.
- Revert:
git revert 1c04f04
Ajustes Builder (limpieza + preview + ancho)
- Commit:
7c5f671 - Objetivo: quitar texto en barra Apple, limpiar menu vacio, preview local funcional sin salir de builder, ancho desktop al 100%, control de ancho por bloque y descripcion en bloque video.
- Revert:
git revert 7c5f671
Ajustes Builder (preview limpio + menu modos)
- Commit:
dd98e9d - Objetivo: mejorar vista previa (forzar modo limpio y restaurar estado), eliminar precarga automatica de bloques, y agregar modo de menu (horizontal/acordeon/ambos).
- Revert:
git revert dd98e9d
Runtime unificado (app + elementor)
- Commit:
1a5778b - Objetivo: unificar arranque con
python -m demo.appy registrar blueprint de Elementor en runtime principal. - Revert:
Educacion V2 + regla token
- Commit:
8ac360b - Objetivo: mejorar template de Educacion (V2), corregir navegacion por anclas en menu/CTA y fijar regla operativa para sesiones con pocos tokens.
- Revert:
git revert 8ac360bgit revert 1a5778b
Fix SQLite wrapper (arranque sin error SQL)
- Commit:
f6d8ab1 - Objetivo: evitar conversiones SQL invalidas en SQLite que rompian inicializacion y generaban reintentos.
- Revert:
git revert f6d8ab1
API Elementor save/publish
- Commit:
b6fb4da - Objetivo: agregar endpoint dedicado
/api/elementor/savepara guardar builder con opcion de publicar. - Revert:
git revert b6fb4da
Builder persistencia y feedback de publicacion
- Commit:
c2ee81d - Objetivo: mantener bloques cargados al entrar, normalizar bloques sin id y mostrar estado de guardado/publicacion en topbar.
- Revert:
git revert c2ee81d
Preview full-page + layout estable
- Commit:
e20f086 - Objetivo: hacer que vista previa ocupe pagina completa y forzar layout por secciones (sin modo libre por defecto) para alinear bloques.
- Revert:
git revert e20f086
Full width + dos columnas por bloque
- Commit:
e5df6de - Objetivo: expandir ancho util del canvas y habilitar 2 columnas reales con toggle "Ancho completo" por bloque.
- Revert:
git revert e5df6de
Drag inteligente columnas + preview completo
- Commit:
a6089ee - Objetivo: permitir decidir 1 o 2 columnas moviendo bloques al soltar (centro=ancho completo, lados=media columna) y agregar opcion de preview completo en nueva pestana.
- Revert:
git revert a6089ee
Quitar layout global + preview completo real
- Commit:
f9f7d23 - Objetivo: eliminar toggle global de 2 columnas; mantener decision 1/2 columnas solo por movimiento de bloques; y forzar preview completo sin margenes.
- Revert:
git revert f9f7d23
Fix final dia: texto, modo libre y full preview
- Commit:
f363eef - Objetivo: reparar caracteres mojibake en UI, habilitar modo libre real para mover bloques completos y forzar modo completo con
?full=1. - Revert:
git revert f363eef
URL local canonica (unificada)
- Base local:
http://127.0.0.1:5001 - Builder local:
http://127.0.0.1:5001/elementor/1 - Regla: usar siempre
127.0.0.1(nolocalhost) en scripts, pruebas y documentacion local.
Arranque rapido local (Windows)
- Desde
c:\word, ejecutar:python -m demo.app
- Abrir:
http://127.0.0.1:5001/elementor/1
- Verificacion rapida:
Invoke-WebRequest http://127.0.0.1:5001/elementor/1 -UseBasicParsing
Notas:
- En el primer arranque puede tardar unos segundos adicionales por inicializacion de DB.
- Logs:
c:\word\logs_demo_app.txtc:\word\logs_demo_app.err
Control de rama (local/remoto)
- Rama local activa:
ai/ub24-builder-v1 - Upstream remoto:
origin/ai/ub24-builder-v1 - Estado al registrar:
en sync (0/0)al 14 Febrero 2026 - Politica: commits atomicos + push por lote validado + verificacion de divergencia al inicio y al cierre.
Fases memorizadas (builder)
- Fase 1 (UI Pro base): navbar premium, hero premium, sistema de espaciado/grid, pulido visual consistente.
- Fase 2 (estructura): separar renderers por bloque y reducir inline styles para automatizacion.
- Fase 3 (presets): presets por rubro + reglas responsive + variantes exportables.
Verificacion tecnica (15 Febrero 2026)
- Rama activa verificada:
ai/ub24-builder-v1 - Divergencia local/remoto:
0 0(sin diferencias conorigin/ai/ub24-builder-v1) - DB local: tabla
sitesoperativa con registros de prueba (id=1,id=2) - Smoke test builder:
GET /elementor/1->200 OKPOST /api/elementor/saveconsite_id=1->200 OK,{"success": true, "published": false}
Requisitos minimos para operar Elementor (base SaaS)
- Arrancar con
python -m demo.appdesdec:\word. - Mantener URL canonica local en
http://127.0.0.1:5001(nolocalhost). - Confirmar que exista un
site_idvalido en DB (ejemplo activo:1). - Mantener una sola ruta de guardado activa:
/api/elementor/save. - Validar guardado/publicacion con prueba rapida antes de cada lote.
Regla memorizada de preview (15 Febrero 2026)
- La preview del builder debe usar un solo flujo en
Bloquescon acomodo estable. - No mantener ni mezclar modos paralelos de preview.
Ajuste operativo UX (15 Febrero 2026)
- Se elimina
Completodel builder. - Se elimina
Modo librecomo toggle separado. - El layout operativo queda unico en bloques:
- cada bloque puede ir en
50%(dos columnas) o100%(ancho completo), - controlado por
Ancho completoen inspector o por drop lateral/centro.
- cada bloque puede ir en
Regla de estabilidad (15 Febrero 2026)
- Lo que ya funciona no se toca sin requerimiento explicito.
- Los bloques del panel izquierdo no deben ocultarse al usarse.
- Cada tipo de bloque debe poder agregarse cantidad ilimitada de veces.
- Debe existir boton de
Vista previafuncional en el builder. - El ancho completo/parcial se controla solo con
Ancho bloque (%)del mismo bloque (sin checkbox separado). - La vista previa se abre en modo push/pop (
preview=1) y muestra botonAtras.
Estado real de cierre (15 Febrero 2026)
- Tema bloqueante: drag & drop de bloques sigue inestable en el flujo actual.
- Sintoma reportado por usuario: mover con mouse no queda consistente para alinear y ubicar bloques como espera.
- Decision acordada: pausar cambios hoy para no seguir consumiendo tiempo/tokens.
- Proximo reinicio: rehacer DnD con enfoque estable desde base limpia (una sola estrategia de movimiento), validar con pruebas manuales guiadas y recien despues tocar extras.
- Regla reforzada: no tocar lo que ya funciona mientras se corrige solo el DnD.
Regla operativa de sesion (15 Febrero 2026)
- Al iniciar cada sesion de trabajo, levantar primero el entorno local del builder:
python -m demo.app
- Verificar puerto antes de editar:
http://127.0.0.1:5001
Acuerdo definitivo DnD (15 Febrero 2026)
- Decision: implementar una solucion definitiva de drag & drop con una sola estrategia, sin mezclar motores.
- Motor elegido:
SortableJSpara reordenamiento estable (desktop + touch). - Alcance de la correccion:
- reemplazar reordenamiento actual por
SortableJSen el canvas de bloques, - usar
handlede arrastre para no interferir con edicion inline, - configurar fallback estable (
forceFallback+ umbrales de toque/movimiento), - eliminar handlers duplicados de drag que hoy se pisan entre si.
- reemplazar reordenamiento actual por
- Regla de seguridad: no tocar guardado, preview ni bloques que ya funcionan.
- Proxima sesion: implementar, hacer smoke test completo en
/elementor/1, y recien despues validar cierre para lanzamiento SaaS.
Cierre de sesion (16 Febrero 2026)
- Rama de trabajo usada:
ai/ub24-builder-v1 - Entorno validado en sesion:
GET /elementor/1 -> 200 OK - Commit de cierre funcional del dia:
- Hash:
6f14308 - Mensaje:
fix(builder): unificar layout y estabilizar redimension en canvas - Alcance:
elementor/templates/elementor_builder.html
- Hash:
Resultado operativo del dia
- Se recupero el flujo de insercion de bloques desde panel izquierdo al canvas.
- Se estabilizo el modelo de layout del canvas para evitar mezcla de estrategias.
- Se dejo redimension por ancho de bloque en flujo normal y control desde inspector.
- Se corrigio comportamiento por defecto para que bloques nuevos entren apilados (ancho completo) y no en paralelo automatico.
- Se mantuvo
SortableJSpara reordenamiento de bloques en canvas.
Decisiones memorizadas para siguiente sesion
- Mantener una sola estrategia de layout y reordenamiento (sin volver a mezclar motores/flows).
- No reabrir cambios globales cuando un fix local sea suficiente.
- Si algo ya funciona, no rehacerlo completo: tocar solo el bloque minimo necesario.
Pendientes acordados (proxima sesion)
- Footer obligatorio global en todas las paginas:
- marca registrada del usuario + empresa desarrolladora.
- Watermark de autoria en codigo (convencion consistente del proyecto).
- Preview dual:
- modo bloques (editor),
- modo pagina completa real (resultado final).
- Mejorar landing base para nivel visual profesional.
- Redes sociales con posicion libre (ubicacion configurable).
- Menu superior: corregir modo acordeon (hoy no queda operativo como se espera).
- Mejorar interaccion touch/capacitiva del builder.
Registro operativo (17 Febrero 2026)
-
TAG:
RUBROS_OFICIALES_BLOQUEADOS -
Regla fija: no usar rubros inventados; solo los oficiales definidos por usuario.
-
Rubros oficiales memorizados:
restaurantedanzacosmeticosdespachosgimnasioseducacionbase_otro(Base (Otro))
-
TAG:
PREVIEW_FINAL_SEPARADA -
Se agrega flujo dedicado de preview final real separado del hash del editor:
GET /elementor/<site_id>/preview-finalGET /ub24/<site_id>/preview-final
-
En preview final:
- se fuerza
preview-modedesde servidor (preview_only=true), - boton
Atrasvuelve al builder base.
- se fuerza
-
TAG:
UNIFICACION_TOPBAR_Y_DRAWER_FIX -
Ajustes aplicados:
- se elimina duplicidad operativa de preview en topbar y se deja
Pagina realcomo flujo principal, - selector de plantillas migra a
Plantillas por rubro(catalogo oficial), Drawer Prose mueve a capa global para evitar render roto dentro del bloque/canvas,- etiqueta de pagina
Serviciosse neutraliza aSeccion 2para no mezclar paginas con rubros.
- se elimina duplicidad operativa de preview en topbar y se deja
Registro infraestructura Raspberry (17 Febrero 2026)
- TAG:
KOMKIDA_WEB_ACCESS_RECOVERY - Objetivo: recuperar
komkida.duckdns.orgcomo acceso web remoto a Raspberry con login (estilo Motion), sin romper:gk-saas.komkida.duckdns.orggit.gk-saas.komkida.duckdns.orgmotion.komkida.duckdns.org
Diagnostico real
- El
502 Bad Gatewayen subdominios (gk-saas,git,motion) venia porproxy_pass http://localhost:PUERTO:- Nginx resolvia
localhosta IPv6 ([::1]) en varios casos. - servicios escuchando en IPv4 (
127.0.0.1/0.0.0.0) devolvianconnection refused.
- Nginx resolvia
komkida.duckdns.orgquedo mezclado con proxy a metricas (192.168.1.133:5000) y luego con rutas no validas (Not Found).- Hubo drift de configuracion:
- archivo suelto viejo en
/etc/nginx/sites-enabled/komkida.duckdns.org(no symlink) con reglas desactualizadas.
- archivo suelto viejo en
- El navegador intentaba
https://komkida.duckdns.orgy no habia listener en443:- error visible:
ERR_CONNECTION_REFUSED.
- error visible:
Cambios aplicados en Raspberry
- Normalizacion de upstreams Nginx a IPv4:
proxy_pass http://127.0.0.1:<puerto>;en vhosts activos.
- Limpieza de duplicados/conflictos:
- quitar backups cargados en
sites-enabled. - asegurar
sites-enabled/komkida.duckdns.orgcomo symlink al archivo desites-available.
- quitar backups cargados en
- Definicion final de
komkida.duckdns.org:- auth_basic con
.htpasswd. /proxyeado ahttps://127.0.0.1:4200(ShellInABox)./api/mantiene proxy a127.0.0.1:9999(no bloquea resto del sistema).
- auth_basic con
- Habilitacion HTTPS para
komkida:- servidor Nginx en
443 ssl. - certificado local en:
/etc/nginx/ssl/komkida.crt/etc/nginx/ssl/komkida.key
- servidor Nginx en
- Verificacion final:
- Nginx escuchando en
80y443. http://komkida.duckdns.org->401(esperado: login).https://komkida.duckdns.org->401(esperado: login).gk-saasygitsiguen en200.
- Nginx escuchando en
Bots (estado para no cargar la Pi)
clawdbot: deshabilitado por OOM recurrente (JavaScript heap out of memory).moltobot: deshabilitado temporalmente.- Decision: priorizar estabilidad de infraestructura y SaaS.
Archivos clave tocados en la Pi
/etc/nginx/sites-available/komkida.duckdns.org/etc/nginx/sites-enabled/komkida.duckdns.org/etc/nginx/ssl/komkida.crt/etc/nginx/ssl/komkida.key
Checklist rapido de recuperacion futura
sudo nginx -tsudo systemctl restart nginxss -tulpen | egrep ':80 |:443 'curl -I http://komkida.duckdns.org/(debe pedir auth)curl -k -I https://komkida.duckdns.org/(debe pedir auth)curl -I http://gk-saas.komkida.duckdns.org/(debe responder200)
A ESTO SE TIENEN QUE PARECER: Correcto. Busqué referencias reales y modernas; vamos a dejar de “inventar” estilos internos.
Referencias que sí sirven para copiar estructura profesional:
- Webflow Education Templates (catálogo): https://webflow.com/templates/category/education-websites
- Hopedu (estructura académica limpia + CMS): https://webflow.com/templates/html/hopedu-school-website-template
- Eduvolv (hero + admissions + secciones institucionales): https://webflow.com/templates/html/eduvolv-website-template
- Thema (variantes de layout + menú fullscreen): https://webflow.com/made-in-webflow/website/thema-education-template-showcase
- Campus (layout simple usable): https://webflow.com/templates/html/campus-education-website-template
- ThemeForest Elementor kit (referencia de páginas mínimas): https://themeforest.net/item/educita-education-elementor-template-kit/37245135
Plan profesional (sin clones):
- Rehacer templates por rubro con 3 arquitecturas distintas, no solo cambiar color.
- Cada rubro tendrá:
- header propio
- hero propio
- grid propio
- CTA propio
- footer propio
- El builder cargará esas arquitecturas base y luego se edita contenido.
- Eliminaré el estilo único actual que hace que todo se vea igual.
Si quieres, empiezo ya con Educación copiando patrón Eduvolv/Hopedu y luego replico la metodología al resto de rubros.