fix(integrations): keep the Open GitLab label on one line and reuse empty snapshots - #6488
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe 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 Files Reviewed (12 files)
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 SummaryThe 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
Issue Details (click to expand)SUGGESTION
Files Reviewed (12 files)
Fix these issues in Kilo Cloud Previous review (commit 5856155)Status: 1 Issue Found | Recommendation: Merge (non-blocking) Executive SummaryThe 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
Issue Details (click to expand)SUGGESTION
Files Reviewed (12 files)
Fix these issues in Kilo Cloud Previous review (commit f7b5fda)Status: 1 Issue Found | Recommendation: Address before merge Executive SummaryThe 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
Issue Details (click to expand)SUGGESTION
Files Reviewed (13 files)
Fix these issues in Kilo Cloud Previous review (commit b8f36ee)Status: No Issues Found | Recommendation: Merge Executive SummaryThe 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)
Previous review (commit 72b9829)Status: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
Files Reviewed (8 files)
Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
24a9232 to
b8f36ee
Compare
098c7da to
835a6f9
Compare
081e75a to
f7b5fda
Compare
0e472be to
5856155
Compare
|
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.
|
add2910 to
c7f365f
Compare
|
kilo-review — independent audit of the published diff. Status: 2 Issues
|
|
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.
|
67a5337 to
5361146
Compare
…-button-label-is-9180a-12be
…-button-label-is-9180a-12be
…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.
Changelog for users
Changelog for maintainers
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.forceRefreshis set, when the cached snapshot isnull, or when the list is empty andrepositories_synced_atisnull.[], relying on its guarantee of a non-null list when it returns false.forceRefresh.numberOfLines={1},flex-1,text-center, and the logicalme-[24px]; keep the inline-end margin instead ofmr-so RTL stays centered.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.
[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).
[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…
[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…
E2E proof — log excerpts
/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/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.logRan on android; the request asked for android.
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-new-task-compose-the-open-gitlab-button-label-is-9180a-12be/e2e-web/web-e2e.logOwner request
[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.
[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…
[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…
[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] /…
[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…
[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.
[p6] ux-check: GitHub and Bitbucket connect cards show the same single-line centered label and centered glyph offset as GitLab.
Follow-ups (not changed here)
Open findings (not fixed here)