Saltar a contenido

20260218 - La 2.ª Edición del Aniversario

GS_Release_2026-02-18_Image_1A.png

Fecha: 2026-02-18

Resumen

Celebrando 2 años de innovación: GenericSuite Release 2026-02-18 está en vivo! 🚀

Al alcanzar nuestro hito de 2º aniversario, nos complace anunciar una actualización transformadora del ecosistema de GenericSuite. Esta versión se centra en tres pilares: Flexibilidad, Rendimiento y Seguridad.

Beneficios profesionales clave:

  • Independencia de Base de Datos y Nube: Hemos roto los límites. El soporte ahora se extiende a PostgreSQL, MySQL y Supabase.

  • Validación de datos moderna: Migrar a Pydantic garantiza una serialización de datos más rápida, más confiable y esquemas tipados de forma estricta, reduciendo errores en tiempo de ejecución.

  • Experiencia de desarrollo mejorada: Con la nueva Plantilla FastAPI, sincronización automática de dependencias para Dockerfiles, motor de contenedores Podman y el script de inicio estándar del servidor MCP, creación automática de la estructura de tablas de la base de datos local, creación de usuario super y configuración de servicios backend robustos es más rápido que nunca.

  • IA y Privacidad: Con Masking de Conversación de IA integrado en todos los frameworks (FastAPI, Flask, Chalice) se garantiza que los datos sensibles permanezcan protegidos durante las interacciones con LLM.

  • Optimización del Frontend: Una refactorización completa de nuestro Editor Genérico CRUD (GCE_RFC) usando ganchos de rendimiento de React reduce significativamente las recargas de componentes, acompañado de una interfaz de usuario moderna "rounded-xl".

  • Capa de abstracción de almacenamiento en la nube: abre la ruta para cambiar entre AWS S3, Azure Blob y Google Cloud Storage (AWS está implementado al 100% hasta ahora).

Esta "2ª Edición del Aniversario" está diseñada para escalar con las necesidades de tu negocio, proporcionando la base para aplicaciones de alto rendimiento e impulsadas por IA. Consulta el registro de cambios completo para detalles sobre nuestra nueva integración de Cloudflare Tunnel y el soporte de Python 3.12.

Núcleo frontend de GenericSuite

Paquete, Pull Request y Etiqueta

  • Paquete: https://www.npmjs.com/package/genericsuite/v/1.2.0
  • Pull Request: https://github.com/tomkat-cr/genericsuite-fe/pull/9
  • Etiqueta: https://github.com/tomkat-cr/genericsuite-fe/releases/tag/1.2.0

Resumen del Pull Request

Páginas de listado de hijos del formulario de editor genérico con tablas externas, versionado de API y mejor compatibilidad del monorepo

Este pull request introduce un conjunto completo de mejoras y optimizaciones en la aplicación, principalmente centradas en las capacidades del Editor Genérico CRUD, la gestión de estado y la experiencia general del usuario. Reestructura componentes centrales para aprovechar los ganchos de rendimiento de React, estandariza configuraciones de entorno y agiliza los procesos de construcción. Estos cambios buscan proporcionar una base más robusta, eficiente y amigable para desarrolladores para futuros desarrollos.

Destacados

  • Editor Genérico CRUD mejorado (GCE_RFC): El Editor Genérico CRUD ahora admite tablas externas con subTipo: "table" para listados de hijos, lo que permite relaciones de datos más flexibles. Se han añadido tipos de campo h1 a h6 para una mejor estructuración de las páginas de formulario, y el componente SuggestionDropdown se ha mejorado con tenue, y el gancho useCombobox para mejor rendimiento y experiencia de usuario. Las llamadas API dentro de GCE_RFC se han optimizado para evitar repeticiones.
  • Gestión de claves de API y Caché de datos de usuario: Las claves API ahora se gestionan en una tabla separada users_api_keys, y la página de perfil de usuario incluye una sección dedicada para claves API. Se ha implementado caché de datos de usuario (getUserDataCache, setUserDataCache) para optimizar la obtención de datos.
  • Mejora de la gestión de estado y rendimiento: Contextos clave (MainSectionContext, UsersContext, AppContext) se han refactorizado para usar useCallback, useMemo, useRef y useReducer, reduciendo significativamente recargas innecesarias de componentes y mejorando el rendimiento general de la aplicación. Se ha introducido un mecanismo de caché (fetchOrCache) en el MainSectionProvider para optimizar la obtención de datos.
  • Manejo flexible de variables de entorno: Las variables de entorno del frontend se han estandarizado para evitar conflictos en configuraciones de monorepo, permitiendo que variables con prefijo REACT_APP_ sean reemplazadas por prefijos APP_. Se han añadido variables de entorno nuevas como API_VERSION, API_KEYS_PREFIX, USE_CONTAINERS_ENGINE_APP y RUN_PROTOCOL_AND_PORT_REPLACEMENT para mayor flexibilidad de configuración.
  • Refinamientos de UI/UX: Los botones y campos de entrada en toda la aplicación se han actualizado con un estilo más redondeado rounded-xl. Los mensajes de error en la página de inicio de sesión se han mejorado, y se añadió un botón de cierre a los mensajes emergentes de índice de GCE_RFC. Las clases de animación se han renombrado para mayor claridad, y se añadió un nuevo icono de error a GsIconLib.
  • Actualizaciones de Build y herramientas: Las dependencias del proyecto, incluyendo babel-jest, jest y postcss-loader, se han actualizado. Nuevos objetivos de Makefile (tailwind-build) y un nuevo script (link_external_configs.sh) se han añadido para simplificar la reconstrucción de Tailwind CSS y la vinculación de configuraciones JSON externas para desarrollo local y pruebas.

CHANGELOG.md

[1.2.0] - 2026-02-18

