ngenohkevin
51264301a8
v1.3.0: major redesign — bento UI, Insights, Goals, multi-SIM, in-app updates
...
UI overhaul
- Modern fintech bento design system (LedgaText, Space, Radius, Motion).
- Inter font via Google Fonts.
- New PillTabBar + LedgaTopBar; 4-tab IA: Home / Activity / Insights / You.
- Home rewritten as bento cards; new AccountChip leading slot.
- Activity wraps Transactions + Trends behind a segmented control.
- Trends gains a GitHub-style heatmap calendar.
- You consolidates Settings into grouped bento cards.
Insights (Phase C)
- Rule engine + 6 rules: anomaly (z-score), recurring detection, fee tips,
Fuliza outstanding, Fuliza auto-pay pairing, positive nudges.
- Daily InsightWorker (3 AM); generates on screen entry for first-time users.
- Natural-key dedup so dismiss/snooze state survives re-runs.
- Home teaser surfaces the top active insight.
Goals (Phase D)
- New Goal entity + GoalContribution table.
- 3 contribution rules: AllSavingsDeposits, ToRecipient, Manual.
- Rule-based contributions compute live via SQL aggregation (no
duplicate rows). Manual rule uses goal_contributions table.
- GoalsScreen with progress rings + status badges; AddGoalSheet;
GoalDetailScreen with contributing-transactions list.
- "Add to goal" entry in TransactionDetailSheet for Manual goals.
Multi-SIM (Phase E)
- MpesaAccount entity captured per-subscription on SMS receive
(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX with legacy fallback).
- READ_PHONE_STATE permission (optional; falls back to "Line N" labels).
- Every screen-facing query is account-scoped via TransactionRepository
composing with the selected-account flow.
- AccountSwitcherSheet on Home; AccountsScreen with rename / recolor /
set-primary; BackfillScreen with 3-prong attribution (SMS-inbox auto,
date range, per-transaction manual via TransactionDetailSheet).
In-app updates (Phase F + G)
- Chunked APK download with progress reporting.
- UpdateRepository state machine (Idle → Downloading → Ready → Failed).
- Full-screen UpdateScreen with parsed What's new / Fixes sections.
- "Remind me later" persists dismissed version.
- Background UpdateCheckWorker pre-fetches APK on unmetered network.
- Home banner: "available" vs "ready to install" copy variants.
- Proactive REQUEST_INSTALL_PACKAGES permission prompt with settings
deep-link before firing the installer intent.
Parser quality
- Hustler Fund "sent KshX to NAME" amount-first phrasing now matches.
- "Give cash to AGENT" agent-deposit format recognized as DEPOSIT.
- Fuliza auto-pay recipient labels rewritten as "Fuliza overdraft
(auto-cleared / auto-partial)" for clearer transaction lists.
- 8 new real-world regression fixtures from sanitized export.
- Audit: 0 UNKNOWN against 6,565-transaction real history (was 838).
Database
- v3 schema: mpesa_accounts, goals, goal_contributions, insights tables.
- transactions gains accountId (FK), note.
- Explicit MIGRATION_1_2 + MIGRATION_2_3.
Tests
- 65 unit tests across parser (33), rule engine (14), goal rules (8),
update logic (8), parser audit (1), insights dry-run (1).
- Two test suites (audit, dry-run) read the local export when present,
skip cleanly in CI.
Design spec
- LEDGA_REDESIGN.md captures the full direction + tokens + per-screen
wireframes + phased PR plan.
versionCode 3, versionName 1.3.0.
2026-05-16 13:17:54 +03:00
ngenohkevin
d29498edbb
Add re-parse unparsed messages button
...
Settings > Data now has "Re-parse Unparsed Messages" button that
re-runs the fixed parser on all UNKNOWN transactions, properly
categorizing previously missed Fuliza auto-deductions, withdrawals,
airtime, and reversals.
2026-03-21 22:26:45 +03:00
ngenohkevin
729ef15cd3
Fix parser + redesign UI
...
Parser fixes (838 → ~0 unparsed):
- Fuliza auto-deduction (full/partial pay from balance)
- Withdraw alt format (Withdraw Ksh from agent)
- Reversal alt format (Reversal of transaction)
- Airtime self with lowercase confirmed
- Hustler Fund with 4-digit year dates
- Balance check messages filtered out
- SMS normalization (newlines, extra spaces)
- Amount regex handles Ksh with/without space
UI improvements:
- Category-specific Material icons (not generic cart)
- Colored icon backgrounds with rounded corners
- Green balance card with M-Pesa branding
- Category breakdown section (where your money went)
- Balance uses last non-zero transaction
- Better card shapes (20dp rounded)
- Font weight hierarchy
2026-03-21 22:11:36 +03:00
ngenohkevin
79741192b9
Initial release — Ledga M-Pesa spending tracker
...
Complete Android app (Kotlin/Jetpack Compose) with:
- SMS parser for all 17 M-Pesa transaction types
- Room database with auto-categorization engine
- Real-time SMS capture via BroadcastReceiver
- Onboarding flow with SMS history import
- Home dashboard with balance, spending, donut chart
- Transactions list with search, filters, day grouping
- Trends screen with Vico bar charts, top merchants
- Budget system with progress tracking
- Transaction detail sheet with re-categorization
- Notifications (daily/weekly summaries, budget alerts)
- Google Drive backup & restore
- Manual export/import (CSV + JSON ZIP)
- Self-update system via GitHub Releases API
- Theme system (System/Light/Dark) + font scaling
- Adaptive app icon with splash screen
- GitHub Actions CI/CD for release APK builds
2026-03-21 20:53:59 +03:00