From 5f77e4e5091c527607f0fe4e64132057cc0ffa9f Mon Sep 17 00:00:00 2001 From: sjungwon03 Date: Mon, 5 Oct 2026 05:22:06 +0900 Subject: [PATCH 1/2] feat(merge_requests): select and confirm suggestion batches 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 --- .../comments/data/comments_repository.dart | 8 + .../comments/data/suggestion_application.dart | 40 + .../mr_discussions_controller.dart | 122 +- .../widgets/mr_discussion_thread.dart | 61 + .../mr_suggestion_batch_apply_dialog.dart | 375 +++++ apps/labfox/lib/l10n/app_en.arb | 24 + apps/labfox/lib/l10n/app_hi.arb | 18 +- apps/labfox/lib/l10n/app_ja.arb | 18 +- apps/labfox/lib/l10n/app_ko.arb | 18 +- apps/labfox/lib/l10n/app_localizations.dart | 96 ++ .../labfox/lib/l10n/app_localizations_en.dart | 56 + .../labfox/lib/l10n/app_localizations_hi.dart | 57 + .../labfox/lib/l10n/app_localizations_ja.dart | 55 + .../labfox/lib/l10n/app_localizations_ko.dart | 54 + .../labfox/lib/l10n/app_localizations_zh.dart | 51 + apps/labfox/lib/l10n/app_zh.arb | 18 +- .../mr_suggestion_batch_application_test.dart | 1295 +++++++++++++++++ .../mr_suggestion_batch_repository_test.dart | 82 ++ .../mr-suggestion-batch/batch-1200-dark.png | Bin 0 -> 115920 bytes .../mr-suggestion-batch/batch-1200-light.png | Bin 0 -> 117758 bytes .../mr-suggestion-batch/batch-390-dark.png | Bin 0 -> 62081 bytes .../mr-suggestion-batch/batch-390-light.png | Bin 0 -> 62627 bytes docs/mobile-web-parity.md | 2 +- docs/mr-suggestion-application-api.md | 2 +- docs/mr-suggestion-application-ui.md | 2 +- docs/mr-suggestion-batch-api.md | 2 +- docs/mr-suggestion-batch-ui.md | 26 + 27 files changed, 2463 insertions(+), 19 deletions(-) create mode 100644 apps/labfox/lib/features/merge_requests/presentation/widgets/mr_suggestion_batch_apply_dialog.dart create mode 100644 apps/labfox/test/mr_suggestion_batch_application_test.dart create mode 100644 apps/labfox/test/mr_suggestion_batch_repository_test.dart create mode 100644 docs/images/mr-suggestion-batch/batch-1200-dark.png create mode 100644 docs/images/mr-suggestion-batch/batch-1200-light.png create mode 100644 docs/images/mr-suggestion-batch/batch-390-dark.png create mode 100644 docs/images/mr-suggestion-batch/batch-390-light.png create mode 100644 docs/mr-suggestion-batch-ui.md diff --git a/apps/labfox/lib/features/comments/data/comments_repository.dart b/apps/labfox/lib/features/comments/data/comments_repository.dart index c3467aaf..900d43a6 100644 --- a/apps/labfox/lib/features/comments/data/comments_repository.dart +++ b/apps/labfox/lib/features/comments/data/comments_repository.dart @@ -35,6 +35,14 @@ class CommentsRepository { String? commitMessage, }) => _client.suggestions.apply(suggestionId, commitMessage: commitMessage); + Future> applySuggestions({ + required List suggestionIds, + String? commitMessage, + }) => _client.suggestions.applyBatch( + suggestionIds, + commitMessage: commitMessage, + ); + Future replyToDiscussion({ required int projectId, required int iid, diff --git a/apps/labfox/lib/features/comments/data/suggestion_application.dart b/apps/labfox/lib/features/comments/data/suggestion_application.dart index e260faa9..1b971d0b 100644 --- a/apps/labfox/lib/features/comments/data/suggestion_application.dart +++ b/apps/labfox/lib/features/comments/data/suggestion_application.dart @@ -1,5 +1,11 @@ import 'package:gitlab_models/gitlab_models.dart'; +typedef SuggestionTarget = ({ + String discussionId, + Note note, + Suggestion suggestion, +}); + /// Patch eligibility is not a permission check: GitLab enforces write access. bool canApplySuggestion(Note note, Suggestion suggestion) => !note.isSystem && @@ -53,3 +59,37 @@ bool confirmsAppliedSuggestion(Suggestion returned, Suggestion expected) => (returned.fromContent == null || returned.fromContent == expected.fromContent) && (returned.toContent == null || returned.toContent == expected.toContent); + +List applicableSuggestionTargets(List groups) { + final counts = {}; + for (final group in groups) { + for (final note in group.notes) { + for (final suggestion in note.suggestions ?? []) { + counts.update(suggestion.id, (v) => v + 1, ifAbsent: () => 1); + } + } + } + return List.unmodifiable([ + for (final group in groups) + for (final note in group.notes) + for (final suggestion in note.suggestions ?? []) + if (counts[suggestion.id] == 1 && + canApplySuggestion(note, suggestion)) + (discussionId: group.id, note: note, suggestion: suggestion), + ]); +} + +bool containsApplicableSuggestionTargets( + List groups, + List targets, +) => + targets.length >= 2 && + targets.map((t) => t.suggestion.id).toSet().length == targets.length && + targets.every( + (t) => containsApplicableSuggestion( + groups, + discussionId: t.discussionId, + note: t.note, + suggestion: t.suggestion, + ), + ); diff --git a/apps/labfox/lib/features/merge_requests/presentation/controllers/mr_discussions_controller.dart b/apps/labfox/lib/features/merge_requests/presentation/controllers/mr_discussions_controller.dart index 9f1f8db1..d0a04493 100644 --- a/apps/labfox/lib/features/merge_requests/presentation/controllers/mr_discussions_controller.dart +++ b/apps/labfox/lib/features/merge_requests/presentation/controllers/mr_discussions_controller.dart @@ -214,12 +214,96 @@ class MrDiscussionsController } } + bool _currentSuggestions(List targets) => + !state.isLoading && + !state.hasError && + state.hasValue && + containsApplicableSuggestionTargets(state.value!.items, targets); + + /// Confirms all selected patches before one batch; never applies a subset. + Future applySuggestions( + List selection, { + String? commitMessage, + bool Function()? isCurrent, + }) async { + final targets = List.unmodifiable(selection); + if (_posting || + _loadingMore || + !_currentSuggestions(targets) || + isCurrent?.call() == false) { + return false; + } + final generation = _generation; + _posting = true; + bool current() => generation == _generation && isCurrent?.call() != false; + try { + final repo = await _repository(); + if (!current()) return false; + if (repo == null) { + throw const GitLabAuthException('No authenticated account.'); + } + if (!_currentSuggestions(targets)) return false; + final fresh = await _readDiscussions( + repo, + targets.map((t) => t.discussionId).toSet().toList(), + current, + ); + if (!current() || fresh == null) return false; + if (!_currentSuggestions(targets) || + !containsApplicableSuggestionTargets(fresh, targets)) { + throw const GitLabConflictException( + 'Suggestions changed. Reload before applying.', + ); + } + final returned = await repo.applySuggestions( + suggestionIds: targets.map((t) => t.suggestion.id).toList(), + commitMessage: commitMessage, + ); + if (!current()) return false; + final byId = {for (final s in returned) s.id: s}; + if (returned.length != targets.length || + byId.length != targets.length || + !targets.every( + (t) => + byId[t.suggestion.id] != null && + confirmsAppliedSuggestion(byId[t.suggestion.id]!, t.suggestion), + )) { + throw const GitLabServerException( + 'Unconfirmed suggestion batch application.', + ); + } + ref.invalidate(mergeRequestControllerProvider(arg)); + ref.invalidate(mrReviewSnapshotControllerProvider(arg)); + ref.invalidateSelf(); + return true; + } catch (_) { + if (!current()) return false; + rethrow; + } finally { + if (generation == _generation) _posting = false; + } + } + /// Explicit read-only recovery never retries an application automatically. Future inspectDiscussion( String discussionId, { bool Function()? isCurrent, + }) async => + (await inspectDiscussions([discussionId], isCurrent: isCurrent))?.single; + + /// Stages every selected thread before replacing any loaded cache entry. + Future?> inspectDiscussions( + List discussionIds, { + bool Function()? isCurrent, }) async { - if (_posting || _loadingMore || isCurrent?.call() == false) return null; + final ids = List.unmodifiable(discussionIds); + if (_posting || + _loadingMore || + isCurrent?.call() == false || + ids.isEmpty || + ids.toSet().length != ids.length) { + return null; + } final generation = _generation; _posting = true; bool current() => generation == _generation && isCurrent?.call() != false; @@ -229,21 +313,15 @@ class MrDiscussionsController if (repo == null) { throw const GitLabAuthException('No authenticated account.'); } - final fresh = await repo.discussion( - projectId: arg.projectId, - iid: arg.iid, - discussionId: discussionId, - ); - if (!current()) return null; - if (fresh.id != discussionId) { - throw const GitLabServerException('Invalid discussion response.'); - } + final fresh = await _readDiscussions(repo, ids, current); + if (!current() || fresh == null) return null; final page = state.valueOrNull; if (page != null && !state.isLoading && !state.hasError) { + final byId = {for (final g in fresh) g.id: g}; state = AsyncData( Paginated( items: List.unmodifiable( - page.items.map((g) => g.id == discussionId ? fresh : g), + page.items.map((g) => byId[g.id] ?? g), ), nextPage: page.nextPage, total: page.total, @@ -260,6 +338,28 @@ class MrDiscussionsController } } + Future?> _readDiscussions( + CommentsRepository repo, + List ids, + bool Function() isCurrent, + ) async { + final result = []; + for (final id in ids) { + if (!isCurrent()) return null; + final fresh = await repo.discussion( + projectId: arg.projectId, + iid: arg.iid, + discussionId: id, + ); + if (!isCurrent()) return null; + if (fresh.id != id) { + throw const GitLabServerException('Invalid discussion response.'); + } + result.add(fresh); + } + return List.unmodifiable(result); + } + Future _post( String body, { String? discussionId, diff --git a/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_discussion_thread.dart b/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_discussion_thread.dart index 046cc5dd..de64661a 100644 --- a/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_discussion_thread.dart +++ b/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_discussion_thread.dart @@ -14,6 +14,7 @@ import '../controllers/merge_requests_controllers.dart'; import '../controllers/mr_discussions_controller.dart'; import 'mr_discussion_position_context.dart'; import 'mr_suggestion_apply_dialog.dart'; +import 'mr_suggestion_batch_apply_dialog.dart'; import 'mr_suggestion_preview.dart'; /// Grouped MR replies with explicit pagination and the shared note composer. @@ -202,6 +203,49 @@ class _ConversationState extends ConsumerState<_Conversation> { } } + Future _applyBatch(List targets) async { + if (_applicationId != null || + _topPosting || + _replyId != null || + _resolutionId != null || + widget.discussions.isLoading || + widget.discussions.hasError) { + return; + } + final session = ref.read(commentsRepositoryProvider); + final view = ValueNotifier(true); + _applicationView = view; + setState(() => _applicationId = 0); + try { + final applied = await showDialog( + context: context, + barrierDismissible: false, + builder: (_) => MrSuggestionBatchApplyDialog( + resource: widget.arg, + targets: targets, + session: session, + isCurrent: () => mounted, + viewActive: view, + ), + ); + if (mounted && + applied == true && + ref.read(commentsRepositoryProvider) == session) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + AppLocalizations.of(context).mrSuggestionsApplySuccess, + ), + ), + ); + } + } finally { + _applicationView = null; + view.dispose(); + if (mounted) setState(() => _applicationId = null); + } + } + @override Widget build(BuildContext context) { final l10n = AppLocalizations.of(context); @@ -248,12 +292,29 @@ class _ConversationState extends ConsumerState<_Conversation> { } } } + final targets = applicableSuggestionTargets(page.items); final groups = page.items .where((group) => group.notes.any((note) => !note.isSystem)) .toList(); return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + if (targets.length >= 2) + Align( + alignment: AlignmentDirectional.centerStart, + child: TextButton( + key: const ValueKey('mr-suggestions-batch-open'), + onPressed: + canPost && + _applicationId == null && + !_topPosting && + _replyId == null && + _resolutionId == null + ? () => _applyBatch(targets) + : null, + child: Text(l10n.mrSuggestionsBatchButton), + ), + ), if (groups.isEmpty) Text( page.hasMore ? l10n.mrDiscussionsPartial : l10n.commentsEmpty, diff --git a/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_suggestion_batch_apply_dialog.dart b/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_suggestion_batch_apply_dialog.dart new file mode 100644 index 00000000..e9e9ac07 --- /dev/null +++ b/apps/labfox/lib/features/merge_requests/presentation/widgets/mr_suggestion_batch_apply_dialog.dart @@ -0,0 +1,375 @@ +import 'dart:async'; + +import 'package:design_system/design_system.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:gitlab_api/gitlab_api.dart'; +import 'package:gitlab_models/gitlab_models.dart'; +import 'package:intl/intl.dart'; + +import '../../../../l10n/app_localizations.dart'; +import '../../../comments/data/comments_repository.dart'; +import '../../../comments/data/suggestion_application.dart'; +import '../../../comments/presentation/controllers/comments_controller.dart'; +import '../controllers/merge_requests_controllers.dart'; +import '../controllers/mr_discussions_controller.dart'; +import 'mr_suggestion_preview.dart'; + +/// Selects an explicit set, reviews every patch, and recovers through reads only. +class MrSuggestionBatchApplyDialog extends ConsumerStatefulWidget { + const MrSuggestionBatchApplyDialog({ + required this.resource, + required this.targets, + required this.session, + required this.isCurrent, + required this.viewActive, + super.key, + }); + final MergeRequestRef resource; + final List targets; + final AsyncValue session; + final bool Function() isCurrent; + final ValueNotifier viewActive; + @override + ConsumerState createState() => _BatchState(); +} + +enum _Failure { uncertain, forbidden, changed } + +class _BatchState extends ConsumerState { + final _message = TextEditingController(); + final _selected = {}; + final _unavailable = {}; + late List _targets; + bool _reviewing = false; + bool _busy = false; + bool _reloading = false; + bool _needsReload = false; + bool _reloadFailed = false; + _Failure? _failure; + + @override + void initState() { + super.initState(); + _targets = List.unmodifiable(widget.targets); + widget.viewActive.addListener(_viewChanged); + } + + void _viewChanged() { + scheduleMicrotask(() { + if (mounted) setState(() {}); + }); + } + + @override + void dispose() { + widget.viewActive.removeListener(_viewChanged); + _message.dispose(); + super.dispose(); + } + + bool _current() => + mounted && + widget.viewActive.value && + widget.isCurrent() && + ref.read(commentsRepositoryProvider) == widget.session; + + List get _selection => List.unmodifiable( + _targets.where((target) => _selected.contains(target.suggestion.id)), + ); + + Future _apply() async { + if (_busy || _needsReload || !_current()) return; + setState(() => _busy = true); + try { + final applied = await ref + .read(mrDiscussionsControllerProvider(widget.resource).notifier) + .applySuggestions( + _selection, + commitMessage: _message.text.isEmpty ? null : _message.text, + isCurrent: _current, + ); + if (!mounted || !_current()) return; + if (applied) { + Navigator.of(context).pop(true); + } else { + setState(() { + _needsReload = true; + _failure = _Failure.uncertain; + }); + } + } catch (error) { + if (!_current()) return; + setState(() { + _needsReload = true; + _failure = switch (error) { + GitLabAuthException() || + GitLabForbiddenException() => _Failure.forbidden, + GitLabConflictException() => _Failure.changed, + _ => _Failure.uncertain, + }; + }); + } finally { + if (mounted) setState(() => _busy = false); + } + } + + Future _reload() async { + if (_busy || !_current()) return; + final selection = _selection; + setState(() { + _busy = true; + _reloading = true; + _reloadFailed = false; + }); + try { + final fresh = await ref + .read(mrDiscussionsControllerProvider(widget.resource).notifier) + .inspectDiscussions( + selection.map((t) => t.discussionId).toSet().toList(), + isCurrent: _current, + ); + if (!_current()) return; + if (fresh == null) { + setState(() => _reloadFailed = true); + return; + } + final replacements = {}; + final counts = {}; + for (final group in fresh) { + for (final note in group.notes) { + for (final suggestion in note.suggestions ?? []) { + counts.update(suggestion.id, (v) => v + 1, ifAbsent: () => 1); + if (selection.any( + (t) => + t.discussionId == group.id && + t.note.id == note.id && + t.suggestion.id == suggestion.id, + )) { + replacements[suggestion.id] = ( + discussionId: group.id, + note: note, + suggestion: suggestion, + ); + } + } + } + } + setState(() { + for (final target in selection) { + final id = target.suggestion.id; + if (counts[id] != 1 || !replacements.containsKey(id)) { + _unavailable.add(id); + } else { + _unavailable.remove(id); + } + } + _targets = List.unmodifiable( + _targets.map( + (target) => + _selected.contains(target.suggestion.id) && + !_unavailable.contains(target.suggestion.id) + ? replacements[target.suggestion.id]! + : target, + ), + ); + _needsReload = false; + _failure = null; + }); + } catch (_) { + if (_current()) setState(() => _reloadFailed = true); + } finally { + if (mounted) { + setState(() { + _busy = false; + _reloading = false; + }); + } + } + } + + @override + Widget build(BuildContext context) { + final l10n = AppLocalizations.of(context); + ref.watch(commentsRepositoryProvider); + final page = ref.watch(mrDiscussionsControllerProvider(widget.resource)); + final current = _current(); + final selection = _selection; + final groups = page.value?.items ?? []; + final healthy = page.hasValue && !page.isLoading && !page.hasError; + final eligible = + current && + healthy && + !_selected.any(_unavailable.contains) && + containsApplicableSuggestionTargets(groups, selection); + final error = switch (_failure) { + _Failure.uncertain => l10n.mrSuggestionsApplyError, + _Failure.forbidden => l10n.mrSuggestionsApplyForbidden, + _Failure.changed => l10n.mrSuggestionsApplyChanged, + null => null, + }; + // With a keyboard and large text, actions must scroll with the content. + final compact = + MediaQuery.sizeOf(context).height - + MediaQuery.viewInsetsOf(context).bottom < + 500; + final actions = [ + TextButton( + key: const ValueKey('mr-suggestions-batch-cancel'), + onPressed: _busy ? null : () => Navigator.of(context).pop(false), + child: Text(l10n.cancel), + ), + if (_reviewing) + TextButton( + key: const ValueKey('mr-suggestions-batch-back'), + onPressed: current && !_busy && !_needsReload + ? () => setState(() => _reviewing = false) + : null, + child: Text(l10n.mrSuggestionsBackButton), + ), + if (current && _needsReload) + TextButton( + key: const ValueKey('mr-suggestions-batch-reload'), + onPressed: _busy ? null : _reload, + child: Text(l10n.mrSuggestionsReloadButton), + ), + if (_reviewing) + TextButton( + key: const ValueKey('mr-suggestions-batch-confirm'), + onPressed: eligible && !_busy && !_needsReload ? _apply : null, + child: Text(l10n.mrSuggestionsApplyButton), + ) + else + TextButton( + key: const ValueKey('mr-suggestions-batch-review'), + onPressed: eligible && !_busy + ? () => setState(() => _reviewing = true) + : null, + child: Text(l10n.mrSuggestionsReviewButton), + ), + ]; + return PopScope( + canPop: !_busy, + child: AlertDialog( + scrollable: true, + title: Text( + _reviewing + ? l10n.mrSuggestionsReviewTitle( + NumberFormat.decimalPattern( + l10n.localeName, + ).format(_selected.length), + ) + : l10n.mrSuggestionsSelectTitle, + ), + content: SizedBox( + width: LabFoxBreakpoints.tablet, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (!current) + Text(l10n.mrSuggestionSessionChanged) + else ...[ + Text( + _reviewing + ? l10n.mrSuggestionsApplyImpact + : l10n.mrSuggestionsSelectHint, + ), + for (final target in _reviewing ? selection : _targets) ...[ + if (!_reviewing) + CheckboxListTile( + key: ValueKey( + 'mr-suggestions-select-${target.suggestion.id}', + ), + contentPadding: EdgeInsets.zero, + title: Text( + l10n.mrSuggestionTitle( + NumberFormat.decimalPattern( + l10n.localeName, + ).format(target.suggestion.id), + ), + ), + value: _selected.contains(target.suggestion.id), + onChanged: + !_busy && + healthy && + (_selected.contains(target.suggestion.id) || + (!_unavailable.contains( + target.suggestion.id, + ) && + containsApplicableSuggestion( + groups, + discussionId: target.discussionId, + note: target.note, + suggestion: target.suggestion, + ))) + ? (value) => setState(() { + if (value == true) { + _selected.add(target.suggestion.id); + } else { + _selected.remove(target.suggestion.id); + } + }) + : null, + ), + if (_unavailable.contains(target.suggestion.id)) + Text(l10n.mrSuggestionUnavailable) + else ...[ + if (target.note.position?.newPath != null) + Text(target.note.position!.newPath!), + MrSuggestionPreview( + key: ValueKey(( + target.note.id, + target.suggestion, + _reviewing, + )), + noteId: target.note.id, + suggestion: target.suggestion, + initiallyExpanded: _reviewing, + ), + ], + ], + if (_reviewing) ...[ + if (!eligible && !_busy && !_needsReload) + Text(l10n.mrSuggestionUnavailable), + TextField( + key: const ValueKey('mr-suggestions-batch-message'), + controller: _message, + enabled: !_busy, + minLines: 1, + maxLines: 4, + decoration: InputDecoration( + labelText: l10n.mrSuggestionCommitMessageLabel, + helperText: l10n.mrSuggestionCommitMessageHint, + helperMaxLines: 4, + ), + ), + if (error != null) Text(error), + if (_reloadFailed) Text(l10n.mrSuggestionsReloadError), + ], + ], + if (compact) + Padding( + padding: const EdgeInsets.only(top: LabFoxSpacing.md), + child: OverflowBar( + alignment: MainAxisAlignment.end, + overflowAlignment: OverflowBarAlignment.end, + children: actions, + ), + ), + if (_busy) ...[ + const SizedBox(height: LabFoxSpacing.md), + const LinearProgressIndicator(), + Text( + _reloading + ? l10n.mrSuggestionsReloadProgress + : l10n.mrSuggestionsApplyProgress, + ), + ], + ], + ), + ), + actions: compact ? null : actions, + ), + ); + } +} diff --git a/apps/labfox/lib/l10n/app_en.arb b/apps/labfox/lib/l10n/app_en.arb index 4ab5109b..64db4cb5 100644 --- a/apps/labfox/lib/l10n/app_en.arb +++ b/apps/labfox/lib/l10n/app_en.arb @@ -2663,5 +2663,29 @@ "type": "String" } } + }, + "mrSuggestionsBatchButton": "Apply multiple suggestions", + "mrSuggestionsSelectTitle": "Select suggestions", + "mrSuggestionsSelectHint": "Select at least two suggestions from the loaded discussions.", + "mrSuggestionsReviewButton": "Review selected", + "mrSuggestionsReviewTitle": "Apply {count} suggestions?", + "mrSuggestionsApplyButton": "Apply selected", + "mrSuggestionsApplyImpact": "These changes will be sent together to the merge request source branch. Review every replacement before applying.", + "mrSuggestionsApplyProgress": "Checking and applying suggestions…", + "mrSuggestionsApplySuccess": "Selected suggestions applied.", + "mrSuggestionsApplyError": "The batch could not be confirmed. Reload every selected discussion before trying again.", + "mrSuggestionsApplyChanged": "One or more suggestions changed. Reload and review every selected patch.", + "mrSuggestionsReloadButton": "Reload selected discussions", + "mrSuggestionsReloadProgress": "Reloading selected discussions…", + "mrSuggestionsReloadError": "Not all discussions could be reloaded. Reload again before applying.", + "mrSuggestionsApplyForbidden": "GitLab denied this operation. Check your access and reload every selected discussion before trying again.", + "mrSuggestionsBackButton": "Back to selection", + "@mrSuggestionsReviewTitle": { + "description": "Confirmation title for the selected suggestion batch.", + "placeholders": { + "count": { + "type": "String" + } + } } } diff --git a/apps/labfox/lib/l10n/app_hi.arb b/apps/labfox/lib/l10n/app_hi.arb index 0141a02b..f35ac9b6 100644 --- a/apps/labfox/lib/l10n/app_hi.arb +++ b/apps/labfox/lib/l10n/app_hi.arb @@ -1333,5 +1333,21 @@ "mrSuggestionReloadProgress": "चर्चा दोबारा लोड हो रही है…", "mrSuggestionReloadError": "चर्चा दोबारा लोड नहीं हो सकी। दोबारा लोड करने की कोशिश करें।", "mrSuggestionUnavailable": "यह सुझाव लागू करने के लिए उपलब्ध नहीं है।", - "mrSuggestionSessionChanged": "खाता या मर्ज अनुरोध बदल गया है। यह संवाद बंद करके सुझाव दोबारा खोलें।" + "mrSuggestionSessionChanged": "खाता या मर्ज अनुरोध बदल गया है। यह संवाद बंद करके सुझाव दोबारा खोलें।", + "mrSuggestionsBatchButton": "कई सुझाव लागू करें", + "mrSuggestionsSelectTitle": "सुझाव चुनें", + "mrSuggestionsSelectHint": "लोड की गई चर्चाओं से कम से कम दो सुझाव चुनें।", + "mrSuggestionsReviewButton": "चुने हुए सुझावों की समीक्षा करें", + "mrSuggestionsReviewTitle": "{count} सुझाव लागू करें?", + "mrSuggestionsApplyButton": "चुने हुए सुझाव लागू करें", + "mrSuggestionsApplyImpact": "ये बदलाव मर्ज अनुरोध की स्रोत शाखा में एक साथ भेजे जाएंगे। लागू करने से पहले हर प्रतिस्थापन की समीक्षा करें।", + "mrSuggestionsApplyProgress": "सुझावों की जाँच और लागू करना जारी है…", + "mrSuggestionsApplySuccess": "चुने हुए सुझाव लागू किए गए।", + "mrSuggestionsApplyError": "बैच की पुष्टि नहीं हो सकी। फिर कोशिश करने से पहले सभी चुनी हुई चर्चाएँ फिर से लोड करें।", + "mrSuggestionsApplyChanged": "एक या अधिक सुझाव बदल गए हैं। हर चुने हुए पैच को फिर से लोड करके समीक्षा करें।", + "mrSuggestionsReloadButton": "चुनी हुई चर्चाएँ फिर से लोड करें", + "mrSuggestionsReloadProgress": "चुनी हुई चर्चाएँ लोड हो रही हैं…", + "mrSuggestionsReloadError": "सभी चर्चाएँ लोड नहीं हो सकीं। लागू करने से पहले फिर से लोड करें।", + "mrSuggestionsApplyForbidden": "GitLab ने इस कार्रवाई को अस्वीकार किया। अपनी पहुँच जाँचें और फिर कोशिश करने से पहले सभी चुनी हुई चर्चाएँ फिर से लोड करें।", + "mrSuggestionsBackButton": "चयन पर वापस जाएँ" } diff --git a/apps/labfox/lib/l10n/app_ja.arb b/apps/labfox/lib/l10n/app_ja.arb index 7389c1dc..064d2b7f 100644 --- a/apps/labfox/lib/l10n/app_ja.arb +++ b/apps/labfox/lib/l10n/app_ja.arb @@ -1333,5 +1333,21 @@ "mrSuggestionReloadProgress": "ディスカッションを再読み込み中…", "mrSuggestionReloadError": "ディスカッションを再読み込みできませんでした。もう一度再読み込みしてください。", "mrSuggestionUnavailable": "この提案は適用できません。", - "mrSuggestionSessionChanged": "アカウントまたはマージリクエストが変更されました。このダイアログを閉じて提案を開き直してください。" + "mrSuggestionSessionChanged": "アカウントまたはマージリクエストが変更されました。このダイアログを閉じて提案を開き直してください。", + "mrSuggestionsBatchButton": "複数の提案を適用", + "mrSuggestionsSelectTitle": "提案を選択", + "mrSuggestionsSelectHint": "読み込まれたディスカッションから提案を2つ以上選択してください。", + "mrSuggestionsReviewButton": "選択した提案を確認", + "mrSuggestionsReviewTitle": "{count}件の提案を適用しますか?", + "mrSuggestionsApplyButton": "選択した提案を適用", + "mrSuggestionsApplyImpact": "これらの変更はマージリクエストのソースブランチにまとめて送信されます。適用前にすべての置換内容を確認してください。", + "mrSuggestionsApplyProgress": "提案を確認して適用中…", + "mrSuggestionsApplySuccess": "選択した提案を適用しました。", + "mrSuggestionsApplyError": "一括適用を確認できませんでした。再試行する前に選択したすべてのディスカッションを再読み込みしてください。", + "mrSuggestionsApplyChanged": "一部の提案が変更されました。選択したすべてのパッチを再読み込みして確認してください。", + "mrSuggestionsReloadButton": "選択したディスカッションを再読み込み", + "mrSuggestionsReloadProgress": "選択したディスカッションを読み込み中…", + "mrSuggestionsReloadError": "一部のディスカッションを読み込めませんでした。適用前に再読み込みしてください。", + "mrSuggestionsApplyForbidden": "GitLabがこの操作を拒否しました。アクセス権を確認し、選択したすべてのディスカッションを再読み込みしてから再試行してください。", + "mrSuggestionsBackButton": "選択に戻る" } diff --git a/apps/labfox/lib/l10n/app_ko.arb b/apps/labfox/lib/l10n/app_ko.arb index 01d30d95..f5c853a4 100644 --- a/apps/labfox/lib/l10n/app_ko.arb +++ b/apps/labfox/lib/l10n/app_ko.arb @@ -1333,5 +1333,21 @@ "mrSuggestionReloadProgress": "토론을 새로고침하는 중…", "mrSuggestionReloadError": "토론을 새로고침하지 못했습니다. 다시 새로고침하세요.", "mrSuggestionUnavailable": "이 제안은 적용할 수 없습니다.", - "mrSuggestionSessionChanged": "계정 또는 병합 요청이 변경되었습니다. 이 창을 닫고 제안을 다시 여세요." + "mrSuggestionSessionChanged": "계정 또는 병합 요청이 변경되었습니다. 이 창을 닫고 제안을 다시 여세요.", + "mrSuggestionsBatchButton": "여러 제안 적용", + "mrSuggestionsSelectTitle": "제안 선택", + "mrSuggestionsSelectHint": "불러온 토론에서 제안을 두 개 이상 선택하세요.", + "mrSuggestionsReviewButton": "선택한 제안 검토", + "mrSuggestionsReviewTitle": "제안 {count}개를 적용할까요?", + "mrSuggestionsApplyButton": "선택한 제안 적용", + "mrSuggestionsApplyImpact": "이 변경 사항은 머지 리퀘스트의 소스 브랜치에 함께 전송됩니다. 적용하기 전에 모든 대체 내용을 검토하세요.", + "mrSuggestionsApplyProgress": "제안 확인 및 적용 중…", + "mrSuggestionsApplySuccess": "선택한 제안을 적용했습니다.", + "mrSuggestionsApplyError": "일괄 적용을 확인하지 못했습니다. 다시 시도하기 전에 선택한 모든 토론을 새로 불러오세요.", + "mrSuggestionsApplyChanged": "하나 이상의 제안이 변경되었습니다. 선택한 모든 패치를 새로 불러와 검토하세요.", + "mrSuggestionsReloadButton": "선택한 토론 새로 불러오기", + "mrSuggestionsReloadProgress": "선택한 토론 불러오는 중…", + "mrSuggestionsReloadError": "일부 토론을 불러오지 못했습니다. 적용하기 전에 다시 불러오세요.", + "mrSuggestionsApplyForbidden": "GitLab에서 이 작업을 거부했습니다. 접근 권한을 확인하고 선택한 모든 토론을 새로 불러온 후 다시 시도하세요.", + "mrSuggestionsBackButton": "선택으로 돌아가기" } diff --git a/apps/labfox/lib/l10n/app_localizations.dart b/apps/labfox/lib/l10n/app_localizations.dart index 19f84443..ceeabd7b 100644 --- a/apps/labfox/lib/l10n/app_localizations.dart +++ b/apps/labfox/lib/l10n/app_localizations.dart @@ -8569,6 +8569,102 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'The account or merge request changed. Close this dialog and reopen the suggestion.'** String get mrSuggestionSessionChanged; + + /// No description provided for @mrSuggestionsBatchButton. + /// + /// In en, this message translates to: + /// **'Apply multiple suggestions'** + String get mrSuggestionsBatchButton; + + /// No description provided for @mrSuggestionsSelectTitle. + /// + /// In en, this message translates to: + /// **'Select suggestions'** + String get mrSuggestionsSelectTitle; + + /// No description provided for @mrSuggestionsSelectHint. + /// + /// In en, this message translates to: + /// **'Select at least two suggestions from the loaded discussions.'** + String get mrSuggestionsSelectHint; + + /// No description provided for @mrSuggestionsReviewButton. + /// + /// In en, this message translates to: + /// **'Review selected'** + String get mrSuggestionsReviewButton; + + /// Confirmation title for the selected suggestion batch. + /// + /// In en, this message translates to: + /// **'Apply {count} suggestions?'** + String mrSuggestionsReviewTitle(String count); + + /// No description provided for @mrSuggestionsApplyButton. + /// + /// In en, this message translates to: + /// **'Apply selected'** + String get mrSuggestionsApplyButton; + + /// No description provided for @mrSuggestionsApplyImpact. + /// + /// In en, this message translates to: + /// **'These changes will be sent together to the merge request source branch. Review every replacement before applying.'** + String get mrSuggestionsApplyImpact; + + /// No description provided for @mrSuggestionsApplyProgress. + /// + /// In en, this message translates to: + /// **'Checking and applying suggestions…'** + String get mrSuggestionsApplyProgress; + + /// No description provided for @mrSuggestionsApplySuccess. + /// + /// In en, this message translates to: + /// **'Selected suggestions applied.'** + String get mrSuggestionsApplySuccess; + + /// No description provided for @mrSuggestionsApplyError. + /// + /// In en, this message translates to: + /// **'The batch could not be confirmed. Reload every selected discussion before trying again.'** + String get mrSuggestionsApplyError; + + /// No description provided for @mrSuggestionsApplyChanged. + /// + /// In en, this message translates to: + /// **'One or more suggestions changed. Reload and review every selected patch.'** + String get mrSuggestionsApplyChanged; + + /// No description provided for @mrSuggestionsReloadButton. + /// + /// In en, this message translates to: + /// **'Reload selected discussions'** + String get mrSuggestionsReloadButton; + + /// No description provided for @mrSuggestionsReloadProgress. + /// + /// In en, this message translates to: + /// **'Reloading selected discussions…'** + String get mrSuggestionsReloadProgress; + + /// No description provided for @mrSuggestionsReloadError. + /// + /// In en, this message translates to: + /// **'Not all discussions could be reloaded. Reload again before applying.'** + String get mrSuggestionsReloadError; + + /// No description provided for @mrSuggestionsApplyForbidden. + /// + /// In en, this message translates to: + /// **'GitLab denied this operation. Check your access and reload every selected discussion before trying again.'** + String get mrSuggestionsApplyForbidden; + + /// No description provided for @mrSuggestionsBackButton. + /// + /// In en, this message translates to: + /// **'Back to selection'** + String get mrSuggestionsBackButton; } class _AppLocalizationsDelegate diff --git a/apps/labfox/lib/l10n/app_localizations_en.dart b/apps/labfox/lib/l10n/app_localizations_en.dart index 260120c5..9c68bf3a 100644 --- a/apps/labfox/lib/l10n/app_localizations_en.dart +++ b/apps/labfox/lib/l10n/app_localizations_en.dart @@ -4865,4 +4865,60 @@ class AppLocalizationsEn extends AppLocalizations { @override String get mrSuggestionSessionChanged => 'The account or merge request changed. Close this dialog and reopen the suggestion.'; + + @override + String get mrSuggestionsBatchButton => 'Apply multiple suggestions'; + + @override + String get mrSuggestionsSelectTitle => 'Select suggestions'; + + @override + String get mrSuggestionsSelectHint => + 'Select at least two suggestions from the loaded discussions.'; + + @override + String get mrSuggestionsReviewButton => 'Review selected'; + + @override + String mrSuggestionsReviewTitle(String count) { + return 'Apply $count suggestions?'; + } + + @override + String get mrSuggestionsApplyButton => 'Apply selected'; + + @override + String get mrSuggestionsApplyImpact => + 'These changes will be sent together to the merge request source branch. Review every replacement before applying.'; + + @override + String get mrSuggestionsApplyProgress => 'Checking and applying suggestions…'; + + @override + String get mrSuggestionsApplySuccess => 'Selected suggestions applied.'; + + @override + String get mrSuggestionsApplyError => + 'The batch could not be confirmed. Reload every selected discussion before trying again.'; + + @override + String get mrSuggestionsApplyChanged => + 'One or more suggestions changed. Reload and review every selected patch.'; + + @override + String get mrSuggestionsReloadButton => 'Reload selected discussions'; + + @override + String get mrSuggestionsReloadProgress => 'Reloading selected discussions…'; + + @override + String get mrSuggestionsReloadError => + 'Not all discussions could be reloaded. Reload again before applying.'; + + @override + String get mrSuggestionsApplyForbidden => + 'GitLab denied this operation. Check your access and reload every selected discussion before trying again.'; + + @override + String get mrSuggestionsBackButton => 'Back to selection'; } diff --git a/apps/labfox/lib/l10n/app_localizations_hi.dart b/apps/labfox/lib/l10n/app_localizations_hi.dart index 0a9b181b..4164d5f1 100644 --- a/apps/labfox/lib/l10n/app_localizations_hi.dart +++ b/apps/labfox/lib/l10n/app_localizations_hi.dart @@ -4867,4 +4867,61 @@ class AppLocalizationsHi extends AppLocalizations { @override String get mrSuggestionSessionChanged => 'खाता या मर्ज अनुरोध बदल गया है। यह संवाद बंद करके सुझाव दोबारा खोलें।'; + + @override + String get mrSuggestionsBatchButton => 'कई सुझाव लागू करें'; + + @override + String get mrSuggestionsSelectTitle => 'सुझाव चुनें'; + + @override + String get mrSuggestionsSelectHint => + 'लोड की गई चर्चाओं से कम से कम दो सुझाव चुनें।'; + + @override + String get mrSuggestionsReviewButton => 'चुने हुए सुझावों की समीक्षा करें'; + + @override + String mrSuggestionsReviewTitle(String count) { + return '$count सुझाव लागू करें?'; + } + + @override + String get mrSuggestionsApplyButton => 'चुने हुए सुझाव लागू करें'; + + @override + String get mrSuggestionsApplyImpact => + 'ये बदलाव मर्ज अनुरोध की स्रोत शाखा में एक साथ भेजे जाएंगे। लागू करने से पहले हर प्रतिस्थापन की समीक्षा करें।'; + + @override + String get mrSuggestionsApplyProgress => + 'सुझावों की जाँच और लागू करना जारी है…'; + + @override + String get mrSuggestionsApplySuccess => 'चुने हुए सुझाव लागू किए गए।'; + + @override + String get mrSuggestionsApplyError => + 'बैच की पुष्टि नहीं हो सकी। फिर कोशिश करने से पहले सभी चुनी हुई चर्चाएँ फिर से लोड करें।'; + + @override + String get mrSuggestionsApplyChanged => + 'एक या अधिक सुझाव बदल गए हैं। हर चुने हुए पैच को फिर से लोड करके समीक्षा करें।'; + + @override + String get mrSuggestionsReloadButton => 'चुनी हुई चर्चाएँ फिर से लोड करें'; + + @override + String get mrSuggestionsReloadProgress => 'चुनी हुई चर्चाएँ लोड हो रही हैं…'; + + @override + String get mrSuggestionsReloadError => + 'सभी चर्चाएँ लोड नहीं हो सकीं। लागू करने से पहले फिर से लोड करें।'; + + @override + String get mrSuggestionsApplyForbidden => + 'GitLab ने इस कार्रवाई को अस्वीकार किया। अपनी पहुँच जाँचें और फिर कोशिश करने से पहले सभी चुनी हुई चर्चाएँ फिर से लोड करें।'; + + @override + String get mrSuggestionsBackButton => 'चयन पर वापस जाएँ'; } diff --git a/apps/labfox/lib/l10n/app_localizations_ja.dart b/apps/labfox/lib/l10n/app_localizations_ja.dart index 66563575..2b0ca30c 100644 --- a/apps/labfox/lib/l10n/app_localizations_ja.dart +++ b/apps/labfox/lib/l10n/app_localizations_ja.dart @@ -4702,4 +4702,59 @@ class AppLocalizationsJa extends AppLocalizations { @override String get mrSuggestionSessionChanged => 'アカウントまたはマージリクエストが変更されました。このダイアログを閉じて提案を開き直してください。'; + + @override + String get mrSuggestionsBatchButton => '複数の提案を適用'; + + @override + String get mrSuggestionsSelectTitle => '提案を選択'; + + @override + String get mrSuggestionsSelectHint => '読み込まれたディスカッションから提案を2つ以上選択してください。'; + + @override + String get mrSuggestionsReviewButton => '選択した提案を確認'; + + @override + String mrSuggestionsReviewTitle(String count) { + return '$count件の提案を適用しますか?'; + } + + @override + String get mrSuggestionsApplyButton => '選択した提案を適用'; + + @override + String get mrSuggestionsApplyImpact => + 'これらの変更はマージリクエストのソースブランチにまとめて送信されます。適用前にすべての置換内容を確認してください。'; + + @override + String get mrSuggestionsApplyProgress => '提案を確認して適用中…'; + + @override + String get mrSuggestionsApplySuccess => '選択した提案を適用しました。'; + + @override + String get mrSuggestionsApplyError => + '一括適用を確認できませんでした。再試行する前に選択したすべてのディスカッションを再読み込みしてください。'; + + @override + String get mrSuggestionsApplyChanged => + '一部の提案が変更されました。選択したすべてのパッチを再読み込みして確認してください。'; + + @override + String get mrSuggestionsReloadButton => '選択したディスカッションを再読み込み'; + + @override + String get mrSuggestionsReloadProgress => '選択したディスカッションを読み込み中…'; + + @override + String get mrSuggestionsReloadError => + '一部のディスカッションを読み込めませんでした。適用前に再読み込みしてください。'; + + @override + String get mrSuggestionsApplyForbidden => + 'GitLabがこの操作を拒否しました。アクセス権を確認し、選択したすべてのディスカッションを再読み込みしてから再試行してください。'; + + @override + String get mrSuggestionsBackButton => '選択に戻る'; } diff --git a/apps/labfox/lib/l10n/app_localizations_ko.dart b/apps/labfox/lib/l10n/app_localizations_ko.dart index cecacaef..f8973087 100644 --- a/apps/labfox/lib/l10n/app_localizations_ko.dart +++ b/apps/labfox/lib/l10n/app_localizations_ko.dart @@ -4708,4 +4708,58 @@ class AppLocalizationsKo extends AppLocalizations { @override String get mrSuggestionSessionChanged => '계정 또는 병합 요청이 변경되었습니다. 이 창을 닫고 제안을 다시 여세요.'; + + @override + String get mrSuggestionsBatchButton => '여러 제안 적용'; + + @override + String get mrSuggestionsSelectTitle => '제안 선택'; + + @override + String get mrSuggestionsSelectHint => '불러온 토론에서 제안을 두 개 이상 선택하세요.'; + + @override + String get mrSuggestionsReviewButton => '선택한 제안 검토'; + + @override + String mrSuggestionsReviewTitle(String count) { + return '제안 $count개를 적용할까요?'; + } + + @override + String get mrSuggestionsApplyButton => '선택한 제안 적용'; + + @override + String get mrSuggestionsApplyImpact => + '이 변경 사항은 머지 리퀘스트의 소스 브랜치에 함께 전송됩니다. 적용하기 전에 모든 대체 내용을 검토하세요.'; + + @override + String get mrSuggestionsApplyProgress => '제안 확인 및 적용 중…'; + + @override + String get mrSuggestionsApplySuccess => '선택한 제안을 적용했습니다.'; + + @override + String get mrSuggestionsApplyError => + '일괄 적용을 확인하지 못했습니다. 다시 시도하기 전에 선택한 모든 토론을 새로 불러오세요.'; + + @override + String get mrSuggestionsApplyChanged => + '하나 이상의 제안이 변경되었습니다. 선택한 모든 패치를 새로 불러와 검토하세요.'; + + @override + String get mrSuggestionsReloadButton => '선택한 토론 새로 불러오기'; + + @override + String get mrSuggestionsReloadProgress => '선택한 토론 불러오는 중…'; + + @override + String get mrSuggestionsReloadError => '일부 토론을 불러오지 못했습니다. 적용하기 전에 다시 불러오세요.'; + + @override + String get mrSuggestionsApplyForbidden => + 'GitLab에서 이 작업을 거부했습니다. 접근 권한을 확인하고 선택한 모든 토론을 새로 불러온 후 다시 시도하세요.'; + + @override + String get mrSuggestionsBackButton => '선택으로 돌아가기'; } diff --git a/apps/labfox/lib/l10n/app_localizations_zh.dart b/apps/labfox/lib/l10n/app_localizations_zh.dart index ae7e399d..4c3f80c5 100644 --- a/apps/labfox/lib/l10n/app_localizations_zh.dart +++ b/apps/labfox/lib/l10n/app_localizations_zh.dart @@ -4558,4 +4558,55 @@ class AppLocalizationsZh extends AppLocalizations { @override String get mrSuggestionSessionChanged => '账号或合并请求已更改。请关闭此对话框并重新打开建议。'; + + @override + String get mrSuggestionsBatchButton => '应用多个建议'; + + @override + String get mrSuggestionsSelectTitle => '选择建议'; + + @override + String get mrSuggestionsSelectHint => '从已加载的讨论中选择至少两个建议。'; + + @override + String get mrSuggestionsReviewButton => '检查所选建议'; + + @override + String mrSuggestionsReviewTitle(String count) { + return '应用 $count 个建议?'; + } + + @override + String get mrSuggestionsApplyButton => '应用所选建议'; + + @override + String get mrSuggestionsApplyImpact => '这些更改将一起发送到合并请求的源分支。应用前请检查每项替换内容。'; + + @override + String get mrSuggestionsApplyProgress => '正在检查并应用建议…'; + + @override + String get mrSuggestionsApplySuccess => '已应用所选建议。'; + + @override + String get mrSuggestionsApplyError => '无法确认批量应用结果。重试前请重新加载所有选中的讨论。'; + + @override + String get mrSuggestionsApplyChanged => '一个或多个建议已更改。请重新加载并检查每个选中的补丁。'; + + @override + String get mrSuggestionsReloadButton => '重新加载所选讨论'; + + @override + String get mrSuggestionsReloadProgress => '正在重新加载所选讨论…'; + + @override + String get mrSuggestionsReloadError => '未能加载所有讨论。应用前请重新加载。'; + + @override + String get mrSuggestionsApplyForbidden => + 'GitLab 拒绝了此操作。请检查访问权限,并在重试前重新加载所有选中的讨论。'; + + @override + String get mrSuggestionsBackButton => '返回选择'; } diff --git a/apps/labfox/lib/l10n/app_zh.arb b/apps/labfox/lib/l10n/app_zh.arb index 43e3f1c8..da5ca186 100644 --- a/apps/labfox/lib/l10n/app_zh.arb +++ b/apps/labfox/lib/l10n/app_zh.arb @@ -1333,5 +1333,21 @@ "mrSuggestionReloadProgress": "正在重新加载讨论…", "mrSuggestionReloadError": "无法重新加载讨论。请再次尝试重新加载。", "mrSuggestionUnavailable": "此建议无法应用。", - "mrSuggestionSessionChanged": "账号或合并请求已更改。请关闭此对话框并重新打开建议。" + "mrSuggestionSessionChanged": "账号或合并请求已更改。请关闭此对话框并重新打开建议。", + "mrSuggestionsBatchButton": "应用多个建议", + "mrSuggestionsSelectTitle": "选择建议", + "mrSuggestionsSelectHint": "从已加载的讨论中选择至少两个建议。", + "mrSuggestionsReviewButton": "检查所选建议", + "mrSuggestionsReviewTitle": "应用 {count} 个建议?", + "mrSuggestionsApplyButton": "应用所选建议", + "mrSuggestionsApplyImpact": "这些更改将一起发送到合并请求的源分支。应用前请检查每项替换内容。", + "mrSuggestionsApplyProgress": "正在检查并应用建议…", + "mrSuggestionsApplySuccess": "已应用所选建议。", + "mrSuggestionsApplyError": "无法确认批量应用结果。重试前请重新加载所有选中的讨论。", + "mrSuggestionsApplyChanged": "一个或多个建议已更改。请重新加载并检查每个选中的补丁。", + "mrSuggestionsReloadButton": "重新加载所选讨论", + "mrSuggestionsReloadProgress": "正在重新加载所选讨论…", + "mrSuggestionsReloadError": "未能加载所有讨论。应用前请重新加载。", + "mrSuggestionsApplyForbidden": "GitLab 拒绝了此操作。请检查访问权限,并在重试前重新加载所有选中的讨论。", + "mrSuggestionsBackButton": "返回选择" } diff --git a/apps/labfox/test/mr_suggestion_batch_application_test.dart b/apps/labfox/test/mr_suggestion_batch_application_test.dart new file mode 100644 index 00000000..aebb3656 --- /dev/null +++ b/apps/labfox/test/mr_suggestion_batch_application_test.dart @@ -0,0 +1,1295 @@ +import 'dart:async'; +import 'dart:io'; +import 'dart:ui' as ui; + +import 'package:design_system/design_system.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:gitlab_api/gitlab_api.dart'; +import 'package:gitlab_models/gitlab_models.dart'; +import 'package:labfox/core/analytics/analytics.dart'; +import 'package:labfox/features/comments/data/comments_repository.dart'; +import 'package:labfox/features/comments/data/suggestion_application.dart'; +import 'package:labfox/features/comments/presentation/controllers/comments_controller.dart'; +import 'package:labfox/features/merge_requests/presentation/controllers/merge_requests_controllers.dart'; +import 'package:labfox/features/merge_requests/presentation/controllers/mr_discussions_controller.dart'; +import 'package:labfox/features/merge_requests/presentation/controllers/mr_review_snapshot_controller.dart'; +import 'package:labfox/features/merge_requests/presentation/widgets/mr_discussion_thread.dart'; +import 'package:labfox/l10n/app_localizations.dart'; + +const _key = MergeRequestRef(projectId: 8, iid: 142); + +class _Repository extends CommentsRepository { + _Repository() + : this._( + GitLabClient( + baseUrl: 'https://gitlab.example.com', + token: 'glpat-xxxxxxxxxxxx', + ), + ); + _Repository._(this.client) : super(client); + final GitLabClient client; + final pages = {1: const Paginated(items: [])}; + final reads = <(int, int, int)>[]; + final posts = []; + final inspectionResults = {}; + Object? batchResult; + final batches = <(List, String?)>[]; + Object? inspectionResult; + Object? applicationResult; + final inspections = <(int, int, String)>[]; + final applications = <(int, String?)>[]; + @override + Future discussion({ + required int projectId, + required int iid, + required String discussionId, + }) async { + inspections.add((projectId, iid, discussionId)); + final result = + inspectionResults[discussionId] ?? + inspectionResult ?? + (pages[1] as Paginated).items.firstWhere( + (g) => g.id == discussionId, + ); + if (result is Future) return result; + if (result is Discussion) return result; + throw result; + } + + @override + Future applySuggestion({ + required int suggestionId, + String? commitMessage, + }) async { + applications.add((suggestionId, commitMessage)); + final result = + applicationResult ?? + Suggestion.fromJson(_suggestion()).copyWith(applied: true); + if (result is Future) return result; + if (result is Suggestion) return result; + throw result; + } + + @override + Future> applySuggestions({ + required List suggestionIds, + String? commitMessage, + }) async { + batches.add((List.of(suggestionIds), commitMessage)); + final result = batchResult; + if (result is Future>) return result; + if (result is List) return result; + if (result != null) throw result; + final all = (pages[1] as Paginated).items + .expand((g) => g.notes) + .expand((n) => n.suggestions ?? []); + return [ + for (final id in suggestionIds) + all.firstWhere((s) => s.id == id).copyWith(applied: true), + ]; + } + + Future? postResult; + @override + Future> discussions({ + required int projectId, + required int iid, + int page = 1, + }) async { + reads.add((projectId, iid, page)); + final result = pages[page]!; + if (result is Future>) return result; + if (result is Paginated) return result; + throw result; + } + + @override + Future post({ + required NoteableType type, + required int projectId, + required int iid, + required String body, + }) async { + expect(type, NoteableType.mergeRequest); + posts.add(body); + return postResult ?? const Note(id: 999, body: 'Posted'); + } + + @override + Future> list({ + required NoteableType type, + required int projectId, + required int iid, + }) async => throw StateError('MRs must read grouped discussions'); +} + +class _Analytics implements Analytics { + final events = []; + @override + Future track(String name, [Map? properties]) async => + events.add(name); +} + +class _Detail extends MergeRequestController { + _Detail(this.reads); + final void Function() reads; + @override + Future build(MergeRequestRef arg) async { + reads(); + return const MergeRequest( + id: 99, + iid: 142, + title: 'Review', + state: 'opened', + sourceBranch: 'feature', + targetBranch: 'dev', + ); + } +} + +class _Snapshot extends MrReviewSnapshotController { + _Snapshot(this.reads); + final void Function() reads; + @override + Future build(MergeRequestRef arg) async { + reads(); + return MrReviewSnapshot(); + } +} + +final _session = StateProvider>( + (ref) async => null, +); +ProviderContainer _container(_Repository repo, _Analytics analytics) { + final container = ProviderContainer( + overrides: [ + _session.overrideWith((ref) async => repo), + commentsRepositoryProvider.overrideWith((ref) => ref.watch(_session)), + analyticsProvider.overrideWithValue(analytics), + ], + ); + addTearDown(container.dispose); + addTearDown(repo.client.close); + return container; +} + +final _captureKey = GlobalKey(); +Future _pump( + WidgetTester tester, + _Repository repo, { + double width = 390, + bool dark = false, + double height = 1400, + double textScale = 1, + Locale locale = const Locale('en'), + bool settle = true, + ProviderContainer? container, + ThemeData? theme, + int iid = 142, +}) async { + tester.view.physicalSize = Size(width, height); + tester.view.devicePixelRatio = 1; + addTearDown(tester.view.resetPhysicalSize); + addTearDown(tester.view.resetDevicePixelRatio); + final scope = container ?? _container(repo, _Analytics()); + await tester.pumpWidget( + UncontrolledProviderScope( + container: scope, + child: RepaintBoundary( + key: _captureKey, + child: MaterialApp( + debugShowCheckedModeBanner: false, + builder: (context, child) => MediaQuery( + data: MediaQuery.of( + context, + ).copyWith(textScaler: TextScaler.linear(textScale)), + child: child!, + ), + theme: theme ?? (dark ? LabFoxTheme.dark : LabFoxTheme.light), + locale: locale, + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + home: Scaffold( + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(16), + child: MrDiscussionThread(projectId: 8, iid: iid), + ), + ), + ), + ), + ), + ), + ); + if (settle) { + await tester.pumpAndSettle(); + } else { + await tester.pump(); + await tester.pump(const Duration(milliseconds: 100)); + } + return AppLocalizations.of(tester.element(find.byType(MrDiscussionThread))); +} + +Discussion _suggestions( + List>? suggestions, { + bool system = false, + int noteId = 301, +}) => Discussion( + id: 'suggestion-thread', + individualNote: false, + notes: [ + Note.fromJson({ + 'id': noteId, + 'body': 'Review this patch', + 'type': 'DiffNote', + 'resolvable': true, + 'resolved': false, + 'system': system, + 'suggestions': suggestions, + }), + ], +); +Map _suggestion({ + int id = 7, + Object? original = ' old();\n', + Object? replacement = ' new();\n', + bool? applied = false, + bool? applicable = true, +}) => { + 'id': id, + 'from_line': 10, + 'to_line': 12, + 'from_content': original, + 'to_content': replacement, + 'applied': applied, + 'applicable': applicable, +}; + +Discussion _group( + int id, { + String? discussionId, + int? noteId, + String? content, + int? line, +}) => _suggestions([ + { + ..._suggestion(id: id, replacement: content ?? 'new $id'), + 'from_line': line ?? id * 10, + 'to_line': (line ?? id * 10) + 2, + }, +], noteId: noteId ?? id * 100).copyWith(id: discussionId ?? 'thread-$id'); +List _targets(List groups) => [ + for (final g in groups) + for (final n in g.notes) + for (final s in n.suggestions ?? []) + (discussionId: g.id, note: n, suggestion: s), +]; +Future _controller(ProviderContainer c) async { + await c.read(mrDiscussionsControllerProvider(_key).future); + return c.read(mrDiscussionsControllerProvider(_key).notifier); +} + +Future _openBatch(WidgetTester tester, {bool review = true}) async { + final open = find.byKey(const ValueKey('mr-suggestions-batch-open')); + expect(open, findsOneWidget); + await tester.ensureVisible(open); + await tester.tap(open); + await tester.pumpAndSettle(); + if (!review) return; + for (final id in [7, 8]) { + final check = find.byKey(ValueKey('mr-suggestions-select-$id')); + await tester.ensureVisible(check); + await tester.tap(check); + await tester.pumpAndSettle(); + } + await tester.tap(find.byKey(const ValueKey('mr-suggestions-batch-review'))); + await tester.pumpAndSettle(); +} + +void main() { + for (final confirmed in [false, true]) { + test( + 'refresh effects occur only after a fully confirmed batch $confirmed', + () async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]); + if (!confirmed) repo.batchResult = []; + var details = 0, snapshots = 0; + final c = ProviderContainer( + overrides: [ + _session.overrideWith((ref) async => repo), + commentsRepositoryProvider.overrideWith( + (ref) => ref.watch(_session), + ), + analyticsProvider.overrideWithValue(_Analytics()), + mergeRequestControllerProvider.overrideWith( + () => _Detail(() => details++), + ), + mrReviewSnapshotControllerProvider.overrideWith( + () => _Snapshot(() => snapshots++), + ), + ], + ); + addTearDown(c.dispose); + addTearDown(repo.client.close); + final d = c.listen(mergeRequestControllerProvider(_key), (_, _) {}); + final v = c.listen(mrReviewSnapshotControllerProvider(_key), (_, _) {}); + addTearDown(d.close); + addTearDown(v.close); + await c.read(mergeRequestControllerProvider(_key).future); + await c.read(mrReviewSnapshotControllerProvider(_key).future); + final notifier = await _controller(c); + final result = notifier.applySuggestions( + _targets((repo.pages[1] as Paginated).items), + ); + if (confirmed) { + expect(await result, true); + } else { + await expectLater(result, throwsA(isA())); + } + await c.read(mergeRequestControllerProvider(_key).future); + await c.read(mrReviewSnapshotControllerProvider(_key).future); + expect(details, confirmed ? 2 : 1); + expect(snapshots, confirmed ? 2 : 1); + }, + ); + } + test('selection is snapshotted before awaiting the repository', () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository()..pages[1] = Paginated(items: groups); + final c = _container(repo, _Analytics()); + final notifier = await _controller(c); + final selection = _targets(groups).toList(); + final result = notifier.applySuggestions(selection); + selection.clear(); + expect(await result, true); + expect(repo.batches.single.$1, [7, 8]); + }); + for (final endAccount in [false, true]) { + test( + 'ended recovery never replaces part of the old cache account=$endAccount', + () async { + final groups = [_group(7), _group(8)]; + final pending = Completer(); + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults['thread-7'] = pending.future; + final c = _container(repo, _Analytics()); + final notifier = await _controller(c); + var current = true; + final result = notifier.inspectDiscussions([ + 'thread-7', + 'thread-8', + ], isCurrent: () => current); + await Future.delayed(Duration.zero); + if (endAccount) { + final next = _Repository(); + addTearDown(next.client.close); + c.read(_session.notifier).state = Future.value(next); + await c.read(mrDiscussionsControllerProvider(_key).future); + } else { + current = false; + } + pending.complete(_group(7, content: 'Unseen new patch')); + expect(await result, isNull); + expect(repo.inspections.length, 1); + expect(repo.batches, isEmpty); + if (!endAccount) { + expect( + c.read(mrDiscussionsControllerProvider(_key)).requireValue.items, + groups, + ); + } + }, + ); + } + testWidgets( + 'missing selected suggestion stays explicit after complete recovery', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated( + items: [ + _group(7, content: 'Removed old patch'), + _group(8), + ], + ) + ..batchResult = const GitLabServerException('Unconfirmed'); + await _pump(tester, repo); + await _openBatch(tester); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pumpAndSettle(); + repo.inspectionResults['thread-7'] = _group(7).copyWith(notes: []); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-reload')), + ); + await tester.pumpAndSettle(); + expect(find.text('Removed old patch'), findsNothing); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ) + .onPressed, + isNull, + ); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-back')), + ) + .onPressed, + isNotNull, + ); + expect(repo.batches.length, 1); + }, + ); + for (final duplicate in [false, true]) { + testWidgets( + 'batch action excludes unknown and ambiguous suggestions duplicate=$duplicate', + (tester) async { + final first = _group(7); + final second = duplicate + ? _group(7, discussionId: 'other', noteId: 800) + : _group(8).copyWith( + notes: [ + first.notes.single.copyWith( + id: 800, + suggestions: [const Suggestion(id: 8)], + ), + ], + ); + final repo = _Repository() + ..pages[1] = Paginated(items: [first, second]); + await _pump(tester, repo); + expect( + find.byKey(const ValueKey('mr-suggestions-batch-open')), + findsNothing, + ); + }, + ); + } + + testWidgets('batch selection and patch review never write until confirmed', ( + tester, + ) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8), _group(9)]); + await _pump(tester, repo); + await _openBatch(tester, review: false); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-review')), + ) + .onPressed, + isNull, + ); + await tester.tap(find.byKey(const ValueKey('mr-suggestions-select-7'))); + await tester.pumpAndSettle(); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-review')), + ) + .onPressed, + isNull, + ); + await tester.ensureVisible( + find.byKey(const ValueKey('mr-suggestions-select-8')), + ); + await tester.tap(find.byKey(const ValueKey('mr-suggestions-select-8'))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const ValueKey('mr-suggestions-batch-review'))); + await tester.pumpAndSettle(); + expect(repo.inspections, isEmpty); + expect(repo.batches, isEmpty); + await tester.tap(find.byKey(const ValueKey('mr-suggestions-batch-cancel'))); + await tester.pumpAndSettle(); + expect(repo.batches, isEmpty); + }); + testWidgets( + 'selected subset sends exactly one batch and preserves message and root draft', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8), _group(9)]); + await _pump(tester, repo); + final root = find.byType(TextField).first; + await tester.enterText(root, 'Root draft'); + await _openBatch(tester); + final input = find.byKey(const ValueKey('mr-suggestions-batch-message')); + await tester.ensureVisible(input); + await tester.enterText(input, ' Exact\nMessage '); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pumpAndSettle(); + expect(repo.batches.map((b) => b.$1), [ + [7, 8], + ]); + expect(repo.batches.single.$2, ' Exact\nMessage '); + expect(repo.inspections.map((r) => r.$3), ['thread-7', 'thread-8']); + expect(repo.applications, isEmpty); + expect(find.byType(AlertDialog), findsNothing); + expect( + tester.widget(find.byType(TextField).first).controller!.text, + 'Root draft', + ); + }, + ); + for (final error in [ + const GitLabServerException('Uncertain'), + const GitLabForbiddenException('Denied'), + const GitLabConflictException('Changed'), + ]) { + testWidgets( + 'batch failure preserves draft and requires every selected thread reload $error', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]) + ..batchResult = error; + await _pump(tester, repo); + await _openBatch(tester); + final input = find.byKey( + const ValueKey('mr-suggestions-batch-message'), + ); + await tester.ensureVisible(input); + await tester.enterText(input, 'Keep draft'); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pumpAndSettle(); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ) + .onPressed, + isNull, + ); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-back')), + ) + .onPressed, + isNull, + ); + expect(tester.widget(input).controller!.text, 'Keep draft'); + repo.inspectionResults['thread-7'] = _group(7).copyWith( + notes: [ + _group(7).notes.single.copyWith( + suggestions: [ + _group( + 7, + ).notes.single.suggestions!.single.copyWith(applied: true), + ], + ), + ], + ); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-reload')), + ); + await tester.pumpAndSettle(); + expect(repo.inspections.length, 4); + expect(repo.batches.length, 1); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ) + .onPressed, + isNull, + ); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-back')), + ) + .onPressed, + isNotNull, + ); + }, + ); + } + testWidgets( + 'incomplete recovery cannot unlock confirmation or selection changes', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]) + ..batchResult = const GitLabServerException('Uncertain'); + await _pump(tester, repo); + await _openBatch(tester); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pumpAndSettle(); + repo.inspectionResults['thread-7'] = _group(7, content: 'Reloaded 7'); + repo.inspectionResults['thread-8'] = const GitLabServerException( + 'Read failed', + ); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-reload')), + ); + await tester.pumpAndSettle(); + expect(repo.batches.length, 1); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ) + .onPressed, + isNull, + ); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-back')), + ) + .onPressed, + isNull, + ); + repo.inspectionResults['thread-8'] = _group(8, content: 'Reloaded 8'); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-reload')), + ); + await tester.pumpAndSettle(); + expect(find.text('Reloaded 7'), findsWidgets); + expect(find.text('Reloaded 8'), findsWidgets); + expect(repo.batches.length, 1); + repo.batchResult = [ + _group( + 7, + content: 'Reloaded 7', + ).notes.single.suggestions!.single.copyWith(applied: true), + _group( + 8, + content: 'Reloaded 8', + ).notes.single.suggestions!.single.copyWith(applied: true), + ]; + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pumpAndSettle(); + expect(repo.batches.length, 2); + }, + ); + testWidgets( + 'pending batch preflight blocks input back cancel and duplicate writes', + (tester) async { + final pending = Completer(); + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]) + ..inspectionResults['thread-7'] = pending.future; + await _pump(tester, repo); + await _openBatch(tester); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pump(); + for (final key in ['confirm', 'back', 'cancel']) { + expect( + tester + .widget( + find.byKey(ValueKey('mr-suggestions-batch-$key')), + ) + .onPressed, + isNull, + ); + } + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-message')), + ) + .enabled, + false, + ); + await tester.binding.handlePopRoute(); + await tester.pump(); + expect(find.byType(AlertDialog), findsOneWidget); + pending.complete(_group(7)); + await tester.pumpAndSettle(); + expect(repo.batches.length, 1); + }, + ); + testWidgets( + 'resource replacement hides selected old code and disables batch', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated( + items: [ + _group(7, content: 'Private old 7'), + _group(8, content: 'Private old 8'), + ], + ); + final c = _container(repo, _Analytics()); + await _pump(tester, repo, container: c); + await _openBatch(tester); + await _pump(tester, repo, container: c, iid: 143); + expect(find.text('Private old 7'), findsNothing); + expect(find.text('Private old 8'), findsNothing); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ) + .onPressed, + isNull, + ); + expect(repo.batches, isEmpty); + }, + ); + testWidgets( + 'account switch during first read hides patches and cancels following reads', + (tester) async { + final pending = Completer(); + final repo = _Repository() + ..pages[1] = Paginated( + items: [ + _group(7, content: 'Private old'), + _group(8), + ], + ) + ..inspectionResults['thread-7'] = pending.future; + final c = _container(repo, _Analytics()); + await _pump(tester, repo, container: c); + await _openBatch(tester); + await tester.tap( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ); + await tester.pump(); + final next = _Repository(); + addTearDown(next.client.close); + c.read(_session.notifier).state = Future.value(next); + await tester.pump(); + expect(find.text('Private old'), findsNothing); + pending.complete(_group(7)); + await tester.pumpAndSettle(); + expect(repo.inspections.length, 1); + expect(repo.batches, isEmpty); + expect(next.batches, isEmpty); + }, + ); + testWidgets('resize and theme change preserve selection and commit draft', ( + tester, + ) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]); + final c = _container(repo, _Analytics()); + await _pump(tester, repo, container: c); + await _openBatch(tester); + final input = find.byKey(const ValueKey('mr-suggestions-batch-message')); + await tester.ensureVisible(input); + await tester.enterText(input, 'Keep across resize'); + await _pump(tester, repo, container: c, width: 1200, dark: true); + expect( + tester.widget(input).controller!.text, + 'Keep across resize', + ); + expect(repo.batches, isEmpty); + }); + for (final locale in AppLocalizations.supportedLocales) { + for (final width in [390.0, 800.0, 1200.0]) { + for (final dark in [false, true]) { + testWidgets( + 'batch selection and confirmation layout ${locale.languageCode} $width $dark', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]); + await _pump( + tester, + repo, + locale: locale, + width: width, + dark: dark, + height: 900, + ); + await _openBatch(tester); + expect(tester.takeException(), isNull); + expect(find.byType(AlertDialog), findsOneWidget); + expect(repo.batches, isEmpty); + }, + ); + } + } + } + testWidgets( + 'batch confirmation fits keyboard and doubled text at compact width', + (tester) async { + final repo = _Repository() + ..pages[1] = Paginated(items: [_group(7), _group(8)]); + await _pump(tester, repo, width: 320, height: 600, textScale: 2); + await _openBatch(tester); + tester.view.viewInsets = const FakeViewPadding(bottom: 280); + addTearDown(tester.view.resetViewInsets); + await tester.pumpAndSettle(); + expect(tester.takeException(), isNull); + expect( + tester + .widget( + find.byKey(const ValueKey('mr-suggestions-batch-confirm')), + ) + .onPressed, + isNotNull, + ); + }, + ); + + test( + 'multi-thread preflight confirms all before exactly one batch write', + () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository()..pages[1] = Paginated(items: groups); + final analytics = _Analytics(); + final c = _container(repo, analytics); + expect( + await (await _controller(c)).applySuggestions( + _targets(groups), + commitMessage: ' Exact\nDraft ', + ), + true, + ); + expect(repo.inspections, [(8, 142, 'thread-7'), (8, 142, 'thread-8')]); + expect(repo.batches.map((b) => b.$1), [ + [7, 8], + ]); + expect(repo.batches.single.$2, ' Exact\nDraft '); + expect(repo.applications, isEmpty); + expect(analytics.events, isEmpty); + await c.read(mrDiscussionsControllerProvider(_key).future); + expect(repo.reads.length, 2); + }, + ); + test('same-thread suggestions inspect the thread once', () async { + final a = _group(7); + final b = _group(8, discussionId: a.id); + final group = a.copyWith(notes: [...a.notes, ...b.notes]); + final repo = _Repository()..pages[1] = Paginated(items: [group]); + final c = _container(repo, _Analytics()); + expect( + await (await _controller(c)).applySuggestions(_targets([group])), + true, + ); + expect(repo.inspections.length, 1); + expect(repo.batches.map((b) => b.$1), [ + [7, 8], + ]); + expect(repo.batches.single.$2, isNull); + }); + for (final size in [0, 1, 3]) { + test( + 'empty single or duplicate selections reject before reads size=$size', + () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository()..pages[1] = Paginated(items: groups); + final c = _container(repo, _Analytics()); + final targets = _targets(groups); + final selected = size == 3 + ? [...targets, targets.first] + : targets.take(size).toList(); + expect(await (await _controller(c)).applySuggestions(selected), false); + expect(repo.inspections, isEmpty); + expect(repo.batches, isEmpty); + }, + ); + } + for (final changed in [ + (Suggestion s) => s.copyWith(applied: true), + (Suggestion s) => s.copyWith(applied: null), + (Suggestion s) => s.copyWith(applicable: false), + (Suggestion s) => s.copyWith(fromContent: null), + (Suggestion s) => s.copyWith(toContent: 'Changed'), + (Suggestion s) => s.copyWith(fromLine: 99), + ]) { + test( + 'changed selected patch prevents the whole batch ${changed(Suggestion.fromJson(_suggestion()))}', + () async { + final groups = [_group(7), _group(8)]; + final last = groups.last; + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults[last.id] = last.copyWith( + notes: [ + last.notes.single.copyWith( + suggestions: [changed(last.notes.single.suggestions!.single)], + ), + ], + ); + final c = _container(repo, _Analytics()); + await expectLater( + (await _controller(c)).applySuggestions(_targets(groups)), + throwsA(isA()), + ); + expect(repo.batches, isEmpty); + expect(repo.applications, isEmpty); + }, + ); + } + test('preflight read failure never writes a subset', () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults['thread-8'] = const GitLabServerException( + 'Read failed', + ); + final c = _container(repo, _Analytics()); + await expectLater( + (await _controller(c)).applySuggestions(_targets(groups)), + throwsA(isA()), + ); + expect(repo.batches, isEmpty); + }); + test( + 'response-wide duplicate suggestion across fresh threads prevents write', + () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults['thread-8'] = groups.last.copyWith( + notes: [ + ...groups.last.notes, + groups.first.notes.single.copyWith(id: 999), + ], + ); + final c = _container(repo, _Analytics()); + await expectLater( + (await _controller(c)).applySuggestions(_targets(groups)), + throwsA(isA()), + ); + expect(repo.batches, isEmpty); + }, + ); + for (final bad in >[ + [], + [const Suggestion(id: 7, applied: true)], + [ + const Suggestion(id: 7, applied: true), + const Suggestion(id: 7, applied: true), + ], + [ + const Suggestion(id: 7, applied: true), + const Suggestion(id: 9, applied: true), + ], + [ + const Suggestion(id: 7, applied: true), + const Suggestion(id: 8, applied: false), + ], + [ + const Suggestion(id: 7, applied: true), + const Suggestion(id: 8, applied: true, toContent: 'Changed'), + ], + ]) { + test( + 'unconfirmed response retains state and emits no success effects $bad', + () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..batchResult = bad; + final analytics = _Analytics(); + final c = _container(repo, analytics); + await expectLater( + (await _controller(c)).applySuggestions(_targets(groups)), + throwsA(isA()), + ); + expect(repo.batches.length, 1); + expect(repo.reads.length, 1); + expect(analytics.events, isEmpty); + }, + ); + } + test('reordered sparse applied response is accepted', () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..batchResult = [ + const Suggestion(id: 8, applied: true), + const Suggestion(id: 7, applied: true), + ]; + final c = _container(repo, _Analytics()); + expect( + await (await _controller(c)).applySuggestions(_targets(groups)), + true, + ); + }); + test('reservation spans every preflight and batch completion', () async { + final groups = [_group(7), _group(8)]; + final pending = Completer(); + final repo = _Repository() + ..pages[1] = Paginated(items: groups, nextPage: 2) + ..inspectionResults['thread-7'] = pending.future; + final c = _container(repo, _Analytics()); + final ctrl = await _controller(c); + final first = ctrl.applySuggestions(_targets(groups)); + await Future.delayed(Duration.zero); + expect(await ctrl.applySuggestions(_targets(groups)), false); + expect( + await ctrl.applySuggestion( + discussionId: groups.first.id, + note: groups.first.notes.single, + suggestion: groups.first.notes.single.suggestions!.single, + ), + false, + ); + expect(await ctrl.post('Other'), false); + expect( + await ctrl.reply(discussionId: groups.first.id, body: 'Other'), + false, + ); + expect( + await ctrl.setResolved(discussionId: groups.first.id, resolved: true), + false, + ); + expect(await ctrl.inspectDiscussions(['thread-7', 'thread-8']), isNull); + await ctrl.loadMore(); + expect(repo.reads.length, 1); + pending.complete(groups.first); + expect(await first, true); + expect(repo.batches.length, 1); + }); + test( + 'pending pagination blocks batch and multi-discussion inspection', + () async { + final groups = [_group(7), _group(8)]; + final pending = Completer>(); + final repo = _Repository() + ..pages[1] = Paginated(items: groups, nextPage: 2) + ..pages[2] = pending.future; + final c = _container(repo, _Analytics()); + final ctrl = await _controller(c); + final load = ctrl.loadMore(); + await Future.delayed(Duration.zero); + expect(await ctrl.applySuggestions(_targets(groups)), false); + expect(await ctrl.inspectDiscussions(['thread-7', 'thread-8']), isNull); + expect(repo.inspections, isEmpty); + pending.complete(const Paginated(items: [])); + await load; + }, + ); + for (final failed in [false, true]) { + test( + 'account change stops follow-up preflight and write failed=$failed', + () async { + final groups = [_group(7), _group(8)]; + final pending = Completer(); + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults['thread-7'] = pending.future; + final c = _container(repo, _Analytics()); + final future = (await _controller( + c, + )).applySuggestions(_targets(groups)); + await Future.delayed(Duration.zero); + final next = _Repository(); + addTearDown(next.client.close); + c.read(_session.notifier).state = Future.value(next); + await Future.delayed(Duration.zero); + if (failed) { + pending.completeError(const GitLabServerException('Late')); + } else { + pending.complete(groups.first); + } + expect(await future, false); + expect(repo.inspections.length, 1); + expect(repo.batches, isEmpty); + expect(next.batches, isEmpty); + }, + ); + test( + 'account change isolates late batch completion failed=$failed', + () async { + final groups = [_group(7), _group(8)]; + final pending = Completer>(); + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..batchResult = pending.future; + final c = _container(repo, _Analytics()); + final future = (await _controller( + c, + )).applySuggestions(_targets(groups)); + await Future.delayed(Duration.zero); + final next = _Repository(); + addTearDown(next.client.close); + c.read(_session.notifier).state = Future.value(next); + await c.read(mrDiscussionsControllerProvider(_key).future); + if (failed) { + pending.completeError(const GitLabServerException('Late')); + } else { + pending.complete([ + const Suggestion(id: 7, applied: true), + const Suggestion(id: 8, applied: true), + ]); + } + expect(await future, false); + expect(next.reads.length, 1); + expect(next.batches, isEmpty); + }, + ); + } + test( + 'originating view ends after first preflight and cancels remaining reads', + () async { + var active = true; + final groups = [_group(7), _group(8)]; + final pending = Completer(); + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults['thread-7'] = pending.future; + final c = _container(repo, _Analytics()); + final future = (await _controller( + c, + )).applySuggestions(_targets(groups), isCurrent: () => active); + await Future.delayed(Duration.zero); + active = false; + pending.complete(groups.first); + expect(await future, false); + expect(repo.inspections.length, 1); + expect(repo.batches, isEmpty); + }, + ); + test( + 'complete recovery replaces all groups atomically and preserves pagination', + () async { + final groups = [_group(7), _group(8)]; + final fresh = [ + _group(7, content: 'Fresh 7'), + _group(8, content: 'Fresh 8'), + ]; + final repo = _Repository() + ..pages[1] = Paginated( + items: groups, + nextPage: 4, + total: 12, + totalPages: 6, + ) + ..inspectionResults['thread-7'] = fresh.first + ..inspectionResults['thread-8'] = fresh.last; + final c = _container(repo, _Analytics()); + final result = await (await _controller( + c, + )).inspectDiscussions(['thread-7', 'thread-8']); + expect(result, fresh); + final state = c.read(mrDiscussionsControllerProvider(_key)).value!; + expect(state.items, fresh); + expect(state.nextPage, 4); + expect(state.total, 12); + expect(state.totalPages, 6); + expect(repo.batches, isEmpty); + }, + ); + test( + 'failed recovery preserves every cached group without partial refresh', + () async { + final groups = [_group(7), _group(8)]; + final repo = _Repository() + ..pages[1] = Paginated(items: groups) + ..inspectionResults['thread-7'] = _group(7, content: 'Fresh 7') + ..inspectionResults['thread-8'] = const GitLabServerException('Failed'); + final c = _container(repo, _Analytics()); + await expectLater( + (await _controller(c)).inspectDiscussions(['thread-7', 'thread-8']), + throwsA(isA()), + ); + expect( + c.read(mrDiscussionsControllerProvider(_key)).value!.items, + groups, + ); + expect(repo.batches, isEmpty); + }, + ); + if (Platform.environment['LABFOX_BATCH_UI_CAPTURE'] + case final String directory) { + for (final width in [390.0, 1200.0]) { + for (final dark in [false, true]) { + testWidgets('synthetic batch confirmation capture $width $dark', ( + tester, + ) async { + final sdk = Platform.environment['FLUTTER_ROOT']!; + await tester.runAsync(() async { + for (final (family, name) in [ + ('Roboto', 'Roboto-Regular.ttf'), + ('monospace', 'Roboto-Regular.ttf'), + ('MaterialIcons', 'MaterialIcons-Regular.otf'), + ]) { + final loader = FontLoader(family) + ..addFont( + Future.value( + ByteData.sublistView( + File( + '$sdk/bin/cache/artifacts/material_fonts/$name', + ).readAsBytesSync(), + ), + ), + ); + if (family == 'Roboto') { + for (final weight in ['Medium', 'Bold']) { + loader.addFont( + Future.value( + ByteData.sublistView( + File( + '$sdk/bin/cache/artifacts/material_fonts/Roboto-$weight.ttf', + ).readAsBytesSync(), + ), + ), + ); + } + } + await loader.load(); + } + }); + final baseTheme = dark ? LabFoxTheme.dark : LabFoxTheme.light; + final buttonStyle = baseTheme.filledButtonTheme.style!; + final captureTheme = baseTheme.copyWith( + filledButtonTheme: FilledButtonThemeData( + style: buttonStyle.copyWith( + textStyle: WidgetStatePropertyAll( + buttonStyle.textStyle! + .resolve({})! + .copyWith(fontFamily: 'Roboto'), + ), + ), + ), + ); + final repo = _Repository() + ..pages[1] = Paginated( + items: [ + _group(7, content: ' return reviewedValue;\n'), + _group(8, content: ' notifyReviewers();\n'), + ], + ); + await _pump( + tester, + repo, + width: width, + height: width < 600 ? 844 : 900, + dark: dark, + theme: captureTheme, + ); + await _openBatch(tester); + expect(tester.takeException(), isNull); + final boundary = tester.renderObject( + find.byKey(_captureKey), + ); + final image = (await tester.runAsync(boundary.toImage))!; + final data = await tester.runAsync( + () => image.toByteData(format: ui.ImageByteFormat.png), + ); + await tester.runAsync(() async { + final file = File( + '$directory/batch-${width.toInt()}-${dark ? 'dark' : 'light'}.png', + ); + await file.parent.create(recursive: true); + await file.writeAsBytes(data!.buffer.asUint8List()); + }); + image.dispose(); + }); + } + } + } +} diff --git a/apps/labfox/test/mr_suggestion_batch_repository_test.dart b/apps/labfox/test/mr_suggestion_batch_repository_test.dart new file mode 100644 index 00000000..ea729318 --- /dev/null +++ b/apps/labfox/test/mr_suggestion_batch_repository_test.dart @@ -0,0 +1,82 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:dio/dio.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:gitlab_api/gitlab_api.dart'; +import 'package:labfox/features/comments/data/comments_repository.dart'; + +class _Adapter implements HttpClientAdapter { + final requests = []; + @override + Future fetch( + RequestOptions options, + Stream? stream, + Future? cancel, + ) async { + requests.add(options); + final body = options.method == 'PUT' + ? [ + {'id': 8, 'applied': true}, + {'id': 7, 'applied': true}, + ] + : {'id': 'thread /#', 'individual_note': false, 'notes': []}; + return ResponseBody.fromString( + jsonEncode(body), + 200, + headers: { + Headers.contentTypeHeader: [Headers.jsonContentType], + }, + ); + } + + @override + void close({bool force = false}) {} +} + +void main() { + for (final message in [null, '', ' Exact\nMessage ']) { + test( + 'repository forwards authenticated read and exact batch application message $message', + () async { + final adapter = _Adapter(); + final client = GitLabClient( + baseUrl: 'https://gitlab.example.com/subpath', + token: 'glpat-xxxxxxxxxxxx', + dio: Dio()..httpClientAdapter = adapter, + ); + addTearDown(client.close); + final repo = CommentsRepository(client); + final group = await repo.discussion( + projectId: 8, + iid: 142, + discussionId: 'thread /#', + ); + expect(group.id, 'thread /#'); + final applied = await repo.applySuggestions( + suggestionIds: [7, 8], + commitMessage: message, + ); + expect(applied.map((s) => s.id), [8, 7]); + expect(applied.every((s) => s.applied == true), true); + expect(adapter.requests.map((r) => r.method), ['GET', 'PUT']); + expect( + adapter.requests.first.uri.toString(), + 'https://gitlab.example.com/subpath/api/v4/projects/8/merge_requests/142/discussions/thread%20%2F%23', + ); + final write = adapter.requests.last; + expect( + write.uri.toString(), + 'https://gitlab.example.com/subpath/api/v4/suggestions/batch_apply', + ); + expect(write.data, { + 'ids': [7, 8], + 'commit_message': ?message, + }); + expect(write.followRedirects, false); + expect(write.extra['labfox_no_auth_retry'], true); + expect(write.headers['PRIVATE-TOKEN'], 'glpat-xxxxxxxxxxxx'); + }, + ); + } +} diff --git a/docs/images/mr-suggestion-batch/batch-1200-dark.png b/docs/images/mr-suggestion-batch/batch-1200-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea02aa2f326a9ec885e913f5efc9e81c917d5c1 GIT binary patch literal 115920 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�tI$v_K3_gZ3@4oIZoEz5+zjc;3x;NJv_L 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⋙4>S(m?Ykcj@kI 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 literal 0 HcmV?d00001 diff --git a/docs/images/mr-suggestion-batch/batch-390-dark.png b/docs/images/mr-suggestion-batch/batch-390-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..15d352fb2faa24df7a34b3ce6be3033b8530c97f GIT binary patch literal 62081 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 literal 0 HcmV?d00001 diff --git a/docs/mobile-web-parity.md b/docs/mobile-web-parity.md index 56447ecb..40eaf5b2 100644 --- a/docs/mobile-web-parity.md +++ b/docs/mobile-web-parity.md @@ -57,7 +57,7 @@ issues and PRs. Keep it open until its full acceptance boundary is verified. | MW-04 | P1 | Member invitations, role/expiry changes, and removal for groups/projects. | Queued | Issue needed | | MW-05 | P0 | Issue/work-item editing, metadata, types, and validated state transitions. | In progress | [#329](https://github.com/Theorvane/labfox/issues/329), [PR #330](https://github.com/Theorvane/labfox/pull/330) shipped title and description editing; [#339](https://github.com/Theorvane/labfox/issues/339), [PR #340](https://github.com/Theorvane/labfox/pull/340) shipped due-date editing; [#341](https://github.com/Theorvane/labfox/issues/341), [PR #342](https://github.com/Theorvane/labfox/pull/342) shipped issue-label editing; [#343](https://github.com/Theorvane/labfox/issues/343), [PR #344](https://github.com/Theorvane/labfox/pull/344) shipped assignee editing; [#345](https://github.com/Theorvane/labfox/issues/345), [PR #346](https://github.com/Theorvane/labfox/pull/346) shipped milestone editing; [#347](https://github.com/Theorvane/labfox/issues/347), [PR #348](https://github.com/Theorvane/labfox/pull/348) shipped confidentiality; [#349](https://github.com/Theorvane/labfox/issues/349), [PR #350](https://github.com/Theorvane/labfox/pull/350) shipped discussion locking. Type-conversion compatibility and remaining work-item actions need separate issues. | | MW-06 | P1 | Boards and iterations: discover mobile-web behavior, then list/detail/mutations. | Queued | Issue needed | -| MW-07 | P0 | Advanced MR review: audit inline discussions/suggestions and finish missing review/approval flows. | In progress | [#552](https://github.com/Theorvane/labfox/issues/552), [PR #553](https://github.com/Theorvane/labfox/pull/553) prevent overlapping approval, merge, and other MR commands per project/IID, including while the repository resolves; failures release the reservation for explicit retry. [#554](https://github.com/Theorvane/labfox/issues/554), [PR #555](https://github.com/Theorvane/labfox/pull/555) add repository-session observation, pre-dispatch cancellation and late-result/error isolation, success-only current-session refresh/analytics/inbox effects, cancelled to-do outcomes without current-account toasts, and generation-owned duplicate reservations. Already dispatched server writes cannot be undone. [#556](https://github.com/Theorvane/labfox/issues/556), [PR #557](https://github.com/Theorvane/labfox/pull/557) add localized approval-read loading/error states, disabled approval toggles until successful reads, read-only retry, retained-data refresh protection, reactive new-session reads with stale-result isolation, and current-state toggle selection while preserving unavailable endpoint compatibility and independent merge controls. [#558](https://github.com/Theorvane/labfox/issues/558), [PR #559](https://github.com/Theorvane/labfox/pull/559) derives approval ownership from the authenticated account user ID and documented `approved_by` membership, ignores conflicting legacy current-user flags, and refreshes membership on account replacement. Regression coverage checks real toggle dispatch on mobile/desktop in both themes. [#560](https://github.com/Theorvane/labfox/issues/560), [PR #561](https://github.com/Theorvane/labfox/pull/561) validates successful approval responses before model parsing: explicit approver lists, complete user wrappers, positive integral user IDs, and nonnegative integral counts when present. Malformed reads become sanitized domain errors; status mapping precedes payload parsing. End-to-end widget tests verify blocked approval toggles and read-only recovery in both widths/themes, while unavailable endpoint compatibility remains intact. [#562](https://github.com/Theorvane/labfox/issues/562), [PR #563](https://github.com/Theorvane/labfox/pull/563) adds an account-bound, one-page MR discussion reader with generated grouped-note models and nullable resolution metadata. It preserves next-page headers without assuming totals or fetching ahead, rejects incomplete groups and nonadvancing cursors, and keeps HTTP failures distinct from sanitized parsing errors. Building on the API/models foundation, [#564](https://github.com/Theorvane/labfox/issues/564), [PR #565](https://github.com/Theorvane/labfox/pull/565) connects grouped MR replies to the detail-screen comments flow and aggregates resolution across all resolvable notes without claiming unknown states are resolved. The shared top-level composer refreshes discussion page one after posting; explicit load-more and read/page retries preserve groups and cursors. Account-bound reads/posts ignore late results, drafts reset when the session or resource changes, and resizing preserves the current draft. Five locales and narrow/compact/wide light/dark layouts are covered. [#566](https://github.com/Theorvane/labfox/issues/566), [PR #567](https://github.com/Theorvane/labfox/pull/567) adds the MR discussion reply API foundation: encoded thread/project paths, explicit IID routing, exact nonempty Markdown bodies, validated generated note responses, sanitized typed errors and no automatic authentication replay for the write. [#568](https://github.com/Theorvane/labfox/issues/568), [PR #569](https://github.com/Theorvane/labfox/pull/569) connects a localized inline reply composer to the selected discussion. One active reply preserves the top-level draft; cancel and write reservations prevent accidental overlaps. Replies preserve Markdown, retain failed drafts for explicit retry, refresh authoritative discussion page one and ignore old-session completions. Account/MR replacement resets the selection, resizing and pagination preserve current drafts, and a removed target restores top-level submission. Five locales and three widths in both themes are covered. [#570](https://github.com/Theorvane/labfox/issues/570), [PR #571](https://github.com/Theorvane/labfox/pull/571) adds known-state Resolve/Reopen controls and a strict account-bound mutation: encoded identity, explicit resolution, no redirects/authentication replay, and updated thread/state confirmation. Resolution shares comment/reply write reservations, preserves the top-level draft, retains localized permission/failure feedback for explicit retry, and refreshes discussions and MR detail only on current-session success. Unknown/nonresolvable states offer no toggle, and an active reply draft prevents resolution. [#572](https://github.com/Theorvane/labfox/issues/572), [PR #573](https://github.com/Theorvane/labfox/pull/573) preserves generated diff-note position metadata: original version SHAs, renamed paths, old/new text lines, multiline range endpoints and image/file types. Discussion reads, replies and resolution responses reject malformed or fractional coordinates before parsing; absent legacy fields remain unknown. [#574](https://github.com/Theorvane/labfox/issues/574), [PR #575](https://github.com/Theorvane/labfox/pull/575) adds paginated diff-version reads and an explicitly selected original unified-diff snapshot. Generated version/file models retain SHA triplets, renamed paths, raw text and nullable omission flags; absent files differ from empty snapshots. Identity/payload validation, status-first typed failures and no eager pagination or current-diff fallback are covered. [#576](https://github.com/Theorvane/labfox/issues/576) / [PR #577](https://github.com/Theorvane/labfox/pull/577) adds an expandable original-diff context beside positioned notes. It matches complete SHA triplets, both file paths and exact old/new single-line text coordinates; explicit older-page reads and read-only retries preserve drafts. The matched original hunk/line has an accessible non-color marker. Unsupported, omitted, truncated or ambiguous contexts remain unavailable without a current-diff fallback; account/resource replacement resets panels and stale reads cannot dispatch follow-up snapshots or affect the new session. Five locales, three widths and both themes are covered. Multiline context, positioned thread creation and suggestion application remain separate slices. [#578](https://github.com/Theorvane/labfox/issues/578), [PR #580](https://github.com/Theorvane/labfox/pull/580) adds the single-line positioned discussion creation API foundation: exact original SHA/path/line anchors, Markdown preservation, pre-dispatch argument validation, no redirects or authentication replay, created-thread confirmation and sanitized typed failures. The line selector/composer, multiline creation and suggestions remain separate. [#579](https://github.com/Theorvane/labfox/issues/579), [PR #581](https://github.com/Theorvane/labfox/pull/581) connects the latest authoritative diff-version snapshot to localized single-line selection and discussion creation. Exact original coordinates, indexed eligibility, shared write reservations, retained drafts, session/resource isolation and visible authoritative discussion inspection before uncertain-write retry are covered. The existing MR Changes route restores from project/IID; commit diffs stay read-only. Multiline context/creation and suggestion application remain separate. [#582](https://github.com/Theorvane/labfox/issues/582) / [PR #583](https://github.com/Theorvane/labfox/pull/583) adds typed immutable suggestion metadata to MR discussion responses, preserving original/replacement code, inclusive ranges, applied status and both documented applicability spellings. Missing states remain unknown; positive integral identities/coordinates, range order, response-wide uniqueness, content/flag types and alias agreement are validated before generated parsing. Suggestion presentation/application and multiline context/creation remain separate. [#584](https://github.com/Theorvane/labfox/issues/584) / [PR #585](https://github.com/Theorvane/labfox/pull/585) adds read-only suggestion previews beside user notes with exact selectable original/replacement code, nullable application/applicability states, localized ranges and empty/unavailable content, bounded code panes, retained drafts across resize/theme, and account/resource/metadata isolation. Suggestion application and batching remain separate. [#586](https://github.com/Theorvane/labfox/issues/586) / [PR #587](https://github.com/Theorvane/labfox/pull/587) adds the single-suggestion application API foundation with a positive global identity, exact optional commit messages, strict HTTP 200 and matching applied=true confirmation, shared metadata validation, typed sanitized failures, and no redirect/authentication replay. Application UI/session reservations and batch application remain separate. [#588](https://github.com/Theorvane/labfox/issues/588) / [PR #589](https://github.com/Theorvane/labfox/pull/589) adds explicit single-suggestion confirmation with literal code and optional commit messages, a fresh exact-discussion preflight, shared reservations including pagination, current-view/account isolation, confirmed-success detail/discussion/review-snapshot refreshes, and draft-preserving read-only recovery before uncertain-write retry. Five locales, three widths, both themes, keyboard insets and large text are covered. Batch application and multiline context/creation remain separate. [#590](https://github.com/Theorvane/labfox/issues/590) / [PR #591](https://github.com/Theorvane/labfox/pull/591) adds the batch suggestion API foundation: one account-bound request with immutable positive unique global IDs, exact optional messages, strict complete matching applied-state confirmation, preserved server order/nullable metadata, status-first sanitized failures, and no redirects, authentication replay or single-write fallback. Batch selection/confirmation and fresh-state recovery UI, plus multiline context/creation, remain separate. | +| MW-07 | P0 | Advanced MR review: audit inline discussions/suggestions and finish missing review/approval flows. | In progress | [#552](https://github.com/Theorvane/labfox/issues/552), [PR #553](https://github.com/Theorvane/labfox/pull/553) prevent overlapping approval, merge, and other MR commands per project/IID, including while the repository resolves; failures release the reservation for explicit retry. [#554](https://github.com/Theorvane/labfox/issues/554), [PR #555](https://github.com/Theorvane/labfox/pull/555) add repository-session observation, pre-dispatch cancellation and late-result/error isolation, success-only current-session refresh/analytics/inbox effects, cancelled to-do outcomes without current-account toasts, and generation-owned duplicate reservations. Already dispatched server writes cannot be undone. [#556](https://github.com/Theorvane/labfox/issues/556), [PR #557](https://github.com/Theorvane/labfox/pull/557) add localized approval-read loading/error states, disabled approval toggles until successful reads, read-only retry, retained-data refresh protection, reactive new-session reads with stale-result isolation, and current-state toggle selection while preserving unavailable endpoint compatibility and independent merge controls. [#558](https://github.com/Theorvane/labfox/issues/558), [PR #559](https://github.com/Theorvane/labfox/pull/559) derives approval ownership from the authenticated account user ID and documented `approved_by` membership, ignores conflicting legacy current-user flags, and refreshes membership on account replacement. Regression coverage checks real toggle dispatch on mobile/desktop in both themes. [#560](https://github.com/Theorvane/labfox/issues/560), [PR #561](https://github.com/Theorvane/labfox/pull/561) validates successful approval responses before model parsing: explicit approver lists, complete user wrappers, positive integral user IDs, and nonnegative integral counts when present. Malformed reads become sanitized domain errors; status mapping precedes payload parsing. End-to-end widget tests verify blocked approval toggles and read-only recovery in both widths/themes, while unavailable endpoint compatibility remains intact. [#562](https://github.com/Theorvane/labfox/issues/562), [PR #563](https://github.com/Theorvane/labfox/pull/563) adds an account-bound, one-page MR discussion reader with generated grouped-note models and nullable resolution metadata. It preserves next-page headers without assuming totals or fetching ahead, rejects incomplete groups and nonadvancing cursors, and keeps HTTP failures distinct from sanitized parsing errors. Building on the API/models foundation, [#564](https://github.com/Theorvane/labfox/issues/564), [PR #565](https://github.com/Theorvane/labfox/pull/565) connects grouped MR replies to the detail-screen comments flow and aggregates resolution across all resolvable notes without claiming unknown states are resolved. The shared top-level composer refreshes discussion page one after posting; explicit load-more and read/page retries preserve groups and cursors. Account-bound reads/posts ignore late results, drafts reset when the session or resource changes, and resizing preserves the current draft. Five locales and narrow/compact/wide light/dark layouts are covered. [#566](https://github.com/Theorvane/labfox/issues/566), [PR #567](https://github.com/Theorvane/labfox/pull/567) adds the MR discussion reply API foundation: encoded thread/project paths, explicit IID routing, exact nonempty Markdown bodies, validated generated note responses, sanitized typed errors and no automatic authentication replay for the write. [#568](https://github.com/Theorvane/labfox/issues/568), [PR #569](https://github.com/Theorvane/labfox/pull/569) connects a localized inline reply composer to the selected discussion. One active reply preserves the top-level draft; cancel and write reservations prevent accidental overlaps. Replies preserve Markdown, retain failed drafts for explicit retry, refresh authoritative discussion page one and ignore old-session completions. Account/MR replacement resets the selection, resizing and pagination preserve current drafts, and a removed target restores top-level submission. Five locales and three widths in both themes are covered. [#570](https://github.com/Theorvane/labfox/issues/570), [PR #571](https://github.com/Theorvane/labfox/pull/571) adds known-state Resolve/Reopen controls and a strict account-bound mutation: encoded identity, explicit resolution, no redirects/authentication replay, and updated thread/state confirmation. Resolution shares comment/reply write reservations, preserves the top-level draft, retains localized permission/failure feedback for explicit retry, and refreshes discussions and MR detail only on current-session success. Unknown/nonresolvable states offer no toggle, and an active reply draft prevents resolution. [#572](https://github.com/Theorvane/labfox/issues/572), [PR #573](https://github.com/Theorvane/labfox/pull/573) preserves generated diff-note position metadata: original version SHAs, renamed paths, old/new text lines, multiline range endpoints and image/file types. Discussion reads, replies and resolution responses reject malformed or fractional coordinates before parsing; absent legacy fields remain unknown. [#574](https://github.com/Theorvane/labfox/issues/574), [PR #575](https://github.com/Theorvane/labfox/pull/575) adds paginated diff-version reads and an explicitly selected original unified-diff snapshot. Generated version/file models retain SHA triplets, renamed paths, raw text and nullable omission flags; absent files differ from empty snapshots. Identity/payload validation, status-first typed failures and no eager pagination or current-diff fallback are covered. [#576](https://github.com/Theorvane/labfox/issues/576) / [PR #577](https://github.com/Theorvane/labfox/pull/577) adds an expandable original-diff context beside positioned notes. It matches complete SHA triplets, both file paths and exact old/new single-line text coordinates; explicit older-page reads and read-only retries preserve drafts. The matched original hunk/line has an accessible non-color marker. Unsupported, omitted, truncated or ambiguous contexts remain unavailable without a current-diff fallback; account/resource replacement resets panels and stale reads cannot dispatch follow-up snapshots or affect the new session. Five locales, three widths and both themes are covered. Multiline context, positioned thread creation and suggestion application remain separate slices. [#578](https://github.com/Theorvane/labfox/issues/578), [PR #580](https://github.com/Theorvane/labfox/pull/580) adds the single-line positioned discussion creation API foundation: exact original SHA/path/line anchors, Markdown preservation, pre-dispatch argument validation, no redirects or authentication replay, created-thread confirmation and sanitized typed failures. The line selector/composer, multiline creation and suggestions remain separate. [#579](https://github.com/Theorvane/labfox/issues/579), [PR #581](https://github.com/Theorvane/labfox/pull/581) connects the latest authoritative diff-version snapshot to localized single-line selection and discussion creation. Exact original coordinates, indexed eligibility, shared write reservations, retained drafts, session/resource isolation and visible authoritative discussion inspection before uncertain-write retry are covered. The existing MR Changes route restores from project/IID; commit diffs stay read-only. Multiline context/creation and suggestion application remain separate. [#582](https://github.com/Theorvane/labfox/issues/582) / [PR #583](https://github.com/Theorvane/labfox/pull/583) adds typed immutable suggestion metadata to MR discussion responses, preserving original/replacement code, inclusive ranges, applied status and both documented applicability spellings. Missing states remain unknown; positive integral identities/coordinates, range order, response-wide uniqueness, content/flag types and alias agreement are validated before generated parsing. Suggestion presentation/application and multiline context/creation remain separate. [#584](https://github.com/Theorvane/labfox/issues/584) / [PR #585](https://github.com/Theorvane/labfox/pull/585) adds read-only suggestion previews beside user notes with exact selectable original/replacement code, nullable application/applicability states, localized ranges and empty/unavailable content, bounded code panes, retained drafts across resize/theme, and account/resource/metadata isolation. Suggestion application and batching remain separate. [#586](https://github.com/Theorvane/labfox/issues/586) / [PR #587](https://github.com/Theorvane/labfox/pull/587) adds the single-suggestion application API foundation with a positive global identity, exact optional commit messages, strict HTTP 200 and matching applied=true confirmation, shared metadata validation, typed sanitized failures, and no redirect/authentication replay. Application UI/session reservations and batch application remain separate. [#588](https://github.com/Theorvane/labfox/issues/588) / [PR #589](https://github.com/Theorvane/labfox/pull/589) adds explicit single-suggestion confirmation with literal code and optional commit messages, a fresh exact-discussion preflight, shared reservations including pagination, current-view/account isolation, confirmed-success detail/discussion/review-snapshot refreshes, and draft-preserving read-only recovery before uncertain-write retry. Five locales, three widths, both themes, keyboard insets and large text are covered. Batch application and multiline context/creation remain separate. [#590](https://github.com/Theorvane/labfox/issues/590) / [PR #591](https://github.com/Theorvane/labfox/pull/591) adds the batch suggestion API foundation: one account-bound request with immutable positive unique global IDs, exact optional messages, strict complete matching applied-state confirmation, preserved server order/nullable metadata, status-first sanitized failures, and no redirects, authentication replay or single-write fallback. Building on that API, [#592](https://github.com/Theorvane/labfox/issues/592) adds explicit loaded-target selection and multi-patch confirmation, deduplicated all-thread preflight before one batch, immutable selected identities, shared reservations, current-account/view isolation, complete staged read-only recovery, exact retained drafts and success-only refreshes. Five locales, three widths, both themes and compact keyboard/large-text layouts are covered; see [the batch UI](mr-suggestion-batch-ui.md). Multiline context/creation remains separate. | | MW-08 | P1 | CI/CD configuration: pipeline editor, variables, triggers, schedule editing, and execution history. | In progress | [#423](https://github.com/Theorvane/labfox/issues/423), [PR #424](https://github.com/Theorvane/labfox/pull/424) cover timing editing; [#425](https://github.com/Theorvane/labfox/issues/425), [PR #426](https://github.com/Theorvane/labfox/pull/426) cover deletion; [#427](https://github.com/Theorvane/labfox/issues/427), [PR #428](https://github.com/Theorvane/labfox/pull/428) cover creation; [#429](https://github.com/Theorvane/labfox/issues/429), [PR #430](https://github.com/Theorvane/labfox/pull/430) cover ownership transfer; [#431](https://github.com/Theorvane/labfox/issues/431), [PR #432](https://github.com/Theorvane/labfox/pull/432) cover ref/active editing. These slices await review or maintainer merge. [#433](https://github.com/Theorvane/labfox/issues/433), [PR #434](https://github.com/Theorvane/labfox/pull/434) cover schedule-specific execution history in review: newest-first header pagination, retained rows/cursor on failed next pages, retry, run-now/refresh reload with inline errors, stale-request protection, and identifier-only pipeline navigation. History filters, variables/inputs, pipeline configuration editing, and triggers remain separate slices. | | MW-09 | P1 | Wiki creation/editing/deletion and history with conflict handling. | In progress | [#351](https://github.com/Theorvane/labfox/issues/351), [PR #352](https://github.com/Theorvane/labfox/pull/352) shipped Markdown page creation; [#353](https://github.com/Theorvane/labfox/issues/353), [PR #354](https://github.com/Theorvane/labfox/pull/354) shipped editing with best-effort stale-draft detection; [#373](https://github.com/Theorvane/labfox/issues/373), [PR #374](https://github.com/Theorvane/labfox/pull/374) shipped deletion with confirmation and best-effort stale-page detection; [#375](https://github.com/Theorvane/labfox/issues/375), [PR #376](https://github.com/Theorvane/labfox/pull/376) shipped Markdown template selection. [#377](https://github.com/Theorvane/labfox/issues/377), [PR #378](https://github.com/Theorvane/labfox/pull/378) cover template listing and creation in review. Page history and atomic conflict protection remain. The documented wiki REST API can retrieve a page by version SHA but does not list page history. | | MW-10 | P1 | Snippet creation/editing/deletion, files, and visibility. | In progress | [#355](https://github.com/Theorvane/labfox/issues/355), [PR #356](https://github.com/Theorvane/labfox/pull/356) shipped single-file project snippet creation; [#357](https://github.com/Theorvane/labfox/issues/357), [PR #358](https://github.com/Theorvane/labfox/pull/358) shipped deletion with confirmation; [#359](https://github.com/Theorvane/labfox/issues/359), [PR #360](https://github.com/Theorvane/labfox/pull/360) shipped title and description editing; [#361](https://github.com/Theorvane/labfox/issues/361), [PR #362](https://github.com/Theorvane/labfox/pull/362) shipped single-file content editing; [#363](https://github.com/Theorvane/labfox/issues/363), [PR #364](https://github.com/Theorvane/labfox/pull/364) shipped private/public visibility editing; [#365](https://github.com/Theorvane/labfox/issues/365), [PR #366](https://github.com/Theorvane/labfox/pull/366) shipped multi-file content editing; [#367](https://github.com/Theorvane/labfox/issues/367), [PR #368](https://github.com/Theorvane/labfox/pull/368) shipped adding a file; [#369](https://github.com/Theorvane/labfox/issues/369), [PR #370](https://github.com/Theorvane/labfox/pull/370) shipped deleting a file; [#371](https://github.com/Theorvane/labfox/issues/371), [PR #372](https://github.com/Theorvane/labfox/pull/372) shipped moving and renaming a file. Broader visibility management remains. | diff --git a/docs/mr-suggestion-application-api.md b/docs/mr-suggestion-application-api.md index de3e0b2c..11982cd9 100644 --- a/docs/mr-suggestion-application-api.md +++ b/docs/mr-suggestion-application-api.md @@ -10,6 +10,6 @@ Only HTTP 200 with a strictly validated matching suggestion ID and `applied: tru The shared suggestion validator retains the existing MR read/reply/resolution/positioned-creation boundaries: positive integral IDs and supplied coordinates, ordered complete ranges, string content, boolean status, consistent legacy/documented applicability aliases, and response-wide identity uniqueness. It runs before generated numeric parsing so fractional values cannot be truncated. The apply response uses the same validator and generated DTO; malformed or unconfirmed results become `Invalid suggestion application response.` without source text, IDs or raw parser details. -An error or unconfirmed response can follow an accepted repository write. A caller must reload authoritative discussions and inspect the current suggestion state before offering an explicitly confirmed manual retry. The API itself does not own UI confirmation or completion effects. The app now implements single-suggestion confirmation, shared discussion reservations, account/resource isolation and read-only recovery as documented in [the application UI](mr-suggestion-application-ui.md). The [batch API](mr-suggestion-batch-api.md) is a separate foundation; batch selection and confirmation UI remain follow-up work. No live repository change or physical-device validation is claimed. +An error or unconfirmed response can follow an accepted repository write. A caller must reload authoritative discussions and inspect the current suggestion state before offering an explicitly confirmed manual retry. The API itself does not own UI confirmation or completion effects. The app now implements single-suggestion confirmation, shared discussion reservations, account/resource isolation and read-only recovery as documented in [the application UI](mr-suggestion-application-ui.md). The [batch API](mr-suggestion-batch-api.md) powers [batch selection, confirmation and complete read-only recovery](mr-suggestion-batch-ui.md). No live repository change or physical-device validation is claimed. Tests use documented synthetic payloads and dummy credentials. Reference: [Suggest Changes API](https://docs.gitlab.com/api/suggestions/). diff --git a/docs/mr-suggestion-application-ui.md b/docs/mr-suggestion-application-ui.md index a98f262d..cc90a841 100644 --- a/docs/mr-suggestion-application-ui.md +++ b/docs/mr-suggestion-application-ui.md @@ -23,4 +23,4 @@ These are synthetic Flutter widget-test captures with dummy metadata and SDK fon | Mobile, 390 × 844 | [Capture](images/mr-suggestion-apply/apply-390-light.png) | [Capture](images/mr-suggestion-apply/apply-390-dark.png) | | Desktop, 1200 × 900 | [Capture](images/mr-suggestion-apply/apply-1200-light.png) | [Capture](images/mr-suggestion-apply/apply-1200-dark.png) | -The [batch application API](mr-suggestion-batch-api.md) is available as a separate foundation. Batch selection/confirmation UI and multiline discussion context/creation remain separate parity slices. +The [batch application API](mr-suggestion-batch-api.md) now powers [batch selection, confirmation and complete read-only recovery](mr-suggestion-batch-ui.md). Multiline discussion context/creation remains a separate parity slice. diff --git a/docs/mr-suggestion-batch-api.md b/docs/mr-suggestion-batch-api.md index 79097a23..27ec166e 100644 --- a/docs/mr-suggestion-batch-api.md +++ b/docs/mr-suggestion-batch-api.md @@ -10,7 +10,7 @@ The write disables redirects and automatic OAuth refresh/replay. Status-first ma This confirms returned suggestion states, not a commit count, branch SHA, permission claim or client-side atomicity guarantee. An error or incomplete response can follow an accepted repository write. Callers must freshly inspect every selected discussion and require renewed confirmation before an explicit manual retry. There is no automatic application retry, single-write fallback, rollback or inferred success for part of a batch. -This slice provides the API only. The existing app still offers single-suggestion confirmation/application. Batch selection, MR grouping, multi-patch confirmation, shared UI reservations and complete fresh-state recovery belong to a separate UI slice. No model, dependency or generated file changes, live GitLab writes or physical-device validation are included. +The original API slice changed no models, dependencies or generated files. The app now provides [batch selection, multi-patch confirmation and complete read-only recovery](mr-suggestion-batch-ui.md), alongside single-suggestion application. No live GitLab writes or physical-device validation are claimed. Test-first coverage includes missing-method failure and 130 failing behavior contracts against a minimal unsafe implementation, followed by all 149 batch contracts and 254 existing single-application/metadata cases passing together. Tests cover exact routing/authentication/messages, invalid inputs, reordered and sparse confirmed payloads, every member's strict metadata boundary, incomplete identities, caller mutation, immutable results, typed failures and no OAuth replay. diff --git a/docs/mr-suggestion-batch-ui.md b/docs/mr-suggestion-batch-ui.md new file mode 100644 index 00000000..a47eb122 --- /dev/null +++ b/docs/mr-suggestion-batch-ui.md @@ -0,0 +1,26 @@ +# Selecting and applying multiple code suggestions + +An MR discussion page offers **Apply multiple suggestions** when at least two loaded suggestions are eligible and have unique global identities. The selection screen starts empty. Select at least two targets, inspect their previews, and choose **Review selected**. The confirmation shows every selected original/replacement patch, range, and server state before **Apply selected**. Opening, selecting, navigating back, or cancelling sends no write. An optional commit message retains its exact whitespace; an empty field uses GitLab's default. The existing project/IID discussion route owns this flow. + +Selection uses loaded discussions only, without eager pagination or selecting hidden pages. Unknown, applied, system, non-text, malformed, and ambiguous suggestions are unavailable. Patch applicability does not imply permission: GitLab decides authorization. The controller snapshots the selected set and holds the shared comment/reply/resolution/application reservation. Pending pagination also blocks batch application and recovery. + +Before the single batch write, every selected discussion is fetched once through the authenticated single-discussion endpoint. Each selected note identity, position, patch content, inclusive range and flags must still match the review. A failed read, changed patch or ambiguous identity prevents the entire dispatch. There is no single-write fallback or automatic subset application. The real repository forwards the selection to the [batch API](mr-suggestion-batch-api.md), preserving the optional message. Only complete, unique, matching `applied=true` confirmation succeeds; returned known patch metadata must agree. Sparse and reordered confirmation is supported. Success refreshes discussions, MR detail and the authoritative review snapshot in the originating session, without comment analytics. + +Failure or unconfirmed completion retains the message and requires explicit **Reload selected discussions**. Recovery reads every selected discussion before replacing any loaded cache entry, preserving pagination. A failed intermediate read leaves the cache unchanged and keeps confirmation and selection changes disabled. A complete read displays changed patches for renewed confirmation. Missing or ambiguous suggestions lose their old code preview and remain explicitly selected but unavailable until the user returns to selection and deselects them. Already applied, unknown or inapplicable targets block another application. Recovery itself never writes or infers success for a subset. + +Pending reads/writes disable input, cancellation, back navigation and duplicate confirmation. Account or MR replacement hides the old source and cancels undispatched follow-up reads and writes. Late errors, success feedback and refreshes cannot affect the replacement view. A request already accepted by GitLab cannot be undone by view replacement. These are returned-state checks, not a branch SHA guard, rollback or a client guarantee that a server batch is atomic. Closing and reopening starts a new flow; it does not persist an uncertain-operation journal. + +All five locales use the same responsive dialog. Short windows with keyboard insets scroll the actions together with the content, including at doubled text size. Existing single suggestion application, comment drafts and original-diff context remain available. + +## Verification and synthetic captures + +Tests were written before the controller methods and batch entry action, and failed for those missing behaviors. A compact keyboard/large-text test then reproduced an action overflow before its layout fix. Controller/widget coverage includes exact selected subsets and drafts, all preflights before one batch, same-thread read deduplication, changed and duplicate patches, sparse/reordered or incomplete confirmation, reservations and pagination, account/view cancellation, success-only refreshes, complete staged read-only recovery and explicit missing-target presentation. Real repository tests cover subpath/PAT routing, null/empty/exact messages, returned server order and write replay protections. + +Layout tests cover five locales at 390, 800 and 1200 logical pixels in both themes and a 320 × 600 window with keyboard insets and doubled text. These captures use dummy fixtures and SDK fonts in Flutter widget tests. No live GitLab write, physical-device or store validation is claimed. Regenerate with `LABFOX_BATCH_UI_CAPTURE=` and `FLUTTER_ROOT=`, running `mr_suggestion_batch_application_test.dart` with the name filter `synthetic batch confirmation capture`. Mobile content scrolls to reveal the remaining patch and commit message. + +| Layout | Light | Dark | +|---|---|---| +| Mobile, 390 × 844 | [Capture](images/mr-suggestion-batch/batch-390-light.png) | [Capture](images/mr-suggestion-batch/batch-390-dark.png) | +| Desktop, 1200 × 900 | [Capture](images/mr-suggestion-batch/batch-1200-light.png) | [Capture](images/mr-suggestion-batch/batch-1200-dark.png) | + +References: [GitLab batch suggestion application](https://docs.gitlab.com/api/suggestions/#apply-multiple-suggestions), [MR discussion inspection](https://docs.gitlab.com/api/discussions/#retrieve-a-merge-request-discussion-item). Multiline original context and positioned thread creation remain separate parity slices. From 8f53b744e6646ccb95bc2ce9bdde2d8ddd320b8d Mon Sep 17 00:00:00 2001 From: sjungwon03 Date: Mon, 5 Oct 2026 05:22:35 +0900 Subject: [PATCH 2/2] docs(parity): link batch suggestion UI PR Link the complete batch UI slice and retain multiline review as the remaining parity follow-up. Signed-off-by: sjungwon03 --- docs/mobile-web-parity.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mobile-web-parity.md b/docs/mobile-web-parity.md index 40eaf5b2..48975b8e 100644 --- a/docs/mobile-web-parity.md +++ b/docs/mobile-web-parity.md @@ -57,7 +57,7 @@ issues and PRs. Keep it open until its full acceptance boundary is verified. | MW-04 | P1 | Member invitations, role/expiry changes, and removal for groups/projects. | Queued | Issue needed | | MW-05 | P0 | Issue/work-item editing, metadata, types, and validated state transitions. | In progress | [#329](https://github.com/Theorvane/labfox/issues/329), [PR #330](https://github.com/Theorvane/labfox/pull/330) shipped title and description editing; [#339](https://github.com/Theorvane/labfox/issues/339), [PR #340](https://github.com/Theorvane/labfox/pull/340) shipped due-date editing; [#341](https://github.com/Theorvane/labfox/issues/341), [PR #342](https://github.com/Theorvane/labfox/pull/342) shipped issue-label editing; [#343](https://github.com/Theorvane/labfox/issues/343), [PR #344](https://github.com/Theorvane/labfox/pull/344) shipped assignee editing; [#345](https://github.com/Theorvane/labfox/issues/345), [PR #346](https://github.com/Theorvane/labfox/pull/346) shipped milestone editing; [#347](https://github.com/Theorvane/labfox/issues/347), [PR #348](https://github.com/Theorvane/labfox/pull/348) shipped confidentiality; [#349](https://github.com/Theorvane/labfox/issues/349), [PR #350](https://github.com/Theorvane/labfox/pull/350) shipped discussion locking. Type-conversion compatibility and remaining work-item actions need separate issues. | | MW-06 | P1 | Boards and iterations: discover mobile-web behavior, then list/detail/mutations. | Queued | Issue needed | -| MW-07 | P0 | Advanced MR review: audit inline discussions/suggestions and finish missing review/approval flows. | In progress | [#552](https://github.com/Theorvane/labfox/issues/552), [PR #553](https://github.com/Theorvane/labfox/pull/553) prevent overlapping approval, merge, and other MR commands per project/IID, including while the repository resolves; failures release the reservation for explicit retry. [#554](https://github.com/Theorvane/labfox/issues/554), [PR #555](https://github.com/Theorvane/labfox/pull/555) add repository-session observation, pre-dispatch cancellation and late-result/error isolation, success-only current-session refresh/analytics/inbox effects, cancelled to-do outcomes without current-account toasts, and generation-owned duplicate reservations. Already dispatched server writes cannot be undone. [#556](https://github.com/Theorvane/labfox/issues/556), [PR #557](https://github.com/Theorvane/labfox/pull/557) add localized approval-read loading/error states, disabled approval toggles until successful reads, read-only retry, retained-data refresh protection, reactive new-session reads with stale-result isolation, and current-state toggle selection while preserving unavailable endpoint compatibility and independent merge controls. [#558](https://github.com/Theorvane/labfox/issues/558), [PR #559](https://github.com/Theorvane/labfox/pull/559) derives approval ownership from the authenticated account user ID and documented `approved_by` membership, ignores conflicting legacy current-user flags, and refreshes membership on account replacement. Regression coverage checks real toggle dispatch on mobile/desktop in both themes. [#560](https://github.com/Theorvane/labfox/issues/560), [PR #561](https://github.com/Theorvane/labfox/pull/561) validates successful approval responses before model parsing: explicit approver lists, complete user wrappers, positive integral user IDs, and nonnegative integral counts when present. Malformed reads become sanitized domain errors; status mapping precedes payload parsing. End-to-end widget tests verify blocked approval toggles and read-only recovery in both widths/themes, while unavailable endpoint compatibility remains intact. [#562](https://github.com/Theorvane/labfox/issues/562), [PR #563](https://github.com/Theorvane/labfox/pull/563) adds an account-bound, one-page MR discussion reader with generated grouped-note models and nullable resolution metadata. It preserves next-page headers without assuming totals or fetching ahead, rejects incomplete groups and nonadvancing cursors, and keeps HTTP failures distinct from sanitized parsing errors. Building on the API/models foundation, [#564](https://github.com/Theorvane/labfox/issues/564), [PR #565](https://github.com/Theorvane/labfox/pull/565) connects grouped MR replies to the detail-screen comments flow and aggregates resolution across all resolvable notes without claiming unknown states are resolved. The shared top-level composer refreshes discussion page one after posting; explicit load-more and read/page retries preserve groups and cursors. Account-bound reads/posts ignore late results, drafts reset when the session or resource changes, and resizing preserves the current draft. Five locales and narrow/compact/wide light/dark layouts are covered. [#566](https://github.com/Theorvane/labfox/issues/566), [PR #567](https://github.com/Theorvane/labfox/pull/567) adds the MR discussion reply API foundation: encoded thread/project paths, explicit IID routing, exact nonempty Markdown bodies, validated generated note responses, sanitized typed errors and no automatic authentication replay for the write. [#568](https://github.com/Theorvane/labfox/issues/568), [PR #569](https://github.com/Theorvane/labfox/pull/569) connects a localized inline reply composer to the selected discussion. One active reply preserves the top-level draft; cancel and write reservations prevent accidental overlaps. Replies preserve Markdown, retain failed drafts for explicit retry, refresh authoritative discussion page one and ignore old-session completions. Account/MR replacement resets the selection, resizing and pagination preserve current drafts, and a removed target restores top-level submission. Five locales and three widths in both themes are covered. [#570](https://github.com/Theorvane/labfox/issues/570), [PR #571](https://github.com/Theorvane/labfox/pull/571) adds known-state Resolve/Reopen controls and a strict account-bound mutation: encoded identity, explicit resolution, no redirects/authentication replay, and updated thread/state confirmation. Resolution shares comment/reply write reservations, preserves the top-level draft, retains localized permission/failure feedback for explicit retry, and refreshes discussions and MR detail only on current-session success. Unknown/nonresolvable states offer no toggle, and an active reply draft prevents resolution. [#572](https://github.com/Theorvane/labfox/issues/572), [PR #573](https://github.com/Theorvane/labfox/pull/573) preserves generated diff-note position metadata: original version SHAs, renamed paths, old/new text lines, multiline range endpoints and image/file types. Discussion reads, replies and resolution responses reject malformed or fractional coordinates before parsing; absent legacy fields remain unknown. [#574](https://github.com/Theorvane/labfox/issues/574), [PR #575](https://github.com/Theorvane/labfox/pull/575) adds paginated diff-version reads and an explicitly selected original unified-diff snapshot. Generated version/file models retain SHA triplets, renamed paths, raw text and nullable omission flags; absent files differ from empty snapshots. Identity/payload validation, status-first typed failures and no eager pagination or current-diff fallback are covered. [#576](https://github.com/Theorvane/labfox/issues/576) / [PR #577](https://github.com/Theorvane/labfox/pull/577) adds an expandable original-diff context beside positioned notes. It matches complete SHA triplets, both file paths and exact old/new single-line text coordinates; explicit older-page reads and read-only retries preserve drafts. The matched original hunk/line has an accessible non-color marker. Unsupported, omitted, truncated or ambiguous contexts remain unavailable without a current-diff fallback; account/resource replacement resets panels and stale reads cannot dispatch follow-up snapshots or affect the new session. Five locales, three widths and both themes are covered. Multiline context, positioned thread creation and suggestion application remain separate slices. [#578](https://github.com/Theorvane/labfox/issues/578), [PR #580](https://github.com/Theorvane/labfox/pull/580) adds the single-line positioned discussion creation API foundation: exact original SHA/path/line anchors, Markdown preservation, pre-dispatch argument validation, no redirects or authentication replay, created-thread confirmation and sanitized typed failures. The line selector/composer, multiline creation and suggestions remain separate. [#579](https://github.com/Theorvane/labfox/issues/579), [PR #581](https://github.com/Theorvane/labfox/pull/581) connects the latest authoritative diff-version snapshot to localized single-line selection and discussion creation. Exact original coordinates, indexed eligibility, shared write reservations, retained drafts, session/resource isolation and visible authoritative discussion inspection before uncertain-write retry are covered. The existing MR Changes route restores from project/IID; commit diffs stay read-only. Multiline context/creation and suggestion application remain separate. [#582](https://github.com/Theorvane/labfox/issues/582) / [PR #583](https://github.com/Theorvane/labfox/pull/583) adds typed immutable suggestion metadata to MR discussion responses, preserving original/replacement code, inclusive ranges, applied status and both documented applicability spellings. Missing states remain unknown; positive integral identities/coordinates, range order, response-wide uniqueness, content/flag types and alias agreement are validated before generated parsing. Suggestion presentation/application and multiline context/creation remain separate. [#584](https://github.com/Theorvane/labfox/issues/584) / [PR #585](https://github.com/Theorvane/labfox/pull/585) adds read-only suggestion previews beside user notes with exact selectable original/replacement code, nullable application/applicability states, localized ranges and empty/unavailable content, bounded code panes, retained drafts across resize/theme, and account/resource/metadata isolation. Suggestion application and batching remain separate. [#586](https://github.com/Theorvane/labfox/issues/586) / [PR #587](https://github.com/Theorvane/labfox/pull/587) adds the single-suggestion application API foundation with a positive global identity, exact optional commit messages, strict HTTP 200 and matching applied=true confirmation, shared metadata validation, typed sanitized failures, and no redirect/authentication replay. Application UI/session reservations and batch application remain separate. [#588](https://github.com/Theorvane/labfox/issues/588) / [PR #589](https://github.com/Theorvane/labfox/pull/589) adds explicit single-suggestion confirmation with literal code and optional commit messages, a fresh exact-discussion preflight, shared reservations including pagination, current-view/account isolation, confirmed-success detail/discussion/review-snapshot refreshes, and draft-preserving read-only recovery before uncertain-write retry. Five locales, three widths, both themes, keyboard insets and large text are covered. Batch application and multiline context/creation remain separate. [#590](https://github.com/Theorvane/labfox/issues/590) / [PR #591](https://github.com/Theorvane/labfox/pull/591) adds the batch suggestion API foundation: one account-bound request with immutable positive unique global IDs, exact optional messages, strict complete matching applied-state confirmation, preserved server order/nullable metadata, status-first sanitized failures, and no redirects, authentication replay or single-write fallback. Building on that API, [#592](https://github.com/Theorvane/labfox/issues/592) adds explicit loaded-target selection and multi-patch confirmation, deduplicated all-thread preflight before one batch, immutable selected identities, shared reservations, current-account/view isolation, complete staged read-only recovery, exact retained drafts and success-only refreshes. Five locales, three widths, both themes and compact keyboard/large-text layouts are covered; see [the batch UI](mr-suggestion-batch-ui.md). Multiline context/creation remains separate. | +| MW-07 | P0 | Advanced MR review: audit inline discussions/suggestions and finish missing review/approval flows. | In progress | [#552](https://github.com/Theorvane/labfox/issues/552), [PR #553](https://github.com/Theorvane/labfox/pull/553) prevent overlapping approval, merge, and other MR commands per project/IID, including while the repository resolves; failures release the reservation for explicit retry. [#554](https://github.com/Theorvane/labfox/issues/554), [PR #555](https://github.com/Theorvane/labfox/pull/555) add repository-session observation, pre-dispatch cancellation and late-result/error isolation, success-only current-session refresh/analytics/inbox effects, cancelled to-do outcomes without current-account toasts, and generation-owned duplicate reservations. Already dispatched server writes cannot be undone. [#556](https://github.com/Theorvane/labfox/issues/556), [PR #557](https://github.com/Theorvane/labfox/pull/557) add localized approval-read loading/error states, disabled approval toggles until successful reads, read-only retry, retained-data refresh protection, reactive new-session reads with stale-result isolation, and current-state toggle selection while preserving unavailable endpoint compatibility and independent merge controls. [#558](https://github.com/Theorvane/labfox/issues/558), [PR #559](https://github.com/Theorvane/labfox/pull/559) derives approval ownership from the authenticated account user ID and documented `approved_by` membership, ignores conflicting legacy current-user flags, and refreshes membership on account replacement. Regression coverage checks real toggle dispatch on mobile/desktop in both themes. [#560](https://github.com/Theorvane/labfox/issues/560), [PR #561](https://github.com/Theorvane/labfox/pull/561) validates successful approval responses before model parsing: explicit approver lists, complete user wrappers, positive integral user IDs, and nonnegative integral counts when present. Malformed reads become sanitized domain errors; status mapping precedes payload parsing. End-to-end widget tests verify blocked approval toggles and read-only recovery in both widths/themes, while unavailable endpoint compatibility remains intact. [#562](https://github.com/Theorvane/labfox/issues/562), [PR #563](https://github.com/Theorvane/labfox/pull/563) adds an account-bound, one-page MR discussion reader with generated grouped-note models and nullable resolution metadata. It preserves next-page headers without assuming totals or fetching ahead, rejects incomplete groups and nonadvancing cursors, and keeps HTTP failures distinct from sanitized parsing errors. Building on the API/models foundation, [#564](https://github.com/Theorvane/labfox/issues/564), [PR #565](https://github.com/Theorvane/labfox/pull/565) connects grouped MR replies to the detail-screen comments flow and aggregates resolution across all resolvable notes without claiming unknown states are resolved. The shared top-level composer refreshes discussion page one after posting; explicit load-more and read/page retries preserve groups and cursors. Account-bound reads/posts ignore late results, drafts reset when the session or resource changes, and resizing preserves the current draft. Five locales and narrow/compact/wide light/dark layouts are covered. [#566](https://github.com/Theorvane/labfox/issues/566), [PR #567](https://github.com/Theorvane/labfox/pull/567) adds the MR discussion reply API foundation: encoded thread/project paths, explicit IID routing, exact nonempty Markdown bodies, validated generated note responses, sanitized typed errors and no automatic authentication replay for the write. [#568](https://github.com/Theorvane/labfox/issues/568), [PR #569](https://github.com/Theorvane/labfox/pull/569) connects a localized inline reply composer to the selected discussion. One active reply preserves the top-level draft; cancel and write reservations prevent accidental overlaps. Replies preserve Markdown, retain failed drafts for explicit retry, refresh authoritative discussion page one and ignore old-session completions. Account/MR replacement resets the selection, resizing and pagination preserve current drafts, and a removed target restores top-level submission. Five locales and three widths in both themes are covered. [#570](https://github.com/Theorvane/labfox/issues/570), [PR #571](https://github.com/Theorvane/labfox/pull/571) adds known-state Resolve/Reopen controls and a strict account-bound mutation: encoded identity, explicit resolution, no redirects/authentication replay, and updated thread/state confirmation. Resolution shares comment/reply write reservations, preserves the top-level draft, retains localized permission/failure feedback for explicit retry, and refreshes discussions and MR detail only on current-session success. Unknown/nonresolvable states offer no toggle, and an active reply draft prevents resolution. [#572](https://github.com/Theorvane/labfox/issues/572), [PR #573](https://github.com/Theorvane/labfox/pull/573) preserves generated diff-note position metadata: original version SHAs, renamed paths, old/new text lines, multiline range endpoints and image/file types. Discussion reads, replies and resolution responses reject malformed or fractional coordinates before parsing; absent legacy fields remain unknown. [#574](https://github.com/Theorvane/labfox/issues/574), [PR #575](https://github.com/Theorvane/labfox/pull/575) adds paginated diff-version reads and an explicitly selected original unified-diff snapshot. Generated version/file models retain SHA triplets, renamed paths, raw text and nullable omission flags; absent files differ from empty snapshots. Identity/payload validation, status-first typed failures and no eager pagination or current-diff fallback are covered. [#576](https://github.com/Theorvane/labfox/issues/576) / [PR #577](https://github.com/Theorvane/labfox/pull/577) adds an expandable original-diff context beside positioned notes. It matches complete SHA triplets, both file paths and exact old/new single-line text coordinates; explicit older-page reads and read-only retries preserve drafts. The matched original hunk/line has an accessible non-color marker. Unsupported, omitted, truncated or ambiguous contexts remain unavailable without a current-diff fallback; account/resource replacement resets panels and stale reads cannot dispatch follow-up snapshots or affect the new session. Five locales, three widths and both themes are covered. Multiline context, positioned thread creation and suggestion application remain separate slices. [#578](https://github.com/Theorvane/labfox/issues/578), [PR #580](https://github.com/Theorvane/labfox/pull/580) adds the single-line positioned discussion creation API foundation: exact original SHA/path/line anchors, Markdown preservation, pre-dispatch argument validation, no redirects or authentication replay, created-thread confirmation and sanitized typed failures. The line selector/composer, multiline creation and suggestions remain separate. [#579](https://github.com/Theorvane/labfox/issues/579), [PR #581](https://github.com/Theorvane/labfox/pull/581) connects the latest authoritative diff-version snapshot to localized single-line selection and discussion creation. Exact original coordinates, indexed eligibility, shared write reservations, retained drafts, session/resource isolation and visible authoritative discussion inspection before uncertain-write retry are covered. The existing MR Changes route restores from project/IID; commit diffs stay read-only. Multiline context/creation and suggestion application remain separate. [#582](https://github.com/Theorvane/labfox/issues/582) / [PR #583](https://github.com/Theorvane/labfox/pull/583) adds typed immutable suggestion metadata to MR discussion responses, preserving original/replacement code, inclusive ranges, applied status and both documented applicability spellings. Missing states remain unknown; positive integral identities/coordinates, range order, response-wide uniqueness, content/flag types and alias agreement are validated before generated parsing. Suggestion presentation/application and multiline context/creation remain separate. [#584](https://github.com/Theorvane/labfox/issues/584) / [PR #585](https://github.com/Theorvane/labfox/pull/585) adds read-only suggestion previews beside user notes with exact selectable original/replacement code, nullable application/applicability states, localized ranges and empty/unavailable content, bounded code panes, retained drafts across resize/theme, and account/resource/metadata isolation. Suggestion application and batching remain separate. [#586](https://github.com/Theorvane/labfox/issues/586) / [PR #587](https://github.com/Theorvane/labfox/pull/587) adds the single-suggestion application API foundation with a positive global identity, exact optional commit messages, strict HTTP 200 and matching applied=true confirmation, shared metadata validation, typed sanitized failures, and no redirect/authentication replay. Application UI/session reservations and batch application remain separate. [#588](https://github.com/Theorvane/labfox/issues/588) / [PR #589](https://github.com/Theorvane/labfox/pull/589) adds explicit single-suggestion confirmation with literal code and optional commit messages, a fresh exact-discussion preflight, shared reservations including pagination, current-view/account isolation, confirmed-success detail/discussion/review-snapshot refreshes, and draft-preserving read-only recovery before uncertain-write retry. Five locales, three widths, both themes, keyboard insets and large text are covered. Batch application and multiline context/creation remain separate. [#590](https://github.com/Theorvane/labfox/issues/590) / [PR #591](https://github.com/Theorvane/labfox/pull/591) adds the batch suggestion API foundation: one account-bound request with immutable positive unique global IDs, exact optional messages, strict complete matching applied-state confirmation, preserved server order/nullable metadata, status-first sanitized failures, and no redirects, authentication replay or single-write fallback. Building on that API, [#592](https://github.com/Theorvane/labfox/issues/592) / [PR #593](https://github.com/Theorvane/labfox/pull/593) adds explicit loaded-target selection and multi-patch confirmation, deduplicated all-thread preflight before one batch, immutable selected identities, shared reservations, current-account/view isolation, complete staged read-only recovery, exact retained drafts and success-only refreshes. Five locales, three widths, both themes and compact keyboard/large-text layouts are covered; see [the batch UI](mr-suggestion-batch-ui.md). Multiline context/creation remains separate. | | MW-08 | P1 | CI/CD configuration: pipeline editor, variables, triggers, schedule editing, and execution history. | In progress | [#423](https://github.com/Theorvane/labfox/issues/423), [PR #424](https://github.com/Theorvane/labfox/pull/424) cover timing editing; [#425](https://github.com/Theorvane/labfox/issues/425), [PR #426](https://github.com/Theorvane/labfox/pull/426) cover deletion; [#427](https://github.com/Theorvane/labfox/issues/427), [PR #428](https://github.com/Theorvane/labfox/pull/428) cover creation; [#429](https://github.com/Theorvane/labfox/issues/429), [PR #430](https://github.com/Theorvane/labfox/pull/430) cover ownership transfer; [#431](https://github.com/Theorvane/labfox/issues/431), [PR #432](https://github.com/Theorvane/labfox/pull/432) cover ref/active editing. These slices await review or maintainer merge. [#433](https://github.com/Theorvane/labfox/issues/433), [PR #434](https://github.com/Theorvane/labfox/pull/434) cover schedule-specific execution history in review: newest-first header pagination, retained rows/cursor on failed next pages, retry, run-now/refresh reload with inline errors, stale-request protection, and identifier-only pipeline navigation. History filters, variables/inputs, pipeline configuration editing, and triggers remain separate slices. | | MW-09 | P1 | Wiki creation/editing/deletion and history with conflict handling. | In progress | [#351](https://github.com/Theorvane/labfox/issues/351), [PR #352](https://github.com/Theorvane/labfox/pull/352) shipped Markdown page creation; [#353](https://github.com/Theorvane/labfox/issues/353), [PR #354](https://github.com/Theorvane/labfox/pull/354) shipped editing with best-effort stale-draft detection; [#373](https://github.com/Theorvane/labfox/issues/373), [PR #374](https://github.com/Theorvane/labfox/pull/374) shipped deletion with confirmation and best-effort stale-page detection; [#375](https://github.com/Theorvane/labfox/issues/375), [PR #376](https://github.com/Theorvane/labfox/pull/376) shipped Markdown template selection. [#377](https://github.com/Theorvane/labfox/issues/377), [PR #378](https://github.com/Theorvane/labfox/pull/378) cover template listing and creation in review. Page history and atomic conflict protection remain. The documented wiki REST API can retrieve a page by version SHA but does not list page history. | | MW-10 | P1 | Snippet creation/editing/deletion, files, and visibility. | In progress | [#355](https://github.com/Theorvane/labfox/issues/355), [PR #356](https://github.com/Theorvane/labfox/pull/356) shipped single-file project snippet creation; [#357](https://github.com/Theorvane/labfox/issues/357), [PR #358](https://github.com/Theorvane/labfox/pull/358) shipped deletion with confirmation; [#359](https://github.com/Theorvane/labfox/issues/359), [PR #360](https://github.com/Theorvane/labfox/pull/360) shipped title and description editing; [#361](https://github.com/Theorvane/labfox/issues/361), [PR #362](https://github.com/Theorvane/labfox/pull/362) shipped single-file content editing; [#363](https://github.com/Theorvane/labfox/issues/363), [PR #364](https://github.com/Theorvane/labfox/pull/364) shipped private/public visibility editing; [#365](https://github.com/Theorvane/labfox/issues/365), [PR #366](https://github.com/Theorvane/labfox/pull/366) shipped multi-file content editing; [#367](https://github.com/Theorvane/labfox/issues/367), [PR #368](https://github.com/Theorvane/labfox/pull/368) shipped adding a file; [#369](https://github.com/Theorvane/labfox/issues/369), [PR #370](https://github.com/Theorvane/labfox/pull/370) shipped deleting a file; [#371](https://github.com/Theorvane/labfox/issues/371), [PR #372](https://github.com/Theorvane/labfox/pull/372) shipped moving and renaming a file. Broader visibility management remains. |