Skip to content

Releases: parrazam/mis-dineros

Mis Dineros v1.8.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 18:36
3575cfe

Suscripciones compartidas

Los planes familiares o compartidos ya se pueden marcar como tales: la app
guarda el precio completo y cuenta solo tu parte. Las copias de seguridad
anteriores se siguen importando sin cambios.

Novedades

  • Interruptor «Compartida» al crear o editar una suscripción, con el número
    de personas que la pagan (hasta 10, contándote a ti) y una vista previa de
    tu parte.
  • El gasto mensual, el equivalente anual, el gasto por categoría y «Las 5
    más caras» suman tu parte, no el precio completo.
  • Las tarjetas muestran tu parte y, debajo, el precio completo, con un chip
    que indica entre cuántas personas se comparte. El detalle añade el número
    de personas y el precio completo.
  • El aviso de renovación muestra el importe completo y tu parte.

Datos

  • La base de datos pasa a la versión 3 con una migración que deja todas las
    suscripciones existentes sin compartir.
  • Las copias de seguridad incluyen el número de personas. Las exportadas con
    versiones anteriores se importan como no compartidas.

Interno

  • Android Gradle Plugin 9.4.1 y Gradle 9.8.2.
  • Dependencias actualizadas: Compose BOM 2026.06.01, Room 2.8.5, DataStore
    1.3.0, WorkManager 2.12.0, androidx.hilt 1.3.0, kotlinx-serialization
    1.12.0 y kotlinx-coroutines 1.11.0.
  • Tests de migración de Room contra los esquemas exportados.

What's Changed

  • ci: Bump the github-actions group across 1 directory with 2 updates by @dependabot[bot] in #52
  • build: migrar a AGP 9.4.1 y Gradle 9.8.2 by @parrazam in #54
  • build: reintentar la descarga de la distribución de Gradle by @parrazam in #55
  • feat: Suscripciones compartidas by @parrazam in #56
  • deps: actualizar dependencias compatibles con compileSdk 36 by @parrazam in #57
  • release: preparar v1.8.0 by @parrazam in #58
  • ci: usar el mensaje del tag anotado como cuerpo de la release by @parrazam in #59

Full Changelog: v1.7.0...v1.8.0

Mis Dineros v1.7.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 20:01
fcce0b1

What's Changed

Full Changelog: v1.6.0...v1.7.0

Mis Dineros v1.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 11:46
7d60653

What's Changed

  • ci: Bump actions/cache from 5.0.5 to 6.1.0 by @dependabot[bot] in #39
  • ci: Bump actions/checkout from 6.0.3 to 7.0.1 by @dependabot[bot] in #38
  • ci: Bump softprops/action-gh-release from 3.0.0 to 3.0.3 in the github-actions group across 1 directory by @dependabot[bot] in #43
  • fix: revisión de seguridad y estabilidad by @parrazam in #45

Full Changelog: v1.5.0...v1.6.0

Mis Dineros v1.5.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 17:17

Compatibilidad con Android 16 (nivel de API 36), requisito de Google Play para
poder seguir publicando actualizaciones a partir del 31 de agosto de 2026.

targetSdk 36

  • Los dos cambios de comportamiento obligatorios ya se cumplían: el edge-to-edge
    es forzoso (la app usa enableEdgeToEdge() y WindowInsetsControllerCompat,
    nunca setStatusBarColor) y las restricciones de orientación se ignoran en
    pantallas ≥ 600 dp, donde el bloqueo vertical ya estaba desactivado.
  • android:enableOnBackInvokedCallback="true" explícito: es el valor por
    defecto con targetSdk 36, pero iguala el comportamiento en Android 13–15.
  • No se declara PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY, la exclusión
    disponible hasta la API 37.

