From bce2dce704451caaeb68dbcd5751b982bba649d5 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 16:28:12 +0530 Subject: [PATCH 01/30] fetch all branches via pagination --- .../git/productionBranchFieldset.svelte | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/lib/components/git/productionBranchFieldset.svelte b/src/lib/components/git/productionBranchFieldset.svelte index addd405576..5a15963d89 100644 --- a/src/lib/components/git/productionBranchFieldset.svelte +++ b/src/lib/components/git/productionBranchFieldset.svelte @@ -2,6 +2,7 @@ import { Button, InputText } from '$lib/elements/forms'; import { Fieldset, Input, Layout, Selector, Skeleton } from '@appwrite.io/pink-svelte'; import SelectRootModal from './selectRootModal.svelte'; + import { Query } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; import { sortBranches } from '$lib/stores/vcs'; import { page } from '$app/state'; @@ -25,14 +26,29 @@ branch = repo.defaultBranch ?? 'main'; - const { branches } = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId, - providerRepositoryId: repositoryId - }); + const allBranches = []; + let offset = 0; + const limit = 100; + + while (true) { + const { branches, total } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId, + providerRepositoryId: repositoryId, + queries: [Query.limit(limit), Query.offset(offset)] + }); + + allBranches.push(...branches); + + if (allBranches.length >= total || branches.length < limit) { + break; + } + + offset += limit; + } - return sortBranches(branches); + return sortBranches(allBranches); } From 80242cb89e4a07c444cc2ee3490e3beea9f0d868 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 16:30:20 +0530 Subject: [PATCH 02/30] fetch all branches via pagination in all branch selectors --- .../(modals)/createGit.svelte | 24 ++++++--- .../domains/add-domain/+page.ts | 28 ++++++++--- .../settings/updateRepository.svelte | 49 +++++++++++++------ .../site-[site]/deployments/+page.svelte | 25 +++++++--- .../createGitDeploymentModal.svelte | 24 ++++++--- .../site-[site]/domains/add-domain/+page.ts | 28 ++++++++--- .../settings/updateRepository.svelte | 49 +++++++++++++------ 7 files changed, 163 insertions(+), 64 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createGit.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createGit.svelte index 3c3569de37..c485286356 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createGit.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createGit.svelte @@ -10,6 +10,7 @@ import { sdk } from '$lib/stores/sdk'; import { installation, repository, sortBranches } from '$lib/stores/vcs'; import { + Query, Runtime, VCSReferenceType, type Models, @@ -54,14 +55,23 @@ }); } selectedRepository = $repository?.id; - const branchList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: $installation.$id, - providerRepositoryId: selectedRepository - }); + const allBranches = []; + let offset = 0; + const limit = 100; + while (true) { + const { branches, total } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: $installation.$id, + providerRepositoryId: selectedRepository, + queries: [Query.limit(limit), Query.offset(offset)] + }); + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } - const sorted = sortBranches(branchList.branches); + const sorted = sortBranches(allBranches); branch = sorted.find((b) => b.name === $func.providerBranch) ? $func.providerBranch diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts index a1f08feed6..0152f90b0c 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts @@ -26,12 +26,26 @@ export const load = async ({ parent, depends, params }) => { rules, domainsList, installations, - branches: - func?.installationId && func?.providerRepositoryId - ? await sdk.forProject(params.region, params.project).vcs.listRepositoryBranches({ - installationId: func.installationId, - providerRepositoryId: func.providerRepositoryId - }) - : undefined + branches: await (async () => { + if (!func?.installationId || !func?.providerRepositoryId) return undefined; + const allBranches = []; + let offset = 0; + const limit = 100; + let total = 0; + while (true) { + const { branches, total: t } = await sdk + .forProject(params.region, params.project) + .vcs.listRepositoryBranches({ + installationId: func.installationId, + providerRepositoryId: func.providerRepositoryId, + queries: [Query.limit(limit), Query.offset(offset)] + }); + total = t; + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + return { branches: allBranches, total }; + })() }; }; diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte index c9765a107f..0a8e455cbe 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte @@ -6,7 +6,7 @@ import { Button, Form, InputText } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { Runtime, type Models, type ProjectKeyScopes } from '@appwrite.io/console'; + import { Query, Runtime, type Models, type ProjectKeyScopes } from '@appwrite.io/console'; import { onMount } from 'svelte'; import DisconnectRepo from './disconnectRepo.svelte'; import { installation, repository as repositoryStore, sortBranches } from '$lib/stores/vcs'; @@ -110,12 +110,24 @@ } } async function getBranches(installation: string, repo: string) { - branchesList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: installation, - providerRepositoryId: repo - }); + const allBranches = []; + let offset = 0; + const limit = 100; + let total = 0; + while (true) { + const { branches, total: t } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: installation, + providerRepositoryId: repo, + queries: [Query.limit(limit), Query.offset(offset)] + }); + total = t; + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + branchesList = { branches: allBranches, total }; branchesList.branches = sortBranches(branchesList.branches); selectedBranch = func?.providerBranch ?? branchesList.branches[0].name; @@ -133,13 +145,22 @@ async function connect(selectedInstallationId: string, selectedRepository: string) { let nextBranch = func?.providerBranch ?? 'main'; try { - const branchList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: selectedInstallationId, - providerRepositoryId: selectedRepository - }); - const sorted = sortBranches(branchList.branches); + const allBranches = []; + let offset = 0; + const limit = 100; + while (true) { + const { branches, total } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: selectedInstallationId, + providerRepositoryId: selectedRepository, + queries: [Query.limit(limit), Query.offset(offset)] + }); + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + const sorted = sortBranches(allBranches); nextBranch = sorted.find((branch) => branch.name === func?.providerBranch)?.name ?? sorted.find((branch) => branch.name === 'main' || branch.name === 'master')?.name ?? diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte index fb7bcb49f9..74eab79add 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte @@ -2,7 +2,7 @@ import { PaginationWithLimit, EmptyFilter, Empty } from '$lib/components'; import { Button } from '$lib/elements/forms'; import { Container, ResponsiveContainerHeader } from '$lib/layout'; - import { Adapter, BuildRuntime, Framework, type Models } from '@appwrite.io/console'; + import { Adapter, BuildRuntime, Framework, Query, type Models } from '@appwrite.io/console'; import { View } from '$lib/helpers/load'; import { ActionMenu, Alert, Icon, Layout, Popover } from '@appwrite.io/pink-svelte'; import Table from './table.svelte'; @@ -43,13 +43,22 @@ async function connect(selectedInstallationId: string, selectedRepository: string) { let nextBranch = data.site?.providerBranch ?? 'main'; try { - const branchList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: selectedInstallationId, - providerRepositoryId: selectedRepository - }); - const sorted = sortBranches(branchList.branches); + const allBranches = []; + let offset = 0; + const limit = 100; + while (true) { + const { branches, total } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: selectedInstallationId, + providerRepositoryId: selectedRepository, + queries: [Query.limit(limit), Query.offset(offset)] + }); + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + const sorted = sortBranches(allBranches); nextBranch = sorted.find((branch) => branch.name === data.site?.providerBranch)?.name ?? sorted.find((branch) => branch.name === 'main' || branch.name === 'master')?.name ?? diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte index 150b854ee5..f3202bc179 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte @@ -14,6 +14,7 @@ Adapter, BuildRuntime, Framework, + Query, VCSReferenceType, type Models } from '@appwrite.io/console'; @@ -55,14 +56,23 @@ }); } selectedRepository = $repository?.id; - const branchList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: $installation.$id, - providerRepositoryId: selectedRepository - }); + const allBranches = []; + let offset = 0; + const limit = 100; + while (true) { + const { branches, total } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: $installation.$id, + providerRepositoryId: selectedRepository, + queries: [Query.limit(limit), Query.offset(offset)] + }); + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } - const sorted = sortBranches(branchList.branches); + const sorted = sortBranches(allBranches); branch = sorted.find((b) => b.name === site.providerBranch) ? site.providerBranch diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts index dfff015a1a..bcf5b24e9e 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts @@ -28,12 +28,26 @@ export const load = async ({ parent, depends, params }) => { rules, domainsList, installations, - branches: - site?.installationId && site?.providerRepositoryId - ? await sdk.forProject(params.region, params.project).vcs.listRepositoryBranches({ - installationId: site.installationId, - providerRepositoryId: site.providerRepositoryId - }) - : undefined + branches: await (async () => { + if (!site?.installationId || !site?.providerRepositoryId) return undefined; + const allBranches = []; + let offset = 0; + const limit = 100; + let total = 0; + while (true) { + const { branches, total: t } = await sdk + .forProject(params.region, params.project) + .vcs.listRepositoryBranches({ + installationId: site.installationId, + providerRepositoryId: site.providerRepositoryId, + queries: [Query.limit(limit), Query.offset(offset)] + }); + total = t; + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + return { branches: allBranches, total }; + })() }; }; diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateRepository.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateRepository.svelte index ab640c480d..c5d497b3c2 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateRepository.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateRepository.svelte @@ -6,7 +6,7 @@ import { Button, Form, InputText } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { Adapter, BuildRuntime, Framework, type Models } from '@appwrite.io/console'; + import { Adapter, BuildRuntime, Framework, Query, type Models } from '@appwrite.io/console'; import { onMount } from 'svelte'; import DisconnectRepo from './disconnectRepo.svelte'; import { installation, repository as repositoryStore, sortBranches } from '$lib/stores/vcs'; @@ -106,12 +106,24 @@ } async function getBranches(installation: string, repo: string) { - branchesList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: installation, - providerRepositoryId: repo - }); + const allBranches = []; + let offset = 0; + const limit = 100; + let total = 0; + while (true) { + const { branches, total: t } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: installation, + providerRepositoryId: repo, + queries: [Query.limit(limit), Query.offset(offset)] + }); + total = t; + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + branchesList = { branches: allBranches, total }; branchesList.branches = sortBranches(branchesList.branches); selectedBranch = site?.providerBranch ?? branchesList.branches[0].name; @@ -120,13 +132,22 @@ async function connect(selectedInstallationId: string, selectedRepository: string) { let nextBranch = site?.providerBranch ?? 'main'; try { - const branchList = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId: selectedInstallationId, - providerRepositoryId: selectedRepository - }); - const sorted = sortBranches(branchList.branches); + const allBranches = []; + let offset = 0; + const limit = 100; + while (true) { + const { branches, total } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId: selectedInstallationId, + providerRepositoryId: selectedRepository, + queries: [Query.limit(limit), Query.offset(offset)] + }); + allBranches.push(...branches); + if (allBranches.length >= total || branches.length < limit) break; + offset += limit; + } + const sorted = sortBranches(allBranches); nextBranch = sorted.find((branch) => branch.name === site?.providerBranch)?.name ?? sorted.find((branch) => branch.name === 'main' || branch.name === 'master')?.name ?? From ae75d1468f87b6317cb5f1f59d2e53c6c5579478 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 16:48:33 +0530 Subject: [PATCH 03/30] simplify branch fetch --- .../git/productionBranchFieldset.svelte | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/src/lib/components/git/productionBranchFieldset.svelte b/src/lib/components/git/productionBranchFieldset.svelte index 5a15963d89..6785d64997 100644 --- a/src/lib/components/git/productionBranchFieldset.svelte +++ b/src/lib/components/git/productionBranchFieldset.svelte @@ -26,29 +26,15 @@ branch = repo.defaultBranch ?? 'main'; - const allBranches = []; - let offset = 0; - const limit = 100; - - while (true) { - const { branches, total } = await sdk - .forProject(page.params.region, page.params.project) - .vcs.listRepositoryBranches({ - installationId, - providerRepositoryId: repositoryId, - queries: [Query.limit(limit), Query.offset(offset)] - }); - - allBranches.push(...branches); - - if (allBranches.length >= total || branches.length < limit) { - break; - } - - offset += limit; - } + const { branches } = await sdk + .forProject(page.params.region, page.params.project) + .vcs.listRepositoryBranches({ + installationId, + providerRepositoryId: repositoryId, + queries: [Query.limit(1000)] + }); - return sortBranches(allBranches); + return sortBranches(branches); } From 81bf3b9e5d5edd8c12a7c331e24232ca45fd1c7d Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 17:23:08 +0530 Subject: [PATCH 04/30] add custom branch selector with search and load more --- src/lib/components/git/branchSelector.svelte | 290 ++++++++++++++++++ src/lib/components/git/index.ts | 1 + .../git/productionBranchFieldset.svelte | 60 +--- 3 files changed, 301 insertions(+), 50 deletions(-) create mode 100644 src/lib/components/git/branchSelector.svelte diff --git a/src/lib/components/git/branchSelector.svelte b/src/lib/components/git/branchSelector.svelte new file mode 100644 index 0000000000..9bc00990bc --- /dev/null +++ b/src/lib/components/git/branchSelector.svelte @@ -0,0 +1,290 @@ + + +
{ + if (!e.currentTarget.contains(e.relatedTarget)) { + open = false; + searchQuery = ''; + searchResults = []; + } +}}> + + + {#if open} +
+ + +
    + {#if searching} +
  • Searching...
  • + {:else if displayBranches.length === 0} +
  • No branches found
  • + {:else} + {#each displayBranches as branch} +
  • select(branch)} + on:keydown={(e) => e.key === 'Enter' && select(branch)}> + {branch} +
  • + {/each} + {#if !searchQuery && hasMore} +
  • + +
  • + {/if} + {/if} +
+
+ {/if} +
+ + diff --git a/src/lib/components/git/index.ts b/src/lib/components/git/index.ts index a5cab5eed2..ddec8646be 100644 --- a/src/lib/components/git/index.ts +++ b/src/lib/components/git/index.ts @@ -7,5 +7,6 @@ export { default as DeploymentSource } from './deploymentSource.svelte'; export { default as DeploymentDomains } from './deploymentDomains.svelte'; export { default as ConnectBehaviour } from './connectBehaviour.svelte'; export { default as ProductionBranchFieldset } from './productionBranchFieldset.svelte'; +export { default as BranchSelector } from './branchSelector.svelte'; export { default as RepositoryCard } from './repositoryCard.svelte'; export { default as ConnectRepoModal } from './connectRepoModal.svelte'; diff --git a/src/lib/components/git/productionBranchFieldset.svelte b/src/lib/components/git/productionBranchFieldset.svelte index 6785d64997..fbd98f81e4 100644 --- a/src/lib/components/git/productionBranchFieldset.svelte +++ b/src/lib/components/git/productionBranchFieldset.svelte @@ -1,10 +1,9 @@
- {#await loadBranches()} + {#await loadDefaultBranch()} - - - - - - - - - - - - - + - {:then branches} - {@const options = - branches - ?.map((branch) => { - return { - value: branch.name, - label: branch.name - }; - }) - ?.sort((a, b) => { - return a.label > b.label ? 1 : -1; - }) ?? []} + {:then} - { - branch = event.detail.value; - }} - {options} /> + {installationId} + {repositoryId} + on:select={(e) => (branch = e.detail)} /> Date: Thu, 11 Jun 2026 17:27:53 +0530 Subject: [PATCH 05/30] replace ComboBox with BranchSelector in settings pages --- bun.lock | 4 ++-- package.json | 2 +- .../settings/updateRepository.svelte | 23 ++++--------------- .../settings/updateRepository.svelte | 23 ++++--------------- 4 files changed, 13 insertions(+), 39 deletions(-) diff --git a/bun.lock b/bun.lock index 283e22f525..cb48bc3826 100644 --- a/bun.lock +++ b/bun.lock @@ -6,7 +6,7 @@ "name": "@appwrite/console", "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@5d0672f", + "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@82d2831", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3", "@appwrite.io/pink-legacy": "^1.0.3", @@ -125,7 +125,7 @@ "@analytics/type-utils": ["@analytics/type-utils@0.6.4", "", {}, "sha512-Ou1gQxFakOWLcPnbFVsrPb8g1wLLUZYYJXDPjHkG07+5mustGs5yqACx42UAu4A6NszNN6Z5gGxhyH45zPWRxw=="], - "@appwrite.io/console": ["@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@5d0672f", { "dependencies": { "json-bigint": "1.0.0" } }], + "@appwrite.io/console": ["@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@82d2831", { "dependencies": { "json-bigint": "1.0.0" } }], "@appwrite.io/pink-icons": ["@appwrite.io/pink-icons@0.25.0", "", {}, "sha512-0O3i2oEuh5mWvjO80i+X6rbzrWLJ1m5wmv2/M3a1p2PyBJsFxN8xQMTEmTn3Wl/D26SsM7SpzbdW6gmfgoVU9Q=="], diff --git a/package.json b/package.json index 7e46c5ff27..03424e186d 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@5d0672f", + "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@82d2831", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3", "@appwrite.io/pink-legacy": "^1.0.3", diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte index 0a8e455cbe..cdbc013301 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateRepository.svelte @@ -22,7 +22,7 @@ } from '@appwrite.io/pink-svelte'; import Card from '$lib/components/card.svelte'; import { IconGithub } from '@appwrite.io/pink-icons-svelte'; - import { ConnectGit, ConnectRepoModal, RepositoryCard } from '$lib/components/git'; + import { ConnectGit, ConnectRepoModal, RepositoryCard, BranchSelector } from '$lib/components/git'; import { isValueOfStringEnum } from '$lib/helpers/types'; import { page } from '$app/state'; import SelectRootModal from '$lib/components/git/selectRootModal.svelte'; @@ -244,24 +244,11 @@ (showDisconnect = true)} />
- { - selectedBranch = event.detail.value; - }} - name="branch" - options={branchesList?.branches?.map((branch) => { - return { - value: branch.name, - label: branch.name - }; - }) ?? []} /> + installationId={$installation?.$id} + repositoryId={repository?.id?.toString()} + on:select={(e) => (selectedBranch = e.detail)} /> - { - selectedBranch = event.detail.value; - }} - name="branch" - options={branchesList?.branches?.map((branch) => { - return { - value: branch.name, - label: branch.name - }; - }) ?? []} /> + installationId={$installation?.$id} + repositoryId={repository?.id?.toString()} + on:select={(e) => (selectedBranch = e.detail)} /> Date: Thu, 11 Jun 2026 17:31:01 +0530 Subject: [PATCH 06/30] redesign branch selector to match github style --- src/lib/components/git/branchSelector.svelte | 234 ++++++++++++------- 1 file changed, 144 insertions(+), 90 deletions(-) diff --git a/src/lib/components/git/branchSelector.svelte b/src/lib/components/git/branchSelector.svelte index 9bc00990bc..94d8d6def9 100644 --- a/src/lib/components/git/branchSelector.svelte +++ b/src/lib/components/git/branchSelector.svelte @@ -1,18 +1,16 @@ -
{ - if (!e.currentTarget.contains(e.relatedTarget)) { - open = false; - searchQuery = ''; - searchResults = []; - } -}}> + + + +
+ {#if label} + + {/if} {#if open} -
-