Repository navigation
feat(merge_requests): select and confirm suggestion batches - #593
Conversation
Review every selected patch and freshly inspect all selected discussions before one batch write; require complete read-only recovery after uncertain confirmation while preserving drafts and session isolation. Signed-off-by: sjungwon03 <sjungwon03@gmail.com>
Link the complete batch UI slice and retain multiline review as the remaining parity follow-up. Signed-off-by: sjungwon03 <sjungwon03@gmail.com>
sjungwon03-ai
left a comment
There was a problem hiding this comment.
Review of commit 8f53b74: Reviewed the selected-target eligibility boundary, real repository-to-SDK forwarding, all-thread preflight before the single batch, complete returned-identity/known-patch confirmation, shared write/pagination reservations, session and originating-view lifecycle cancellation, and staged read-only recovery. Missing/ambiguous or already-applied selected targets cannot silently turn into a subset write; failed intermediate recovery leaves all loaded groups unchanged. Inputs/drafts and server order are preserved, and no comment analytics, automatic replay, branch-SHA or atomicity claim is added. Existing single-suggestion inspection delegates to the same guarded reader and its regression tests pass.
No blocking findings. Local validation passed 5,595 tests across five packages, including 81 new app controller/widget/repository cases; 900 Dart files are formatted and analysis is clean. The generated locale delegates reproduce byte-for-byte. Test-first evidence includes the absent batch method/action and the keyboard/large-text overflow fixed by scrolling actions in short windows. Five-locale/three-width/two-theme layout cases and four visually inspected synthetic confirmation captures cover the UI. No live-instance or physical-device validation is claimed. Closing/reopening does not persist an uncertain-operation journal; multiline context/creation remains a separate slice. Final-head CI, review-thread resolution and current-head identity are verified before this approval.
Summary
MR discussion pages now allow selecting two or more eligible loaded suggestions, reviewing every literal patch, and explicitly applying the selected set through one batch request. Every selected discussion is read again before dispatch; changed, ambiguous or unavailable patches prevent the whole request. Failed or incomplete confirmation retains the draft and requires a complete read-only reload before renewed confirmation, with no automatic subset application or replay.
The flow shares existing discussion reservations, preserves pagination and drafts, hides old source on account/resource replacement, and refreshes discussions, MR detail and the authoritative snapshot only after current-session complete confirmation. Five locales and one responsive dialog cover selection, review, permission errors and recovery.
Closes #592
Validation
dart format .: 900 Dart files, no changes outstanding.flutter analyze --no-pub: no issues.flutter gen-l10n. No model changes; build_runner is not applicable.Checklist
dev; linked issue; conventional signed-off commits.Screenshots
Synthetic Flutter widget-test captures at
5f77e4e5091c527607f0fe4e64132057cc0ffa9f. Mobile content scrolls to reveal the remaining patch and message.Notes for reviewers
The existing single-suggestion flow remains covered by regression tests. Repository forwarding exercises the real batch SDK rather than a UI-only mock. A failed intermediate recovery read leaves every loaded group unchanged; selected missing or applied targets remain unavailable, and the user must explicitly return to selection to change the set after complete inspection. No batch atomicity, branch SHA guard or rollback is inferred. A server-accepted write may survive a late failure or view replacement; closing and reopening starts a new flow without a persistent uncertain-operation journal.
See
docs/mr-suggestion-batch-ui.mdand GitLab batch application. Multiline original context/creation remains a separate parity slice.