jocaagura_domain 1.30.0
jocaagura_domain: ^1.30.0 copied to clipboard
A package with domain models for all transversal applications
CHANGELOG Jocaagura Domain #
This document follows the guidelines of Keep a Changelog, and this project adheres to Semantic Versioning.
1.30.0 - 2025-09-24 #
Added #
- Ledger – Datos y demo visual:
defaultLedgerModel(dataset liviano 2024: ingresos/egresos por categoría).ledger_example.dart: página Flutter que renderiza pie y barras anuales por categoría/mes usandoCustomPainter(sin dependencias externas).
- Session – API de arranque rápido:
BlocSession.fromRepository(RepositoryAuth repo): factory recomendado que cablea automáticamente los use cases necesarios.
- Session – Calidad de vida:
SessionError.error: alias demessagepara acceso conveniente.
- Auth – Pruebas Gateway/Repo:
- Suite completa para
GatewayAuthImpl:- Stubs
_StubServiceSessiony fakeErrorMapper. - Cobertura de rutas felices (
Right), errores de payload (Left) y excepciones de servicio. - Verificación del stream
authStateChanges(Rightcon usuario/null,Leften error).
- Stubs
- Suite completa para
RepositoryAuthImpl:- Stubs
_StubGateway,_FakeErrorMapper. - Cobertura de happy paths, errores del gateway, excepciones y stream
authStateChanges. - Se expone
ackToVoid(antes_ackToVoid) para mejorar testabilidad.
- Stubs
- Suite completa para
Changed #
- Auth – Contratos y documentación (revisión de flujo):
GatewayAuthdocumentado como frontera segura de dominio para operaciones de autenticación:- Contratos de comportamiento, manejo de errores e I/O (solo primitivos/JSON).
- DartDoc por método con precondiciones y
Eitheresperado, más ejemplo mínimo con fake.
GatewayAuthImplalinea documentación: mapeo de errores y lógica del stream.authStateChangesahora documentado/emiteEither<ErrorItem, Map<String, dynamic>?>.
- Session – Constructor simplificado:
BlocSessionelimina el parámetro explícitoWatchAuthStateChangesUsecase; ahora se obtiene vía la fachadaSessionUsecases. Menos parámetros, inicialización y pruebas más claras.
Fixed #
- Session: corrección del deep copy en session refresh y en el current user, evitando compartir referencias internas de manera no intencional.
Docs #
- RepositoryAuth / RepositoryAuthImpl:
- DartDoc ampliado: contratos de comportamiento, políticas de manejo de errores y semántica de métodos; ejemplo mínimo de uso.
- GatewayAuth / GatewayAuthImpl:
- DartDoc exhaustivo alineado con los nuevos contratos, detalle de mapeo de errores y manejo de streams.
Tests #
- GatewayAuthImpl / RepositoryAuthImpl: mayor cobertura de ramas y edge cases (bloques
try-catch, acknowledgement). - BlocSession:
bloc_session_from_repository_test.dart:- Transiciones de estado vía stream del repositorio (
boot). - Flujos de autenticación (
logIn,logOut). - Políticas post-dispose (
returnLastSnapshot,returnSessionError).
- Transiciones de estado vía stream del repositorio (
Migration notes #
BlocSession(posible cambio rompiente):- Si usabas el constructor con
WatchAuthStateChangesUsecasecomo parámetro, migra a:- Constructor simplificado (sin ese parámetro), o
BlocSession.fromRepository(repo)como opción recomendada.
- Si usabas el constructor con
- Streams de auth:
- Asegura que tu capa superior consuma
Either<ErrorItem, Map<String, dynamic>?>enauthStateChanges.
- Asegura que tu capa superior consuma
- Ejemplos:
- Consulta
bloc_session_example.dartyledger_example.dartpara patrones de integración de UI sin dependencias externas.
- Consulta
Notas: El objetivo de esta versión es consolidar el auth flow con contratos claros, mejorar la testabilidad y ofrecer ejemplos prácticos de ledger y sesión listos para copiar en proyectos reales.
1.29.0 - 2025-09-24 #
Added #
- Graph models (2D):
ModelGraph,ModelPointyModelGraphAxisSpecpara representar datos tabulares o de series temporales. - ModelGraph – helpers y demos:
defaultModelGraph()con 3 puntos por defecto y rangos de ejes automáticos.demoPizzaPrices2024Graph()(precios mensuales de pizza en COP para 2024).- Constantes:
defaultModelPoint,defaultModelPoints,defaultXAxisSpec,defaultYAxisSpec.
- Example app:
graph_example.dart(PizzaPricesApp) con:BlocGeneral<ModelGraph>, gráfico de línea y tabla de precios.- Inyección periódica de datos simulados cada 5 s.
- Render propio sin dependencias vía
_SimpleLineChartPainter. - Componentes
_Header,_GraphCard,_TableCard.
- Utils:
Utils.listEquals(comparación superficial sensible al orden).Utils.listHash(hash sensible al orden).
Changed #
- JSON/robustez:
ModelGraph.fromJson: parseo laxo de títulos (convierte dinámicos aString, vacíos →'').ModelPoint.fromJson: maneja vectores nulos/no-map sin lanzar (devuelve vector inválido controlado).
- Inmutabilidad:
ModelGraph.pointsahora es inmodificable tras construcción y encopyWith.
- Nombres y organización (consistencia):
- Renombrados:
GraphAxisSpec→ModelGraphAxisSpec. - Renombrados:
GraphAxisSpecEnum→ModelGraphAxisSpecEnum. - Reubicados enums:
ModelGraphAxisSpecEnumenmodel_graph.dart;ModelPointEnumenmodel_point.dart.
- Renombrados:
- Cálculo numérico:
ModelVector.equalsApproxusa tolerancia combinada absoluta/relativa con ULP slack para comparaciones de punto flotante más estables.
Docs #
- DartDoc ampliado y aclarado para:
ModelGraph,ModelPoint,ModelGraphAxisSpec: construcción, contratos, manejo de JSON y ejemplos de uso.- Utilidades JSON (
mapFromDynamic,listFromDynamic,convertJsonToList,getJsonEncode) con ejemplos.
Tests #
- ModelGraph:
- Parseo laxo de
fromJson, inmutabilidad depoints, igualdad por valor (==,hashCode),copyWithinmutable,fromTable(rango de ejes y mapeo X), round-trip JSON (incluye títulosnull/vacíos).
- Parseo laxo de
- ModelGraphAxisSpec (antes
GraphAxisSpec):- Des/serialización JSON (válidos y con ruido),
copyWith, igualdad yhashCode, comportamiento con rangos min/max invertidos (sin validación automática).
- Des/serialización JSON (válidos y con ruido),
- ModelPoint:
- Round-trip JSON, igualdad y
copyWith; robustez ante vectores nulos/no-map.
- Round-trip JSON, igualdad y
- Utils:
- Cobertura para
listEqualsylistHash.
- Cobertura para
Notas: No hay cambios en APIs existentes.
1.28.0 - 2025-09-24 #
Added #
- FinancialMovementModel – Tests: casos para normalización de montos, round-trip JSON y
diferencias por
mathPrecision. - Utils.listFromDynamic – Tests: validación con entradas mixtas (ruido, llaves extra,
null) y verificación de compatibilidad conLedgerModel.fromJson. - LedgerModel – Tests: cobertura para JSON en formas válidas variadas, inmutabilidad, balance entero/decimal, igualdad/hash y sensibilidad al orden.
Changed #
- FinancialMovementModel:
- Política de no-negativos:
fromDecimal,fromJsonycopyWithnormalizan montos conabs(). El signo no codifica ingreso/egreso (lo definecategory). mathPrecision: ahora se lee/escribe en JSON y forma parte de==/hashCode.fromJson: usacontainsKeypara distinguir entre valor provisto ydefaultMathPrecision.
- Política de no-negativos:
- LedgerModel (inmutabilidad):
fromJsonycopyWithenvuelven listas conList.unmodifiable.- Se documenta que el ctor principal espera listas ya inmutables.
- Igualdad/orden (
LedgerModel): se mantiene igualdad profunda sensible al orden yhashCodeconsistente con ese contrato.
Fixed #
- LedgerModel: corrección crítica en
_listHashpara usare.hashCode(eliminadoe?.hashCode) evitando discrepancias de hash.
Docs #
- FinancialMovementModel: contrato aclarado (entero escalado, uso recomendado de
fromDecimal, límites de precisión) y ejemplo mínimo. - LedgerModel: contrato de inmutabilidad, ejemplo mínimo y nota sobre costo de
toString().
Notas:
- El modelo financiero ahora siempre almacena montos no negativos; si tu lógica dependía del signo para distinguir ingreso/egreso, usa el campo
category.- Al incorporarse
mathPrecisiona==/hashCode, comparaciones y sets/maps podrían cambiar si mezclas precisiones distintas para el mismo valor numérico.
1.27.0 - 2025-09-13 #
Added #
- BlocOnboarding:
AutoAdvancePolicypara controlar con mayor granularidad cuándo el flujo avanza automáticamente al siguiente paso.
Changed #
-
BlocOnboarding – Navegación y contratos:
back()evita el auto-avance incluso si el paso defineautoAdvanceAfter, mejorando la previsibilidad de la UX; se ejecuta elonEnterdel paso previo.- Se refinó el contrato de
onEnter: no debe lanzar; devolverLeft(ErrorItem)para permanecer en el paso; debe ser rápido (el trabajo pesado va a use cases);nullimplica éxito inmediato. autoAdvanceAftersolo aplica tras unonEnterexitoso.
-
ErrorItem:
- Serialización/deserialización más robusta: niveles desconocidos hacen fallback a
ErrorLevelEnum.systemInfo. copyWith(meta:)retorna un mapa inmodificable para prevenir mutaciones accidentales.
- Serialización/deserialización más robusta: niveles desconocidos hacen fallback a
Docs #
- DartDoc ampliado para
OnboardingStep,OnEnterResult,ErrorItem,ErrorLevelEnumyErrorItemEnum, incluyendo ejemplos de uso y pautas de UI.
Tests #
- Onboarding: suite completa que cubre configuración/arranque (pasos vacíos/no vacíos),
onEnter(éxito,Left(ErrorItem), excepción),retryOnEnter,clearError,next/backcon cancelación de temporizadores,currentStepen múltiples estados, guardas de race conditions vía epoch, y preservación de errores en estados terminales (skip,complete). - Theme/Repository: casos adicionales para robustez del gateway y verificación de normalización HEX en JSON (sin cambios de API).
- ErrorItem: round-trip JSON, fallback de niveles desconocidos, e inmutabilidad de
metaencopyWith.
Notas: No hay cambios incompatibles.
- Si tus pruebas asumían auto-avance al usar
back(), actualízalas al nuevo comportamiento.- Si tu código modificaba el mapa devuelto por
copyWith(meta: ...), clónalo antes de mutarlo.
1.26.2 - 2025-09-13 #
Added #
- BlocOnboarding: se introduce
AutoAdvancePolicypara controlar con mayor granularidad cuándo el flujo avanza automáticamente al siguiente paso.
Changed #
- ErrorItem:
- Serialización/deserialización más robusta: niveles de error desconocidos ahora hacen fallback
a
ErrorLevelEnum.systemInfo. copyWith(meta:)devuelve un mapa inmodificable para evitar mutaciones accidentales.
- Serialización/deserialización más robusta: niveles de error desconocidos ahora hacen fallback
a
Docs #
- DartDoc ampliado para
ErrorItem,ErrorLevelEnumyErrorItemEnum, con ejemplos de uso y pautas para UI.
Tests #
- Cobertura añadida para:
- Fallback de niveles desconocidos en
errorLevel. - Round-trip JSON de
ErrorItem. - Inmutabilidad de
metaencopyWith. - Casos básicos de
AutoAdvancePolicyenBlocOnboarding.
- Fallback de niveles desconocidos en
Notas: No hay cambios incompatibles. Si tu código mutaba el mapa retornado por
copyWith(meta: ...), clónalo explícitamente antes de modificarlo.AutoAdvancePolicymantiene el comportamiento por defecto previo salvo que definas una política específica.
1.26.1 - 2025-09-13 #
Added #
- BlocOnboarding – Tests completos:
- Configuración y arranque (pasos vacíos / no vacíos).
- Comportamiento de
onEnter: éxito, error (Left(ErrorItem)) y excepciones. retryOnEnteryclearError.- Navegación
nextybackcon cancelación de temporizadores y transiciones de estado. - Verificación de
currentStepen múltiples estados. - Guardas contra race conditions mediante el mecanismo de epoch.
- Estados terminales (
skip,complete) preservando errores. - Efectos de
dispose()sobre temporizadores.
Changed #
- BlocOnboarding – Navegación hacia atrás:
back()ahora evita el auto-avance incluso si el paso tieneautoAdvanceAfter, ofreciendo una UX más predecible.- Se mantiene la ejecución de
onEnterdel paso previo.
- OnboardingStep – Contratos y documentación:
onEnterno debe lanzar; devolverLeft(ErrorItem)para permanecer en el paso.- Debe ser rápido; trabajo pesado va a use cases.
nullimplica éxito inmediato.autoAdvanceAftersolo aplica tras unonEnterexitoso.- Se refinó la documentación de
title,description,autoAdvanceAfter,onEntery del typedefOnEnterResult.
Tests #
- Onboarding: suite ampliada (ver “Added”).
- Theme: cobertura extendida y robustez del gateway (sin cambios de API).
Docs #
- Ejemplo adicional que cubre distintas configuraciones de
OnboardingStepy resultados deonEnter. - Aclaraciones de contrato en DartDoc para
OnboardingStepyOnEnterResult.
Notas: No hay cambios incompatibles. El cambio en
back()mejora la previsibilidad del flujo; si tus pruebas asumían auto-avance al retroceder, actualízalas para reflejar el nuevo comportamiento.
1.26.0 - 2025-09-07 #
Added #
- Pruebas robustas para
Utils
Cobertura extendida engetDoubleygetIntegerFromDynamic:- Manejo de nulos,
NaN, infinitos y valores no numéricos. - Parsing de números en notación científica (
3e2,-3e-2, etc.). - Soporte para formatos internacionales (coma o punto como separador decimal, moneda, separadores de miles).
- Garantía de fallback seguro (
0para enteros,NaNodefaultValuepara dobles). - Se incluyen los cambios tipo fix detallados en el changelog desde la version 1.25.0.
- Manejo de nulos,
1.25.3 - 2025-09-07 #
Added #
ModelVector.fromXY(int x, int y)factory constructor for convenient creation from integer coordinates.- Integer-oriented getters
xandy(using.round(), policy: .5 away from zero). keyproperty providing a canonical"x,y"representation for map/set usage.copyWithInts({int? x, int? y})method to create safe copies overriding integer axes.
Docs #
- Extended DartDoc with examples for new methods and clarified rounding policy.
- Documented reversibility limitations when the original
dx/dyare non-integers.
Tests #
- Added unit tests to validate:
- Rounding policy for positive/negative decimals.
- Stability of
keyand reversibility viafromXY. copyWithIntsbehavior with partial overrides.- Factory
fromXYproducing expected doubles.
1.25.2 - 2025-09-07 #
Added #
- Nueva GitHub Action ligera para validar commits antes de merge:
- Verificación de que todos los commits estén firmados y verificados.
- Ejecución de
flutter analyzepara asegurar el cumplimiento de linters. - Validación de
dart formaten modo estricto. - Bloqueo de
dependency_overridesenpubspec.yaml.
Changed #
- Ajustes en reglas de protección de ramas:
developymasterahora requieren commits firmados, revisiones por PR y checks de estado obligatorios (incluyendo CodeQL).- Publicación automática a pub.dev únicamente desde
mastertras un merge exitoso.
Security #
- Integración con CodeQL en ramas
developymasterpara análisis de calidad y seguridad. - Configuración de bot con firmas SSH para asegurar que los commits generados por automatizaciones tengan estado Verified.
1.25.1 - 2025-09-07 #
Added #
-
Documentación exhaustiva de estados de sesión
SessionState,Unauthenticated,Authenticating,Authenticated,Refreshing,SessionErrorahora tienen DartDoc claro sobre propósito, transiciones y expectativas de UI.
-
Getter
stateenBlocSession- Exposición fiel del último
SessionStatepublicado (útil para UI que necesita distinguirAuthenticating,RefreshingoSessionError).
- Exposición fiel del último
-
Páginas demo ampliadas en el example
SessionDemoPage(flujo completo de sesión conEither).WsDatabaseUserDemoPage(CRUD + watch en tiempo real con motor de cambios).ConnectivityDemoPage(flujo puro de conectividad conEither).BlocLoadingDemoPage(acción única con anti-flicker y cola FIFO).BlocResponsiveDemoPage(grid responsivo, simulación de tamaño, métricas).BlocOnboardingDemoPage(pasos cononEnterque retornaEither, auto-avance y manejo de errores).
Changed #
-
BlocSession.stateOrDefault- Mantiene retrocompatibilidad simplificando a binario “autenticado / no autenticado”.
- Si el estado es
Authenticated, devuelve la misma instancia (sin reasignar). - Para cualquier otro estado, devuelve
const Unauthenticated().
-
Getters validados
stream,sessionStream,state,stateOrDefault,currentUser,isAuthenticatedverifican ciclo de vida.- Tras
dispose(), el acceso lanzaStateErrorcon mensaje claro (contrato más seguro).
-
Alias canónico
streames el alias recomendado;sessionStreamse mantiene para compatibilidad.
Fixed #
-
refreshSession()en fallo- Si el repo retorna
Left, el BLoC pasa aSessionErrory no permanece enRefreshing.
- Si el repo retorna
-
Idempotencia de
boot()- Múltiples llamadas re-adjuntan la suscripción sin pérdidas de eventos.
-
cancelAuthSubscription()- Al cancelar manualmente, el stream deja de reflejar cambios hasta volver a llamar a
boot()(documentado y cubierto en tests).
- Al cancelar manualmente, el stream deja de reflejar cambios hasta volver a llamar a
Tests #
-
Suite de dispose y getters
- Acceso a getters tras
dispose()→StateErroresperado. stream/sessionStreamno emiten trasdispose().stateOrDefaultes un snapshot y no provoca emisiones.
- Acceso a getters tras
-
Cobertura de secuencias clave
refreshSession()conLeft→SessionError.boot()idempotente ycancelAuthSubscription()en medio de sesión.- Debouncer en
logIn()(múltiples llamadas rápidas → 1 hit a repo).
Migration notes #
-
Acceso tras
dispose()- Evita leer
bloc.state,bloc.currentUser,bloc.isAuthenticatedobloc.streamdespués de disponer. - Si existe código heredado que pudiera acceder tras
dispose(), rodéalo conmounted(en UI) o reordena el ciclo de vida. - Opción de compatibilidad temporal:
SessionState safeState(BlocSession b) { try { return b.state; } catch (_) { return const Unauthenticated(); } }
- Evita leer
-
Snapshots
- Para lógicas binarias, usa
stateOrDefault. - Para lógicas de progreso/errores, usa
state.
- Para lógicas binarias, usa
Dev notes #
-
Si necesitas soportar versiones de Flutter sin
Color.withValues, cambia a:void main(){ color.withOpacity(0.75); // en lugar de withValues(alpha: 0.75) }
— Fin de 1.25.1 —
1.25.0 - 2025-08-17 #
Fixed #
BlocLoading: evitaStateErroral invocarhide()trasdispose()y corrige emisiones duplicadas en operaciones rápidas encadenadas.BlocResponsive: corrige la clasificación inicial deScreenSizeen el primer frame y en cambios de tamaño (web/desktop), garantizando una emisión consistente.BlocOnboarding: maneja correctamente listas vacías de pasos ([]) y asegura queonCompletese dispare una sola vez. Cierre seguro de streams endispose().- Demos: rutas e imports ajustados para compilar en
stablesin advertencias; correcciones menores de tipografía y estilos.
Changed #
- Mejora no funcional del rendimiento en
BlocLoadingal consolidar colas internas para mostrar/ocultar estados de carga (sin cambios de API). - Ajustes menores a los breakpoints documentados de
BlocResponsivepara reflejar con mayor claridad los límites recomendados (sin cambios de API).
Docs #
- DartDoc en inglés para
BlocLoading,BlocResponsiveyBlocOnboarding, incluyendo ejemplos de uso en Markdown y descripción de parámetros/enums. - Comentarios explicativos añadidos en cada demo page para guiar la implementación paso a paso.
- Sección breve en el README principal enlazando a las demos y a la guía de adopción rápida de cada BLoC.
Tests #
- Grupos de pruebas con
flutter_testpor BLoC; casos agregados para:- Inicialización y
dispose(). - Cambios de tamaño en
BlocResponsive. - Flujos felices y escenarios borde en
BlocOnboarding. - Condiciones de carrera en
BlocLoading.
- Inicialización y
CI #
- Endurecimiento de validaciones de PR (análisis, formato y cobertura) y verificación de actualización del
CHANGELOG.md. - Mantención: workflows revisados para compatibilidad con
stableactual.
Notas: No hay cambios incompatibles. No se requiere migración.
1.24.2 - 2025-08-17 #
Added #
- Actualización menor en
BlocLoadingpara soportar FiFo en la cola de tareas. - Se agrega demo para
BlocLoadingenbloc_loading_demo_page.dart. - Se agrega
BlocOnboardingpara gestionar estados de onboarding en aplicaciones. - Se agrega
BlocResponsivepara manejar estados de UI responsiva en aplicaciones con diferentes resoluciones y pantallas.
1.24.1 - 2025-08-17 #
Fixed #
- Corrección de advertencias menores en la implementación de conectividad y manejo de streams.
- Ajustes en la documentación de los nuevos módulos y ejemplos agregados.
- Mejoras menores en la robustez de los tests unitarios para los servicios de conectividad y WebSocket.
- Actualización de dependencias para mantener la compatibilidad con las últimas versiones de Flutter y Dart.
1.24.0 - 2025-08-15 #
✅ Added
- Stack WS Database (end-to-end)
GatewayWsDatabaseImpl(ref-count pordocId, multiplexing conBlocGeneral,detachWatch/releaseDoc/dispose).RepositoryWsDatabaseImpl<T extends Model>(mapeofromJson/toJson, opcional serialización dewrite/deletepordocId).- Usecases CRUD & WS:
databases_crud_usecases.dartfacade_crud_database.dartfacade_ws_database_usecases.dart
- Estado y config:
ws_db_state.dart(estado inmutableWsDbState<T>)ws_db_config.dart(valores por defecto / helpers)
- BLoC:
bloc_ws_database.dart(orquestación thin; sin streams ad-hoc; mira/actualizaWsDbState)
- Infra fake para desarrollo/pruebas
fake_service_ws_database.dartcondocumentStream/collectionStream, lectura/escritura y borrado por colección+id.ws_database_user_demo_page.dart(example) con ticker opcional que incrementajwt.countRefen vivo.home_page.dart(example) como entrada de demo.
- Utilidades transversales
Unit(tipo “valor nulo” seguro paraEithery comandos sin payload).PerKeyFifoExecutor<K>(ejecutor FIFO por clave para serializar tareas pordocId).
- Tests
bloc_ws_database_test.dartgateway_ws_database_impl.test.dartrepository_ws_database_impl.test.dartfake_service_ws_database.test.dartper_key_fifo_executor_test.dartunit_test.dartfake_db_repo.dart(mocks & fakes auxiliares)
🔄 Changed
- Contratos de gateway/repositorio document-centricos y transport-agnostic:
GatewayWsDatabase: énfasis en watch por documento con canal compartido y manejo explícito de ciclo de vida (detachWatch/releaseDoc).RepositoryWsDatabase<T>: agrega helpers de ciclo de vida y opción de serializar escrituras pordocId.
- Mapeo de errores unificado mediante
DefaultErrorMapperen todas las capas.
🩹 Fixed
- Posibles leaks de suscripción cuando varios watchers observaban el mismo
docId: ahora se hace ref-count y se libera la suscripción real al llegar a cero referencias.
🧭 Migration notes
- Si usas
watch(docId), después de cancelar tuStreamSubscriptionllama siempre adetachWatch(docId)para liberar el canal subyacente. - Para comandos sin retorno, retorna
Right(unit)en lugar devoid. - Para evitar carreras al escribir/borrar la misma entidad, usa el
RepositoryWsDatabaseImplconserializeWrites: trueo el utilitarioPerKeyFifoExecutor.
📚 Docs
- README actualizado con:
- “Cómo integrar BlocWsDatabase (con FakeServiceWsDatabase)”
- Snippets dedicados de
UnityPerKeyFifoExecutor(casos de uso comunes).
1.23.1 - 2025-08-11 #
Fixed #
- Correcciones menores y ajustes en la implementación de
GatewayAuthyRepositoryAuthpara mejorar la compatibilidad y robustez. - Documentación actualizada y ampliada en los nuevos archivos y clases agregadas.
- Se resolvieron advertencias y errores menores detectados en pruebas unitarias y análisis estático.
1.23.0 - 2025-08-11 #
Actualización cambios de master
1.22.0 - 2025-08-10 #
- Agregamos la clase BlocResponsive, BlocOnboarding y BlocLoading para mejorar la gestión de estados en aplicaciones con diferentes resoluciones y pantallas.
1.21.2 - 2025-07-22 #
- Corregido error de formateo en changelog al agregar la versión
1.21.1(error de formato en el encabezado de la versión).
1.21.1 - 2025-07-22 #
- Revisados y resueltos los
TODOpendientes en el código. - Sincronizada la rama
developconmaster. - Corregido el error de análisis estático (“Angle brackets will be interpreted as HTML”) en el comentario de
fake_service_preferences.dart(ajuste de espacios enMap<String, dynamic>).
1.21.0 - 2025-07-09 #
- Se crea la clase
FakeServiceHttppara simular el comportamiento de un servicio HTTP en pruebas unitarias. - Se actualiza el readme para incluir ejemplos de uso de las clases
FakeServiceHttp,FakeServiceSesion,FakeServiceWsDatabase,FakeServiceGeolocation,FakeServiceGyroscope,FakeServiceNotifications,FakeServiceConnectivityyFakeServicePreferences.
1.20.2 - 2025-07-08 #
- Se crea la clase
FakeServiceSesionpara simular el comportamiento de un servicio de sesión en pruebas unitarias. - Se crea la clase
FakeServiceWsDatabasepara simular el comportamiento de un servicio de base de datos WebSocket en pruebas unitarias. - Se crea la clase
FakeServiceGeolocationpara simular el comportamiento de un servicio de geolocalización en pruebas unitarias. - Se crea la clase
FakeServiceGyroscopepara simular el comportamiento de un servicio de giroscopio en pruebas unitarias. - Se crea la clase
FakeServiceNotificationspara simular el comportamiento de un servicio de notificaciones en pruebas unitarias. - Se crea la clase
FakeServiceConnectivitypara simular el comportamiento de un servicio de conectividad en pruebas unitarias. - Se crea la clase
FakeServicePreferencespara simular el comportamiento de un servicio de preferencias en pruebas unitarias.
1.20.1 - 2025-07-07 #
Fixed #
- Se documenta y agrega el archivo
README_STRUCTURE.mdcon la guía recomendada de estructura de carpetas y arquitectura para proyectos basados enjocaagura_domain.
1.20.0 - 2025-07-06 #
Changed #
- Documentación ampliada y mejorada para las clases
BlocGeneralyBlocModule, incluyendo ejemplos de uso detallados en DartDoc y explicaciones sobre la gestión de listeners y el ciclo de vida de los BLoC.
1.19.0 - 2025-05-25 #
Added #
- Nueva clase
LedgerModelque representa un libro contable con ingresos y egresos separados, y permite el cálculo de saldo total y decimal. - Enum
LedgerEnumpara mantener uniformidad en las claves JSON utilizadas porLedgerModel. - Funcionalidades en
MoneyUtilspara:totalAmount,totalDecimalAmountaverage,filterByCategorytotalPerCategory,totalDecimalPerCategory
- Métodos adicionales útiles como:
getLatestMovement,containsMovementsortByDate,filterByDateRangetotalByMonth,totalDecimalByMonth
Added (Tests) #
- Pruebas unitarias para
LedgerModel: serialización, igualdad, cálculo de saldos ycopyWith. - Pruebas unitarias para
MoneyUtils: validaciones de agregación, filtros y agrupaciones por categoría y mes.
Changed #
- Documentación enriquecida con ejemplos de uso en DartDoc para
MoneyUtils.
1.18.1 - 2025-05-18 #
chore(github): reestructura develop desde master y actualiza workflows
1.18.0 - 2025-05-18 #
Added #
- Nueva estructura estándar de errores:
HttpErrorItems: Manejo de errores HTTP comunes como 404, 401, 500, con niveles de severidad (danger,severe,warning,systemInfo).WebSocketErrorItems: Representación de errores típicos de WebSocket como fallos de conexión, cierre inesperado o mensajes malformados.NetworkErrorItems: Para errores como sin conexión, timeout o servidor inaccesible.
- Inclusión de métodos estáticos
fromCode()yfromStatusCode()en las clases anteriores. - Clave estandarizada
meta['source']y validadores parameta['httpCode']y similares.
Updated #
ErrorItemahora soporta un campoerrorLevelde tipoErrorLevelEnum.- El valor por defecto es
ErrorLevelEnum.systemInfopara obligar a definirlo explícitamente. - Se agregó
toString()actualizado para incluir elerrorLevel.
- El valor por defecto es
- Documentación de cada clase de error fue ampliada con enlaces a los estándares utilizados (MDN, Flutter API).
Tests #
- Se agregaron pruebas unitarias para
HttpErrorItems,WebSocketErrorItems, yNetworkErrorItemsincluyendo validación deerrorLevel,fromCode()y fallbackunknown(). - Se probaron los casos límite y el mapeo correcto desde códigos conocidos.
Docs #
- Actualizado el
README.mdpara reflejar las nuevas capacidades de los modelos de error y sus usos sugeridos.
1.17.1 - 2025-05-18 #
1.17.0 - 2025-03-25 #
Added #
- Implemented the financial movement model to manage financial transactions.
1.16.0 - 2025-01-25 #
Added #
- Configured GitHub Actions secrets to securely store sensitive data required for workflows.
- Validated and updated the GitHub maintainers group to ensure proper repository access and management.
Updated #
- Enhanced the
READMEfile with updated repository details and instructions for contributors.
1.15.2 - 2024-12-29 #
Fixed #
- Translation of the changelog to English.
- Completion and translation of inline documentation to English.
- Extended unit tests.
- Updated linter package.
1.15.1 - 2024-08-25 #
Fixed #
- Minor changes in DartDoc formatting without affecting the code or its functionality.
1.15.0 - 2024-08-25 #
Added #
MedicalRecordModel: Added model, tests, and DartDoc documentation for the patient's state in the dentist app.
1.14.0 - 2024-08-25 #
Added #
MedicationModel: Added model, tests, and DartDoc documentation for the appointment model.
1.13.0 - 2024-08-25 #
Added #
AppointmentModel: Added model, tests, and DartDoc documentation for the appointment model.ContactModel: Added model, tests, and DartDoc documentation for the contact model.
1.9.0 - 2024-07-28 #
1.8.0 - 2024-07-24 #
Added #
DentalConditionModel: Added model and documentation for the dental condition.
1.7.1 - 2024-07-22 #
Changed #
MedicalDiagnosisModel: Added documentation for developers in the file.
1.6.0 - 2024-07-21 #
1.5.0 - 2024-07-07 #
1.4.2 - 2024-06-30 #
Added #
Colors: Added a color map to the UML diagram with an explanation in the README to improve visualization of the implementation state of models.
Fixed #
UML Diagram: Updated to reflect the implementation state of models:Either,Left,Right: Confirmed.Model,UserModel,AttributeModel<T>: Confirmed.Bloc,BlocModule,BlocGeneral<T>,BlocCore: Confirmed.UI:ModelMainMenuModelconfirmed.Connectivity:ConnectionTypeEnum,ConnectivityModelconfirmed.Citizen:PersonModelunder review,LegalIdModelconfirmed.Obituary:ObituaryModel,DeathRecordModelconfirmed.Shops:StoreModelconfirmed.Geolocation:AddressModelconfirmed.
1.2.1 #
- Added
Debouncerclass. - Added documentation in the README file.
1.0.0 #
- Added
Eitherclass. - Approved for production.
0.3.2 #
- Added
DeathRecordModelintoObituaryModel.
0.3.1 #
- Fixed
fromJsonfactory constructor inLegalIdModel.
0.3.0 #
- Added
LegalIdModel.
0.2.0 #
- Added
DeathRecordModel.
0.1.2 #
- Minor fix to
ObituaryModelto includevigilDateandburialDatein parameters. - Increased unit test coverage.
0.1.01 #
- Changed officially to beta.
- Minor fix to
ObituaryModelto includemessagein parameters.
0.0.9 #
- Added
ObituaryModel. - Minor fix to
PersonModelto cover variable names properly. - Increased
PersonModelandDateUtilstest coverage.
0.0.8 #
- Added DateTime-to-String utility.
0.0.71 #
- Changed attributes in Models to
Map<String, AttributeModel<dynamic>>.
0.0.7 #
- Completed
PersonModelwith subModelClass (AttributeModel) for information.
0.0.6 #
- Completed
StoreModelwith formatted options.
0.0.5 #
- Added
StoreModel.
0.0.4 #
- Added
AddressModel.
0.0.3 #
- Added
Utilsclass for JSON conversion management. - Improved unit test coverage.
0.0.2 #
- Added
UserModeland established some immutable conditions.
0.0.1 #
- Added initial abstract class
Model.