diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ce70b78 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +## [1.7.4] - 2025-12-23 + +### Added +- Permisos completos de Android en AndroidManifest.xml: + - INTERNET, ACCESS_NETWORK_STATE + - CAMERA, RECORD_AUDIO + - ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION + - READ_MEDIA_IMAGES/VIDEO/AUDIO (Android 13+) + - READ_EXTERNAL_STORAGE (Android ≤12) +- Configuración `android:usesCleartextTraffic="true"` para HTTP + +### Build Info +- Flutter 3.38.5 (stable) +- Dart 3.10.4 +- Java OpenJDK 17.0.17 +- APK Size: 49 MB +- SHA-256: `7f57bee3edec7342d6ca78d789704fec3827e3bf85f11ac362dcbacc8371ef1a` + +## [1.0.0] - 2025-12-21 + +### Added +- Release inicial +- 5 pantallas: Captura, Etiquetas, Packs, Pendientes, Config +- Arquitectura Clean con BLoC +- Soporte offline con cola de reintentos +- Integración con backend via API REST +- Sistema de etiquetas desde bibliotecas remotas +- Captura multimedia (fotos, video, audio, archivos) +- GPS location +- Hash SHA-256 para contenedores diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index cb22608..65f084b 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + android:icon="@mipmap/ic_launcher" + android:usesCleartextTraffic="true"> - - - diff --git a/docs/BUILD-v1.7.4.md b/docs/BUILD-v1.7.4.md new file mode 100644 index 0000000..3252bed --- /dev/null +++ b/docs/BUILD-v1.7.4.md @@ -0,0 +1,151 @@ +# Packet v1.7.4 - Build Report + +**Fecha:** 2025-12-23 +**Compilado por:** Claude Code +**Plataforma:** macOS Darwin 25.1.0 + +## Artefacto + +| Campo | Valor | +|-------|-------| +| Archivo | `packet-v1.7.4.apk` | +| Tamaño | 49 MB | +| SHA-256 | `7f57bee3edec7342d6ca78d789704fec3827e3bf85f11ac362dcbacc8371ef1a` | +| Firmado | Debug keys | + +## Entorno de Compilación + +### Flutter +| Componente | Versión | +|------------|---------| +| Flutter | 3.38.5 (stable) | +| Dart | 3.10.4 | +| DevTools | 2.51.1 | +| Engine | c108a94d7a | + +### Android +| Componente | Valor | +|------------|-------| +| Java | OpenJDK 17.0.17 | +| Package Name | `me.tzzr.packet` | +| Label | packet | + +## Permisos Android + +```xml + + + + + + + + + + + + + + + + + + + +``` + +**Configuración adicional:** +```xml + +``` + +## Dependencias + +### Runtime +| Paquete | Versión | Propósito | +|---------|---------|-----------| +| flutter_bloc | ^9.0.0 | State management | +| equatable | ^2.0.7 | Value equality | +| sqflite | ^2.4.2 | SQLite local DB | +| path_provider | ^2.1.5 | File paths | +| dio | ^5.7.0 | HTTP client | +| crypto | ^3.0.6 | SHA-256 hashing | +| image_picker | ^1.1.2 | Captura fotos/video | +| record | ^6.0.0 | Grabación audio | +| file_picker | ^8.1.7 | Selección archivos | +| geolocator | ^13.0.2 | GPS location | +| permission_handler | ^11.4.0 | Runtime permissions | +| uuid | ^4.5.1 | UUID generation | +| intl | ^0.20.2 | Internacionalización | +| cached_network_image | ^3.4.1 | Cache de imágenes | + +### Dev +| Paquete | Versión | +|---------|---------| +| flutter_test | SDK | +| flutter_lints | ^6.0.0 | + +## Estructura del Proyecto + +``` +lib/ (3,505 líneas Dart) +├── main.dart # Entry point +├── core/ +│ ├── constants/ # AppConstants, RetryDelays +│ ├── errors/ # Excepciones +│ ├── utils/ # hash_utils, retry_utils +│ └── theme/ # AppTheme +├── data/ +│ ├── datasources/ # BackendApi, BibliotecaApi, LocalDatabase +│ └── repositories/ # Config, Etiqueta, Contenedor repos +├── domain/ +│ └── entities/ # Contenedor, Etiqueta, Pack, Destino +└── presentation/ + ├── app.dart # PacketApp, MainScreen + ├── bloc/ # Cubits + ├── pages/ # 5 pantallas + └── widgets/ # Componentes +``` + +## Pantallas + +| # | Pantalla | Icono | Función | +|---|----------|-------|---------| +| 1 | Captura | 📷 | Montar contenedor multimedia | +| 2 | Etiquetas | 🏷️ | Seleccionar tags | +| 3 | Packs | 📦 | Conjuntos de etiquetas | +| 4 | Pendientes | ⏳ | Cola de reintentos (máx 20) | +| 5 | Config | ⚙️ | URLs, llaves, bibliotecas | + +## Constantes + +| Constante | Valor | +|-----------|-------| +| maxPendientes | 20 | +| maxReintentos | 20 | +| hashLength | 64 (SHA-256) | +| chunkSize | 512 KB | +| httpTimeout | 30s | +| retryCheckInterval | 30s | + +## Backoff de Reintentos (72h total) + +| Rango | Espera | +|-------|--------| +| 1-3 | 1, 2, 5 min | +| 4-6 | 10, 20, 30 min | +| 7-10 | 1, 2, 3, 4 h | +| 11-14 | 5, 6, 6, 6 h | +| 15-19 | 8, 8, 8, 8, 6 h | +| 20 | STOP | + +## Comandos de Build + +```bash +export JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home +cd /tmp/packet-app +flutter clean +flutter build apk --release +cp build/app/outputs/flutter-apk/app-release.apk ~/Downloads/packet-v1.7.4.apk +```