Añadido
  • Variable de entorno API_VERSION para establecer la versión de la API, por defecto "v1" [GS-245].
  • Las listas de hijos de la página de formulario del editor genérico ahora aceptan tablas externas con el subTipo "table" [GS-159].
  • El separador de regla horizontal antes de los elementos secundarios en páginas de formulario del editor genérico [GS-250].
  • Variable de entorno API_KEYS_PREFIX para establecer el prefijo de claves API, por defecto "sk-gsu-" [GS-159].
  • Constante WAIT_ANIMATION_MARGIN_TOP_CLASS para añadir margen superior a en el componente [GS-246].
  • Documentación de "UPDATE_SNAPSHOTS=1 make publish" en Makefile.
  • Tipos de campo h1 a h6 en archivos JSON [GS-250].
  • "make tailwind-build" para reconstruir los archivos CSS de Tailwind (sin mantener vigilancia de cambios) [GS-63].
  • "make tailwind-build" añadido al script de publicación bash [GS-63].
  • getUserDataCache y setUserDataCache para crear una caché leyendo los datos del usuario actual, implementación en las funciones específicas de Users.jsx [GS-251].
  • Botón de cierre para mensajes emergentes de la página índice de GCE_RFC (p. ej. "X items deleted...") mostrado al regresar desde la página de Form Data [GS-251].
  • Componente hijo Api Keys añadido al Perfil de Usuario [GS-159].
  • Función "customOnChange()" añadida a como parámetro "onChange", también Formik setFieldValue() añadido como parámetro "setValue", para que campos tipo "component" actualicen los valores internos de Formik y se guarden en la base de datos [GS-252].
  • El componente ShowAsDisabledField puede renderizar el componente personalizado como un campo deshabilitado simulado (comportamiento actual) o como un Campo Formik, personalizable con los nuevos parámetros "showAsField", "isReadOnly", "type", "onChange", "onBlur". OnChange permite almacenar el valor calculado en los valores internos de Formik y, por lo tanto, guardarlo en la base de datos [GS-252].
  • Variable de entorno USE_CONTAINERS_ENGINE_APP para controlar si usar la app del motor de contenedores para el entorno de desarrollo local cuando RUN_PROTOCOL="https" [GS-257].
  • Variable de entorno RUN_PROTOCOL_AND_PORT_REPLACEMENT para controlar el reemplazo automático de protocolo y puerto para variables de entorno de desarrollo local APP_FE_URL_DEV y APP_API_URL_DEV [GS-257].
  • Script "link_external_configs.sh" para vincular el directorio de configuraciones JSON externas para que pueda probarse en GenericSuite FE Core [GS-258].
  • Cambio de tipo de campo "config_name" a "suggestion_dropdown" en "Admin > Users > User Configurations", para que se pueda probar el Suggestion Dropdown en GenericSuite FE Core [GS-258].
  • Icono de error a GsIconLib [GS-258].
  • Componente para agregar una capa try-catch a definiciones de campo que tengan "chatbot_popup" establecido en true [GS-258].
  • Documentación exhaustiva de parámetros para GenericSelectDataPopulator.
  • Documentación exhaustiva para getUrlParams.
  • Variable VERBOSE_RUN_CONFIG para habilitar registro detallado en run_config.sh.
  • Utilidades MD5 [GS-266].
  • Generación de ObjectId() tipo BSON en "id.utilities.jsx" [GS-266].
  • "UsersUserHistory.jsx" y "users_user_history.json" para depurar listados de hijos con fechas y generación de ObjectId() tipo BSON de MongoDB [GS-266].
  • Implementar helper de navegación para pruebas [GS-267].
  • "generalUtilities" para detectar diferentes tipos de elementos, incluyendo dict y lista [GS-251].
Cambiado
  • Mejorar el mensaje de error en la página de inicio de sesión [GS-246].
  • Actualizar class_name_constants.jsx para que los botones sean más redondeados y eliminar comentarios no utilizados [GS-246].
  • Actualizar getFetch() para verificar si la respuesta es ok usando los códigos de estado [200, 201, 202, 204] [GS-245].
  • Renombrar constantes de clase de estilo: PAGE_ANIMATION_CLASS a WAIT_ANIMATION_CLASS, SHOW_HIDE_PAGE_ANIMATION_ENABLED_CLASS a WAIT_ANIMATION_ENABLED_CLASS, SHOW_HIDE_PAGE_ANIMATION_DISABLED_CLASS a WAIT_ANIMATION_DISABLED_CLASS [GS-246].
  • Renombrar el componente a [GS-246].
  • El separador de regla horizontal
    ahora es discontinuo [GS-250].
  • Las claves API ahora están en una tabla separada "users_api_keys", no en un arreglo de la tabla "users" [GS-159].
  • Renombrar "parentKeyNames" a "endpointKeyNames" en archivos JSON de configuración [GS-159].
  • Mover el atributo "parentUrl" desde "endpointKeyNames" a la raíz de los archivos JSON de configuración [GS-159].
  • MainSectionContext, UsersContext y AppContext implementan useCallback, useMemo, useRef y useReducer en lugar de useState, para evitar recargas innecesarias de componentes [GS-251].
  • La referencia de README de Configs apunta a la documentación oficial de GenericSuite en lugar de repetir su contenido [GS-251].
  • getFieldElementsYupValidations() habilitado para tener validaciones en la página de Datos del Formulario [GS-251].
  • Renombrar estado y setState con errorState, setErrorState en AppContext.jsx, App.jsx, generic.editor.rfc.selector.jsx, generic.menu.service.jsx [GS-251].
  • Renombrar status y setStatus a errorStatus, setErrorStatus en generic.editor.rfc.formpage.jsx [GS-251].
  • Renombrar parámetros de : mode_par, id_par, y editor_par a mode, id, y editor [GS-251].
  • Renombrar las envvars del frontend para evitar conflictos con la misma variable usada en el backend y poder fusionar los archivos ".env" en un monorepo: GIT_SUBMODULE_LOCAL_PATH a GIT_SUBMODULE_LOCAL_PATH_FRONTEND, y RUN_METHOD a RUN_BUNDLER [GS-243].
  • La variable REACT_APP_APP_NAME puede eliminarse y sustituirse por APP_NAME en monorepos [GS-243].
  • La variable REACT_APP_DEBUG puede eliminarse y sustituirse por APP_DEBUG en monorepos [GS-243].
  • Si REACT_APP_API_URL no está establecida, se puede usar APP_API_URL [GS-243].
  • Si REACT_APP_URI_PREFIX no está establecida, se puede usar URI_PREFIX [GS-243].
  • Si REACT_APP_X_TOKEN no está establecida, X_TOKEN puede usarse en su lugar [GS-243].
  • Si REACT_APP_USE_AXIOS no está establecida, USE_AXIOS puede usarse en su lugar [GS-243].
  • Enviar "currentObj" a "select_component" y "component" los tipos de campo ahora reciben "currentObj" como parámetro en getSelectDescription() [GS-258].
  • Pasar dbRow a los tipos de campo de formulario "select_component" y "component" para mayor contexto de datos [GS-37].
  • Exportar la utilidad buildDescription en "generic.editor.rfc.selector" y mejorar la documentación de "GenericSelectGenerator" [GS-37].
  • Pasar currentObj como parámetro a dataPopulator en getSelectFieldsOptions() [GS-37].
  • Centralizar y mejorar la extracción de mensajes de error de API con un nuevo helper getErrorMsgFromApi para evitar mensajes como "[object Object]" cuando se usa axios [GS-262].
  • Renombrar "idUtilities.getUuidV4" a "uuidUtilities.getUuidV4" [GS-266].
  • Mejoras en el diseño de la página de inicio de sesión aislando el logo del cuadro de usuario y contraseña.
