Skip to content

Releases: rakibulmehedi/Helm

v0.9.0 - Biometric Security & Play Store Readiness

Choose a tag to compare

@rakibulmehedi rakibulmehedi released this 28 Jun 18:33

Biometric Security & Play Store Readiness

238 commits since v0.8.0. Helm now supports biometric unlock, passes Phase 1 security audit, and is Play Store ready.

Added

  • Biometric unlock for PIN screen: fingerprint/face ID via local_auth; opt-in sheet after PIN setup; auto-trigger with manual fallback button
  • BiometricDataSource, BiometricNotifier, biometricProvider, and unlockViaBiometrics on AuthNotifier — full clean architecture stack
  • Biometric preference persisted to repository and wired into PIN flow
  • Biometric localization strings (en + bn)
  • History tab — Paper Ledger reskin: AuditLogScreen rebuilt with date-grouped event cards, tappable before→after detail sheet (AuditEventDetailSheet), and ledger integrity strip
  • Chain re-verification: AuditChainService.verifyChain recomputes SHA-256 over full event history at read time; ChainVerification result surfaced in LedgerIntegrityStrip
  • Paper Ledger widget system: HelmLedgerHero, HelmLedgerRow, HelmNextEventCard, LedgerState
  • Audit presentation utils: auditIconFor, auditColorFor, auditEntityLabel, auditTitleFor covering all 6 event types and 5 entity types
  • History grouping: date-bucket grouping (Today / This Week / Earlier) with full unit-test coverage
  • Guest mode: skip magic-link identity verification; identity-specific routes blocked for guests
  • errorInvalidEmail localization key (en + bn, 324/324 ARB keys)
  • Hive cross-validation for magic-link flag against ADB backup spoofing

Fixed

  • Security (HIGH): H-11, H-21, H-24, H-26, H-29, H-35, H-37–H-41 resolved (Phase 1 S1 audit)
  • Security (MEDIUM): M-13, M-16–M-17, M-26–M-27, M-30–M-33 resolved
  • Security (LOW): L-2, L-4–L-12 resolved
  • CRITICAL: base64url token regex now accepts - and _; prior regex rejected all real Supabase OTP tokens, breaking production auth
  • Onboarding no longer inserts fake "Initial Balance" income entry (C-10)
  • Hardcoded English strings replaced with ARB localization keys (C-9)
  • Settings and History accessible from all 3 tab AppBars
  • Negative amounts (formatBDT, formatUSD) no longer render as -,36,000.00
  • box.get() as bool crash vector replaced with == true
  • logout() now clears magic_link_verified from Hive and guest_mode from SharedPrefs

Changed

  • Dashboard reskin: Signal Deck replaced by Paper Ledger widgets; ledger state drives safe/tight/atRisk/empty color logic
  • Income list screen removed; income managed via pipeline and add-income routes
  • Complete UI/UX migration to HelmSpacing, HelmTypography, and HelmColors design tokens (58 hardcoded values replaced)
  • Navigation: BottomNavigationBar replacing HelmNavBar (3-tab, Material icons)
  • Build config: applicationId com.safetospends.helm, minSdk 21, targetSdk 35, v1.0.0+1

Removed

  • Signal Deck widget family (HelmSignalHero, HelmDecisionDeck, HelmFlowRoute, HelmSignalHorizon) and associated tests

Internal

  • Phase 2 QA gate: GO verdict — all critical flow widget tests passing
  • dart analyze: 0 errors / 0 warnings / 0 infos

v0.8.0 — Safe-to-Spend Engine

Choose a tag to compare

@rakibulmehedi rakibulmehedi released this 23 May 14:52

Phase 8 — Safe-to-Spend Engine

Pocketa's core engine is complete. The MVP is production-grade and entering the User Validation Sprint.

Phase 8e — UX Hardening

  • Fixed: rawSafeToSpend now correctly drives "In reserve mode" / "Fully allocated" visual state
  • Fixed: Tax rate slider maximum capped at 40% (entity asserts <= 0.40)
  • Added: Anxiety buffer validation with explicit SnackBar on invalid input
  • Changed: Breakdown deduction rows use textSecondary instead of error red
  • Added: USD exclusion transparency row in breakdown when excludedUsdIncome > 0
  • Added: Reserve-mode context note in breakdown when rawSafeToSpend < 0

Phase 8d — Dashboard Safe-to-Spend Hero

  • SafeToSpendHero widget replaces raw Total Balance on dashboard
  • Transparent math breakdown via bottom sheet
  • Pending and expected income excluded from Safe-to-Spend correctly

Phase 8c — Settings Screen

  • StsSettingsScreen with tax rate slider, anxiety buffer input, fixed costs CRUD

Phase 8b — Calculation Engine

  • SafeToSpendCalculator as pure Dart logic (zero Flutter imports)
  • 26 unit tests covering all edge cases
  • FixedCostEntry, StsSettings, SafeToSpendResult domain value objects

Phase 8f — QA and Validation Prep

  • Real device QA checklist
  • Safe-to-Spend scenario matrix

Full changelog: CHANGELOG.md