Skip to content

fix(integrations): keep the Open GitLab label on one line and reuse empty snapshots - #6488

Merged
iscekic merged 4 commits into
mainfrom
kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be
Sep 25, 2026
Merged

iscekic merged 4 commits into
mainfrom
kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be

Conversation

@iscekic

@iscekic iscekic commented Sep 21, 2026 •

Copy link
Copy Markdown
Collaborator

Changelog for users

  • The "Open GitLab" connect button shows its full label on one line instead of breaking into "Open" / "GitLab".
  • The label stays horizontally centered in the button, with the external-link icon at the leading edge.
  • GitHub and Bitbucket connect buttons keep the same single-line, centered label.
  • Tapping "Open GitLab" still starts the browser connect flow and returns to the repository picker.
  • A connected provider that reports no repositories renders the connected-empty card without reloading from the provider.
  • A failed provider repository request still shows the card's error state with Retry, and Retry recovers.

Changelog for maintainers

  • A new helper, shouldSyncProviderRepositories, decides whether a provider read must call the provider; a non-force read with a synced snapshot answers from cache even when that snapshot is empty.
  • The helper syncs when forceRefresh is set, when the cached snapshot is null, or when the list is empty and repositories_synced_at is null.
  • The GitHub and GitLab organization and user read helpers use the helper and map a null cache to [], relying on its guarantee of a non-null list when it returns false.
  • Where to look first: the integrations core types helper and the GitHub/GitLab repository read helpers.
  • Review hint: a provider that genuinely has zero repositories now renders the connected-empty card rather than an error from a live refetch, so check the empty-state copy.
  • Review hint: callers that depended on every read re-querying an empty cached list now receive the cached empty list unless they pass forceRefresh.
  • The mobile label sets numberOfLines={1}, flex-1, text-center, and the logical me-[24px]; keep the inline-end margin instead of mr- so RTL stays centered.
  • Coverage: the sync decision, the GitHub and GitLab synced-empty/never-synced/forced-refresh paths, and the mobile label props.

E2E proof