Fijo
  • Mensaje de error al usar axios cuando la sesión expira o las credenciales son inválidas [GS-246].
  • Mensaje de error de la API como un arreglo cuando hay errores en la llamada principal de la API o en las llamadas de funciones específicas [GS-251].
  • getFileExtension() para eliminar los parámetros de consulta de la URL [GS-72].
  • Optimizar las llamadas API del Editor Genérico CRUD (GCE_RFC), evitando llamadas repetidas [GS-251].
  • Optimizar las llamadas API del Generador de Menú Genérico (GMG), evitando llamadas repetidas [GS-251].
  • Botón de inicio de sesión mostrado en cada recarga de página, mientras se cargan los menús [GS-251].
  • GMG muestra el mensaje "URL not found..." durante la carga del menú [GS-251].
  • GCE_RFC no muestra el mensaje de error cuando la sesión ha expirado [GS-251].
  • Suprimir advertencias en el LoginPage sobre atributos de autocompletar usuario y contraseña (Más información: https://goo.gl/9p2vKq)
  • Arreglar color del campo de entrada en el componente [GS-252].
  • Arreglar la inicialización de la Caché en el proveedor de Editor Genérico CRUD (MainSectionProvider) [GS-252].
  • Arreglar componente SuggestionDropdown: usar debounce para limitar la cantidad de llamadas a la API y reemplazar el antiguo Downshift por el gancho useCombobox [GS-258].
  • Mostrar el mensaje de error en la página de inicio de sesión cuando se usa axios y la sesión expira o las credenciales son inválidas [GS-37] [GS-202].
  • Implementar renderizado seguro de Markdown para mensajes [GS-262].
  • La función includesAppValidLinks se usa como heurística de seguridad para determinar si un mensaje de error debe renderizarse como HTML. Esta comprobación era insuficiente, ya que solo verifica si el mensaje contiene un correo o URL hardcodeados. Un atacante podría eludir esta verificación incluyendo alguna de estas cadenas (p. ej., 'support@exampleapp.com') en una carga maliciosa. Si el mensaje de error contiene datos no confiables, como entradas reflejadas de una respuesta de error de API, esto conduce a una vulnerabilidad de Cross-Site Scripting (XSS) cuando el mensaje se representa en la UI.
  • Optimizar la obtención de datos de usuario con caché de solicitudes para evitar condiciones de carrera [GS-262].
  • "TypeError: stringDate.indexOf no es una función" en addMissingTz cuando la fecha suministrada es un número [GS-194].
  • "[object Object] EFFF-020" cuando la API devuelve un error al eliminar/actualizar el elemento en EditFormFormikFinal() [GS-194].
  • Fecha no mostrada en formularios de datos de listados de hijos en lectura solamente: timestampDbPostRead() usa resultset[0] para llamar a processTimestampToDate() porque campos "date" y "datetime-local" se muestran como "mm/dd/yyyy, --:-- --" [GS-266]
  • Usar utilidades MD5 para hash de rowId en formularios de datos cuando no hay row._id o row[editor.primaryKeyName], evitando la advertencia "Encountered two children with the same key, <table_name>_row_undefined_tr_enclosure" [GS-266].
  • Los parámetros de consulta no se reconocen en getUrlParams() [GS-266].
  • Mostrar solo contenido cuando menu=0 en la página principal [GS-266].
  • Desactivar el botón de próxima página y evitar mostrar "Página 1 de 0" cuando la tabla no tenga ítems en el GCE_RFC [GS-266].
  • Arreglar que los menús desplegables se cierren cuando se haga clic en cualquier otro elemento [GS-266].
  • Prevenir advertencias de React manejando valores nulos/indefinidos de campos de formulario en getFieldElementsDbValues() [GS-266] [GS-262].
Seguridad
  • Actualizar Jest y Babel a las versiones más recientes para corregir la advertencia "npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful." [GS-219] [GS-267].
  • 37 vulnerabilidades de seguridad (incluyendo altas y críticas) encontradas en las dependencias del proyecto se abordaron, añadiendo una sección de "overrides" en package.json para forzar versiones seguras de dependencias transitivas (elliptic, json5, minimatch, postcss, loader-utils) sin romper tu configuración de alto nivel [GS-219] [GS-267].
Eliminado
  • Dependencias "boto3" y "pymongo", para que cada proyecto pueda tener sus propias dependencias según la base de datos y el proveedor de almacenamiento en la nube elegidos [GS-245].
  • save_all_users_params_files() y /users/caujf [GS-240] [GS-245].
  • Dependencias "python-dateutil", "marshmallow", "requests", "dnspython", "wheel", porque no se usan [GS-248].
  • Dependencias "fastmcp" y "mcp", para que cada proyecto pueda instalarlas si es necesario [GS-248].

GenericSuite Backend AI

Paquete, Pull Request y Etiqueta

  • Paquete: https://pypi.org/project/genericsuite-ai/0.3.0/
  • Pull Request: https://github.com/tomkat-cr/genericsuite-be-ai/pull/12
  • Etiqueta: https://github.com/tomkat-cr/genericsuite-be-ai/releases/tag/0.3.0

Resumen del Pull Request

Añadir create_app() para Flask, try-except a todas las importaciones opcionales para reportar qué dependencia falta, y correcciones de seguridad

Este pull request mejora significativamente la flexibilidad, seguridad y mantenibilidad del proyecto. Introduce un patrón estandarizado de creación de aplicación para Flask, expande las capacidades de base de datos y almacenamiento en la nube, e integra características avanzadas de masking de conversación de IA. Se ha puesto un énfasis importante en mejorar la gestión de dependencias haciendo que muchos paquetes sean opcionales y proporcionando instrucciones de instalación más claras, junto con actualizaciones críticas de seguridad a bibliotecas centrales. Estos cambios abarcan desde simplificar el desarrollo hasta reducir la sobrecarga operativa y fortalecer la resiliencia de la aplicación.

Destacados

  • Modularidad mejorada y soporte de framework: Se introdujo una función create_app() estandarizada para aplicaciones Flask y se integró AI Conversation Masking en FastAPI, Flask y Chalice, mejorando la configuración de la aplicación y la consistencia.
  • Gestión de dependencias y reporte de errores: Se implementaron bloques try-except para todas las importaciones opcionales, proporcionando mensajes de error más claros a los desarrolladores sobre dependencias faltantes y simplificando el proceso de instalación. Muchas dependencias fueron eliminadas o hechas opcionales para reducir el tamaño del proyecto.
  • Ampliación de capacidades de base de datos y almacenamiento en la nube: Se añadió soporte para PostgreSQL y MySQL y se desarrolló una capa de abstracción de almacenamiento para AWS S3, Azure y Google Cloud Platform, incluyendo el uso de URLs firmadas de AWS para acceso seguro y limitado en el tiempo.
  • Actualizaciones de seguridad críticas: Se abordaron múltiples vulnerabilidades de seguridad actualizando dependencias clave como urllib3, langchain-core y langchain a sus versiones más seguras.
  • Configuración y actualizaciones de modelo: Se actualizó el modelo predeterminado de HuggingFace, se ajustaron las URL base de AIMLAPI y Groq, y se corrigió la compatibilidad de la versión de faiss-cpu para implementaciones en AWS Lambda.

CHANGELOG.md

[0.3.0] - 2026-02-18

Añadido
  • Variable de entorno API_VERSION para establecer la versión de la API, por defecto "v1" [GS-245].
  • Soporte para bases de datos Postgres [GS-194].
  • Soporte para Supabase [GS-161].
  • Soporte para MySQL [GS-249].
  • Implementar capa de abstracción de almacenamiento para AWS S3, Azure y GCP [GS-72].
  • Implementar AWS generate_presigned_url() para proteger el acceso a buckets S3, de modo que expiren en poco tiempo y se bloquee todo acceso público. Configuración disponible con STORAGE_PRESIGNED_EXPIRATION_SECONDS (por defecto 5 minutos o 300 segundos) [GS-72].
  • Soporte para OpenAPI: guardar archivos JSON y YAML de OpenAPI en un directorio especificado por PATH_TO_SAVE_OPENAPI envvar [GS-245].
  • Dependencia "requests-toolbelt" porque es requerida por parse_multipart.py [GS-248].
  • Comando "make test" para ejecutar pruebas [GS-248].
  • "pymongo" y "boto3" para dependencias del grupo de desarrollo para ejecutar pruebas [GS-248].
  • Variable de entorno APP_LOGGER_OPTIONS para configurar opciones de registro, inicialmente para deshabilitar el mensaje de depuración al iniciar la aplicación cuando "silent" está activado [GS-245].
  • Obtención de token de MCP a partir de headers (Authorization: Bearer ) con la función get_access_token() en utilidades mcplib [GS-159].
  • Variable de entorno MCP_MANDATORY_USER_ID para forzar autenticación MCP con user_id y api_key. Por defecto "0" para permitir autenticación con clave API solamente [GS-159].
  • Implementación del endpoint de logs [GS-250].
  • Añadir encabezado Message-ID a correos salientes [GS-37].
  • Configurar modo de depuración de correo electrónico mediante la variable de entorno SEND_EMAIL_DEBUG [GS-37].
  • Configuración de db_engine a SqlTable para que métodos como array_fields_management() y array_fields_value() puedan usar las funciones correspondientes [GS-194].
  • Soportar operaciones $inc, $push, $addToSet y $pull en la abstracción SQL [GS-194].
  • Añadir get_table_structure() y quote_value() en helpers de DB genéricos para arreglar la ejecución de super_admin_create() ("supad-create") en apps con atributos obligatorios de tabla de usuario que requieren valores por defecto [GS-125].
  • Introducir soporte de $elemMatch en todas las abstracciones de base de datos. Mejorar el manejo de consultas extrayendo y filtrando condiciones de $elemMatch, mejorando la precisión de la recuperación de datos [GS-161] [GS-194] [GS-249] [GS-102].
Cambiado
  • Refactor para estandarizar la ruta de recuperación de almacenamiento de /asset a /assets en todos los frameworks [GS-245].
  • Estándar en return_resultset_jsonified_or_exception() el nombre del parámetro de código de estado de la respuesta de "http_error" a "status_code" en "utilities.py" y "users.py" [GS-245].
  • Mejorar el registro en aws.py para depuración, incluyendo un mensaje inicial al inicio de la aplicación para mostrar el nivel de registro.
  • El variable STORAGE_URL_SEED ahora es requerida solo si STORAGE_URL_ENCRYPTION está habilitado [GS-72].
  • STORAGE_ENCRYPTION renombrada a STORAGE_URL_ENCRYPTION [GS-72].
  • Mejorar la máscara de URL de AWS S3 para evitar exponer el nombre del bucket. Se puede configurar con variables de entorno: STORAGE_URL_ENCRYPTION, STORAGE_URL_SEED, RUN_PROTOCOL, URL_MASK_EXTERNAL_HOSTNAME, URL_MASK_EXTERNAL_PROTOCOL. No funciona con API Gateway, solo instancias EC2 o servidores VPS [GS-72]. -La variable URL_MASK_EXTERNAL_HOSTNAME reemplazada por DEV_MASK_EXT_HOSTNAME; DEV_MASK_EXT_HOSTNAME sigue usándose, pero tiene precedencia asignando URL_MASK_EXTERNAL_HOSTNAME [GS-72].
  • Migrar Marshmallow a Pydantic: actualizar schema_verification() para usar Pydantic en lugar de Marshmallow [GS-248].
  • Renombrar "parentKeyNames" a "endpointKeyNames" en archivos JSON de configuración [GS-159].
  • Reimplementar autenticación API usando una tabla dedicada "users_api_keys" [GS-159].
  • Quitar ejemplo de usuarios_api_keys del contexto de la aplicación.
  • Mejorar send_email.py para devolver un conjunto de resultados con información de errores cuando ocurre un fallo, validación de parámetros, eliminación de HTML y tipado [GS-37].
Fijo
  • Eliminar el prefijo "/" en la clave para evitar doble "/" en get_bucket_key_from_url() y corregir caracteres codificados en get_s3_presigned_url() [GS-245].
  • Limpiar importaciones y comentarios no usados en create_app.py.
  • Actualizar el tipo de retorno de delete_params_file en app_context.py.
  • DynamoDB abstractor error de escaneo de objeto de tabla "AttributeError: 'tuple' object has no attribute 'update'" [GS-102].
  • Robustecer la conversión de ObjectId casting a string en fetch_list() cuando "id" está en like_query_params.
  • Permitir objetos Request como entrada para funciones de datos del usuario actual para que funcione el flujo de onboarding de usuarios [GS-37].
  • Prevenir "AssertionError: AuthenticationMiddleware must be installed to access request.user" en get_curr_user_id cuando es una Request normal sin autenticación JWT [GS-37].
  • send_email incluye encabezado "Message-ID" para evitar que Google (y otros) rechace correos [GS-37].
  • Actualizar abstracción SQL para manejar comparaciones NULL dinámicamente [GS-262].
  • "bson.errors.InvalidId" al crear un nuevo usuario con Supabase, asignando parent_keys["_id"] = ObjectId(parent_keys["id"]) [GS-251].
Seguridad
  • Actualizar "urllib3" a "^2.6.3" para corregir vulnerabilidades de seguridad [GS-219]:
    • "Asignación de recursos sin límites ni amortiguación": "CWE-770", "CVE-2025-66418", "CVSS 8.9", "SNYK-PYTHON-URLLIB3-14192443"
    • "Manejo inapropiado de datos altamente comprimidos (Data Amplification)": "CWE-409", "CVSS 8.9", "CVE-2025-66471", "CVE-2026-21441", "CWE-409".
  • Actualizar "werkzeug" a "^3.1.6" para corregir vulnerabilidades de seguridad [GS-219]:
    • "Manejo inapropiado de nombres de dispositivos de Windows": "CWE-67", "CVSS 6.3", "CVE-2025-66221", "CVE-2026-27199", "CWE-67".
  • Actualizar "cryptography" a "^46.0.5" para corregir vulnerabilidades de seguridad [GS-219]:
    • "Verificación insuficiente de la autenticidad de datos": "CVE-2026-26007", "CWE-345".
  • Añadir filtros obligatorios a get_item_from_db() y GenericEndpointHelper.generic_crud_main() [GS-262].
  • Añadir sanitización al parámetro "message" en el endpoint POST /log [GS-262].
Eliminado
  • Dependencias "boto3" y "pymongo", para que cada proyecto pueda tener sus propias dependencias según la base de datos y el proveedor de almacenamiento en la nube [GS-245].
  • Eliminación de endpoints de ejemplo de API genéricos del OpenAPI.

GenericSuite Backend API

Paquete, Pull Request y Etiqueta

  • Paquete: https://pypi.org/project/genericsuite-ai/0.3.0/
  • Pull Request: https://github.com/tomkat-cr/genericsuite-be-ai/pull/12
  • Etiqueta: https://github.com/tomkat-cr/genericsuite-be-ai/releases/tag/0.3.0

Resumen del Pull Request

Añadir create_app() para Flask, intentar-except para todas las importaciones opcionales para reportar qué dependencia falta y correcciones de seguridad

Este pull request mejora significativamente la flexibilidad, seguridad y mantenibilidad del proyecto. Introduce un patrón estandarizado de creación de aplicaciones para Flask, amplía capacidades de base de datos y almacenamiento en la nube e integra características avanzadas de masking de conversación de IA. Se ha puesto énfasis en mejorar la gestión de dependencias haciendo que muchas bibliotecas sean opcionales y proporcionando instrucciones de instalación más claras, junto con actualizaciones críticas de seguridad a bibliotecas centrales. Estos cambios en conjunto optimizan el desarrollo, reducen la sobrecarga operativa y fortalecen la resiliencia de la aplicación.

Destacados

  • Modularidad mejorada y soporte de frameworks: Se introdujo una función create_app() estandarizada para aplicaciones Flask e integró AI Conversation Masking en FastAPI, Flask y Chalice, mejorando la configuración de la aplicación y la consistencia.
  • Gestión de dependencias y reporte de errores: Bloques try-except para todas las importaciones opcionales, proporcionando mensajes de error más claros a los desarrolladores sobre dependencias faltantes y simplificando la instalación. Muchas dependencias se eliminaron o volvieron opcionales para reducir el tamaño del proyecto.
  • Ampliación de capacidades de base de datos y almacenamiento en la nube: Se añadió soporte para PostgreSQL y MySQL y se desarrolló una capa de abstracción de almacenamiento para AWS S3, Azure y Google Cloud Platform, incluyendo el uso de URLs firmadas de AWS para acceso seguro y limitado en el tiempo.
  • Actualizaciones de seguridad críticas: Se abordaron múltiples vulnerabilidades actualizando dependencias clave como urllib3, langchain-core y langchain a sus versiones más seguras.
  • Configuración y actualización de modelos: Se actualizó el modelo predeterminado de HuggingFace, se ajustaron las URL base de AIMLAPI y Groq, y se corrigió la compatibilidad de faiss-cpu para despliegues en AWS Lambda.

CHANGELOG.md

[0.3.0] - 2026-02-18

Añadido
  • Variable de entorno API_VERSION para establecer la versión de la API, por defecto "v1" [GS-245].
  • Soporte para base de datos Postgres [GS-194].
  • Soporte para MySQL [GS-249].
  • Implementar capa de abstracción de almacenamiento para AWS S3, Azure y GCP [GS-72].
  • Implementar AWS generate_presigned_url() para proteger el acceso a buckets S3, de modo que expiren en poco tiempo y se bloquee todo acceso público. Configuración disponible con STORAGE_PRESIGNED_EXPIRATION_SECONDS (por defecto 5 minutos o 300 segundos) [GS-72].
  • Soporte para FastAPI, Flask y Chalice para AI Conversation Masking usando URLs firmadas de AWS [GS-72].
  • create_app() para Flask [GS-15].
  • try-except para todas las importaciones opcionales para reportar qué dependencia falta, para que el desarrollador pueda "pip install"arla [GS-248].
  • Enlaces de documentación de Modelos en .env.example [GS-172].
  • Nota sobre la sustitución del antiguo módulo de Google Translator en translator.py [GS-252].
Cambiado
  • Actualizar el modelo predeterminado de HuggingFace a "moonshotai/Kimi-K2-Instruct-0905" porque "mistralai/Mixtral-8x7B-Instruct-v0.1" ya no está disponible [FA-233].
  • Actualizar AIMLAPI_BASE_URL para incluir "/v1" al final [GS-172].
Fijo
  • Actualizar faiss-cpu a la versión 1.12.0 y ajustar la compatibilidad de la versión de Python del proyecto a >=3.10,<3.15 para corregir "Could not find a version that satisfies the requirement faiss-cpu==1.13.1 (from versions: 1.7.3, 1.7.4, 1.8.0, 1.8.0.post1, 1.9.0, 1.9.0.post1, 1.12.0)" al desplegar AWS Lambda [GS-251].
Seguridad
  • Actualizar "urllib3" a "^2.6.3" para corregir vulnerabilidades de seguridad [GS-219]:
    • "Asignación de recursos sin límites ni amortiguación": "CWE-770", "CVE-2025-66418", "CVSS 8.9", "SNYK-PYTHON-URLLIB3-14192443"
    • "Manejo inapropiado de datos altamente comprimidos (Data Amplification)": "CWE-409", "CVSS 8.9", "CVE-2025-66471", "CVE-2026-21441", "CWE-409".
  • Actualizar "langchain-core" a "^1.2.5" para corregir vulnerabilidades de seguridad [GS-219]:
    • "Template Injection": "CWE-1336", "CVSS 8.3"
    • "Deserialización de datos no confiables": "CVE-2025-68664", "CWE-502"
  • Actualizar "langchain" a "^1.2.0" para corregir vulnerabilidades de seguridad [GS-219]:
    • "Template Injection": "CWE-1336", "CVSS 8.3"
  • Actualizar "langchain-openai" a "^1.1.9" para corregir vulnerabilidades [GS-219].
    • "Server-side Request Forgery (SSRF)": "CVE-2026-26013", "CWE-918"
Eliminado
  • Dependencia "langchain-groq" porque su API ahora se llama con la API de OpenAI [GS-248].
  • Dependencias a "clarifai", "google-api-python-client", "transformers", "pypdf", "langchain-google-genai", "langchain-anthropic", "langchain-ollama", "langchain-google-vertexai", "langchain-text-splitters", "langchain-aws" para hacerlas opcionales por defecto [GS-248].
  • Dependencias "tiktoken", "openai", "click", "jmespath", "pyyaml", "six", "typing-extensions", "pillow", y "jq" para reducir el tamaño de dependencias y la mayoría no se usan en este proyecto o son dependencias de otras dependencias [GS-248].

GenericSuite Backend Scripts

Paquete, Pull Request y Etiqueta

  • Paquete: https://www.npmjs.com/package/genericsuite-be-scripts/v/1.3.0
  • Pull Request:
    • https://github.com/tomkat-cr/genericsuite-be-scripts/pull/13
    • https://github.com/tomkat-cr/genericsuite-be-scripts/pull/14
  • Etiqueta: https://github.com/tomkat-cr/genericsuite-be-scripts/releases/tag/1.3.0

Resumen del Pull Request

Sincronización de dependencias, creación de superusuario admin, soporte para Postgres, Supabase y MySQL, y Cloudflare Tunnel

Este pull request mejora significativamente el flujo de desarrollo y despliegue al introducir la sincronización automática de dependencias, ampliar el soporte de base de datos para Postgres y MySQL, e integrar Cloudflare Tunnel para un acceso seguro en desarrollo local. También aporta mejoras sustanciales a los despliegues de AWS Lambda, incluyendo runtime de Python 3.12 y OpenAPI 3.0.1, junto con varias correcciones y optimizaciones para la configuración local y prácticas de seguridad.

Destacados

  • Módulo de Sincronización de Dependencias: Nuevo módulo scripts/dependency-sync para sincronizar automáticamente dependencias de Python desde archivos pyproject.toml en directorios de backend (./server y ./mcp-server) a Dockerfiles, asegurando dependencias actualizadas y consistentes.
  • Ampliación de soporte de base de datos: Soporte para Postgres y MySQL, incluyendo nuevos objetivos de Make para generar SQL, crear tablas de desarrollo y desplegar recursos de CloudFormation. La gestión de bases de datos locales ahora usa un directorio unificado local_db, sustituyendo carpetas anteriores específicas de mongo y postgres.
  • Cloudflare Tunnel: Soporte para Cloudflare Tunnel para permitir acceso HTTPS seguro a entornos de desarrollo locales sin requerir Docker o DNS local, haciendo que localhost sea accesible públicamente para pruebas.
  • Mejoras en AWS Lambda: Runtime de Lambda a Python 3.12, actualización de API Gateway a OpenAPI 3.0.1 con CORS y redefinición de definiciones de endpoints. Opción de despliegue 'zip' para funciones Lambda y nuevas variables de entorno (CICD, USE_EXISTING_ZIP, PATH_TO_SAVE_OPENAPI) para despliegues más flexibles y automatizados.
  • Mejoras en el entorno de desarrollo local: Estandarización del script de servidor MCP, añadir objetivo Make create-supad para la creación inicial de super admin, e introducir validación para puertos de backend locales. Compatibilidad con Podman mejorada mediante la refactorización de configuraciones de Docker Compose y configuración local de DNS.
  • Seguridad y Mantenimiento: Todos los archivos requirements.txt ahora se ignoran y se vuelven a crear bajo demanda para asegurar las últimas dependencias y mitigar vulnerabilidades. Los comandos de limpieza en run_aws.sh se comentaron para evitar eliminación accidental de archivos importantes.

CHANGELOG.md

[1.3.0] - 2026-02-18

Añadido
  • Módulo de Sincronización de Dependencias ("scripts/dependency-sync") para sincronizar dependencias de Python en Dockerfile desde directorios de backend de GenericSuite monorepo ("./server" y "./mcp-server" con un archivo "pyproject.toml") [GS-243].
  • "scripts/run_mcp_server.sh" para estandarizar el script de servidor MCP [GS-243].
  • Soporte para base de datos Postgres [GS-194].
  • Requisitos para Postgres:
make generate_postgres_dev_sql
make create_postgres_dev_tables
make generate_cf_postgres
make deploy_postgres
  • Soporte para MySQL [GS-249].
  • Requisitos para MySQL:
make generate_mysql_dev_sql
make create_mysql_dev_tables
make generate_cf_mysql
make deploy_mysql
  • "make create-supad" para crear el usuario super admin inicial (supad) para el entorno de desarrollo local [GS-125].
  • Tipos de campos h1 a h6 en archivos JSON [GS-250].
  • Validación de BACKEND_LOCAL_PORT y BACKEND_DEBUG_LOCAL_PORT para que sean diferentes en el script "secure_local_server/run.sh".
  • Puertos y documentación de UI de gestores de bases de datos locales en "scripts/local_db/local_db_stack.yml" [GS-249] [GS-194].
  • Opción zip para despliegue de AWS Lambda [GS-248].
  • Variable de entorno AWS_LAMBDA_DEPLOYMENT_TYPE para seleccionar el tipo de despliegue para funciones AWS Lambda ("zip" o "container", por defecto "container"). Si el proyecto incluye GS BE AI, no puede ser "zip" debido al límite de tamaño de archivos zip de AWS Lambda de 250 MB [GS-248].
  • Variable de entorno CICD para "big_lambdas_manager.sh" para evitar pedir confirmación en varios pasos y ejecutarlo sin interacción [GS-248].
  • Variable de entorno USE_EXISTING_ZIP para usar un archivo zip existente en lugar de generar uno nuevo [GS-248].
  • Variable de entorno PATH_TO_SAVE_OPENAPI para "run_aws.sh" para guardar los archivos de OpenAPI [GS-245].
  • Implementar Cloudflare Tunnel para permitir acceso https al entorno de desarrollo local sin Docker/DNS local y hacer localhost público para pruebas, por ejemplo, para acceder a la cámara del PC (sin necesidad de reenvío de puertos) [GS-257].
  • Añadir variable USE_CONTAINERS_ENGINE_APP para activar/desactivar el uso de la app del motor de contenedores para desarrollo local cuando RUN_PROTOCOL="https" [GS-257].
  • Añadir RUN_PROTOCOL_AND_PORT_REPLACEMENT para activar/desactivar el reemplazo automático de protocolo y puerto para variables de entorno de desarrollo local APP_CORS_ORIGIN (asignado desde APP_CORS_ORIGIN_{STAGE}), APP_FE_URL (asignado desde APP_FE_URL_{STAGE}) y REACT_APP_API_URL (asignado desde APP_API_URL_{STAGE}), dependiendo del valor de RUN_PROTOCOL [GS-257].
  • Configurar uvicorn para procesar encabezados de proxy y IPs reenviadas en el script run_aws.sh [GS-37].
Cambiado
  • Permitir fusionar archivos ".env" entre los backends del monorepo de GenericSuite ("./server" y "./mcp-server"), renombrar APP_MAIN_FILE y APP_DIR envvars a MCP_APP_MAIN_FILE_DEV y MCP_APP_DIR_DEV en run_mcp_server.sh [GS-243].
  • Renombrar valores de APP_DB_ENGINE "MONGO_DB" y "DYNAMO_DB" a "MONGODB" y "DYNAMODB" [GS-194].
  • Se agregaron perfiles a "local_db_stack.yml" para que solo se habilite el APP_DB_ENGINE seleccionado [GS-194].
  • Quitar todas las secciones "link", "depends_on" y "healthcheck" en "local_db_stack.yml" para compatibilidad con Podman [GS-215] [GS-194].
  • STORAGE_URL_SEED envvar requerido solo cuando STORAGE_URL_ENCRYPTION está activado 1 en "run_aws.sh" y "set_chalice_cnf.sh" [GS-72].
  • Renombrar carpetas "mongo" y "postgres" a nombres más apropiados, ya que ahora se usan para varias bases de datos: "mongo" ahora es "local_db", incluyendo contenedores locales para MongoDB, DynamoDB, Postgres y MySQL. "postgres" ahora es "sql_db" porque funciona para Postgres y MySQL. [GS-249]:
/postgres -> /sql_db
/postgres/generate_postgres_cf -> /sql_db/generate_sql_db_cf
/postgres/generate_postgres_cf/run-postgres-deploy.sh -> /sql_db/generate_sql_db_cf/run_sql_db_deploy.sh

/mongo/run_mongo_docker.sh -> /local_db/run_local_db_docker.sh
/mongo/mongodb_stack_for_test.yml -> /local_db/local_db_stack.yml

make mongo_docker -> make local-db-up
make mongo_docker_down -> make local-db-down
make mongo_logs -> make local-db-logs
set_chalice_cnf.sh mongo_docker -> set_chalice_cnf.sh local_db_docker
  • Renombrar HUGGINGFACE_TEXT_TO_IMAGE_ENDPOINT a HUGGINGFACE_DEFAULT_CHAT_MODEL [GS-59].
  • Aumentar la versión de Python a 3.12 en despliegues de Big Lambdas en Amazon Linux, EC2 ELB y Dockerfiles del servidor local [GS-248].
  • El Dockerfile de Lambda de gran lambda con Python 3.11 está en el archivo "Dockerfile-big-lambda-AL2-python3.11" [GS-248].
  • Añadir "v1" a endpoints definidas en "aws_big_lambda/template-sam-endpoint-entry.yml" [GS-245].
  • Añadir depuración adicional a "run-cf-deployment.sh" y "aws_secrets_manager.sh" [GS-248].
  • Renombrar "dns/docker-compose.yml" a "dns/docker-compose-template.yml" [GS-215].
  • Debido a la eliminación de dependencias "fastmcp" y "mcp", run_mcp_server.sh ahora verifica si ambos están instalados [GS-248].
  • Actualizar el runtime de Lambda a Python 3.12, actualizar API Gateway a OpenAPI 3.0.1 con CORS y refactorizar definiciones de endpoints en "aws_big_lambda/template-sam.yml" [GS-245].
Fijo
  • Comentar comandos de limpieza en "run_aws.sh" para evitar eliminación accidental de archivos importantes durante la operación de limpieza.
  • Renombrar CONTAINER_ENGINE a CONTAINERS_ENGINE [GS-215].
  • Arreglar "secure_local_server/run.sh" para ejecutar el servidor local seguro con Podman creando un volumen con nombre para montar archivos de configuración en el contenedor nginx "/etc/nginx/conf.d" (lectura solamente) ya que Podman no permite montar directorios de solo lectura de la misma forma que Docker. Ahora GS es compatible con Podman [GS-215].
  • Local_dns funciona con Podman [GS-215].
  • APP_VERSION eliminado de CORE_ENVS en "aws_secrets/aws_secrets_manager.sh" separado del resto de variables de entorno que se envían a AWS Secrets Manager e incluido en la plantilla de CloudFormation de Lambda en AWS "aws_big_lambda/template-sam.yml".
Seguridad
  • Todos los archivos "requirements.txt" ahora se ignoran y se recrean bajo demanda para evitar reposts de vulnerabilidad y mantener las últimas dependencias [GS-219].

GenericSuite BaseCamp

Pull Request y Etiqueta

  • Pull Request:
    • https://github.com/tomkat-cr/genericsuite-basecamp/pull/15
    • https://github.com/tomkat-cr/genericsuite-basecamp/pull/17
  • Etiqueta: https://github.com/tomkat-cr/genericsuite-basecamp/releases/tag/1.5.0

Resumen del Pull Request

App de Plantilla FastAPI, soporte multilingüe, creación de Apps mejorada, archivos de configuración JSON, editor CRUD y documentación de variables de entorno

Este pull request introduce la aplicación Plantilla FastAPI, mejorando la experiencia de desarrollo para aplicaciones de plantilla y, significativamente, mejora la infraestructura de documentación del proyecto al introducir soporte multilingüe, restructurar contenidos para una mejor organización y actualizar enlaces externos para mayor confiabilidad. También agiliza el flujo de desarrollo añadiendo nuevas herramientas para la gestión de Cloudflare Tunnel y refinando configuraciones de variables de entorno, haciendo el proyecto más accesible y fácil de desarrollar contra plantillas de aplicaciones. Los cambios se enfocan en mejorar la precisión de la documentación, estandarizar convenciones de nombres de variables de entorno para evitar conflictos y fortalecer varios scripts de construcción y limpieza. Estas actualizaciones contribuyen a una base más consistente, confiable y bien documentada para integrar y gestionar diferentes plantillas de aplicaciones dentro del proyecto.

Destacados

  • Plantilla de FastAPI.
  • Documentación multilingüe: implementado soporte multilingüe para documentación, comenzando por español e inglés, y añadido variables de entorno para futuras traducciones automáticas con OpenAI.
  • Reestructuración de la documentación: renombrado de numerosos archivos y directorios, consolidación de código de ejemplo bajo una nueva ruta 'docs/code', y eliminación de índices antiguos.
  • Soporte para Postgres, MySQL y Supabase.
  • Documentación extensa para configuraciones de Editor CRUD, Modelos de prefacio de IA y nuevos tipos de campo.
  • Variable de entorno API_VERSION
  • Refinamientos de documentación: varias secciones de documentación actualizadas y corregidas, incluyendo guías de configuración, instrucciones de gestor de paquetes de Python y READMEs de apps de ejemplo, para garantizar exactitud y claridad para desarrolladores que trabajen con plantillas como FastAPI.
  • Estandarización de Variables de Entorno: Renamings clave de env vars del frontend para evitar conflictos con las mismas variables usadas en el backend y poder fusionar archivos ".env" en un monorepo: GIT_SUBMODULE_LOCAL_PATH a GIT_SUBMODULE_LOCAL_PATH_FRONTEND, y RUN_METHOD a RUN_BUNDLER [GS-243].
  • Mejoras en Variables de Entorno: Se introdujeron nuevas variables para guardar archivos de esquema OpenAPI, controlar el uso del motor de contenedores para desarrollo local y gestionar la sustitución automática de protocolo/puerto para URL frontend.
  • Actualizaciones de cambios y versión: Se han incorporado entradas detalladas para versiones recientes (1.3.1 y 1.3.2) en el changelog y notas de lanzamiento, documentando nuevas características, mejoras y correcciones de errores para el proyecto general, incluidas plantillas de aplicaciones.
  • Mejoras y limpieza de scripts de generación de documentación de backend: los scripts de limpieza para Chalice, FastAPI, Flask y MCP Server se han mejorado, y el script "run_mcp_server.sh" se ha refactorizado para un manejo de directorios más robusto.
  • Actualización de enlaces de documentación: los enlaces se han dejado como relativos en lugar de URL absolutas.
  • Correcciones de instrucciones de instalación para uv y poetry.
  • Los procesos de construcción se han mejorado con nuevos objetivos "prepare_docs" y "generate_openapi".
  • "make serve" ahora se enlaza a localhost:8015.
  • Las imágenes de documentación se han convertido de SVG a PNG.
  • Varias instrucciones de instalación y descripciones de variables de entorno se han aclarado o ampliado, incluyendo una nueva sección 'Modelos de Prefacio' para IA.
  • Varias correcciones para problemas con Podman, limpieza de npm, enlaces de documentación rotos y FileNotFoundError para activos UI estáticos.
  • Actualizaciones de enlaces: Reemplazados enlaces relativos a archivos .pdf y código fuente de apps de ejemplo por URLs directas de GS Basecamp en GitHub.
  • El código común de Chatbot y otras lógicas comunes se movió de api-chalice a api-fastapi en ExampleApp.
  • Cloudflare Tunnel: Añadidos targets de Makefile para gestionar tunnels de Cloudflare en los proyectos de exampleapp y fastapitemplate, junto con documentación relacionada.
  • También se incluye una actualización de seguridad para urllib3.

CHANGELOG.md

[1.5.0] - 2026-02-18

Añadido
  • Documentación multilingüe, comenzando con español e inglés (gracias a @otobonh por la idea) [GS-252].
  • Documentación en español, usando Google Translate y OpenAI gpt-5-nano [GS-252].
  • Makefile targets de Cloudflare tunnel para exampleapp y fastapitemplate [GS-257].
  • Variable PATH_TO_SAVE_OPENAPI para el Makefile principal para guardar los archivos de esquema OpenAPI [GS-245].
  • Variable USE_CONTAINERS_ENGINE_APP para activar/desactivar el uso del motor de contenedores para desarrollo local cuando RUN_PROTOCOL="https" [GS-257].
  • Documentación para RUN_PROTOCOL_AND_PORT_REPLACEMENT para activar/desactivar el reemplazo automático de protocolo y puerto para variables de entorno de desarrollo local APP_CORS_ORIGIN (asignada desde APP_CORS_ORIGIN_{STAGE}), APP_FE_URL (asignada desde APP_FE_URL_{STAGE}) y REACT_APP_API_URL (asignada desde APP_API_URL_{STAGE}), según el valor de RUN_PROTOCOL [GS-257].
  • OPENAI_API_KEY, OPENAI_MODEL, OPENAI_TEMPERATURE envvars para preparar futura documentación automática [GS-252].
  • Añadir changelog de la segunda aniversario [GS-262].
Cambiado
  • Reemplazar enlaces relativos a archivos .pdf con enlaces crudos de Github GS Basecamp [GS-252].
  • Reemplazar enlaces de código fuente de exampleapp y fastapitemplate con URLs de GS Basecamp de GitHub [GS-252].
  • Filtro de "docs_prepare.py" para excluir ciertos nombres de archivo no necesarios [GS-252].
  • Implementar la documentación de Cloudflare Tunnel [GS-257].
  • Refactorizar archivos .env.example para variables comunes y ampliar la documentación en fastapitemplate y exampleapp [GS-252].
  • Actualizar documentación de configuración [GS-252].
  • Renombrar "docs/Sample-Code" a "docs/code" [GS-252].
Fijo
  • Añadir PyGithub a mkdocs_install.sh ya que mkdocs-git-committers-plugin lo requiere [GS-262].
  • Arreglar la definición de clave primaria de usuarios_api_keys (_id) en la base de datos.

[1.4.0] - 2026-01-21

Añadido
  • Plantilla FastAPI [GS-243].
  • Soporte para base de datos Postgres [GS-194].
  • Soporte para MySQL [GS-249].
  • Supabase [GS-161].
  • Variable de entorno API_VERSION para establecer la versión de la API, por defecto "v1" [GS-245].
  • Página principal de documentación de ejemplo.
  • Archivo de changelog de GenericSuite Release 20251117 en "docs/Releases/GS_Release_2025-11-17_Changelog.md".
  • "specific_function": "ai_conversation_masking" a "frontend/ai_chatbot_conversations.json" en genericsuite_configs, ExampleApp y FastAPI Template.
  • Documentación de campos de tipo "array" y ejemplos de "specific_function" en la Documentación de Configuración de Generic CRUD Editor.
  • Documentación y ejemplos de Modelos de Prefacio (generalmente necesarios para configurar IA de pensamiento LLM) en la documentación de IA de GenericSuite.
  • Tipos de campos h1 a h6 en archivos JSON [GS-250].
  • Variable AWS_LAMBDA_DEPLOYMENT_TYPE para seleccionar el tipo de despliegue para funciones AWS Lambda (zip o container, por defecto zip) [GS-248].
  • Comando "make generate_openapi" para guardar archivos de esquema OpenAPI (JSON y YAML) e incluido en el proceso de transferencia y construcción (make build, make serve, make transfer_debug, make transfer_cicd) [GS-245].
  • Documentación de las nuevas bases de datos soportadas.
  • Dependencias opcionales para proyectos de ejemplo (boto3, pymongo).
  • Documentación para crear Super Admin.
  • Documentación de pila/local de bases de datos y operaciones.
  • Clases de Python y interfaces de TypeScript para validación de configuraciones JSON de editor CRUD y guía correspondiente [GS-172].
  • Cómo crear tablas y formularios [GS-172].
  • Cómo establecer relaciones 1-a-many entre tablas [GS-172].
  • Claves API para Perfil de Usuario en exampleapp y fastapitemplate [GS-251].
  • Política de privacidad [GS-252].
  • Introducción de scripts de preparación de documentación para reducir el tiempo de transferencia FTP [GS-252].
Cambiado
  • Mejoras en "exampleapp/apps/mcp-server/run_mcp_server.sh" separando las envvars SCRIPT_DIR y BASE_DIR.
  • Renombrar variables APP_DEX y otros envvars para evitar conflictos con las mismas variables en el backend y poder fusionar archivos ".env" en un monorepo: GIT_SUBMODULE_LOCAL_PATH a GIT_SUBMODULE_LOCAL_PATH_FRONTEND, RUN_METHOD a RUN_BUNDLER [GS-243].
  • Limpiar documentación y código de exampleapp relacionado con el antiguo "authenticationService".
  • Añadir "-PRESENT" a todos los archivos LICENSE.
  • Cambiar el orden de opciones de la barra superior de la documentación.
  • Mejorar documentación de STORAGE_URL_ENCRYPTION y STORAGE_URL_SEED.
  • STORAGE_URL_SEED requerido solo cuando STORAGE_URL_ENCRYPTION está establecido a 1 [GS-72].
  • "Special Installation" y "./Other/special-installs.md" renombrados a 'Installation' y "./Other/installation.md" respectivamente.
  • docs: Mejorar la guía de configuración del proyecto backend con estructuras de monorepo, gestión detallada de dependencias y nuevas secciones de instalación de bases de datos/servicios en la nube, añadiendo psycopg2-binary.
  • Actualizar todos los archivos .env.example con nuevas bases de datos soportadas.
  • Reemplazar "/mongo" con "/local_db" y "mongo_docker" con "local_db_docker" en archivos Makefile.
  • Debido a la eliminación de dependencias "fastmcp" y "mcp", run_mcp_server.sh ahora verifica que ambos estén instalados [GS-248].
  • Evitar pedir confirmaciones al limpiar directorios durante el proceso de construcción de "make publish".
  • Actualizar "mkdocs_transfer_site.sh" para desactivar el modo de depuración a menos que se especifique.
  • Eliminar la advertencia de Podman en la documentación de Desarrollo Backend.
  • Los scripts de instalación de MkDocs eliminan el .venv para incluir la última versión de dependencias.
  • Servir y ejecutar en el Makefile principal cambiado para que "make run" haga una limpieza completa, regenerate y "make serve", y "make serve" solo ejecute "mkdocs serve".
  • Actualizar el runtime de Lambda a Python 3.12, actualizar API Gateway a OpenAPI 3.0.1 con CORS y refactorizar definiciones de endpoints en "aws_big_lambda/template-sam.yml" [GS-245].
  • Renombrar "parentKeyNames" a "endpointKeyNames" en archivos JSON de configuración [GS-159].
  • Mover el atributo "parentUrl" desde "endpointKeyNames" a la raíz de los archivos JSON de configuración [GS-159].
  • Renombrar chatbot de IA de "GPT functions" a "AI Tools" en comentarios de ExampleApp.
  • Vincular mkdocs serve a localhost:8015 para evitar conflictos con otras GS APIs [GS-172].
  • Todos los logos .svg ahora están incrustados como .png en todos los archivos .md, para que se muestren en GitHub y en la app de documentación móvil [GS-252].
  • ExampleApp: archivos comunes de "lib" movidos de "exampleapp/apps/api-chalice" a "exampleapp/apps/api-fastapi".
Fijo
  • Arreglar problemas del motor "podman" con el comando podman composer.
  • Arreglar instrucciones de instalación de uv y poetry en la documentación de Gestores de Paquetes de Python.
  • Arreglar "npm clean" para el proyecto principal y todos los espacios de trabajo.
  • Arreglar los enlaces de la guía de configuración en la documentación, porque apuntaban a "https://github.com/tomkat-cr/genericsuite-fe/tree/main/src/configs".
  • Arreglar "FileNotFoundError: [Errno 2] No such file or directory: 'docs/Sample-Code/exampleapp/ui/public/static'" añadiendo "remove_ui_public_static" a clean_directory.sh.
  • La etiqueta "create-ssl-certs" en el Makefile de exampleapp estaba definida de forma incorrecta.
  • Afinar enlaces documentales rotos.
  • APP_VERSION eliminado de CORE_ENVS en "aws_secrets/aws_secrets_manager.sh" separado del resto de variables de entorno que se envían a AWS Secrets Manager y se incluyen en la plantilla de CloudFormation de Lambda en AWS "aws_big_lambda/template-sam.yml".
  • Renombrar "CONTAINER_ENGINE" a "CONTAINERS_ENGINE" en archivos .env.example [GS-252].
  • Arreglar: añadir ".venv" a los scripts de limpieza.
  • Reducir el tiempo de transferencia FTP construyendo un directorio temporal "docs_for_ftp", copiando allí solo los archivos necesarios y usándolo como fuente para MkDocs.
Seguridad
  • Actualizar "urllib3" a "^2.6.2" en el archivo de requisitos principal para corregir vulnerabilidades de seguridad [GS-219]:
    • "Asignación de recursos sin límites ni amortiguación": "CWE-770", "CVE-2025-66418", "CVSS 8.9", "SNYK-PYTHON-URLLIB3-14192443"
    • "Manejo inapropiado de datos altamente comprimidos (Data Amplification)": "CWE-409", "CVSS 8.9", "CVE-2025-66471", "SNYK-PYTHON-URLLIB3-14192442".
Eliminado
  • Variable de entorno AWS_API_GATEWAY_STAGE eliminada de todos los archivos .env.example.
  • Dependencias boto3 y pymongo, para que cada proyecto pueda tener sus propias dependencias dependiendo de la base de datos elegida y del proveedor de almacenamiento en la nube [GS-245].
  • Endpoints genéricos no utilizados del OpenAPI.