From de62aff0fb6119c845ff4e4462ff012ffc8983b6 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Tue, 14 Jul 2026 11:42:31 -0600 Subject: [PATCH 1/2] fix(ui): disambiguate repos with the same name in the repository selector The repository CommandItem used the repo name as its cmdk value and the check icon compared only names, so two repos with the same name in different owners/orgs showed the selected checkmark and hover on both entries. Key the item by owner/name and include the owner in the selected comparison. GitLab already keyed by URL and is unaffected. Fixes #4793 --- .../general/generic/save-bitbucket-provider.tsx | 9 ++++++--- .../application/general/generic/save-gitea-provider.tsx | 9 ++++++--- .../application/general/generic/save-github-provider.tsx | 9 ++++++--- .../general/generic/save-bitbucket-provider-compose.tsx | 9 ++++++--- .../general/generic/save-gitea-provider-compose.tsx | 9 ++++++--- .../general/generic/save-github-provider-compose.tsx | 9 ++++++--- 6 files changed, 36 insertions(+), 18 deletions(-) diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx index 2b0ae3f62..fdedc6425 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx @@ -256,7 +256,9 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => { : isLoadingRepositories ? "Loading...." : (repositories?.find( - (repo) => repo.name === field.value.repo, + (repo) => + repo.name === field.value.repo && + repo.owner.username === field.value.owner, )?.name ?? "Select repository")} @@ -283,7 +285,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => { {repositories?.map((repo) => ( { form.setValue("repository", { @@ -303,7 +305,8 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => { { ? "Loading...." : (repositories?.find( (repo: GiteaRepository) => - repo.name === field.value.repo, + repo.name === field.value.repo && + repo.owner.username === field.value.owner, )?.name ?? "Select repository")} @@ -303,7 +304,7 @@ export const SaveGiteaProvider = ({ applicationId }: Props) => { {repositories?.map((repo: GiteaRepository) => { return ( { form.setValue("repository", { @@ -322,7 +323,9 @@ export const SaveGiteaProvider = ({ applicationId }: Props) => { { : isLoadingRepositories ? "Loading...." : (repositories?.find( - (repo) => repo.name === field.value.repo, + (repo) => + repo.name === field.value.repo && + repo.owner.login === field.value.owner, )?.name ?? field.value.repo)} @@ -279,7 +281,7 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { {repositories?.map((repo) => ( { form.setValue("repository", { @@ -298,7 +300,8 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { { : isLoadingRepositories ? "Loading...." : (repositories?.find( - (repo) => repo.name === field.value.repo, + (repo) => + repo.name === field.value.repo && + repo.owner.username === field.value.owner, )?.name ?? "Select repository")} @@ -285,7 +287,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => { {repositories?.map((repo) => ( { form.setValue("repository", { @@ -305,7 +307,8 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => { { : isLoadingRepositories ? "Loading...." : (repositories?.find( - (repo) => repo.name === field.value.repo, + (repo) => + repo.name === field.value.repo && + repo.owner.username === field.value.owner, )?.name ?? "Select repository")} @@ -282,7 +284,7 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { {repositories?.map((repo) => ( { form.setValue("repository", { owner: repo.owner.username, @@ -300,7 +302,8 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { { : isLoadingRepositories ? "Loading...." : (repositories?.find( - (repo) => repo.name === field.value.repo, + (repo) => + repo.name === field.value.repo && + repo.owner.login === field.value.owner, )?.name ?? field.value.repo)} @@ -272,7 +274,7 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { {repositories?.map((repo) => ( { form.setValue("repository", { @@ -291,7 +293,8 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { Date: Tue, 14 Jul 2026 15:16:56 -0600 Subject: [PATCH 2/2] refactor(ui): improve repository and branch display in popovers Updated the PopoverContent components across various provider files to ensure consistent width and padding. Enhanced the display of repository and branch names by adding truncation to prevent overflow in the UI. This change applies to Bitbucket, Gitea, GitHub, and GitLab provider components, as well as their respective compose components. --- .../generic/save-bitbucket-provider.tsx | 16 ++++++++++----- .../general/generic/save-gitea-provider.tsx | 18 ++++++++++++----- .../general/generic/save-github-provider.tsx | 16 ++++++++++----- .../general/generic/save-gitlab-provider.tsx | 18 ++++++++++++----- .../save-bitbucket-provider-compose.tsx | 16 ++++++++++----- .../generic/save-gitea-provider-compose.tsx | 20 +++++++++++++------ .../generic/save-github-provider-compose.tsx | 16 ++++++++++----- .../generic/save-gitlab-provider-compose.tsx | 18 ++++++++++++----- apps/dokploy/components/ui/command.tsx | 6 ++++-- apps/dokploy/components/ui/select.tsx | 4 ++-- 10 files changed, 103 insertions(+), 45 deletions(-) diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx index fdedc6425..bc3bd5efc 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx @@ -265,7 +265,10 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => { - + { form.setValue("branch", ""); }} > - - {repo.name} + + {repo.name} {repo.owner.username} @@ -353,7 +356,10 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} { - + { form.setValue("branch", ""); }} > - - {repo.name} + + + {repo.name} + {repo.owner.username} @@ -374,7 +379,10 @@ export const SaveGiteaProvider = ({ applicationId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} { - + { form.setValue("branch", ""); }} > - - {repo.name} + + {repo.name} {repo.owner.login} @@ -348,7 +351,10 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} { - + { form.setValue("branch", ""); }} > - - {repo.name} + + + {repo.name} + {repo.owner.username} @@ -368,7 +373,10 @@ export const SaveGitlabProvider = ({ applicationId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} { - + { form.setValue("branch", ""); }} > - - {repo.name} + + {repo.name} {repo.owner.username} @@ -355,7 +358,10 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} { - + { form.setValue("branch", ""); }} > - - {repo.name} + + {repo.name} {repo.owner.username} @@ -351,7 +354,10 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { - + { form.setValue("branch", branch.name) } > - - {branch.name} + + + {branch.name} + { - + { form.setValue("branch", ""); }} > - - {repo.name} + + {repo.name} {repo.owner.login} @@ -341,7 +344,10 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} { - + { form.setValue("branch", ""); }} > - - {repo.name} + + + {repo.name} + {repo.owner.username} @@ -370,7 +375,10 @@ export const SaveGitlabProviderCompose = ({ composeId }: Props) => { - + { form.setValue("branch", branch.name); }} > - {branch.name} + {branch.name} {children} - + {"data-checked" in props && ( + + )} ); } diff --git a/apps/dokploy/components/ui/select.tsx b/apps/dokploy/components/ui/select.tsx index a78df1b44..e4c7518bd 100644 --- a/apps/dokploy/components/ui/select.tsx +++ b/apps/dokploy/components/ui/select.tsx @@ -80,7 +80,7 @@ function SelectContent({ @@ -114,7 +114,7 @@ function SelectItem({