[e3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — android emulator-5554; with nextjs faulted the GitLab card renders the error state (e3-fault.log: 'android.view.View Couldn't load GitLab repositories tappable [234,1774][846,1839]' and 'android.widget.Button Retry tappable [461,1931][619,2047]'); no 'Open GitLab' line exists in that digest and the absent step passed (SCENE e3 OK); aftermath e3-recovery.txt shows tapping that Retry returned the card to 'Connect GitLab in your browser, then return here to pick a repository.' / text="Open GitLab" and 'Default environment', so the retry path recovers.

[e3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — prior/e3-recovery.png

new-session compose, GitLab connect card: collapsing the card removes the Open GitLab action and re-expanding brings the single-line label back (ends expanded, so run after the happy scenario) — e2.png

new-session compose, GitLab connect card: the wide outlined 'Open GitLab' button renders its two-word label on a single line (verifier reads the still to confirm one line, centred, glyph leading) — p1.png

ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab. — e8-allcards.png

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — android emulator-5554: on the new-session compose screen (e6-return-to-pick.txt still shows 'Open GitLab' / 'Connect GitLab' after return), tapping 'Open GitLab' opened the external browser (jev-drive-1789985613771.log: 'tapped "Open GitLab"') which loaded the Kilo web app connect page at 127.0.0.1:4600 (e6-browser-digest.txt: 'android.widget.TextView 127.0.0.1:4600', 'Customize and control Google Chrome', 'Development Login'), and the web app answered the unauthenticated browser request (e6-nextjs.log: 'AUTH-FAIL 401 (?): Unauthorized' then ' GET /api/user 401'); returning to the app left…

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — prior/e6-return-to-pick.png

ux-check: The 'Open GitLab' label is horizontally centered within its button, and the external-link glyph sits at the button's leading edge with the space to the left of the label equal to the space… — e5.png

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix).

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — prior/e6-before.png

[p3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — android emulator-5554; fixture: fault.sh down nextjs with the compose section mounting fresh on the fresh worktree-scoped empty account (the default account is connected and renders no connect card), nextjs restored after; p3-scene.log 'SCENE p3 OK' line 12 'android.view.View Couldn't load GitLab repositories tappable [234,1354][846,1419]' with its Retry at line 14 'android.widget.Button Retry tappable [461,1511][619,1627]' and 0 occurrences of 'Open GitLab' (the absent step passed), and p3-recovery.txt shows the card back at 'Connect GitLab'/'Open GitLab' after tapping that Retry with nextjs…

[p3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — prior/p3-recovery.png

[p1] new-session compose, GitLab connect card: collapsing the card removes the Open GitLab action and re-expanding brings the single-line label back (ends expanded, so run after the happy scenario) — e2e-mobile-app/p1.png

[e1] new-session compose GitLab connect card: 'Open GitLab' label on one line — Android emulator-5554; the connect card is absent under the declared agent-picker state (default account has live GitLab active, platform_integrations gitlab|451db5d4-…||active and gitlab||a80021cd-…|active), so it was reached with the runbook's fresh-account fixture login.sh e2e-empty-explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be@example.com; e1-connect-card.log line 1 'SCENE e1 OK' and line 30 'android.widget.TextView Open GitLab tappable [175,1885][771,1931]' = 46 px tall (one line; the 46 px 'Connect GitLab' header line 27 and the 92 px two-line description line 28…

[e1] new-session compose GitLab connect card: 'Open GitLab' label on one line — scripted-shard1/e1.png

E2E proof — log excerpts

[p1] new-session compose, GitLab connect card: collapsing removes the Open GitLa -> pass :: Live replay landed 'SCENE p1 OK' after restore-tap-restore-tap; the re-expanded digest shows the single label node 'android.widget.TextView Open GitLab tappable [175,1586][771,1632]', and the collapsed capture (p1-collapsed-scene.log) shows the card header 'android.widget.Button Connect GitLab' with the Open GitLab line gone; state created by a temporary fixture (personal GitLab integration row parked so the connect card renders), row restored, label glyph/line-count appearance is the visual reviewer's call (p1.png).
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be/e2e-mobile-app/p1-scene.log
android.widget.TextView Run on tappable [37,792][1045,838]
android.widget.Button Run on: Cloud Agent tappable [37,856][909,972]
android.widget.TextView Cloud Agent tappable [67,886][844,942]
android.widget.Button Refresh tappable [928,856][1043,972]
android.widget.TextView Run `kilo remote` on your computer, or `/remote` in a running CLI session, to control a local kilo process. tappable [36,991][1044,1065]
android.widget.TextView Repository tappable [37,1111][1045,1157]
android.widget.Button Repository: Select repository tappable [37,1175][1043,1291]
android.widget.TextView Select repository tappable [67,1205][978,1261]
android.widget.Button Connect GitLab tappable [76,1358][1004,1404]
android.widget.TextView Connect GitLab tappable [76,1358][944,1404]
android.widget.TextView Connect GitLab in your browser, then return here to pick a repository. tappable [76,1432][1004,1524]
android.widget.Button Open GitLab tappable [76,1552][870,1667]
android.widget.TextView Open GitLab tappable [175,1586][771,1632]
android.widget.Button Refresh repositories tappable [888,1552][1004,1667]
android.widget.TextView Changes tappable [37,1753][1045,1799]
android.view.View Changes tappable [37,1817][1043,1936]
android.widget.RadioButton Leave changes tappable [46,1826][540,1927]
android.widget.TextView Leave changes tappable [182,1853][403,1899]
android.widget.RadioButton Commit and push tappable [540,1826][1034,1927]
android.widget.TextView Commit and push tappable [656,1853][917,1899]
android.widget.TextView Environment tappable [37,1982][1045,2028]
android.widget.TextView Default environment tappable [37,2046][1045,2092]
android.widget.Button Start session [37,2148][1043,2264]
android.widget.TextView Start session tappable [442,2182][638,2228]
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be/e2e-mobile-app/p1-collapsed-scene.log
android.widget.Button Mode: Code tappable [68,642][301,715]
android.widget.TextView Code tappable [146,655][223,701]
android.widget.Button Auto Efficient tappable [319,642][623,715]
android.widget.TextView Auto Efficient tappable [347,656][546,702]
android.widget.TextView Run on tappable [37,792][1045,838]
android.widget.Button Run on: Cloud Agent tappable [37,856][909,972]
android.widget.TextView Cloud Agent tappable [67,886][844,942]
android.widget.Button Refresh tappable [928,856][1043,972]
android.widget.TextView Run `kilo remote` on your computer, or `/remote` in a running CLI session, to control a local kilo process. tappable [36,991][1044,1065]
android.widget.TextView Repository tappable [37,1111][1045,1157]
android.widget.Button Repository: Select repository tappable [37,1175][1043,1291]
android.widget.TextView Select repository tappable [67,1205][978,1261]
android.widget.Button Connect GitLab tappable [76,1358][1004,1404]
android.widget.TextView Connect GitLab tappable [76,1358][944,1404]
android.widget.TextView Changes tappable [37,1490][1045,1536]
android.view.View Changes tappable [37,1554][1043,1673]
android.widget.RadioButton Leave changes tappable [46,1563][540,1664]
android.widget.TextView Leave changes tappable [182,1590][403,1636]
android.widget.RadioButton Commit and push tappable [540,1563][1034,1664]
android.widget.TextView Commit and push tappable [656,1590][917,1636]
android.widget.TextView Environment tappable [37,1720][1045,1766]
android.widget.TextView Default environment tappable [37,1784][1045,1830]
android.widget.Button Start session [37,1885][1043,2000]
android.widget.TextView Start session tappable [442,1919][638,1965]

Ran on android; the request asked for android.

  • proved live: new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — android emulator-5554; with nextjs faulted the GitLab card renders the error state (e3-fault.log: 'android.view.View Couldn't load GitLab repositories tappable [234,1774][846,1839]' and 'android.widget.Button Retry tappable [461,1931][619,2047]'); no 'Open GitLab' line exists in that digest and the absent step passed (SCENE e3 OK); aftermath e3-recovery.txt shows tapping that Retry returned the card to 'Connect GitLab in your browser, then return here to pick a repository.' / text="Open GitLab" and 'Default environment', so the retry path recovers. new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — e3-recovery.png
  • proved live: new-session compose, GitLab connect card: collapsing the card removes the Open GitLab action and re-expanding brings the single-line label back (ends expanded, so run after the happy scenario) — android emulator-5604, org context after STATE HIT agent-picker; e2-scene.log line 32 'SCENE e2 OK' — the tap on the GitLab header made 'Open GitLab' absent and the second tap restored it, final digest lines 60-61 'android.widget.Button Open GitLab tappable [76,1916][870,2031]' / 'android.widget.TextView Open GitLab tappable [175,1950][771,1996]'; capture e2.png is the same run's still. new-session compose, GitLab connect card: collapsing the card removes the Open GitLab action and re-expanding brings the single-line label back (ends expanded, so run after the happy scenario) — e2.png
  • proved live: new-session compose, GitLab connect card: the wide outlined 'Open GitLab' button renders its two-word label on a single line (verifier reads the still to confirm one line, centred, glyph leading) — android emulator-5604: STATE HIT agent-picker (state-agent-picker.log) then Profile -> account selector -> seeded org, the context whose cards the scenario names; p1-scene.log line 1 'SCENE p1 OK' with line 26 'android.widget.Button Connect GitLab tappable [76,1722][1004,1768]', line 29 'android.widget.Button Open GitLab tappable [76,1916][870,2031]' and line 30 'android.widget.TextView Open GitLab tappable [175,1950][771,1996]' — the GitLab connect card, its outlined button and its label node all render at the declared start state, and the same run's still p1.png is captured for the visual… new-session compose, GitLab connect card: the wide outlined 'Open GitLab' button renders its two-word label on a single line (verifier reads the still to confirm one line, centred, glyph leading) — p1.png
  • proved live: ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab. — android emulator-5604, org context; one still with all three cards: e8-allcards.txt line 79 'text="Open GitHub" ... bounds="[175,933][771,979]"', line 110 'text="Open GitLab" ... bounds="[175,1348][771,1394]"', line 142 'text="Open Bitbucket" ... bounds="[175,1817][771,1863]"' — identical label box (x 175..771) in the 794-wide button for every provider; the single-line/centred appearance is judged by the visual reviewer on e8-allcards.png. No UX-DEFECT. ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab. — e8-allcards.png
  • proved live: ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — android emulator-5554: on the new-session compose screen (e6-return-to-pick.txt still shows 'Open GitLab' / 'Connect GitLab' after return), tapping 'Open GitLab' opened the external browser (jev-drive-1789985613771.log: 'tapped "Open GitLab"') which loaded the Kilo web app connect page at 127.0.0.1:4600 (e6-browser-digest.txt: 'android.widget.TextView 127.0.0.1:4600', 'Customize and control Google Chrome', 'Development Login'), and the web app answered the unauthenticated browser request (e6-nextjs.log: 'AUTH-FAIL 401 (?): Unauthorized' then ' GET /api/user 401'); returning to the app left… ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — e6-return-to-pick.png
  • proved live: ux-check: The 'Open GitLab' label is horizontally centered within its button, and the external-link glyph sits at the button's leading edge with the space to the left of the label equal to the space… — android emulator-5606, new-task-compose in the [seed:w4c-org-pair] org context where the GitLab connect card shows. In e5.txt the Button bounds="[76,1916][870,2031]" (centre x 473) and its label text="Open GitLab" bounds="[175,1950][771,1996]" (centre x 473, height 46 = single line): left space 175-76=99 equals right space 870-771=99, and the ExternalLink glyph bounds="[115,1953][157,1995]" is the row's first child at the button's leading edge; screenshot named e5.png. No UX-DEFECT seen in the digest. ux-check: The 'Open GitLab' label is horizontally centered within its button, and the external-link glyph sits at the button's leading edge with the space to the left of the label equal to the space… — e5.png

[e3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — prior/e3-recovery.png

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — prior/e6-before.png

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — prior/e6-return-to-pick.png

[p3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — prior/p3-recovery.png

[e1] new-session compose GitLab connect card: 'Open GitLab' label on one line — prior/e1.png

[p3] new-session compose, GitLab connect card, repository load fails (needs:fault: the GitLab repository list request fails): the card renders the error state with Retry and shows no Open GitLab action — prior/p3.png

/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be/e2e-web/web-e2e.log
    Error: expect(locator).toBeVisible() failed
    Locator: getByRole('region', { name: 'User profile' })
    Expected: visible
    Error: element(s) not found
    Call log:
      - Expect "toBeVisible" with timeout 30000ms
      - waiting for getByRole('region', { name: 'User profile' })
      58 |
      59 |     const profileCard = page.getByRole('region', { name: 'User profile' });
    > 60 |     await expect(profileCard).toBeVisible({ timeout: 30_000 });
         |                               ^
      61 |     await expect(page.getByRole('link', { name: 'Your Profile' })).toBeVisible();
      62 |     await expect(profileCard.getByRole('button', { name: 'Edit profile' })).toBeVisible();
      63 |     await expect(profileCard.getByText(testEmail, { exact: true })).toBeVisible();
        at /home/igor_kilocode_ai/.local/share/kwf/wt/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be/apps/web/tests/setup-smoke/profile.spec.ts:60:31
    attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
    test-results/setup-smoke/profile-local-setup-smoke--f6e7e-nd-renders-the-profile-page-chromium/test-failed-1.png
    ────────────────────────────────────────────────────────────────────────────────────────────────
    Error Context: test-results/setup-smoke/profile-local-setup-smoke--f6e7e-nd-renders-the-profile-page-chromium/error-context.md
  1 failed
    [chromium] › tests/setup-smoke/profile.spec.ts:10:7 › local setup smoke › signs in with fake auth and renders the profile page
undefined
/home/igor_kilocode_ai/.local/share/kwf/wt/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be/apps/web:
[ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL] Command failed with exit code 1: playwright test '--config=playwright.evidence.config.ts'
Owner request

Explorer finding: new-task-compose: The 'Open GitLab' button label is broken over two lines ('Open' / 'GitLab') inside a wide outlined button, even though the button has room for the phrase on one line.

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: new-task-compose
Found on revision: f2181ae

Repro:

  1. set this state first: density 240; reviews 3; credits 18; uimode night; battery 33 discharging; org; relaunch; the device in dark mode
  2. open the app on emulator-5554
  3. reach new-task-compose
  4. the capture shows the defect named below

Observed: The 'Open GitLab' button label is broken over two lines ('Open' / 'GitLab') inside a wide outlined button, even though the button has room for the phrase on one line.
Expected: the screen renders without this defect

Evidence (from the device run):

[e4] ux-check: new-task-compose GitLab connect card expanded, Open GitLab label on one line, no wrap, no clipped glyph — android emulator-5554; digest shows one label node 'android.widget.TextView Open GitLab tappable [175,1885][771,1931]' with height 46px, identical to sibling single-line labels in the same run ('Open GitHub tappable [175,1470][771,1516]', 'Connect GitLab tappable [76,1657][944,1703]'), i.e. a single line with the full label text; e4.png captured for the visual reviewer (not opened) since glyph clipping/ellipsis is a pixel judgement; no UX-DEFECT observed in the digest on this screen. Baseline not supplied, so no before/after repro comparison is possible.

[e4] ux-check: new-task-compose GitLab connect card expanded, Open GitLab label on one line, no wrap, no clipped glyph — e4.png

[e7] ux-check: RTL locale keeps the label on one line, centered, glyph on the trailing edge — Android emulator-5554 with the app language set to Arabic through the in-app Language picker (Preferences → Account → Language); e7-rtl.log line 1 'SCENE e7 OK', line 30 'android.widget.TextView فتح GitLab tappable [309,1793][905,1839]' = 46 px tall (one line, matching the 46 px single-line 'ربط GitLab' header line 27; the two-line hint is 74 px, line 18) and label centre 607 equal to the button centre of line 29 '[210,1759][1004,1874]', with the external-link glyph on the trailing right edge per e7.txt 'bounds="[923,1796][965,1838]"' and an 18 px gap to the label (905→923, no overlap or…

[e7] ux-check: RTL locale keeps the label on one line, centered, glyph on the trailing edge — e7.png

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — android emulator-5554: on the new-session compose screen (e6-return-to-pick.txt still shows 'Open GitLab' / 'Connect GitLab' after return), tapping 'Open GitLab' opened the external browser (jev-drive-1789985613771.log: 'tapped "Open GitLab"') which loaded the Kilo web app connect page at 127.0.0.1:4600 (e6-browser-digest.txt: 'android.widget.TextView 127.0.0.1:4600', 'Customize and control Google Chrome', 'Development Login'), and the web app answered the unauthenticated browser request (e6-nextjs.log: 'AUTH-FAIL 401 (?): Unauthorized' then ' GET /api/user 401'); returning to the app left…

[e6] ux-check: Tapping the button still starts the GitLab connect flow (external browser/return-to-pick behavior unchanged from before the fix). — e6-browser-open.png

[p6] ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab. — android emulator-5604, same org context: p6-scene.log line 1 'SCENE p6 OK' with all three cards in one digest — line 11 'android.widget.TextView Open GitHub tappable [175,670][771,716]', line 17 'android.widget.TextView Open GitLab tappable [175,1085][771,1131]', line 24 'android.widget.TextView Open Bitbucket tappable [175,1555][771,1601]' inside identically sized outlined buttons ([76,636][870,752] / [76,1051][870,1166] / [76,1521][870,1637]), and the separate hierarchy dump p6-allcards.txt repeats the same three label nodes ([175,1119][771,1165] / [175,1534][771,1580] /…

[p6] ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab. — p6.png

[p5] ux-check: tapping the button still starts the GitLab connect flow — android emulator-5554. Fixture: signed in a fresh worktree-scoped account (e2e-empty-@example.com) because the default account holds a live GitLab connection and never renders the connect card; default account restored afterwards. jev-drive-1789993005032.log: 'step 1: tap e6 ... -> tapped "New coding task"' and 'step 2: tap e26 ... -> tapped "Open GitLab"', final screen the external Chrome custom tab; p5-after.txt shows package="com.android.chrome" and text="127.0.0.1:4600" resource-id="com.android.chrome:id/url_bar" (the Kilo web dev server, port 4600); after Android back, p5-return.txt…

[p5] ux-check: tapping the button still starts the GitLab connect flow — p5-after.png

[p4] ux-check: new-task-compose GitLab connect card, 'Open GitLab' label on one line, no clip — android emulator-5554; on the new-session compose with the GitLab connect card shown (fresh worktree-scoped empty account, the only account whose compose screen renders that card), p4-scene.log 'SCENE p4 OK' line 25 'android.widget.Button Open GitLab tappable [76,1552][870,1667]' and line 26 'android.widget.TextView Open GitLab tappable [175,1586][771,1632]' — the label box is 46 px high, the same as the sibling single-line 'Connect GitLab' label; the one-line/no-wrap/no-clipped-glyph judgement is the visual reviewer's on p4.png; no UX-DEFECT.

[p4] ux-check: new-task-compose GitLab connect card, 'Open GitLab' label on one line, no clip — p4.png

[p6] ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab.

[p6] ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab. — p6-allcards.png

Follow-ups (not changed here)

  • not proved live: ux-check: In an RTL locale (e.g. Arabic/Hebrew), the label stays on one line and centered, with the external-link glyph on the trailing (right) edge and no overlap or clipping. (no capture cited it)
  • not proved live: ux-check: On new-task-compose with a GitLab connect card expanded, the outlined button's label reads 'Open GitLab' on a single line with no wrap; no glyph is clipped or ellipsized at the default font size. (no capture cited it)
  • not proved live: ux-check: The connected-empty card renders no 'Open ...' label and shows no empty gap where the button used to be. (no capture cited it)

Open findings (not fixed here)

  • not proved live: new-task-compose.png is no longer on the host that took it, so no publish can carry it

Comment thread apps/web/src/lib/integrations/core/types.ts
@kilo-code-bot

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

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The earlier synced-empty allowlist regression is resolved: the REVIEW.md conversion route now forces a provider read for all four GitHub/GitLab personal and organization lookups, and the duplicate mobile label coverage was folded into new-session-repository-section.test.ts. No new issues were found in the incremental changes since the previous review.

Files Reviewed (12 files)
  • apps/mobile/src/components/agents/new-session-repository-section.test.ts
  • apps/mobile/src/components/agents/new-session-repository-section.tsx
  • apps/mobile/src/lib/screen-insets.test.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.test.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.test.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.test.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts
  • apps/web/src/lib/integrations/core/types.test.ts
  • apps/web/src/lib/integrations/core/types.ts
  • services/container-usage-meter/test/postgres.test.ts
Previous Review Summaries (5 snapshots, latest commit c7f365f)

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

Previous review (commit c7f365f)

Status: 1 Issue Found | Recommendation: Merge (non-blocking)

Executive Summary

The prior synced-empty allowlist regression is fixed — the REVIEW.md conversion route now forces a provider read for all four GitHub/GitLab lookups — and the only remaining item is the non-blocking duplicate label-coverage suggestion in the new mobile test, already discussed in its thread.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/components/agents/new-session-repository-section-label.test.ts 63 The first two cases re-assert the numberOfLines/flex-1/text-center and me-[24px]/no-mr- label props already covered by new-session-repository-section.test.ts (lines 205-211 and 314-333), so the label contract now has two copies that can drift; only the connected-empty case is new coverage.
Files Reviewed (12 files)
  • apps/web/src/lib/integrations/core/types.ts
  • apps/web/src/lib/integrations/core/types.test.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.test.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.test.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.test.ts
  • apps/mobile/src/components/agents/new-session-repository-section.tsx
  • apps/mobile/src/components/agents/new-session-repository-section-label.test.ts - 1 issue
  • apps/mobile/src/components/profile-screen.signout.mounted.test.tsx
  • apps/mobile/src/lib/screen-insets.test.ts

Fix these issues in Kilo Cloud

Previous review (commit 5856155)

Status: 1 Issue Found | Recommendation: Merge (non-blocking)

Executive Summary

The prior synced-empty allowlist regression is fixed (the REVIEW.md conversion route now forces a provider read), and the only remaining item is a non-blocking duplicate-coverage suggestion in the new mobile label test that the author has already reviewed.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/components/agents/new-session-repository-section-label.test.ts 63 The first two cases re-assert the numberOfLines/flex-1/text-center and me-[24px]/no-mr- label props already covered by new-session-repository-section.test.ts, so the label contract now has two copies that can drift; only the connected-empty case is new coverage.
Files Reviewed (12 files)
  • apps/web/src/lib/integrations/core/types.ts
  • apps/web/src/lib/integrations/core/types.test.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.test.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.test.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.test.ts
  • apps/mobile/src/components/agents/new-session-repository-section.tsx
  • apps/mobile/src/components/agents/new-session-repository-section-label.test.ts - 1 issue
  • apps/mobile/src/components/profile-screen.signout.mounted.test.tsx
  • apps/mobile/src/lib/screen-insets.test.ts

Fix these issues in Kilo Cloud

Previous review (commit f7b5fda)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The prior synced-empty allowlist regression is fixed and the repository-read helper semantics check out; the only finding is duplicated mobile label coverage in a newly added test file.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/components/agents/new-session-repository-section-label.test.ts 63 The new file re-asserts label props (numberOfLines/flex-1/text-center, me-[24px]/no mr-) already covered by new-session-repository-section.test.ts, so the contract now has two copies that can drift
Files Reviewed (13 files)
  • apps/web/src/lib/integrations/core/types.ts
  • apps/web/src/lib/integrations/core/types.test.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.test.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.test.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.test.ts
  • apps/mobile/src/components/agents/new-session-repository-section.tsx
  • apps/mobile/src/components/agents/new-session-repository-section-label.test.ts - 1 issue
  • apps/mobile/src/components/agents/new-session-configure-form.test.ts
  • apps/mobile/src/components/profile-screen.signout.mounted.test.tsx
  • apps/mobile/src/lib/screen-insets.test.ts

Fix these issues in Kilo Cloud

Previous review (commit b8f36ee)

Status: No Issues Found | Recommendation: Merge

Executive Summary

The prior synced-empty allowlist regression is fixed: the REVIEW.md conversion route now forces a provider read for all four GitHub/GitLab personal and organization repository lookups, and no new issues were found in the changed code.

Files Reviewed (10 files)
  • apps/web/src/lib/integrations/core/types.ts
  • apps/web/src/lib/integrations/core/types.test.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/github-integration-helpers.test.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.test.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.ts
  • apps/web/src/app/cloud-agent-fork/review-md/route.test.ts
  • apps/mobile/src/components/agents/new-session-repository-section.tsx
  • apps/mobile/src/components/agents/new-session-repository-section.test.ts

Previous review (commit 72b9829)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

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

WARNING

File Line Issue
apps/web/src/lib/integrations/core/types.ts 44 A synced-empty snapshot now answers from cache without a provider round-trip, so the REVIEW.md conversion route's allowlist (cloud-agent-fork/review-md/route.ts:191, forceRefresh: false) can be empty and reject a repository the user has access to
Files Reviewed (8 files)
  • apps/web/src/lib/integrations/core/types.ts - 1 issue
  • apps/web/src/lib/cloud-agent/github-integration-helpers.ts - 0 issues
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts - 0 issues
  • apps/mobile/src/components/agents/new-session-repository-section.tsx - 0 issues
  • apps/web/src/lib/integrations/core/types.test.ts - 0 issues
  • apps/web/src/lib/cloud-agent/github-integration-helpers.test.ts - 0 issues
  • apps/web/src/lib/cloud-agent/gitlab-integration-helpers.test.ts - 0 issues
  • apps/mobile/src/components/agents/new-session-repository-section.test.ts - 0 issues

Fix these issues in Kilo Cloud


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

Review guidance: REVIEW.md from base branch main

@iscekic
iscekic marked this pull request as draft September 21, 2026 14:27
iscekic added a commit that referenced this pull request Sep 21, 2026
@iscekic
iscekic force-pushed the kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be branch from 24a9232 to b8f36ee Compare September 21, 2026 15:17
@iscekic
iscekic marked this pull request as ready for review September 21, 2026 15:40
@iscekic
iscekic marked this pull request as draft September 21, 2026 15:53
iscekic added a commit that referenced this pull request Sep 21, 2026
@iscekic
iscekic force-pushed the kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be branch from 098c7da to 835a6f9 Compare September 21, 2026 22:21
iscekic added a commit that referenced this pull request Sep 22, 2026
@iscekic
iscekic force-pushed the kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be branch from 081e75a to f7b5fda Compare September 22, 2026 00:02
@iscekic
iscekic marked this pull request as ready for review September 22, 2026 00:20
Comment thread apps/mobile/src/components/agents/new-session-repository-section-label.test.ts Outdated
iscekic added a commit that referenced this pull request Sep 22, 2026
@iscekic
iscekic force-pushed the kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be branch from 0e472be to 5856155 Compare September 22, 2026 01:16
@iscekic

iscekic commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator Author

bot: rejected: a suggestion, not a defect. A typed review read this finding as needing no code change before merge; the code stays as is. Say so here if one of them does change behaviour and it will be repaired.

  • apps/mobile/src/components/agents/new-session-repository-section-label.test.ts:63 — The first two cases re-assert the numberOfLines/flex-1/text-center and me-[24px]/no-mr- label props already covered by new-session-repository-section.test.ts, so the label contract now has two copies that (p=0.83)

@iscekic
iscekic marked this pull request as draft September 22, 2026 01:24
iscekic added a commit that referenced this pull request Sep 22, 2026
@iscekic
iscekic force-pushed the kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be branch from add2910 to c7f365f Compare September 22, 2026 05:05
@iscekic
iscekic marked this pull request as ready for review September 22, 2026 05:27
@iscekic

iscekic commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator Author

kilo-review — independent audit of the published diff.

Status: 2 Issues

File Line Issue
apps/web/src/lib/cloud-agent/gitlab-integration-helpers.ts 198 A synced-empty snapshot is now returned from cache on every non-force read, so a connected GitLab provider whose connect-time sync stored zero projects never re-queries, and callers without a force-refresh affordance keep showing the empty state after the user gains repositories.
apps/mobile/src/components/agents/new-session-repository-section-label.test.ts 70 The new test file duplicates label-prop coverage that the existing new-session-repository-section.test.ts already asserts.

@iscekic

iscekic commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator Author

bot: rejected: a suggestion, not a defect. A typed review read this finding as needing no code change before merge; the code stays as is. Say so here if one of them does change behaviour and it will be repaired.

  • apps/mobile/src/components/agents/new-session-repository-section-label.test.ts:70 — The new test file duplicates label-prop coverage that the existing new-session-repository-section.test.ts already asserts. (p=0.81)

@iscekic
iscekic marked this pull request as draft September 22, 2026 06:30
@iscekic
iscekic force-pushed the kwf/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be branch from 67a5337 to 5361146 Compare September 22, 2026 18:38
…ion suite

The added new-session-repository-section-label.test.ts re-asserted
numberOfLines/flex-1/text-center and me-[24px]/no-mr- for the same
gitlab connect render that new-session-repository-section.test.ts already
covers, with a second copy of the module mocks. Only the connected-empty
case was new coverage, so it moves into the existing connect card open
action block and the duplicate file goes away.
@iscekic iscekic added the human-ready The PR is ready for human review. label Sep 25, 2026
@iscekic
iscekic marked this pull request as ready for review September 25, 2026 13:49
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