MAGIC DOC: Synapse Changelog
📝 Synapse Studio — Changelog
Auto-maintained: Este documento se actualiza automáticamente con cada release.
BE TERSE. High signal only.
Última actualización: 5 abril 2026
v0.10.1 — 4 abril 2026
🚶 Pedestrian Paths — Movimiento realista en edificio
- GROUND_Y fix: Corregido de 110 → 4 en
floor-manager.js— los agentes volaban al techo al usar walk paths lineales - walkPaths generation: Nuevo método
_generateWalkPaths()enFloorManagerque crea rutas válidas por tipo de piso (pasillos en pisos normales, espacio abierto en lobby) - Distance-based timing:
animatePath()enmovement-controller.jsahora calcula duración proporcional a distancia (2.5ms/px) en lugar de timing fijo de 400ms - scheduleReturn race condition:
executeMovement()cancela timers de retorno pendientes antes de programar nuevos, evitando que agentes salten entre posiciones - Y clamp widened: Rango de posición Y ampliado a [2,50]; estaciones de trabajo clamped a [2,25]
- Ambient patrol fix:
_ambientPatrol()ensynapse-engine.jsahora usa rango Y=[2,20] en lugar de [8,38] - walkPaths en lobby:
generateLobbyLayout()ahora también genera walkPaths (antes solo pisos normales)
v0.10.0 — 3 abril 2026
📂 Projects — Organización por proyecto
- Nuevo concepto: Proyectos dentro de organizaciones para separar tareas en Kanbans independientes
- Migration 0112:
synapse_projects,synapse_project_members+ columnaproject_iden tasks, input_sources, input_items, output_destinations - Backend: 10 handlers nuevos — CRUD proyectos, gestión de miembros, import Perspectiva
- Frontend:
project-manager.js(~650 líneas) — selector dropdown en header, modals de crear/editar/gestionar, pickers de icono/color, gestión de miembros - Kanban: Badges de proyecto y tipo de fuente (Perspectiva/Transcriptor) en cards
- data-service.js: 9 métodos API nuevos + filtrado de tareas por proyecto automático
- Filtrado:
?project=<id>en listados de tareas.?project=nonepara tareas sin proyecto - Persistencia: Proyecto seleccionado guardado en
localStorage('synapse_project_id')
🔗 Cross-App Integration — Perspectiva/Transcriptor → Synapse
- Perspectiva Studio: Botón "→ Synapse" en action bar, modal selector de proyectos, envío como tarea
- Transcriptor: Mismo botón "→ Synapse" con source_type='transcriptor'
- Import endpoint:
POST /projects/:id/import-perspectiva— crea tarea contask_type='perspectiva_import', description rica (transcripción/acta/conclusiones),input_dataestructurado completo - Botones habilitados/deshabilitados en los 5 puntos del ciclo de vida de ambas apps
🐛 Bug Fixes (post-audit)
- Memory leak fix: Event listener en
documentpara cerrar dropdown se almacena y limpia en re-render - XSS fix: HTML-escape en nombre/descripción del modal de editar proyecto
- var→let: Corregido scoping de
resolvedBuildingIdenhandleImportPerspectiva - Priority forwarding:
importPerspectiva()ahora pasa prioridad del selector al backend - Spread order:
createTask()spread de data antes de defaults para queorg_id/building_id/project_idno se sobreescriban - Existence checks:
handleDeleteProjectverifica existencia (404),handleRemoveProjectMemberretorna 404 si no hay match - res.ok validation: Perspectiva y Transcriptor validan response status antes de parsear
- Array validation: Proyectos validados como Array antes de
.map()en cross-app modals
v0.9.0 — 27 marzo 2026
⚡ Timeout Reliability — AbortSignal.timeout()
- Descubrimiento crítico:
setTimeout()callbacks NO se disparan en Cloudflare Workers durante I/O pendiente (comofetch()a LLMs) callGemini(): Migrado desetTimeout+AbortControlleraAbortSignal.timeout()— catchAbortError+TimeoutErrorcallOpenAI(): Migrado aAbortSignal.timeout()— eliminadosetTimeout/clearTimeout/AbortControllercallAnthropic(): Migrado aAbortSignal.timeout()— misma limpiezacallWorkersAI(): Migrado aAbortSignal.timeout()— preserva NeuronTrackinggenerateVisionContent(): Ambos paths (Groq + Gemini) migrados aAbortSignal.timeout()- Resultado: 0 ocurrencias de
clearTimeoutonew AbortControlleren aiService.js
🔗 Chain Architecture (Worker Fresco por Paso)
handleExecuteTask: Ahora ejecutaexecuteTaskInternalINLINE (awaited) en vez dectx.waitUntil- Razón:
ctx.waitUntil()mataba Workers downstream al expirar - Chain dispatch:
ctx.waitUntil(fetch("/continue"))— fire-and-forget, cada/continuecorre en Worker fresco handleContinueTask: Worker fresco con STEP_HARD_TIMEOUT 35s + LLM timeout 25shandleRetryStep: Mismo patrón STEP_HARD_TIMEOUT 35s
⏱️ Jerarquía de Timeouts Consistente
- LLM call: 25s (
AbortSignal.timeouten todos los providers) - STEP_HARD_TIMEOUT: 35s (Promise.race en Workers frescos)
- Section 5 STUCK: 50s (detección temporal)
- autoRecovery: 90s (
STUCK_THRESHOLD) - Client watchdog: 120s (frontend polling en task-engine.js)
- Iteration path fix:
ITER_HARD_TIMEOUTreducido de 240s → 35s, LLM timeout de 180s → 25s
🧠 Gemini 2.5 — Thinking Budgets
- thinkingConfig: Soporte nativo para
thinkingBudgetencallGemini() - Default step: 512 tokens (balance velocidad/calidad)
- Orchestrator plan: 2048 tokens (planificación compleja)
- CEO inter-step review: 1024 tokens (evaluación rápida)
- CEO subtask review: 4096 tokens (análisis profundo)
- Thinking part filtering:
parts.filter(p => !p.thought)— no expone razonamiento interno
🧑💼 CEO Inter-Step Review
- Nuevo: Tras cada paso completado, CEO evalúa calidad antes de continuar
- Timeout: 15s, thinkingBudget: 1024
- Decisiones: Continuar / Reintentar / Ajustar plan
🔄 Auto-Recovery Mejorado
- Age-based recovery: Recupera tareas según antigüedad del stuck
- Client watchdog: Frontend detecta tareas stalled >120s y resetea vía polling
- Auto-retry: Steps fallidos se reintentan automáticamente (hasta 2 veces)
- Race condition fix: Protección contra ejecuciones paralelas del mismo paso
📊 Modelo IA Actualizado
- Default básico/medio: Gemini 2.5 Flash (antes: Workers AI / DeepSeek)
- Default smart: Gemini 2.5 Pro (antes: DeepSeek V3)
- Orchestrator/Command/Architect: Gemini 2.5 Pro
- Structured output (Pro+): JSON schema enforcement para orchestrator
v0.8.0 — 20 marzo 2026
🔧 Fixes de Estabilidad
- Worker kill fix: Tareas no se matan al expirar el Worker padre
- Task reset: Limpieza de tareas stuck al arrancar
- Parallel task bug: Fix de ejecución simultánea de pasos
- Gemini image generation: Soporte para generación de imágenes vía Gemini
- Avatar improvements: Mejora de avatares en múltiples contextos
- Project sharing: Fix de permisos para proyectos compartidos
- Scraper projects: Fix de configuración para proyectos de scraping
v0.7.4 — 13 marzo 2026
🗑️ Papelera de agentes (Recycle Bin)
- Backend:
handleListAgentssoporta?inactive=1para listar agentes desactivados - Data Service: Nuevos métodos
getInactiveAgents()yrestoreAgent(id) - Sidebar: Botón ♻️ Papelera debajo de ➕ Crear agente
- Detail Panel:
showAgentRecycleBin()con lista de agentes desactivados y botón restaurar por agente - Restauración:
PATCH /agents/:id { is_active: 1, current_state: 'idle', energy_level: 100 } - UX: Avatares en gris con filter grayscale, fecha de desactivación, confirmación actualizada para mencionar papelera
🎨 Emoji Picker para avatares
- Reemplaza el input de texto plano en formularios crear/editar agente
- 7 categorías con 140+ emojis: Personas, Tech, Negocio, Creativos, Comunicación, Súper, Comida/Fun
- UI: Botón 48px con emoji actual → dropdown flotante con grid de 10 columnas
- Highlight del emoji seleccionado actualmente
- Cierre automático al hacer clic fuera
- CSS: Nuevos estilos para
.syn-emoji-picker-field,.syn-emoji-display,.syn-emoji-dropdown,.syn-emoji-grid,.syn-emoji-option
🧠 Architect Bot — Avatares creativos
- Nuevo bloque en prompt:
═══ AVATARES / EMOJIS CREATIVOS ═══ - Catálogo de ~150 emojis organizado por departamento:
- Marketing/Ventas, Soporte/RRHH, Tech/Dev, Diseño, Datos, Finanzas, Comunicación, Inmobiliaria, Directores
- Reglas por nivel: L3=poderosos, L2=profesionales, L1=frescos/divertidos
- Regla: Nunca repetir emojis entre agentes
- Regla: Nunca usar el genérico 🤖
v0.7.3 — 12 marzo 2026
🤖 Agent CRUD desde UI
- Crear agente: Formulario completo en detail panel (nombre, avatar, rol, departamento, level, personalidad, system prompt)
- Editar agente: Formulario pre-llenado con datos actuales
- Eliminar agente: Soft delete con confirmación visual (avatar + nombre + warning)
- Sidebar: Botón ➕ Crear agente en la lista de agentes
- CSS: Estilos para danger zone, delete confirmation, create agent hint, sidebar create button
v0.7.2 — 11 marzo 2026
🔗 Cadences ↔ Synapse Bridge
- Migración 0106:
source_typecolumn ensynapse_input_sources - Bridge utility (
synapse-bridge.js):notifySynapseInput()centralizada- Anti-loop via
opts.origin === 'synapse' - Config en
project.dataJSON blob (no columnas dedicadas) - Eventos:
task_status_change,data_row_insert/update/delete - Modos:
all,none,selected(con campos específicos)
- Anti-loop via
- Tasks API: Inyección bridge en cambios de status
- Data Rows API: Inyección bridge en batch operations con
Promise.allSettled - Synapse API: Nuevas rutas para gestión del bridge
- Config Modal: Tab Synapse en ProjectConfigModal para configurar bridge por proyecto
🐛 Bug fix: ORDER BY created_at → received_at
handleGetSourceItemsusabaORDER BY created_at DESCpero la tablasynapse_input_itemsusareceived_at- Corregido a
ORDER BY received_at DESC
v0.7.1 — 10 marzo 2026
📊 Data Search 2-Pass y trazabilidad
- Data access para agentes:
data_access_level(0/1/2) con búsqueda LIKE en datos - 2-pass: Agente pide búsqueda → sistema ejecuta → re-llama con resultados
- Badges de trace: Indicadores visuales de origen de datos en resultados
- Task report rewrite: Informes más claros con trazabilidad
📋 Subtareas con revisión CEO
- Migración 0105:
can_create_subtasks,data_access_levelen agents +parent_task_id,subtask_depthen tasks - CEO virtual: LLM revisa propuestas de subtareas antes de crearlas
- Lineaje:
parent_task_idvincula subtareas con tarea padre - Límites configurables:
maxPerTask: 5,maxDepth: 2
v0.7.0 — 8 marzo 2026
⚡ Sistema de energía y fatiga
- Energy system: Energía 0-100%, drains por tarea, recovery por break
- Fatigue mechanics: Consecutive tasks counter, thresholds de fatiga
- Mood system: 6 estados de humor (neutral, happy, focused, stressed, tired, inspired)
- Visual: Barra de energía con colores, emoji de humor, indicadores de fatiga
🏗️ Edificio y departamentos desde config
- Building management: Crear/editar/eliminar edificios y departamentos desde modal de configuración
- Department dropdown: Selector dinámico basado en pisos reales
v0.6.0 — 5 marzo 2026
🤖 Bot Sessions Persistencia v2
- Migración 0104: Tabla
synapse_bot_sessionsv2 - Persistencia: Conversaciones de bots se guardan y restauran entre sesiones
- Cleanup: Endpoint para limpiar mensajes
⚙️ Auto-execute y modo autónomo
- Migración 0103: Campo
auto_execute+ índice compuesto para cron - Config panel: Toggle de modo autónomo
- Documentación:
SYNAPSE_AUTONOMOUS_MODE.mdcon auditoría de estado
v0.5.0 — 2 marzo 2026
📤 Output Destinations schema-aware
- Routing inteligente: Outputs con schema detection + transform prompt
- Trazabilidad: Origin tracking en items enviados
🏢 Org Config
- Migración 0102:
synapse_org_configtable - Config panel: UI completa para 3 tiers de IA + providers
v0.4.0 — 27 febrero 2026
💬 Comunicaciones y Kanban
- Comms Panel: Vista Teams-style con threads + kanban board
- Conversaciones: CRUD completo con messages
📥 Input Sources mejorados
- Form bridge: Formularios públicos como input sources
- Processing prompt: IA procesa items al recibirlos
- Status management: active/paused/archived
v0.3.0 — 24 febrero 2026
📤 Output Destinations
- Migración 0098: Tablas
synapse_output_destinations+synapse_output_items - 5 tipos: data_row, cadences_task, webhook, notification, internal_event
- Auto-send: Envío automático o cola manual
- Transform prompt: Transformación IA pre-envío
v0.2.0 — 20 febrero 2026
🏆 Gamificación
- Achievements: Definiciones, tracking por agente, unlock animations
- Leaderboard: Ranking de agentes por XP
- Ratings: Valoraciones de ejecuciones con feedback
🎯 Task Execution
- Orchestrator AI: Análisis de tarea + selección de agentes + plan multi-agente
- Delegation flow: L3 → L2 → L1 con compilación de resultados
- Task steps: Registro de cada paso de ejecución
v0.1.0 — 15 febrero 2026
🏢 Core Synapse Studio
- Migración 0097: Schema core completo (buildings, floors, agents, tasks, events, scores)
- Edificio 2D: Renderer con pisos, mobiliario, elevator
- Agentes: 3 niveles, estados animados, movimiento con reglas
- SynapseBot: Architect wizard con function calling
- CommandBot: CEO para operaciones en lenguaje natural
- Backend API: 71+ handlers en
[[path]].js - Auth: Google Sign-In + org picker
📊 Resumen de migraciones
| # | Migración | Versión |
|---|---|---|
| 0097 | synapse_studio.sql |
v0.1.0 |
| 0098 | synapse_output_destinations.sql |
v0.3.0 |
| 0099 | synapse_fix_ratings_fk.sql |
v0.2.0 |
| 0100 | synapse_conversations_task_id.sql |
v0.4.0 |
| 0101 | synapse_agent_capabilities.sql |
v0.5.0 |
| 0102 | synapse_org_config.sql |
v0.5.0 |
| 0103 | synapse_auto_execute.sql |
v0.6.0 |
| 0104 | synapse_bot_sessions_v2.sql |
v0.6.0 |
| 0105 | synapse_subtasks_data_access.sql |
v0.7.1 |
| 0106 | synapse_cadences_bridge.sql |
v0.7.2 |
| 0108 | synapse_personality_library.sql |
v0.8.0 |
| 0112 | synapse_projects.sql |
v0.10.0 |