Correcciones de interfaz

  • Tablet en vertical: la leyenda de categorías desaparecía en Estadísticas.
    Al ignorarse ya el bloqueo de orientación, el donut ocupaba todo el ancho y
    la leyenda se quedaba en 0 px. El layout de dos columnas ahora comprueba
    también la proporción de la ventana, no solo el ancho.
  • Inicio en tablet en vertical: mantenía las dos columnas, que quedaban
    apretadas en la mitad superior de la pantalla. Mismo criterio aplicado.
  • El FAB ya no tapa el último elemento en la lista de suscripciones ni en el
    editor de categorías.
  • Ajustado el margen inferior del selector de iconos.

Otros cambios

  • El permiso de notificaciones se pide una sola vez al abrir la app, en vez de
    en cada onResume: así no se agotaba el cupo de diálogos del sistema, que
    tras un par de descartes dejaba de mostrarlos y denegaba en silencio.
  • El selector de imagen para iconos pasa a ser el Photo Picker del sistema
    (PickVisualMedia), que no requiere permiso de acceso al almacenamiento y
    solo da acceso a la foto elegida.
  • Room 2.7.0-alpha13 → 2.8.4 (versión estable). El esquema exportado no cambia,
    así que las instalaciones existentes abren su base de datos sin migración.
  • Reparada la suite de tests instrumentados, rota desde la migración a la BD v2.
  • CI: actions/setup-java 5.2.0 → 5.5.0 y softprops/action-gh-release
    2.6.2 → 3.0.0.

Mis Dineros v1.4.1

Choose a tag to compare

@github-actions github-actions released this 02 Jul 21:24
2aef69b
Fix: las notificaciones llegan a la hora configurada, sin deriva.

- Sustituido el PeriodicWorkRequest (derivaba hacia la hora del último
  despertar del dispositivo) por one-time work auto-reprogramado que se
  re-ancla cada día a la hh:mm configurada.
- La cadena sobrevive a errores transitorios (Result.retry) y a cambios
  de Ajustes concurrentes (guarda isStopped).
- Cálculo del retardo con zona horaria (exacto en días de cambio DST) y
  valores de hora/minuto acotados.
- El botón de probar notificación ya no interfiere con la programación.

