Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds persistent drag/reorder capabilities for collections (tabs) and entries, introduces edit-mode UI controls for reordering, and includes several UI polish updates (SafeArea usage, splash/background adjustments), alongside model/repository changes to support ordering and deletion flows.
Changes:
- Persist tab ordering via new
orderfield and add repository APIs to save reordered tab/entry order. - Add Home edit mode + UI drag handles and wire
ReorderableListView/SliverReorderableListfor tabs/entries. - UI/layout refinements (SafeArea, card styling, splash colors) and test updates for the new model fields/state.
Reviewed changes
Copilot reviewed 69 out of 69 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/ui_kit/lib/src/constants/spacing_constants.dart | Adds new spacing constants used by updated layouts |
| packages/models/lib/src/models/search/search_result.dart | Adds TODO comments around equality overrides |
| packages/models/lib/src/models/changelog/changelog_entry.dart | Adds TODO comments around equality overrides |
| packages/models/lib/src/models/changelog/changelog.dart | Adds TODO comments around equality overrides |
| packages/models/lib/src/mappers/tabs/tabs_dto_mapper.dart | Maps new order field for tab DTO conversions |
| packages/models/lib/src/dto/tabs/tabs_dto.dart | Adds required order field to TabsDTO |
| packages/models/lib/src/dto/feedback/feedback_dto.dart | Adds TODO comments around equality overrides |
| packages/models/lib/src/dto/entry/entry_dto.dart | Adds TODO comments around equality overrides |
| packages/models/lib/src/database/tabs/tabs.dart | Adds required order field to persisted Tabs model |
| packages/models/lib/src/database/entry/entry.dart | Adds TODO comments around equality overrides |
| packages/models/lib/src/apis/feedback/feedback_model.dart | Adds TODO comments around equality overrides |
| packages/models/analysis_options.yaml | Adjusts analyzer settings (ignores flutter_style_todos) |
| packages/core/test/src/application/search/search_bloc_test.dart | Updates tests for new TabsDTO order requirement |
| packages/core/test/src/application/product/product_bloc_test.dart | Updates tutorial data tests to include order |
| packages/core/test/src/application/home/home_bloc_test.dart | Updates HomeState/Tabs tests (adds order, isEditMode) |
| packages/core/test/src/application/details/details_bloc_test.dart | Updates DetailsBloc tests (adds order, isDeleted, formatting) |
| packages/core/lib/src/repositories/interfaces/tabs/i_tabs_repository.dart | Adds updateTabsOrder API |
| packages/core/lib/src/repositories/interfaces/entry/i_entry_repository.dart | Adds updateEntriesOrder API |
| packages/core/lib/src/repositories/implementation/tutorial/tutorial_repository.dart | Adds order to tutorial tabs |
| packages/core/lib/src/repositories/implementation/tabs/tabs_repository.dart | Sorts by order, assigns order on create, persists reordered order |
| packages/core/lib/src/repositories/implementation/entry/entry_repository.dart | Reads entries in entryIds order and adds updateEntriesOrder |
| packages/core/lib/src/application/home/home_state.dart | Adds isEditMode flag to HomeState |
| packages/core/lib/src/application/home/home_event.dart | Adds edit-mode + reorder events for tabs/entries |
| packages/core/lib/src/application/home/home_bloc.dart | Implements edit-mode toggle and reorder handlers |
| packages/core/lib/src/application/details/details_state.dart | Adds isDeleted to DetailsState |
| packages/core/lib/src/application/details/details_event.dart | Adds delete event to Details flow |
| packages/core/lib/src/application/details/details_bloc.dart | Implements delete handling in DetailsBloc |
| apps/multichoice/web/manifest.json | Updates web theme/background colors |
| apps/multichoice/web/index.html | Sets web background color inline |
| apps/multichoice/lib/presentation/tutorial/widgets/tutorial_body.dart | Minor formatting/readability tweaks |
| apps/multichoice/lib/presentation/tutorial/tutorial_page.dart | Wraps body in SafeArea and removes redundant provider |
| apps/multichoice/lib/presentation/shared/widgets/forms/reusable_form.dart | Adds controller “validity” guard + scroll wrapper |
| apps/multichoice/lib/presentation/shared/widgets/add_widgets/tab.dart | Adjusts card elevation for add-tab widget |
| apps/multichoice/lib/presentation/shared/widgets/add_widgets/entry.dart | Adjusts card elevation for add-entry widget |
| apps/multichoice/lib/presentation/shared/widgets/add_widgets/_base.dart | Sets surfaceTintColor for consistent Card rendering |
| apps/multichoice/lib/presentation/shared/data_transfer/data_transfer_page.dart | Wraps content in SafeArea |
| apps/multichoice/lib/presentation/search/search_page.dart | Wraps search body in SafeArea + formatting |
| apps/multichoice/lib/presentation/home/widgets/entry_card.dart | Adds edit-mode behavior + drag handle support |
| apps/multichoice/lib/presentation/home/widgets/collection_tab.dart | Disables navigation/delete in edit mode; passes drag metadata |
| apps/multichoice/lib/presentation/home/home_page.dart | Adds edit-mode toggle action + wraps layout in SafeArea |
| apps/multichoice/lib/presentation/feedback/feedback_page.dart | Wraps body in SafeArea + formatting |
| apps/multichoice/lib/presentation/edit/edit_tab_page.dart | Wraps body in SafeArea + formatting |
| apps/multichoice/lib/presentation/edit/edit_entry_page.dart | Wraps body in SafeArea + formatting |
| apps/multichoice/lib/presentation/details/widgets/_editing_overlay.dart | Adds delete action + refines overlay UI |
| apps/multichoice/lib/presentation/details/widgets/_details_section.dart | Spacing tweaks and subtitle display tweak |
| apps/multichoice/lib/presentation/details/widgets/_details_list_tile.dart | Updates tile styling (density, shape, colors) |
| apps/multichoice/lib/presentation/details/details_page.dart | Adds deletion listener to auto-navigate back |
| apps/multichoice/lib/presentation/changelog/changelog_page.dart | Wraps body in SafeArea + formatting |
| apps/multichoice/lib/layouts/home_layout/widgets/tab/vertical_tab.dart | Adds edit-mode drag UI and entry reordering |
| apps/multichoice/lib/layouts/home_layout/widgets/tab/horizontal_tab.dart | Adds edit-mode drag UI and entry reordering (sliver) |
| apps/multichoice/lib/layouts/home_layout/widgets/home/vertical_home.dart | Adds tab reordering UI in edit mode |
| apps/multichoice/lib/layouts/home_layout/widgets/home/horizontal_home.dart | Adds tab reordering UI in edit mode |
| apps/multichoice/lib/layouts/home_layout/tab_layout.dart | Passes edit-mode/drag metadata into tab layouts |
| apps/multichoice/lib/app/view/multichoice.dart | Moves AppLayout + HomeBloc providers to app root |
| apps/multichoice/ios/Runner/Base.lproj/LaunchScreen.storyboard | Updates iOS launch background color reference |
| apps/multichoice/ios/Runner/Assets.xcassets/Colors/splash_background.colorset/Contents.json | Adds iOS splash background colors |
| apps/multichoice/android/app/src/main/res/values/colors.xml | Adds Android splash background color |
| apps/multichoice/android/app/src/main/res/values-night/colors.xml | Adds Android night splash background color |
| apps/multichoice/android/app/src/main/res/drawable/launch_background.xml | Uses splash background color instead of white |
| apps/multichoice/android/app/src/main/res/drawable-v21/launch_background.xml | Uses splash background color instead of default background |
| apps/multichoice/android/app/src/main/AndroidManifest.xml | Enables Android back-invoked callback |
| CHANGELOG.md | Updates changelog entry for issue #7 |
| .github/agents/code-reviewer.agent.md | Adds repo-specific code review agent checklist |
| .cursor/commands/fix.md | Adds Cursor command documentation (fix) |
| .cursor/commands/create-pr.md | Adds Cursor command documentation (create PR) |
| .cursor/commands/commit.md | Adds Cursor command documentation (commit workflow) |
| .cursor/commands/changelog.md | Updates Cursor changelog command documentation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
packages/core/lib/src/repositories/implementation/tabs/tabs_repository.dart
Outdated
Show resolved
Hide resolved
packages/core/lib/src/repositories/implementation/entry/entry_repository.dart
Outdated
Show resolved
Hide resolved
apps/multichoice/lib/presentation/shared/widgets/forms/reusable_form.dart
Outdated
Show resolved
Hide resolved
packages/core/lib/src/repositories/implementation/tabs/tabs_repository.dart
Outdated
Show resolved
Hide resolved
packages/core/lib/src/repositories/implementation/tabs/tabs_repository.dart
Outdated
Show resolved
Hide resolved
|
@ZanderCowboy I've opened a new pull request, #256, to work on those changes. Once the pull request is ready, I'll request review from you. |
|
@copilot open a new pull request to apply changes based on the comments in this thread |
|
@ZanderCowboy I've opened a new pull request, #257, to work on those changes. Once the pull request is ready, I'll request review from you. |
* test: data_exchange_service * test: data_exchange_service whitespaces * test: firebase_service * chore: update test cursor command * chore: update create-pr.md cursor command
* Initial plan * refactor: address PR review feedback with performance and error handling improvements Co-authored-by: ZanderCowboy <59666243+ZanderCowboy@users.noreply.github.com> * Optimize DB operations and add migration for tab ordering Co-authored-by: ZanderCowboy <59666243+ZanderCowboy@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ZanderCowboy <59666243+ZanderCowboy@users.noreply.github.com> Co-authored-by: Zander Kotze <zanderkotze99@gmail.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 73 out of 74 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
packages/core/lib/src/repositories/implementation/tabs/tabs_repository.dart
Outdated
Show resolved
Hide resolved
packages/core/lib/src/repositories/implementation/tabs/tabs_repository.dart
Show resolved
Hide resolved
apps/multichoice/lib/presentation/shared/widgets/forms/reusable_form.dart
Show resolved
Hide resolved
apps/multichoice/lib/layouts/home_layout/widgets/home/vertical_home.dart
Outdated
Show resolved
Hide resolved
|



Summary
This PR implements draggable/reordering capabilities for entries across collections, along with several UI improvements and a new changelog feature.
Changes
Core Features
UI/UX Improvements
Backend Updates
Testing
Documentation & Tooling
Testing Performed
Related Issues
Closes #7
Breaking Changes
None
Notes