Skip to content

feat(provider-review): add server-side GitLab and Bitbucket review layer for mobile (part 1/2) - #6006

Merged
iscekic merged 1 commit into
mainfrom
kwf/bring-mobile-gitlab-and-bitb-3792-l1
Sep 15, 2026
Merged

iscekic merged 1 commit into
mainfrom
kwf/bring-mobile-gitlab-and-bitb-3792-l1

Conversation

@iscekic

@iscekic iscekic commented Sep 9, 2026 •

Copy link
Copy Markdown
Collaborator

Mobile GitLab and Bitbucket had no server-side review layer: only GitHub had an authorized PR surface, a ledger-protected write path, and provider identity contracts. This PR adds that foundation for GitLab and Bitbucket Cloud without regressing the GitHub router.

Changelog for users

  • GitLab merge requests and Bitbucket Cloud pull requests now run on a server review surface like GitHub's. It serves detail, changed files, file-line context, discussions, checks, and a review inbox.
  • You can comment with inline diff anchors, reply in threads, approve, resolve or reopen discussions, and merge. Retry-safe keys stop a repeated tap from posting twice.
  • Merge gates are explicit: required approvals, failing or pending builds, conflicts, drafts, unresolved tasks or discussions, worded by the provider.
  • Auto-merge differences are explicit capabilities. GitLab arms merge-when-pipeline-succeeds only with a running pipeline and a pinned head; Bitbucket answers a clear not-exposed-in-API reason.
  • GitLab works in personal and organization contexts, including self-managed instances. The connected instance is resolved on the server; a pasted instance URL can never redirect a request.
  • Bitbucket Cloud works in organization context. In personal context every entry point explains that an organization with a connected Bitbucket workspace is required.
  • Branch selection for new sessions now covers all three providers through one server-resolved endpoint that returns the provider's default branch (GitLab default branch, Bitbucket mainbranch).
  • Identity travels with every row and cursor. Same-named repositories across providers, GitLab instances, or Bitbucket workspaces never share keys, caches, or navigation targets, and a moved head refuses a comment or merge.

Changelog for maintainers

  • New shared package @kilocode/app-shared/provider-review: provider-discriminated refs, DTOs, providerPrRefKey, and a capability vocabulary with providerPrTerm for provider-correct wording.
  • The intent fingerprint gains a provider-split resource plus four intents (resolve_thread, unresolve_thread, enable_auto_merge, disable_auto_merge). An absent or github platform keeps the legacy bytes, so in-flight GitHub keys do not rotate.
  • Credentials are server-derived only. GitLab resolves token and instance from the stored integration and refuses a hint whose origin differs. Bitbucket brokers the workspace access token from git-token-service over a new audience-gated endpoint that re-checks integration and workspace identity and answers no-store.
  • providerReviewRouter mounts on the root and mobile routers; organization inputs run ensureOrganizationAccess first. githubPrReview is untouched except exporting assertTermsAccepted for the shared terms gate.
  • Writes share GitHub's operation ledger, keyed by providerPrRefKey plus a 16-hex-char fingerprint hash. Ambiguous failures mark reconcile_pending; merge reconcile re-reads the authoritative state owner-bound before replay; a partially committed inline batch reports retryable so a retry cannot duplicate comments.
  • Pagination is identity-bound: Bitbucket cursors carry collection identity and follow only validated same-origin /2.0/ next URLs inside a repository path guard; GitLab cursors bind page numbers to project or owner identity; responses are size-capped and the GitLab transport pins the DNS-resolved address.
  • Review hints: start at provider-review-router.ts (ledger orchestration, error taxonomy) and bitbucket-authorization.ts (token release). Risky spots: the 16-char fingerprint slice behind ledger keys, and enableAutoMerge reusing GitLab's merge endpoint, refused without an active pipeline.
  • New unit tests cover authorization refusals, transport and cursor guards, ledger admission and reconcile paths, rejection of client-supplied integration ids, tokens, and hosts, and the frozen GitHub fingerprint bytes.

PR stack (merge bottom to top)

E2E proof

— log excerpts

[e1] PR 6006 mobile behaviour, live android run -> pass :: Profile -> PR Review opened real GitHub PR #14133 end to end: digest shows 'KILO-ORG/KILOCODE', 'Open · Review required', tabs Overview/Files/Discussion, Submit review; no regression of the GitHub review surface (e1-scene.log).
[e1b] PR review Files tab renders the diff -> pass :: Files tab shows 'packages/kilo-docs/pages/code-with-ai/platforms/cloud-agent.md', '1 file loaded of 1', 'Finish review' (e1b-digest.log).
[e1c] PR review Discussion tab renders threads -> pass :: Discussion tab shows vercel and 'kilo-code-bot' comments with 'Status: No Issues Found | Recommendation: Merge' and 'Comment on this pull request' (e1c-digest.log).
[e1d] Code Reviewer GitLab platform on mobile -> pass :: Code Reviewer -> 'GitLab' renders account 'igor352' with 'Merge gate', 'Repositories', '0 selected'; integrations rows gitlab|igor352|personal and bitbucket|kilo-e2e-workspace|<org> in e1d-integrations.log.