Mis Dineros v1.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 18:49
87a4a5d
feat: opción de colores dinámicos (Material You) en Ajustes (#30)

- Nuevo ajuste dynamicColorEnabled (default false) en AppSettings + DataStore
- Toggle en Ajustes → Apariencia, visible solo en Android 12+
- MainViewModel expone ThemeConfig (appTheme + dynamicColor) y MainActivity
  conecta el flag dynamicColor de MisDinerosTheme, que ya estaba implementado
- Backup: SettingsDto serializa dynamicColorEnabled y notificationMinute
  (fix: el minuto de la hora de notificación se perdía al exportar/importar)
- Tests de round-trip y de defaults al importar backups antiguos

Co-authored-by: Parra <parravidales@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Mis Dineros v1.3.3

Choose a tag to compare

@github-actions github-actions released this 03 Jun 16:37
1086f57
fix: avance automático de renovaciones y bloqueo de fechas pasadas (#19)

* fix(renewals): avanzar automáticamente la fecha de renovación al vencer

Hasta ahora nada actualizaba nextRenewalDate cuando pasaba la fecha de
renovación: la suscripción quedaba anclada en el pasado, desaparecía de
las próximas renovaciones de Home y dejaba de notificarse.

- BillingCycle.nextRenewal(from, anchorDay): cálculo puro del siguiente
  ciclo con reanclado min(anchorDay, díasDelMes) (día 31: ene→feb→mar
  conserva el 31, no se queda en 28).
- Nuevo campo persistente billingAnchorDay (dominio, entidad, mapper) que
  guarda el día de facturación original; se fija al crear/editar.
- AdvanceDueRenewalsUseCase: recalcula y persiste las fechas vencidas de
  las suscripciones activas (soporta varios ciclos atrasados).
- Migración Room 1→2 con backfill del ancla desde nextRenewalDate.
- Disparado al arrancar la app, en el worker diario y tras una importación.
- Backup: el JSON no cambia; toDomain deriva el ancla del día de la fecha.

Tests: BillingCycleTest y AdvanceDueRenewalsUseCaseTest.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(edit): impedir fijar la fecha de renovación en el pasado

El selector de fecha permitía elegir días anteriores a hoy y guardarlos,
dejando una renovación ya vencida al editar.

- DatePicker: SelectableDates deshabilita fechas (y años) anteriores a hoy.
- ViewModel: validación de respaldo en save() que rechaza una fecha pasada
  y muestra el error bajo el campo de fecha.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Parra <parravidales@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

Mis Dineros v1.3.2

Choose a tag to compare

@github-actions github-actions released this 08 May 23:19
9a24c7f
fix(backup): habilitar Auto Backup eligibility con fullBackupOnly (#18)

La app declaraba un BackupAgent personalizado sin android:fullBackupOnly="true",
de modo que el sistema la trataba como key/value backup. Con onBackup/onRestore
vacíos, no se almacenaba nada y la app no aparecía en la lista de Google Backup.

Cambios:

- Manifest: añadir android:fullBackupOnly="true" para que el sistema use Auto
  Backup (full-data) en Android 6+ pese a tener BackupAgent declarado.
- MisDinerosBackupAgent: simplificar onFullBackup. En lugar de duplicar las
  reglas (que ya están en data_extraction_rules.xml y backup_rules.xml),
  delega en super.onFullBackup(data). El agente conserva solo dos
  responsabilidades:
    1. Respetar el toggle de usuario (auto_backup_prefs/enabled).
    2. Hacer wal_checkpoint(FULL) antes de la copia para que el .db sea
       consistente.
- MisDinerosApplication: inicializar el mirror de SharedPreferences
  (auto_backup_prefs.xml) en onCreate con el valor actual del DataStore,
  para que el archivo exista desde el primer arranque.

Refs:
- https://developer.android.com/identity/data/autobackup
- https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore

Co-authored-by: Víctor Parra <claude@anthropic.local>

Mis Dineros v1.3.1

Choose a tag to compare

@github-actions github-actions released this 08 May 20:27
fix(backup): checkpoint WAL antes de copiar la BD en Auto Backup

Room usa WAL por defecto. Sin checkpoint, el fichero principal puede no
tener las últimas transacciones al hacer fullBackupFile(), lo que provoca
inconsistencia al restaurar en otro dispositivo o tras reinstalar.

Se abre una conexión SQLiteDatabase independiente (sin Hilt/Room) para
ejecutar PRAGMA wal_checkpoint(FULL) justo antes de incluir los ficheros.
Si el checkpoint falla, se continúa incluyendo los ficheros WAL y SHM
como fallback (comportamiento anterior).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Mis Dineros v1.3.0

Mis Dineros v1.3.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 May 19:55

v1.3.0

Novedades

Exportación mejorada

  • El botón «Exportar datos» ahora abre un diálogo donde puedes elegir entre guardar el archivo en el dispositivo o compartirlo directamente con cualquier app (LocalSend, Telegram,
    Drive…).
  • Nuevo cifrado opcional: activa el toggle «Cifrar con contraseña» antes de exportar y el archivo queda protegido con AES-256-GCM. Sin la contraseña, el contenido es ilegible. La contraseña no se almacena en ningún sitio.
  • Los backups exportados con versiones anteriores se importan sin cambios — compatibilidad total.

Copia de seguridad automática

  • Nueva opción en Ajustes → Datos: «Copia de seguridad automática». Cuando está activa, Android guarda una copia cifrada en tu cuenta de Google. Si reinstales la app o cambias de móvil, tus datos se restauran solos.

Formato técnico del fichero: cabecera MDB1 (5 bytes) + JSON plano o AES-256-GCM con clave derivada por PBKDF2 (200 000 iteraciones). Compatible con importaciones legacy sin cabecera.

Full Changelog: v1.2.1...v1.3.0