Changelog
Registro de cambios significativos en el proyecto.
[0.5.0] — 2026-08
Sección titulada «[0.5.0] — 2026-08»Multi-board Kanban con CRUD completo (#110)
Sección titulada «Multi-board Kanban con CRUD completo (#110)»- Server actions de board:
listBoardsAction,getBoardByIdAction,renameBoardAction,deleteBoardAction(además degetBoardActionycreateBoardAction) - Sidebar: nueva sección “Boards” con listado de tableros, crear (+), renombrar inline y eliminar con confirmación
- Rutas:
/kanban(primer board) y/kanban/[boardId](board específico) - Seed enriquecido: 5 usuarios, 3 workspaces, boards poblados y 40 tareas de backlog
Kanban: toolbar y controles de vista (#90, #95, #104)
Sección titulada «Kanban: toolbar y controles de vista (#90, #95, #104)»KanbanToolbarcon búsqueda por título/descripción, filtros de prioridad y asignado- Ancho de columna (compact/normal/wide/extraWide), densidad de tarjetas y tamaño de letra, todo persistido en
localStorage(syncro.kanban.view.v1) - Toggle de descripciones, “fill width” y limpiar filtros
- Ordenación por columna (prioridad, fecha límite, título, fecha de creación)
Edición de tareas y markdown (#97, #104)
Sección titulada «Edición de tareas y markdown (#97, #104)»TaskFormDialogpara crear y editar tareas (título, descripción markdown, prioridad, asignados, fechas y estimación)MarkdownEditor+MarkdownView(react-markdown + remark-gfm + rehype-raw) para las descripciones- TopBar unificada:
UserControls, menú de usuario y controles consistentes
Pulido de tarjetas y fixes de drag & drop (#109, #113, #117, #118)
Sección titulada «Pulido de tarjetas y fixes de drag & drop (#109, #113, #117, #118)»- Asignados con avatares, creador y fecha de creación en las tarjetas, tooltips de edición
- Fix: el hueco de arrastre sigue al puntero al mover tarjetas entre columnas
- Fix: bucle infinito al arrastrar (drag-over con debounce de 50ms +
columnAwareVerticalSortingStrategy) - Fix: desborde de tablas markdown en descripciones, tooltips de tableros, fecha de creación y tinte de columnas
formatDateextraído alib/dates.ts(DRY) y helpers de color enlib/color.ts
Equipos: roles editables y estadísticas (#115)
Sección titulada «Equipos: roles editables y estadísticas (#115)»updateMemberRoleAction: el OWNER cambia el rol de los miembros desde la página TeamsaddMemberAction/removeMemberActioncon validación de permisos (solo OWNER/ADMIN)- Estadísticas por miembro (
tasksCreatedytasksAssigned) enMemberList - Leyenda visual de roles (OWNER/ADMIN/MEMBER)
Time tracking: calendario, estimación e imputación de horas (#119)
Sección titulada «Time tracking: calendario, estimación e imputación de horas (#119)»- Schema: modelo
TimeEntryy campoTask.estimatedHours;Task.columnIdahora nullable (una tarea puede estar en backlog) cononDelete: SetNull - Backend en
server/time-entry/:getTeamCalendarAction,getMyTimeAction,listLoggableTasksAction,logTimeAction,deleteTimeEntryAction - Frontend:
CalendarGrid,DayDetailyMyTimeViewcon tabs Equipo / Mi tiempo createTaskAction/updateTaskActionaceptandueDate,startDateyestimatedHours- Métricas por tarea: invertido, desviación y % de estimación (
computeTaskMetrics, función pura) lib/dates.tscon serialización"YYYY-MM-DD"(componentes UTC)
CI y unit tests (#103, #107)
Sección titulada «CI y unit tests (#103, #107)»- CI: workflow de GitHub Actions con lint + typecheck bloqueantes en PRs a
dev/main - Unit tests: Vitest configurado en
apps/web; tests deuser-service(verifyCredentials + registerUser) ytime-entry-service(computeTaskMetrics) - Guía de aprendizaje de unit tests actualizada (ver Unit Tests)
Docs: migración a Astro + Starlight (#120)
Sección titulada «Docs: migración a Astro + Starlight (#120)»- Las docs pasan de Next.js a Astro + Starlight (estáticas, port 3001, deploy en Vercel)
- Nueva página Calendario y horas
- Guía de setup corregida (requisitos BD/env,
pnpm dev:fallback, enlace a Discord)
Sistema de diseño: escala de radios tokenizada
Sección titulada «Sistema de diseño: escala de radios tokenizada»- Escala de radios restaurada en
globals.css:sm=6px,md=10px,lg=14px,xl=20px,pill=999px rounded-full→rounded-pillen toda la app (118 usos) para usar el tokenpill- Estandarización por tipo de componente: inputs/botones/diálogos →
md(10px), dropdowns/menús →lg(14px), superficies grandes (kanban, landing) →xl(20px), elementos circulares →pill - Eliminados valores arbitrarios (
rounded-[8px]) y radios no mapeados a tokens (rounded-2xl,rounded-full)
Infra y proceso
Sección titulada «Infra y proceso».gitignoredocumenta la convención de archivos de contexto de agentes (AGENTS.md,*.mdde agentes) (#121)- Nueva guía GitHub CLI
[0.4.0] — 2026-07
Sección titulada «[0.4.0] — 2026-07»Kanban board completo con drag & drop (ee2da54)
Sección titulada «Kanban board completo con drag & drop (ee2da54)»- Implementación del tablero Kanban con
@dnd-kit(core + sortable + utilities) KanbanBoardcon DndContext, DragOverlay, optimistic updates y persistencia vía server actionsKanbanColumndropeable: nombre editable inline, selector de 7 colores, contador de tareas, confirm dialog al eliminarTaskCardsortable: dropdown de prioridad (LOW→MEDIUM→HIGH→URGENT), asignación con avatares toggle, descripción expandible, confirm inline al eliminarCreateTaskDialog: modal con título, descripción, prioridad y selector de miembrosConfirmDialog: modal reutilizable de confirmación con variante destructiva
CRUD Columnas (nuevo backend)
Sección titulada «CRUD Columnas (nuevo backend)»- Server actions:
createColumnAction,updateColumnNameAction,updateColumnColorAction,deleteColumnAction - Validaciones: mínimo 3 columnas, máximo 7 columnas por board
- Servicio con posicionamiento automático y colores por defecto
CRUD Tareas (nuevo backend)
Sección titulada «CRUD Tareas (nuevo backend)»- Server actions:
createTaskAction,updateTaskAction,moveTaskAction,deleteTaskAction,toggleAssigneeAction - Validación Zod en creación (título requerido, descripción opcional, prioridad por enum)
- Normalización de posiciones al mover/eliminar tareas
CRUD Board (nuevo backend)
Sección titulada «CRUD Board (nuevo backend)»getBoardAction: obtiene board con eager loading de columnas, tareas y asignados- Servicio y repositorio en
server/board/
Restructuración del layout
Sección titulada «Restructuración del layout»- Sidebar: eliminado
WorkspaceSelector, ya no recibe workspaces/activeWorkspace (más angosta) - TopBar: nuevo dropdown inline de workspaces en el breadcrumb, botón “Invitar” con copiar enlace
- WorkspaceSelector.tsx: eliminado (código muerto)
- layout.tsx: pasa workspaces/activeWorkspace/locale a TopBar
Eliminar workspace con type-to-confirm
Sección titulada «Eliminar workspace con type-to-confirm»DeleteWorkspaceDialogcon confirmación escribiendo “ELIMINAR”- Solo visible para rol OWNER
- Server action
deleteWorkspaceActionen workspace-actions
Seed mejorado
Sección titulada «Seed mejorado»- 2 usuarios: Usuario Demo + María García (
maria@syncro.app, pass:demo1234) - 2 workspaces con 5 columnas cada uno y tareas con descripciones realistas
- “Proyecto Alpha”: 9 tareas con prioridades y asignaciones variadas
- “Diseño UX”: 6 tareas + 2 comentarios
- Nuevo namespace
kanbancon todas las claves del tablero (30+ claves) - Claves
workspace.deleteWorkspace*para el diálogo de eliminación - Fix:
sidebar.teams→ singular (Equipo/Team)
[0.3.0] — 2026-07
Sección titulada «[0.3.0] — 2026-07»Home page redesign (00a290d + 2b5d7e4)
Sección titulada «Home page redesign (00a290d + 2b5d7e4)»- Nuevo diseño del dashboard con estadísticas, tips y layout compacto
- Tarjetas de roadmap con hover refinado y diseño mejorado
- Componentes
WelcomeBanner,RoadmapSection,RoadmapCard
Settings con datos reales + sesión en perfil (c207b08)
Sección titulada «Settings con datos reales + sesión en perfil (c207b08)»- Settings ahora carga datos reales del workspace desde la DB (nombre, descripción, slug)
- Perfil muestra datos de sesión real en lugar de hardcoded
- Edición de perfil funcional con server action
editProfileAction - Configuración de equipo: selector de rol por defecto y toggle de invitaciones (
269ac7b)
Validación Zod en formularios de auth (8290e4c)
Sección titulada «Validación Zod en formularios de auth (8290e4c)»- Validación Zod v4 en login y register
noValidateen formularios para evitar validación nativa del navegador- Corrección de sección
errorsfaltante en mensajes deauth.register
Workspace selection redesign (c7bf0e7)
Sección titulada «Workspace selection redesign (c7bf0e7)»- Página de selección de workspaces unificada con el design system
- Estados vacío y grid rediseñados con los componentes
ButtonyCard
Copiar enlace del workspace (bf97900)
Sección titulada «Copiar enlace del workspace (bf97900)»- Botón “Copiar enlace” en la URL del workspace en settings, con feedback visual
- Botón “Invitar” en la TopBar ahora funcional: despliega menú con “Copiar enlace” (con feedback) y placeholder para “Invitar miembros”
- Nuevas claves i18n:
copyLink,linkCopied,inviteMembers
Forgot password (0163cc8)
Sección titulada «Forgot password (0163cc8)»- Nueva página
/forgot-passwordcon formulario - Traducción de aria-labels en el header
Empty states (451fae2)
Sección titulada «Empty states (451fae2)»- Estados vacíos para las páginas de teams y home
- Mensajes informativos y llamadas a la acción cuando no hay datos
i18n: migración de textos hardcoded (8e4df63)
Sección titulada «i18n: migración de textos hardcoded (8e4df63)»- Migración de cadenas estáticas en layout y componentes de autenticación al sistema de mensajes
- Corrección de breadcrumbs i18n y enlaces rotos (
03476d5)
404 page polish (83ac714)
Sección titulada «404 page polish (83ac714)»- Mejora visual de la página 404 con colores del tema
- Mensajes con humor temático del kanban
[0.2.0] — 2026-07
Sección titulada «[0.2.0] — 2026-07»SO-06: Crear workspace desde UI + Seeder
Sección titulada «SO-06: Crear workspace desde UI + Seeder»- Nuevo modal
CreateWorkspaceModalcon formulario para crear workspaces - Server action
createWorkspaceActioncon validación Zod - Botones “Crear nuevo workspace” habilitados en estado vacío y grid de workspaces
- Seeder de Prisma (
prisma/seed.ts) con usuario demo y 2 workspaces de prueba - Documentación del seeder y del modal en docs
[0.1.0] — 2026-07
Sección titulada «[0.1.0] — 2026-07»Dark Mode (dd607b0)
Sección titulada «Dark Mode (dd607b0)»- Sistema de tema oscuro/claro con
ThemeProvidery contexto de React ThemeTogglecon iconos de sol/luna y animación de transición- Persistencia en
localStoragey detección de preferencia del sistema - Clases
dark:en todos los componentes del landing y workspace
Workspace Layout (546ebc2)
Sección titulada «Workspace Layout (546ebc2)»- Nuevo layout de workspace post-autenticación con ruta
/[locale]/home Sidebarcolapsable con iconos y navegación (Home, Kanban, Calendar, Teams, Chat, Settings)TopBarcon información del usuario y breadcrumbs- Páginas placeholder para todas las secciones del workspace
- Sistema de rutas protegidas separado del landing público
Rebranding Visual (fb2d246)
Sección titulada «Rebranding Visual (fb2d246)»- Nueva paleta de colores y sistema de tipografía con Geist
- Rediseño de componentes:
Button(variantes primary/secondary/ghost, tamaños sm/md/lg, soporte de iconos) Cardcon borde gradient interactivoBadgepara estados (planned/building/ready)- Migración completa a Tailwind CSS v4
Migración a Tailwind CSS v4 (75b2c71)
Sección titulada «Migración a Tailwind CSS v4 (75b2c71)»- Eliminación de módulos CSS (
*.module.css) - Migración de todos los estilos a clases utilitarias de Tailwind
- PostCSS con
@tailwindcss/postcss
Autenticación con NextAuth v5 (7885385)
Sección titulada «Autenticación con NextAuth v5 (7885385)»- Configuración de NextAuth v5 beta con PrismaAdapter
- Google OAuth con persistencia de locale post-login
- Páginas de Login y Register con diseño responsive
SessionProviderpara componentes cliente- Separación de rutas públicas y autenticadas con route groups
Login y registro con credentials (0000000)
Sección titulada «Login y registro con credentials (0000000)»- Credentials provider con email + contraseña usando
bcryptjs - Registro con validación de Zod v4
- Hashing de contraseñas en la capa de servicio
- Auto-login tras registro exitoso
- Creación transaccional de usuario + workspace personal
- Mapeo de errores de Zod a códigos i18n
- Sin verificación de email en el MVP
Internacionalización (12b0aad)
Sección titulada «Internacionalización (12b0aad)»- Configuración de
next-intlcon detección automática de idioma - Soporte para español e inglés
middleware.tspara redirección basada enAccept-Languagey cookieNEXT_LOCALE- Sistema de mensajes JSON con estructura de namespaces
LocaleSwitcheren el header
Landing Page
Sección titulada «Landing Page»- Hero asimétrico con bento grid y animaciones scroll reveal
- Header sticky con menú hamburguesa en mobile
- Sección de features con iconos animados
- Footer con copyright, contacto y enlace a GitHub
Infraestructura Inicial (863e6a5)
Sección titulada «Infraestructura Inicial (863e6a5)»- Configuración de Turborepo con workspaces pnpm
- Prisma 7 con PostgreSQL (Neon + Docker local)
- Schema inicial: User, Account, Session, VerificationToken
- Configuración de ESLint y TypeScript compartida
- Scripts de desarrollo y despliegue