Skip to content

feat: add hierarchical category navigation, multi-level seeding, and envelope picker sheet - #105

Merged
MF-Rozi merged 7 commits into
masterfrom
feat/category-overhaul
Sep 1, 2026
Merged

feat: add hierarchical category navigation, multi-level seeding, and envelope picker sheet#105
MF-Rozi merged 7 commits into
masterfrom
feat/category-overhaul

Conversation

@MF-Rozi

@MF-Rozi MF-Rozi commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Description

What:

  1. Replaced legacy hardcoded category UUIDs with dynamically generated IDs and implemented migration logic for existing category records.
  2. Expanded default category seeding to include multi-level hierarchical sub-categories across Expense and Income pillars.
  3. Added category drill-down navigation, sub-envelope display, and deletion confirmation dialog to CategoryManagePage.
  4. Replaced the flat category picker with HierarchicalEnvelopePickerSheet in TransactionEntryPage, providing search filtering, breadcrumb paths, and type filtering.
  5. Added automatic clearing of the selected category in TransactionCubit when switching transaction types if the existing selection doesn't match the new flow type.
  6. Added comprehensive unit and widget tests for category hierarchy methods, HierarchicalEnvelopePickerSheet, and transaction type reset behavior.

How:

  1. Updated CategoryLocalDataSource seeding methods with multi-level category trees and migration hooks.
  2. Implemented HierarchicalEnvelopePickerSheet widget with search, breadcrumb navigation, and tree selection.
  3. Updated CategoryManagePage to support drilling down into sub-envelopes with breadcrumbs and animated transitions.
  4. Added unit tests in test/features/category/domain/entities/category_test.dart and widget tests in test/features/category/presentation/widgets/hierarchical_envelope_picker_sheet_test.dart.

Why:

  1. Enhances envelope budgeting UX by allowing users to explore and select multi-level categories with breadcrumbs and search.
  2. Prevents invalid transactions where an expense category is selected for an income transaction or vice versa.
  3. Ensures backward compatibility and clean data migration for previously stored category records.

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore

Code Checklist

  • Tested with fvm flutter test (all 105 tests passing) and verified clean analysis with fvm flutter analyze.

@MF-Rozi
MF-Rozi merged commit 0504d2a into master Sep 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant