-
Notifications
You must be signed in to change notification settings - Fork 1
Cbdcounter+chip thc counter #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Añadí el botón verde addInfusedButton encima de la fila principal para disparar la toma aliñada (app/src/
main/res/layout/activity_main.xml:171).
- Implementé la enumeración InfusionType y reutilicé métodos registerIntake()/appendEntryToTodayNote()
para guardar hora + emoji + sufijo según selección (app/src/main/java/com/d4vram/cbdcounter/
MainActivity.kt:74, :517).
- Creé el layout dialog_infusion_choice.xml con el modal temático y el fondo degradado
dialog_infusion_background.xml más los nuevos colores y textos de soporte (app/src/main/res/layout/
dialog_infusion_choice.xml:1, app/src/main/res/values/colors.xml:48, app/src/main/res/values/strings.xml:19).
…ractButton y resetButton, manteniendo
pesos y márgenes originales (app/src/main/res/layout/activity_main.xml:171-219).
- Añadí addInfusedButton como un MaterialButton independiente justo encima de la fila principal, centrado y
con ancho porcentual para que se vea más compacto (app/src/main/res/layout/activity_main.xml:150-168). El
buttonContainer ahora se ancla a este nuevo botón para conservar el espaciado vertical.
…ntalla, en paralelo con los botones de exportar e importar CSV, con un calendario mensual donde se puede ver de forma gráfica el emoji resultante de los datos de cada día
… las 00:00 con el widget. Testear durante unos días, pero estoy 80% seguro de que lo he solucionado
…tador de CBD y THC', teniendo en cuenta la función implementada hace no mucho para elegir con que estaba aliñado el CBD para cuando los aliño
… val importMimeTypes = arrayOf'. -El selector no dejaba elegir archivos porque solo aceptábamos , así que los CSV con MIME o quedaban en gris. -Añadí todas esas variantes al launcher para que cualquier CSV válido se pueda seleccionar y leer.
…ión en strings.xml, corrigiendo los ids
polem para que coincidan con el código (app/src/main/res/values/strings.xml:28-37).
- Reemplacé todos los literales duros en la hoja inferior por referencias a recursos y dejé el TextView de
vista previa listo para Markdown (app/src/main/res/layout/dialog_note_bottomsheet.xml:12-57).
- Enlacé Markwon: añadí la dependencia Gradle (app/build.gradle.kts:50) e instancié el renderizador en
NoteBottomSheet, aplicándolo tanto al cargar como mientras escribes (app/src/main/java/com/d4vram/cbdcounter/
NoteBottomSheet.kt:29-68).
Markdown en la app:
- Usa la sintaxis clásica dentro de la nota (se guarda igual en SharedPreferences y en el CSV).
- Negrita: **texto**
- Cursiva: _texto_
- Tachado: ~~texto~~
- Subrayado: <u>texto</u> (HTML, Markwon lo interpreta)
- Listas: - item o 1. item
- Enlaces: [texto](https://url)
- Encabezados: # Título
- La hoja muestra la vista previa renderizada en vivo; al exportar CSV verás el texto literal con los
marcadores Markdown, para que al reimportar o leer en otra app puedas volver a interpretarlo.
…amente. También el botón -1 ahora borra el string generado por +1
…es solo un componente estático hardcoded XML, ahora es dinámica y se actualiza en consonancia con SharedPreferences y los emojis seleccionados para cada valor
- Política de privacidad completa (RGPD + Google Play) - Descripciones para Play Store (corta + larga) - Configuración de GitHub Pages - Página index con enlaces
✨ AÑADIDO: - Disclaimer médico obligatorio en primer uso (requisito Google Play) - Política de privacidad completa (RGPD + Google Play) - Documentación oficial en GitHub Pages (docs/) - CHANGELOG.md con historial de versiones 🐛 CORREGIDO: - Bug crítico: Widget ahora usa emojis personalizados (antes hardcodeados) - Bug crítico: Confirmación antes de importar CSV (previene pérdida de datos) 🔧 TÉCNICO: - Versión actualizada a 1.1.0 (versionCode: 2) - Migrado a Android App Bundle (AAB) - ProGuard/R8 configurado y optimizado - Target SDK 34 (Android 14) - Reducción de tamaño: 5.8MB → 3.5MB (~40%) 🗑️ LIMPIEZA: - Eliminado cbdcounter.keystore.old del repositorio - Eliminados archivos de documentación interna de la raíz 📋 Play Store Ready: ✅ Cumple políticas de contenido ✅ Disclaimer médico incluido ✅ Política de privacidad pública ✅ AAB firmado y optimizado 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
D4vRAM369
added a commit
that referenced
this pull request
Jan 19, 2026
PROBLEMA DETECTADO: =================== 1. App crasheaba al iniciar con ClassCastException 2. App crasheaba al abrir pantalla Stats con SecurityException 3. Estadísticas mostraban ceros después de importar CSV ROOT CAUSE ANALYSIS: ==================== Bug #1: ClassCastException en MainActivity.initViews() ------------------------------------------------------- - Error: 'Chip cannot be cast to MaterialButton' - Causa: Desajuste entre tipos declarados en Kotlin y tipos en XML - Archivos afectados: * statsButton: declarado MaterialButton, pero es Chip en XML * settingsButton: declarado MaterialButton, pero es ImageButton en XML * exportButton: declarado MaterialButton, pero es ImageButton en XML * importButton: declarado MaterialButton, pero es ImageButton en XML * searchButton: declarado MaterialButton, pero es ImageButton en XML Bug #2: SecurityException en DashboardActivity.onResume() ---------------------------------------------------------- - Error: 'RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified' - Causa: Android 13+ (API 33) requiere flag de seguridad al registrar BroadcastReceivers - Archivos afectados: * DashboardActivity.kt línea 97 * MainActivity.kt línea 182 Bug #3: Estadísticas en ceros (ya corregido en commit anterior) ---------------------------------------------------------------- - Causa: Uso de claves obsoletas count_$date en lugar de count_cbd_$date y count_thc_$date - Archivos afectados: * DashboardActivity.kt (4 funciones) * EvolutionActivity.kt (1 función) * CalendarActivity.kt (1 función) SOLUCIÓN IMPLEMENTADA: ====================== 1. Corregir tipos de variables en MainActivity.kt: - statsButton: MaterialButton → Chip - settingsButton, exportButton, importButton, searchButton: MaterialButton → ImageButton 2. Agregar flag RECEIVER_NOT_EXPORTED en registerReceiver(): - DashboardActivity: registerReceiver(receiver, filter, Context.RECEIVER_NOT_EXPORTED) - MainActivity: registerReceiver(receiver, filter, Context.RECEIVER_NOT_EXPORTED) Nota PBL: RECEIVER_NOT_EXPORTED indica que el receptor es PRIVADO (solo nuestra app puede enviar broadcasts). Usar RECEIVER_EXPORTED solo si otras apps necesitan comunicarse con nosotros. 3. Actualizar acceso a datos en Activities de estadísticas: - Usar Prefs.getTotalCount() en lugar de sharedPrefs.getInt("count_$date", 0) - Usar Prefs.getAllDatesWithData() en lugar de iterar sharedPrefs.all CONCEPTOS APRENDIDOS (PBL): =========================== 1. Type Safety en Android: - findViewById<T> hace cast implícito al tipo T - Si el tipo real en XML no coincide con T → ClassCastException - Solución: Declarar variables con el tipo exacto del XML 2. BroadcastReceiver Security (Android 13+): - RECEIVER_NOT_EXPORTED: Receptor privado (comunicación interna) - RECEIVER_EXPORTED: Receptor público (otras apps pueden enviar) - Razón: Prevenir que apps maliciosas envíen broadcasts falsos 3. Data Migration Best Practices: - Centralizar acceso a datos en funciones helper (Prefs.kt) - Evita duplicación de lógica de migración - Facilita cambios futuros en estructura de datos TESTING: ======== ✅ Build exitoso ✅ App inicia sin crashes ✅ Pantalla Stats abre correctamente ⏳ Pendiente: Verificar estadísticas después de importar CSV ARCHIVOS MODIFICADOS: ===================== - MainActivity.kt: Tipos de botones + BroadcastReceiver flag - DashboardActivity.kt: BroadcastReceiver flag + Stats con Prefs helpers - EvolutionActivity.kt: Stats con Prefs helpers - CalendarActivity.kt: Stats con Prefs helpers - CBDWidgetProvider.kt: (cambios menores de baseline)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merge of branch to main