Moves the folder navigation menu trigger to the bottom of the mailbox/email list view by default (a BottomAppBar with a menu icon)
Adds a Preferences screen (accessible from the main account drawer) where users can switch between Bottom (default) and Top (classic hamburger in AppBar) positions
Adds a user_preferences table (DB schema v34) to persist the setting
Changes
lib/core/models/user_preferences.dart — new UserPreferences model + MenuPosition enum
## Summary
- Moves the folder navigation menu trigger to the bottom of the mailbox/email list view by default (a `BottomAppBar` with a menu icon)
- Adds a **Preferences** screen (accessible from the main account drawer) where users can switch between **Bottom** (default) and **Top** (classic hamburger in AppBar) positions
- Adds a `user_preferences` table (DB schema v34) to persist the setting
## Changes
- `lib/core/models/user_preferences.dart` — new `UserPreferences` model + `MenuPosition` enum
- `lib/core/repositories/user_preferences_repository.dart` — abstract repository interface
- `lib/data/db/database.dart` + `lib/core/db_schema_version.dart` — new table, migration to v34
- `lib/data/repositories/user_preferences_repository_impl.dart` — Drift implementation
- `lib/di.dart` — new `userPreferencesRepositoryProvider` + `userPreferencesProvider`
- `lib/ui/screens/user_preferences_screen.dart` — settings screen with `RadioGroup`
- `lib/ui/router.dart` — new `/accounts/preferences` route
- `lib/ui/screens/account_list_screen.dart` — Preferences entry in drawer
- `lib/ui/screens/email_list_screen.dart` + `mailbox_list_screen.dart` — respect menu position preference
- Tests and golden images updated
## Test plan
- [ ] All existing unit/widget tests pass (482 passing, 0 failing)
- [ ] `flutter analyze` reports no issues
- [ ] Coverage gate passes at 84%
- [ ] Navigate to Preferences screen from the drawer and toggle menu position
- [ ] Verify bottom menu button appears/disappears in email list view based on setting
- [ ] Verify hamburger icon in AppBar appears/disappears based on setting
Closes #298
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
BottomAppBarwith a menu icon)user_preferencestable (DB schema v34) to persist the settingChanges
lib/core/models/user_preferences.dart— newUserPreferencesmodel +MenuPositionenumlib/core/repositories/user_preferences_repository.dart— abstract repository interfacelib/data/db/database.dart+lib/core/db_schema_version.dart— new table, migration to v34lib/data/repositories/user_preferences_repository_impl.dart— Drift implementationlib/di.dart— newuserPreferencesRepositoryProvider+userPreferencesProviderlib/ui/screens/user_preferences_screen.dart— settings screen withRadioGrouplib/ui/router.dart— new/accounts/preferencesroutelib/ui/screens/account_list_screen.dart— Preferences entry in drawerlib/ui/screens/email_list_screen.dart+mailbox_list_screen.dart— respect menu position preferenceTest plan
flutter analyzereports no issuesCloses #298
🤖 Generated with Claude Code