Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
252b99e
[Feat] UX Polish V1 - Mejoras de experiencia de usuario
javikin Jan 6, 2026
a5fb408
Add gamification epic: Sistema de Expedición
javikin Jan 7, 2026
85441fc
Issue #54: Add expedition entities, DAOs and repository
javikin Jan 7, 2026
e1d7a53
Issue #53: Add expedition module structure, entities, DAOs and DB mig…
javikin Jan 7, 2026
b576b55
Issue #53: Fix repository unlockAchievement to return stars earned
javikin Jan 7, 2026
f2f9dec
Issue #55: Add domain models and use cases
javikin Jan 7, 2026
9afe8a2
Issue #57: Add ExpeditionMapScreen with Canvas rendering
javikin Jan 7, 2026
a8dfa82
Issue #58: Add companion system with capture and evolution
javikin Jan 7, 2026
58169cb
Issue #59: Add Lottie animations and companion UI polish
javikin Jan 7, 2026
41486ac
Issue #61: Add assets helper and image components
javikin Jan 7, 2026
8ed4d08
Issue #61: Add expedition navigation integration
javikin Jan 7, 2026
b96884c
[Fix] Resolve compilation errors in gamification epic
javikin Jan 7, 2026
4bc33e8
Issue #65: Add BlockedNotificationEntity, DAO, and database migration
javikin Jan 7, 2026
0b4627e
Issue #63: Add UmbralNotificationService base implementation
javikin Jan 7, 2026
e2a3c87
Issue #66: Add NotificationRepository and UseCases
javikin Jan 7, 2026
1292d89
Issue #64: Add notification whitelist system
javikin Jan 7, 2026
888c165
Issue #67: Add SessionSummaryDialog with ViewModel and State
javikin Jan 7, 2026
e7e3058
Issue #68: Create NotificationHistoryScreen with filtering and swipe-…
javikin Jan 7, 2026
4e8914e
Issue #69: Integrate BlockingManager with NotificationService
javikin Jan 7, 2026
3d4f8f0
Issue #70: Integrate gamification and notification achievements
javikin Jan 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: setup-glance-dependencies
status: open
status: closed
priority: high
github: https://github.com/javikin/umbral/issues/40
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: []
parallel: true
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: widget-status
status: open
status: closed
priority: high
github: https://github.com/javikin/umbral/issues/41
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: [40]
parallel: true
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: widget-streak
status: open
status: closed
priority: high
github: https://github.com/javikin/umbral/issues/42
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: [40]
parallel: true
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: quick-settings-tile
status: open
status: closed
priority: high
github: https://github.com/javikin/umbral/issues/43
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: []
parallel: true
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: stats-database
status: open
status: closed
priority: high
github: https://github.com/javikin/umbral/issues/44
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: []
parallel: true
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: stats-screen
status: open
status: closed
priority: medium
github: https://github.com/javikin/umbral/issues/45
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: [44]
parallel: false
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: stats-charts
status: open
status: closed
priority: medium
github: https://github.com/javikin/umbral/issues/46
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
updated: 2026-01-06T04:03:42Z
depends_on: [44, 45]
parallel: false
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
name: advanced-features
prd: advanced-features
description: Widgets, Quick Settings y Estadísticas mejoradas para Umbral
status: backlog
status: completed
priority: high
github: https://github.com/javikin/umbral/issues/39
created: 2026-01-06T02:54:04Z
updated: 2026-01-06T03:04:35Z
progress: 0%
updated: 2026-01-06T04:03:42Z
completed: 2026-01-06T04:03:42Z
progress: 100%
---

# Epic: Advanced Features - Widgets, Quick Settings & Stats
Expand Down
46 changes: 46 additions & 0 deletions .claude/epics/.archived/advanced-features/execution-status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
started: 2026-01-06T03:10:00Z
branch: epic/advanced-features
epic: "#39"
---

# Execution Status

## Active Agents

None - All agents completed successfully!

## Queued Issues (Blocked)

None - All issues completed!

## Completed

- ✅ #40 - Setup Glance Dependencies (Agent-1)
- ✅ #43 - Quick Settings Tile (Agent-2)
- ✅ #44 - Stats Database Schema (Agent-3)
- ✅ #41 - Widget de Estado (Agent-4)
- ✅ #42 - Widget de Streak (Agent-5)
- ✅ #45 - Stats Screen UI (Agent-6)
- ✅ #46 - Stats Charts & Top Apps (Agent-7)

## Progress Notes

- 2026-01-06T03:10:00Z - Epic execution started with 3 parallel agents
- 2026-01-06T03:45:00Z - Wave 1 completed (3/3 tasks)
- #40: Glance structure, theme, components created
- #43: UmbralTileService with Hilt injection
- #44: BlockingEvent entity, DAO, migration, repository
- 2026-01-06T03:46:00Z - Wave 2 started with 3 parallel agents (#41, #42, #45)
- 2026-01-06T04:30:00Z - Wave 2 completed (3/3 tasks)
- #41: StatusWidget with responsive 2x1/2x2 layouts
- #42: StreakWidget with weekly calendar
- #45: StatsScreen, StatsViewModel with UI cards
- 2026-01-06T04:45:00Z - Final task #46 completed
- WeeklyChart.kt with Compose Canvas bar chart
- TopAppsCard.kt with app icons and rankings
- AppIcon.kt component for loading app icons

## Epic Status: ✅ COMPLETED

All 7 tasks have been implemented successfully!
195 changes: 195 additions & 0 deletions .claude/epics/gamification/53.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
---
name: Setup módulo Expedition + DB migrations
status: open
created: 2026-01-07T05:02:20Z
updated: 2026-01-07T05:13:26Z
github: https://github.com/javikin/umbral/issues/53
depends_on: []
parallel: true
conflicts_with: []
---

# Task: Setup módulo Expedition + DB migrations

## Description

Crear la estructura base del módulo de Expedición y las migraciones de base de datos necesarias. Este task establece los cimientos para todo el sistema de gamificación.

## Acceptance Criteria

- [ ] Package `com.umbral.expedition` creado con estructura de carpetas
- [ ] Dependencia Lottie Compose agregada a build.gradle
- [ ] Migration de Room creada con las 5 tablas nuevas
- [ ] UmbralDatabase actualizado para incluir nuevos DAOs
- [ ] ExpeditionModule de Hilt creado y registrado
- [ ] Build compila sin errores
- [ ] Tests de migration pasan

## Technical Details

### 1. Estructura de Carpetas

```
app/src/main/java/com/umbral/expedition/
├── data/
│ ├── dao/
│ ├── entity/
│ └── repository/
├── domain/
│ ├── model/
│ └── usecase/
├── presentation/
│ ├── map/
│ ├── companion/
│ ├── sanctuary/
│ ├── achievements/
│ └── components/
└── di/
└── ExpeditionModule.kt
```

### 2. Dependencias (build.gradle.kts)

```kotlin
// Lottie for animations
implementation("com.airbnb.android:lottie-compose:6.3.0")
```

### 3. Migration SQL

```sql
-- Migration_X_Y.kt

CREATE TABLE companions (
id TEXT PRIMARY KEY,
type TEXT NOT NULL,
name TEXT,
evolution_state INTEGER DEFAULT 1,
energy_invested INTEGER DEFAULT 0,
captured_at INTEGER NOT NULL,
is_active INTEGER DEFAULT 0,
UNIQUE(type)
);

CREATE TABLE discovered_locations (
id TEXT PRIMARY KEY,
biome_id TEXT NOT NULL,
discovered_at INTEGER NOT NULL,
energy_spent INTEGER NOT NULL,
lore_read INTEGER DEFAULT 0
);

CREATE TABLE player_progress (
id INTEGER PRIMARY KEY DEFAULT 1,
level INTEGER DEFAULT 1,
current_xp INTEGER DEFAULT 0,
total_energy INTEGER DEFAULT 0,
stars INTEGER DEFAULT 0,
current_streak INTEGER DEFAULT 0,
longest_streak INTEGER DEFAULT 0,
total_blocking_minutes INTEGER DEFAULT 0
);

CREATE TABLE achievements (
id TEXT PRIMARY KEY,
category TEXT NOT NULL,
progress INTEGER DEFAULT 0,
target INTEGER NOT NULL,
unlocked_at INTEGER,
stars_reward INTEGER NOT NULL
);

CREATE TABLE sanctuary_decorations (
id TEXT PRIMARY KEY,
type TEXT NOT NULL,
position_x REAL,
position_y REAL,
purchased_at INTEGER NOT NULL
);

CREATE INDEX idx_achievements_category ON achievements(category);
CREATE INDEX idx_locations_biome ON discovered_locations(biome_id);
```

### 4. ExpeditionModule.kt

```kotlin
@Module
@InstallIn(SingletonComponent::class)
object ExpeditionModule {

@Provides
@Singleton
fun provideCompanionDao(database: UmbralDatabase): CompanionDao {
return database.companionDao()
}

@Provides
@Singleton
fun provideLocationDao(database: UmbralDatabase): LocationDao {
return database.locationDao()
}

// ... otros DAOs

@Provides
@Singleton
fun provideExpeditionRepository(
companionDao: CompanionDao,
locationDao: LocationDao,
progressDao: ProgressDao,
achievementDao: AchievementDao
): ExpeditionRepository {
return ExpeditionRepositoryImpl(
companionDao, locationDao, progressDao, achievementDao
)
}
}
```

### 5. Actualizar UmbralDatabase

```kotlin
@Database(
entities = [
// Existing entities...
CompanionEntity::class,
LocationEntity::class,
ProgressEntity::class,
AchievementEntity::class,
DecorationEntity::class
],
version = X, // Incrementar
autoMigrations = [
AutoMigration(from = X-1, to = X)
]
)
abstract class UmbralDatabase : RoomDatabase() {
// Existing DAOs...
abstract fun companionDao(): CompanionDao
abstract fun locationDao(): LocationDao
abstract fun progressDao(): ProgressDao
abstract fun achievementDao(): AchievementDao
abstract fun decorationDao(): DecorationDao
}
```

## Dependencies

- [ ] Ninguna - este es el primer task

## Effort Estimate

- Size: M
- Hours: 4
- Parallel: true

## Definition of Done

- [ ] Estructura de carpetas creada
- [ ] build.gradle actualizado con Lottie
- [ ] Migration creada y testeada
- [ ] UmbralDatabase actualizado
- [ ] ExpeditionModule registrado en Hilt
- [ ] App compila y ejecuta sin crash
- [ ] Fresh install funciona correctamente
Loading
Loading