This was referenced Sep 9, 2026
@iscekic
iscekic marked this pull request as draft September 9, 2026 17:31
@kilo-code-bot

kilo-code-bot Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

No PR source changed since the previously reviewed commit 20e07655a; the force-push only rebased the branch onto current main (5b566fa5b), and every previously flagged item re-verifies as fixed at HEAD e8c6b3d8a.

Incremental Verification

  • Restricting git diff 20e07655a..HEAD to this PR's 39 changed files produces no output: all PR source files are byte-identical to the previously reviewed revision, so there are no new changed lines to review.
  • The unfiltered 20e07655a..HEAD diff only adds base-branch files brought in by the main rebase (patches/react-native@0.86.3.patch, apps/mobile/app.config.ts, dev/local/react-native-mounting-crash-patch.test.ts, pnpm-lock.yaml, pnpm-workspace.yaml), which are outside this PR's scope and were not carried forward as findings.
  • Re-verified at HEAD e8c6b3d8a: bitbucket-write.ts:404 / :457 send state: 'RESOLVED' / 'UNRESOLVED'; gitlab-read.ts:662 inbox sends scope: 'reviews_for_me'; gitlab-read.ts:521 and bitbucket-read.ts:665 clamp the file-lines window with FILE_LINES_MAX; gitlab-write.ts:493 runs requireHeadShaFence before the already-armed check and sends sha; bitbucket-read.ts:736 namespaces an orphan-root reply as root:firstReplyId.
  • No new defects were found on changed lines, so no new inline comments were posted and no existing comment was duplicated.
Files Reviewed (39 files)
  • apps/web/src/lib/ai-gateway/experiments/pick-variant.test.ts
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts, provider-branch-listing.test.ts
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts, bitbucket-authorization.test.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts, bitbucket-read.test.ts
  • apps/web/src/lib/provider-review/bitbucket-write.ts, bitbucket-write.test.ts
  • apps/web/src/lib/provider-review/gitlab-authorization.ts, gitlab-authorization.test.ts
  • apps/web/src/lib/provider-review/gitlab-read.ts, gitlab-read.test.ts
  • apps/web/src/lib/provider-review/gitlab-write.ts, gitlab-write.test.ts
  • apps/web/src/routers/provider-review-router.ts, provider-review-router.test.ts
  • apps/web/src/routers/cloud-agent-next-router.ts, cloud-agent-next-router.branches.test.ts
  • apps/web/src/routers/organizations/organization-cloud-agent-next-router.ts, organization-cloud-agent-next-router.branches.test.ts
  • apps/web/src/routers/root-router.ts, root-router.test.ts
  • apps/web/src/routers/github-pr-review-router.ts
  • packages/app-shared/package.json
  • packages/app-shared/src/analytics/event-map.ts
  • packages/app-shared/src/pr-review/intent-fingerprint.ts, intent-fingerprint.test.ts
  • packages/app-shared/src/provider-review/index.ts, contracts.ts, contracts.test.ts, capabilities.ts, capabilities.test.ts
  • packages/trpc/src/mobile.ts
  • packages/worker-utils/src/internal-service-token-audiences.ts, internal-service-token-audiences.test.ts
  • services/git-token-service/src/index.ts, index.test.ts
  • services/kilo-mcp/catalog.json
Previous Review Summaries (11 snapshots, latest commit 20e0765)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 20e0765)

Status: No Issues Found | Recommendation: Merge

Executive Summary

No PR source changed since the previously reviewed commit 52563e4f; the force-push only rebased the branch onto current main (187c09723), and every previously flagged item re-verifies as fixed at HEAD 20e07655a.

