Repository navigation
feat(merge_requests): show original multiline discussion context - #595
Conversation
Verify the full original range endpoint identity and every available intervening hunk so multiline review never highlights a guessed or newer location; retain accessible markers, drafts and session isolation. Signed-off-by: sjungwon03 <sjungwon03@gmail.com>
Link the reviewed original multiline context and distinguish the remaining positioned range creation work. Signed-off-by: sjungwon03 <sjungwon03@gmail.com>
sjungwon03-ai
left a comment
There was a problem hiding this comment.
Review of commit 9cb3e76: Reviewed the original-version/path boundary, complete range endpoint validation, filename hash/raw counter identity, optional-coordinate handling, exact visible side membership, uniqueness and direction checks, complete contiguous hunk requirements, shared identity-based markers and localized range presentation. Same-side ranges exclude opposite-side rows; forward mixed ranges preserve unified order. Unsupported or gapped ranges never fall back to the legacy single-line anchor or newer files. Existing explicit version pagination, session/resource isolation and draft behavior remain covered. The read flow adds no mutation.
No blocking findings. Local validation passed 5,667 tests across five packages, including 72 new app/shared-viewer cases; 903 Dart files are formatted and analysis is clean. Locale delegates regenerate byte-for-byte. Test-first evidence includes absent range state/viewer support, optional-coordinate failures and oversized endpoint/hunk counter failures before fixes. Five locales, three widths and both themes, compact keyboard/doubled text, lifecycle/resize cases and four visually inspected synthetic captures cover presentation. The existing crypto version is used directly by the app after BSD-3-Clause license verification and notice updates, with no new package version. No live GitLab/device validation is claimed. Omitted blob context and reversed mixed-side endpoints remain unavailable; multiline positioned creation is separate. Final-head CI, current-head identity and review-thread resolution are verified before approval.
Summary
Original MR discussion context now resolves complete multiline text ranges and marks every inclusive covered line, alongside the existing single-line flow. Start/end line codes must match the exact original filename hash, raw counters, side metadata and any supplied visible coordinates. Same-side ranges exclude opposite-side rows; forward mixed-side ranges retain their unified-diff interval. Missing optional coordinates are resolved by the full code without inventing a legacy anchor.
Covered hunks must be complete and contiguous. Wrong, ambiguous, reversed, malformed or gapped spans remain unavailable without a newer-diff or single-line fallback. Shared viewer markers are accessible and independent of color. Existing explicit older-version pagination, account/resource isolation and comment drafts are retained in one responsive UI.
Closes #594
Validation
dart format .: 903 Dart files; no outstanding formatting changes.flutter analyze --no-pub: no issues.flutter gen-l10n.Checklist
dev; issue linked; conventional signed-off commits.cryptoversion added as a direct app dependency; BSD-3-Clause license verified, notices updated, and full package license collected by Flutter. No new version or lockfile change.Screenshots
Synthetic widget-test captures at
d279ad0119c02c23495ebb96ecada275d152af1e, using dummy same-path fixtures and SDK fonts. Renamed-path matching is covered by tests; the SDK-only capture font lacks the rename-arrow glyph.Notes for reviewers
This is read-only original context. No discussion creation or suggestion mutation is added. A range cannot cross omitted blob context, and reversed mixed-side endpoints are not reinterpreted. Full blob unfolding and multiline positioned thread creation remain separate work. Existing single-line original-context and shared viewer regressions pass.
See
docs/mr-discussion-context.md, GitLab multiline fields and line-code identity. Upstream filename/counter semantics were inspected; implementation code was independently written.