- Añade PostTipo como union type: 'noticia'|'evento'|'aviso'|'comunicado'|'galeria'
- Incluye 'tipo' como campo requerido en la interfaz Post (types/publications.ts)
- Agrega validación z.enum para 'tipo' en PostSchema (validators/publications.ts)
- Elimina test_action.ts y scripts de diagnóstico que bloqueaban el build
- Añade componente LiveChatBox con Realtime de Appwrite (subscribe)
- Integra chat en vivo junto al player en /tv con layout 2/3 + 1/3
- Nueva ruta /tv/overlay: página transparente para browser source en OBS
con renderizadores de LOWER_THIRD, TICKER y COMMENT reactivos en Realtime
- Exporta 'account' desde appwrite.ts para autenticación cliente
- Incluye scripts setup_live_chat.js y setup_stream_state.js para provisionar
colecciones live_chat y stream_state en Appwrite
- Ajusta versiones SDK: appwrite@22.4.1 y node-appwrite@22.0.0 (compatibles con servidor 1.8.1)
- Añade campo 'tipo' al SCHEMA_MAP de posts (whitelist de extractCleanData)
- Agrega selector 'Tipo de Contenido' en PublicationLayout (Noticia/Evento/Aviso/Clasificado/Blog)
- Agrega fallback server-side en entities.ts: si 'tipo' no llega, se asigna 'noticia' por defecto
- Soluciona AppwriteException: Missing required attribute 'tipo' al crear publicaciones
- Added @tiptap/extension-youtube and extension-image
- Added MediaGridSelector component with robust grid UI and inline uploads
- Integrated MediaGridSelector into PublicationLayout for featured images
- Integrated inline image module in RichTextEditor linked to MediaGridSelector
- Rendered date conditionally on PostCard and disabled bubble propagation
- Added isomorphic-dompurify to mitigate XSS in the public article viewer
- Added RichTextEditor to PublicationLayout's 'contenido'
- Added MediaThumbnail to RelationSelectField for dynamic image previews
- Replaced PostCard edit overlay with single click (view) and double click (edit) mechanics
- Fixed persistence/state bugs by adding revalidatePath to entity server actions
- Replaced hard reload in PublicationsList with router.refresh() for optimistic syncing
- Removed next/font/google from layout.tsx
- Added standard Google Fonts <link> in HTML head
- Defined --font-inter and --font-outfit in globals.css
- This allows the build to pass in environments with restricted internet access.
- Sanitized getEntityConfig at the source to prevent Navbar errors.
- Sanitized user object in DashboardLayout to protect Sidebar.
- This ensures all collections and custom routes are immune to 'Only plain objects' errors.
- Applied JSON.parse(JSON.stringify()) sanitization to documents and relationData in EditEntityPage.
- Sanitized relationData and user in NewEntityPage.
- Sanitized posts and settings in Homepage.
- Added missing Query import to dashboard edit page.
- This ensures all data passed to Client Components is in a serializable POJO format.