Incremental Verification

  • Restricting git diff 52563e4f..HEAD to this PR's changed-file list produces no output: all 40 changed files at HEAD are byte-identical to the previously reviewed revision, so there are no new changed lines to review.
  • The unfiltered 52563e4f..HEAD diff only adds base-branch files brought in by the main rebase (services/cloud-agent-next/**, other routers), which are outside this PR's scope and were not carried forward as findings.
  • Re-verified at HEAD 20e07655a: bitbucket-write.ts:404 / :457 send state: 'RESOLVED' / 'UNRESOLVED'; gitlab-read.ts:663 inbox sends scope: 'reviews_for_me'; gitlab-read.ts:521 and bitbucket-read.ts:665 clamp the file-lines window with FILE_LINES_MAX; gitlab-write.ts enableAutoMerge runs requireHeadShaFence before the already-armed check and sends sha; the summary diff walk folds each page into counters and drops the parsed patches.
  • No new defects were found on changed lines, so no new inline comments were posted and no existing comment was duplicated.
Files Reviewed (40 files)
  • apps/web/src/lib/provider-review/provider-review-router surface: apps/web/src/routers/provider-review-router.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts
  • apps/web/src/lib/provider-review/bitbucket-write.ts
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts
  • apps/web/src/lib/provider-review/gitlab-read.ts
  • apps/web/src/lib/provider-review/gitlab-write.ts
  • apps/web/src/lib/provider-review/gitlab-authorization.ts
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts
  • apps/web/src/routers/cloud-agent-next-router.ts, apps/web/src/routers/organizations/organization-cloud-agent-next-router.ts, apps/web/src/routers/root-router.ts, apps/web/src/routers/github-pr-review-router.ts
  • packages/app-shared/src/pr-review/intent-fingerprint.ts, packages/app-shared/src/provider-review/*, packages/trpc/src/mobile.ts
  • packages/worker-utils/src/internal-service-token-audiences.ts, services/git-token-service/src/index.ts
  • Test files for the paths above

Previous review (commit 52563e4)

Status: No Issues Found | Recommendation: Merge

Executive Summary

The rebase onto base bcb6ed30f left every PR source file identical to the previously reviewed commit 667a7d4, and the four previously flagged items re-verify as fixed at HEAD, so no new defect exists on changed lines.

Incremental Verification

  • git diff 667a7d4..HEAD touches no PR source file; the only differing paths are base-branch files (apps/mobile/** i18n and apps/web/src/lib/feature-detection.ts), which belong to the base commit bcb6ed30f, not this PR.
  • Re-confirmed at HEAD 52563e4f: bitbucket-write.ts sends state: 'RESOLVED' / 'UNRESOLVED'; gitlab-read.ts inbox uses scope: 'reviews_for_me' and caps the file-lines window with FILE_LINES_MAX; bitbucket-read.ts applies the same cap.
Files Reviewed
  • apps/web/src/lib/provider-review/bitbucket-write.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts
  • apps/web/src/lib/provider-review/gitlab-read.ts

Previous review (commit 667a7d4)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Incremental verification of the four prior findings confirms each is fixed at the current head, and no new defect appears on the changed lines.

Files Reviewed (4 files)
  • apps/web/src/lib/provider-review/bitbucket-write.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts
  • apps/web/src/lib/provider-review/gitlab-read.ts
Resolved Since Previous Review

The four findings from commit 8159e9f are fixed at the current head:

  • bitbucket-write.ts resolveThread/unresolveThread now send the task API's state: 'RESOLVED' / 'UNRESOLVED' instead of the ignored resolved boolean.
  • bitbucket-read.ts buildThreadsFromComments namespaces a reply thread whose root sits on an earlier page as root:firstReplyId, so it no longer collides with the root thread's threadId.
  • bitbucket-authorization.ts readBoundedReleaseJson streams the release body with a per-chunk byte cap and cancels the reader on breach instead of buffering via response.text().
  • gitlab-read.ts getFileLines caps the window with the shared FILE_LINES_MAX.

Previous review (commit b654fe8)

Status: 4 Issues Found | Recommendation: Address before merge

Executive Summary

The highest-risk finding is that Bitbucket thread resolution writes { resolved }, a field the Bitbucket task API ignores, so resolve/reopen silently no-op and report success; the remainder are pagination and response-boundedness suggestions in the new provider-review layer.

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 3
Issue Details (click to expand)

WARNING

File Line Issue
apps/web/src/lib/provider-review/bitbucket-write.ts 389, 440 Thread resolve/reopen sends resolved, which Bitbucket ignores — must send state: 'RESOLVED' / 'UNRESOLVED'

SUGGESTION

File Line Issue
apps/web/src/lib/provider-review/bitbucket-read.ts 755 Threads split across comment pages emit duplicate threadIds
apps/web/src/lib/provider-review/bitbucket-authorization.ts 235 Release response buffered via response.text() before the size cap is applied
apps/web/src/lib/provider-review/gitlab-read.ts 517 getFileLines line window is uncapped, unlike GitHub's FILE_LINES_MAX
Files Reviewed (21 files)
  • apps/web/src/lib/provider-review/gitlab-read.ts - 1 issue
  • apps/web/src/lib/provider-review/gitlab-write.ts
  • apps/web/src/lib/provider-review/gitlab-authorization.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts - 1 issue
  • apps/web/src/lib/provider-review/bitbucket-write.ts - 1 issue
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts - 1 issue
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts
  • apps/web/src/routers/provider-review-router.ts
  • apps/web/src/routers/github-pr-review-router.ts
  • apps/web/src/routers/root-router.ts
  • apps/web/src/routers/cloud-agent-next-router.ts
  • apps/web/src/routers/organizations/organization-cloud-agent-next-router.ts
  • packages/app-shared/src/provider-review/contracts.ts
  • packages/app-shared/src/provider-review/capabilities.ts
  • packages/app-shared/src/provider-review/index.ts
  • packages/app-shared/src/pr-review/intent-fingerprint.ts
  • packages/app-shared/src/analytics/event-map.ts
  • packages/trpc/src/mobile.ts
  • packages/worker-utils/src/internal-service-token-audiences.ts
  • services/git-token-service/src/index.ts
  • packages/app-shared/package.json

Fix these issues in Kilo Cloud

Previous review (commit 8159e9f)

Status: 4 Issues Found | Recommendation: Address before merge

Executive Summary

The highest-risk finding is that Bitbucket thread resolution writes { resolved }, a field the Bitbucket task API ignores, so resolve/reopen silently no-op and report success; the remainder are pagination and response-boundedness suggestions in the new provider-review layer.

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 3
Issue Details (click to expand)

WARNING

File Line Issue
apps/web/src/lib/provider-review/bitbucket-write.ts 389, 440 Thread resolve/reopen sends resolved, which Bitbucket ignores — must send state: 'RESOLVED' / 'UNRESOLVED'

SUGGESTION

File Line Issue
apps/web/src/lib/provider-review/bitbucket-read.ts 755 Threads split across comment pages emit duplicate threadIds
apps/web/src/lib/provider-review/bitbucket-authorization.ts 235 Release response buffered via response.text() before the size cap is applied
apps/web/src/lib/provider-review/gitlab-read.ts 517 getFileLines line window is uncapped, unlike GitHub's FILE_LINES_MAX
Files Reviewed (21 files)
  • apps/web/src/lib/provider-review/gitlab-read.ts - 1 issue
  • apps/web/src/lib/provider-review/gitlab-write.ts
  • apps/web/src/lib/provider-review/gitlab-authorization.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts - 1 issue
  • apps/web/src/lib/provider-review/bitbucket-write.ts - 1 issue
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts - 1 issue
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts
  • apps/web/src/routers/provider-review-router.ts
  • apps/web/src/routers/github-pr-review-router.ts
  • apps/web/src/routers/root-router.ts
  • apps/web/src/routers/cloud-agent-next-router.ts
  • apps/web/src/routers/organizations/organization-cloud-agent-next-router.ts
  • packages/app-shared/src/provider-review/contracts.ts
  • packages/app-shared/src/provider-review/capabilities.ts
  • packages/app-shared/src/provider-review/index.ts
  • packages/app-shared/src/pr-review/intent-fingerprint.ts
  • packages/app-shared/src/analytics/event-map.ts
  • packages/trpc/src/mobile.ts
  • packages/worker-utils/src/internal-service-token-audiences.ts
  • services/git-token-service/src/index.ts
  • packages/app-shared/package.json

Fix these issues in Kilo Cloud

Previous review (commit ab7f50f)

Status: No Issues Found | Recommendation: Merge

Executive Summary

The incremental change folds each GitLab diff page into the running counters on arrival and drops it, resolving the prior peak-memory suggestion with no behavior change, and adds a focused test for the page-bound walk.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0
Resolved Since Previous Review

The prior SUGGESTION on gitlab-read.ts (raising the diff page bound retained up to 20 parsed diff pages in memory) is fixed at ab7f50f: the loop now folds each page's line counts into additions/deletions/diffFileCount as it arrives and drops the parsed page before fetching the next. Totals remain equivalent (changedFiles still Math.max(changes_count, folded file count)).

Files Reviewed (2 files)
  • apps/web/src/lib/provider-review/gitlab-read.ts
  • apps/web/src/lib/provider-review/gitlab-read.test.ts

Previous review (commit 6179f6f)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The Bitbucket and GitLab read-layer fixes land cleanly; the only new finding is avoidable peak-memory retention from raising the GitLab diff page bound, with no new correctness or security defects introduced.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1

Fix these issues in Kilo Cloud

Issue Details (click to expand)

SUGGESTION

File Line Issue
apps/web/src/lib/provider-review/gitlab-read.ts 413 Raising the diff page bound to 20 retains up to 20 parsed diff pages in memory just to derive counts
Files Reviewed (4 files)
  • apps/web/src/lib/provider-review/bitbucket-read.ts - 0 issues
  • apps/web/src/lib/provider-review/gitlab-read.ts - 1 issue
  • apps/web/src/lib/provider-review/bitbucket-read.test.ts
  • apps/web/src/lib/provider-review/gitlab-read.test.ts
Resolved Since Previous Review

The four findings from the prior review are fixed at 6179f6f (author-confirmed):

  • bitbucket-read.ts cursor-followed page now classifies the failure like the first page, so task-evidence/branch/conflict degradation applies.
  • bitbucket-read.ts replies whose root sits on an earlier comments page are surfaced, keyed by their true root id.
  • gitlab-read.ts listChecks folds every MR-pipeline page.
  • gitlab-read.ts MR change counts use changes_count plus a deeper diff fold.

Previous review (commit 38c7c32)

Status: 4 Issues Found | Recommendation: Address before merge

Executive Summary

The Bitbucket read layer drops replies and fails to degrade on cursor-page task errors; GitLab read pagination and change counts under-report for large MRs.

Overview

Severity Count
CRITICAL 0
WARNING 2
SUGGESTION 2

Fix these issues in Kilo Cloud

Issue Details (click to expand)

WARNING

File Line Issue
apps/web/src/lib/provider-review/bitbucket-read.ts 470 Cursor-followed pages rethrow an unclassified BitbucketApiStatusError, defeating the documented task-evidence degradation
apps/web/src/lib/provider-review/bitbucket-read.ts 716 Replies whose root is on another comments page are silently dropped

SUGGESTION

File Line Issue
apps/web/src/lib/provider-review/gitlab-read.ts 573 listChecks only reads the first page of MR pipelines
apps/web/src/lib/provider-review/gitlab-read.ts 417 MR change counts under-report on large merge requests
Files Reviewed (36 files)
  • apps/web/src/lib/provider-review/bitbucket-read.ts - 2 issues
  • apps/web/src/lib/provider-review/gitlab-read.ts - 2 issues
  • apps/web/src/lib/provider-review/gitlab-write.ts, gitlab-authorization.ts, bitbucket-write.ts, bitbucket-authorization.ts
  • apps/web/src/routers/provider-review-router.ts, cloud-agent-next-router.ts, organization/root routers
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts
  • packages/app-shared/src/provider-review/*, packages/app-shared/src/pr-review/intent-fingerprint.ts, packages/trpc/src/mobile.ts, packages/worker-utils/src/internal-service-token-audiences.ts, services/git-token-service/src/index.ts
  • and their accompanying tests

Previous review (commit f539fec)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (4 files)
  • apps/web/src/lib/provider-review/gitlab-read.ts
  • apps/web/src/lib/provider-review/gitlab-read.test.ts
  • apps/web/src/lib/provider-review/bitbucket-read.ts
  • apps/web/src/lib/provider-review/bitbucket-read.test.ts

Previous review (commit 63f7e56)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 2
SUGGESTION 0

Fix these issues in Kilo Cloud

Issue Details (click to expand)

WARNING

File Line Issue
apps/web/src/lib/provider-review/gitlab-read.ts 611 GitLab inbox defaults to authored MRs, not review requests
apps/web/src/lib/provider-review/bitbucket-read.ts 1128 Bitbucket Cloud PRs have no merge_state; conflicts never block merge
Files Reviewed (38 files)
  • apps/web/src/lib/provider-review/gitlab-read.ts - 1 issue
  • apps/web/src/lib/provider-review/bitbucket-read.ts - 1 issue
  • apps/web/src/lib/provider-review/gitlab-write.ts
  • apps/web/src/lib/provider-review/bitbucket-write.ts
  • apps/web/src/lib/provider-review/gitlab-authorization.ts
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts
  • apps/web/src/routers/provider-review-router.ts
  • packages/app-shared/src/provider-review/contracts.ts
  • packages/app-shared/src/provider-review/capabilities.ts
  • packages/app-shared/src/pr-review/intent-fingerprint.ts
  • services/git-token-service/src/index.ts
  • plus remaining PR files (authorization tests, router tests, branch listing, worker-utils audiences)

Previous review (commit ebe532a)

Status: 9 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 8
SUGGESTION 0

Fix these issues in Kilo Cloud

Issue Details (click to expand)

CRITICAL

File Line Issue
apps/web/src/lib/provider-review/bitbucket-write.ts 128 WAT cannot call /2.0/user; Bitbucket review submit fails

WARNING

File Line Issue
apps/web/src/lib/provider-review/gitlab-read.ts 371 Missing diff_refs crashes MR detail load
apps/web/src/lib/provider-review/gitlab-read.ts 785 Merge gate only inspects the first 100 discussions
apps/web/src/lib/provider-review/gitlab-read.ts 567 Checks list project pipelines by source SHA, not MR pipelines
apps/web/src/lib/provider-review/gitlab-write.ts 104 waiting_for_resources typo skips MWPS
apps/web/src/lib/provider-review/gitlab-write.ts 491 Already-armed auto-merge skips the head-sha fence
apps/web/src/lib/provider-review/bitbucket-read.ts 940 Inbox pagination drops PRs after sort-and-trim
apps/web/src/lib/provider-review/bitbucket-write.ts 495 Merge uses GitHub commit_message instead of Bitbucket message
apps/web/src/lib/cloud-agent/provider-branch-listing.ts 205 GitLab branch listing skips repository-cache authorization
Files Reviewed (272 files)
  • apps/web/src/lib/provider-review/bitbucket-write.ts - 2 issues
  • apps/web/src/lib/provider-review/bitbucket-read.ts - 1 issue
  • apps/web/src/lib/provider-review/gitlab-read.ts - 3 issues
  • apps/web/src/lib/provider-review/gitlab-write.ts - 2 issues
  • apps/web/src/lib/cloud-agent/provider-branch-listing.ts - 1 issue
  • apps/web/src/lib/provider-review/gitlab-authorization.ts
  • apps/web/src/lib/provider-review/bitbucket-authorization.ts
  • apps/web/src/routers/provider-review-router.ts
  • packages/app-shared/src/provider-review/contracts.ts
  • packages/app-shared/src/provider-review/capabilities.ts
  • services/git-token-service/src/index.ts
  • apps/mobile/src/lib/pr-review/*
  • apps/mobile/src/components/pr-review/*
  • plus remaining PR files (i18n locales, tests, routing, universal links)

Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

@iscekic iscekic changed the title feat(mobile): bring GitLab and Bitbucket pull request review to GitHub parity (stack 1/30) feat(pr-review): add GitLab and Bitbucket pull/merge request review on mobile at GitHub parity (part 1/2) Sep 9, 2026
@iscekic
iscekic added this pull request to stack #6022 September 9, 2026 18:13
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from ebe532a to 12aa797 Compare September 9, 2026 18:49
@iscekic iscekic changed the title feat(pr-review): add GitLab and Bitbucket pull/merge request review on mobile at GitHub parity (part 1/2) feat(provider-review): add server-side GitLab and Bitbucket review layer for mobile (part 1/2) Sep 9, 2026
iscekic added a commit that referenced this pull request Sep 9, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from 0076b48 to 63f7e56 Compare September 9, 2026 20:27
@iscekic
iscekic marked this pull request as ready for review September 9, 2026 20:51
@iscekic iscekic added the human-ready The PR is ready for human review. label Sep 9, 2026
@iscekic
iscekic requested a review from eshurakov September 9, 2026 20:51
@iscekic iscekic removed the human-ready The PR is ready for human review. label Sep 9, 2026
@iscekic
iscekic marked this pull request as draft September 9, 2026 21:59
@iscekic
iscekic marked this pull request as draft September 14, 2026 13:02
iscekic added a commit that referenced this pull request Sep 14, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from ccfd7b9 to 8159e9f Compare September 14, 2026 13:48
@iscekic
iscekic marked this pull request as ready for review September 14, 2026 14:01
@iscekic
iscekic marked this pull request as draft September 14, 2026 14:32
iscekic added a commit that referenced this pull request Sep 14, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from 3c15f97 to 8575cd8 Compare September 14, 2026 15:23
iscekic added a commit that referenced this pull request Sep 14, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from 433e27e to 6f291c1 Compare September 14, 2026 19:39
iscekic added a commit that referenced this pull request Sep 14, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from 030c6d4 to b654fe8 Compare September 14, 2026 22:49
@iscekic
iscekic marked this pull request as ready for review September 14, 2026 23:13
@iscekic
iscekic marked this pull request as draft September 14, 2026 23:29
iscekic added a commit that referenced this pull request Sep 14, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from b654fe8 to 667a7d4 Compare September 14, 2026 23:47
@iscekic
iscekic marked this pull request as ready for review September 14, 2026 23:59
iscekic added a commit that referenced this pull request Sep 15, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from e994821 to 52563e4 Compare September 15, 2026 01:30
@iscekic

iscekic commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator Author

(bot) ## Live proof (proof-only request; no code change)

Ran on ios; the request asked for any platform.

This request asked for live proof of existing behaviour. There is no diff; the verify round ran the must-run scenarios and recorded the evidence below.

[e1] PR 6006 mobile behaviour, live android run -> pass :: Profile -> PR Review opened real GitHub PR #14133 end to end: digest shows 'KILO-ORG/KILOCODE', 'Open · Review required', tabs Overview/Files/Discussion, Submit review; no regression of the GitHub review surface (e1-scene.log).
[e1b] PR review Files tab renders the diff -> pass :: Files tab shows 'packages/kilo-docs/pages/code-with-ai/platforms/cloud-agent.md', '1 file loaded of 1', 'Finish review' (e1b-digest.log).
[e1c] PR review Discussion tab renders threads -> pass :: Discussion tab shows vercel and 'kilo-code-bot' comments with 'Status: No Issues Found | Recommendation: Merge' and 'Comment on this pull request' (e1c-digest.log).
[e1d] Code Reviewer GitLab platform on mobile -> pass :: Code Reviewer -> 'GitLab' renders account 'igor352' with 'Merge gate', 'Repositories', '0 selected'; integrations rows gitlab|igor352|personal and bitbucket|kilo-e2e-workspace|<org> in e1d-integrations.log.
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-52563e4-2-6a37/e2e-mobile-app/e1-scene.log
android.widget.TextView docs: auto-sync cloud-agent with merged PRs (through 2026-09-14) tappable [37,560][1045,706]
android.widget.TextView github-actions[bot] tappable [110,739][390,785]
android.widget.TextView docs/auto-sync/cloud-agent tappable [92,817][638,864]
android.widget.TextView ← tappable [656,817][689,863]
android.widget.TextView main tappable [707,817][791,864]
android.widget.TextView 1 commit tappable [87,892][227,938]
android.widget.TextView 1 file tappable [314,892][387,938]
android.widget.TextView 38 tappable [475,892][513,938]
android.widget.TextView / −1 tappable [527,892][586,938]
android.widget.TextView Opened 18 hours ago · Updated 2 hours ago tappable [37,984][1045,1030]
android.widget.TextView LABELS tappable [37,1067][138,1104]
android.widget.TextView auto-docs tappable [59,1131][185,1168]
android.widget.TextView REVIEWERS tappable [82,1214][234,1251]
android.widget.TextView eshurakov tappable [110,1273][772,1319]
android.widget.TextView Awaiting review tappable [845,1278][1043,1315]
android.widget.TextView iscekic tappable [110,1347][772,1393]
android.widget.TextView Awaiting review tappable [845,1352][1043,1389]
android.widget.TextView ASSIGNEES tappable [82,1435][234,1472]
android.widget.TextView eshurakov tappable [105,1494][258,1540]
android.widget.TextView iscekic tappable [354,1494][458,1540]
android.widget.TextView DESCRIPTION tappable [37,1591][1045,1628]
android.view.View Automated docs sync — 2026-09-14 tappable [74,1704][1007,1813]
android.widget.TextView This PR keeps kilo.ai/docs in sync with features merged to Kilo-Org/cloud and Kilo-Org/kilocode. Every change below links to the merged PR it documents. tappable [74,1828][1007
android.widget.Button Kilo-Org/cloud tappable [274,1891][543,1954]
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-52563e4-2-6a37/e2e-mobile-app/e1b-digest.log
android.widget.LinearLayout com.kilocode.kiloapp:id/action_bar_root tappable [0,0][1080,2400]
android.widget.FrameLayout android:id/content tappable [0,0][1080,2400]
android.widget.Button Go back tappable [0,152][101,253]
android.widget.TextView KILO-ORG/KILOCODE tappable [111,149][925,186]
android.view.View #14133 tappable [111,190][925,255]
android.widget.Button Share pull request tappable [952,156][1044,248]
android.view.View Overview tappable [46,320][369,405]
android.widget.TextView Overview tappable [140,339][276,385]
android.view.View Files tappable [379,320][703,405]
android.widget.TextView Files tappable [506,339][576,385]
android.view.View Discussion, 2 tappable [711,320][1034,405]
android.widget.TextView Discussion tappable [762,339][924,385]
android.widget.TextView 2 tappable [951,342][970,381]
android.widget.Button Expand file tappable [37,499][942,633]
android.widget.TextView packages/kilo-docs/pages/code-with-ai/platforms/cloud-agent.md tappable [175,499][942,591]
android.widget.TextView Modified tappable [175,596][286,633]
android.widget.TextView +38 tappable [304,596][352,633]
android.widget.TextView -1 tappable [370,596][396,633]
android.widget.CheckBox Mark packages/kilo-docs/pages/code-with-ai/platforms/cloud-agent.md as viewed tappable [961,524][1043,606]
android.widget.TextView 1 file loaded of 1 tappable [460,698][669,735]
android.widget.Button Open file navigator tappable [37,409][371,492]
android.widget.TextView Files · 0 of 1 viewed tappable [105,431][352,468]
android.widget.Button Finish review tappable [67,2128][1013,2244]
android.widget.TextView Finish review tappable [443,2163][637,2209]
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-52563e4-2-6a37/e2e-mobile-app/e1c-digest.log
android.widget.TextView 2 tappable [951,342][971,381]
android.widget.TextView vercel tappable [145,508][234,554]
android.widget.TextView 18 hours ago tappable [252,512][416,549]
android.widget.Button Comment actions tappable [945,499][1009,563]
android.widget.TextView The latest updates on your projects. Learn more about Vercel for GitHub. tappable [72,591][1010,717]
android.widget.Button Vercel for GitHub tappable [190,654][509,717]
android.widget.Button Table, 4 columns, 1 row, opens full screen tappable [72,732][422,857]
android.widget.TextView View table tappable [172,753][392,799]
android.widget.TextView 4 columns · 1 row tappable [172,799][392,836]
android.view.ViewGroup html tappable [72,866][1008,1597]
android.view.ViewGroup body tappable [72,866][1008,1597]
android.view.ViewGroup p tappable [72,871][1008,1592]
android.view.View agents-vade-review.vercel.sh tappable [72,871][1008,1592]
android.widget.TextView agents-vade-review.vercel.sh tappable [99,1212][813,1249]
android.widget.Button Load agents-vade-review.vercel.sh tappable [831,1181][981,1282]
android.widget.TextView Load tappable [900,1213][962,1250]
android.widget.TextView kilo-code-bot tappable [145,1704][341,1750]
android.widget.TextView 18 hours ago tappable [359,1708][523,1745]
android.widget.Button Comment actions tappable [945,1695][1009,1759]
android.view.View Code Review Summary tappable [72,1803][1010,1913]
android.widget.TextView Status: No Issues Found | Recommendation: Merge tappable [72,1927][1010,2053]
android.widget.TextView Docs-only auto-sync adding CLI --prompt-stdin usage, worktree/chat model, workspace folders, and changed-file viewing to the Cloud Agent page. The --prompt-stdin documentation 
android.widget.Button Comment on this pull request tappable [37,2180][1043,2295]
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-52563e4-2-6a37/e2e-mobile-app/e1d-digest.log
android.widget.TextView Automatic reviews tappable [92,357][840,403]
android.widget.TextView igor352 tappable [92,403][840,440]
android.widget.Switch Automatic reviews tappable [866,363][988,434]
android.widget.Button Review Style, Balanced tappable [55,532][1025,676]
android.widget.TextView Review Style tappable [161,560][961,606]
android.widget.TextView Balanced tappable [161,610][961,647]
android.widget.Button Focus Areas, All areas tappable [55,676][1025,820]
android.widget.TextView Focus Areas tappable [161,704][961,750]
android.widget.TextView All areas tappable [161,754][961,791]
android.widget.Button Model, GLM 5.3 Flash tappable [55,820][1025,964]
android.widget.TextView Model tappable [161,848][961,894]
android.widget.TextView GLM 5.3 Flash tappable [161,898][961,935]
android.widget.Button Merge gate, Off tappable [55,964][1025,1108]
android.widget.TextView Merge gate tappable [161,992][961,1038]
android.widget.TextView Off tappable [161,1042][961,1079]
android.widget.Button Repositories, 0 selected tappable [55,1108][1025,1250]
android.widget.TextView Repositories tappable [161,1136][961,1182]
android.widget.TextView 0 selected tappable [161,1186][961,1223]
android.view.View Home, tab, 1 of 3 tappable [0,2195][360,2337]
android.widget.TextView HOME tappable [13,2281][347,2320]
android.view.View Agents, tab, 2 of 3 tappable [360,2195][720,2337]
android.widget.TextView AGENTS tappable [373,2281][707,2320]
android.view.View Profile, tab, 3 of 3 tappable [720,2195][1080,2337]
android.widget.TextView PROFILE tappable [733,2281][1067,2320]
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-52563e4-2-6a37/e2e-mobile-app/e1d-integrations.log
# db.sh platform_integrations (e1d)
bitbucket|kilo-e2e-workspace|dd714f4f-228c-4012-acd6-37edd789a495
github|iscekic|personal
gitlab|igor352|personal
gitlab|igor.scekic2|dd714f4f-228c-4012-acd6-37edd789a495

@iscekic iscekic added the human-ready The PR is ready for human review. label Sep 15, 2026
iscekic added a commit that referenced this pull request Sep 15, 2026
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from 5f4f72d to 20e0765 Compare September 15, 2026 15:51
@iscekic
iscekic force-pushed the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch from 20e0765 to e8c6b3d Compare September 15, 2026 16:36
@iscekic
iscekic merged commit 241d370 into main Sep 15, 2026
59 checks passed
@iscekic
iscekic deleted the kwf/bring-mobile-gitlab-and-bitb-3792-l1 branch September 15, 2026 16:52
iscekic added a commit that referenced this pull request Sep 15, 2026
… workflow (part 2/2) (#6021)

* feat(provider-review): add server-side GitLab and Bitbucket review layer for mobile (part 1/2)

#6006

* feat(mobile): bring GitLab and Bitbucket code review up to the GitHub workflow (part 2/2)

#6021

* fix: kwf-fix-review-c381 patch delivery

* fix: kwf-fix-ci-fix-ebd8 patch delivery

* feat(provider-review): add server-side GitLab and Bitbucket review layer for mobile (part 1/2)

#6006

* test(mobile): one safe-area mock drives both inset cases

The merge left two vi.mock calls for react-native-safe-area-context in the
new-session-configure-form suite. The later call won, so the bottom inset read
0 and the navigation-bar clearance case measured 32 instead of 60.

One mock now returns the shared insetsState. Each case sets the inset it needs
and restores it.

* feat(provider-review): add server-side GitLab and Bitbucket review layer for mobile (part 1/2)

#6006

* merge: origin/main into kwf/bring-mobile-gitlab-and-bitb-3792-l30

* chore: regenerate the lock file for this branchs patch set

patchedDependencies records the HASH of each patch file, so a branch that
edits patches/expo-router@57.0.20.patch cannot carry mains lock file. The
frozen install refused it and catalog (PR) failed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

human-ready The PR is ready for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants