From 1810a773a738b1f72ca4c30053d582e94526eb3b Mon Sep 17 00:00:00 2001 From: bkellam Date: Sat, 20 Sep 2025 12:32:27 -0700 Subject: [PATCH 1/3] fix --- .../homepage/repositoryCarousel.tsx | 11 +++-- .../web/src/app/[domain]/repos/columns.tsx | 44 +++++++++---------- .../app/[domain]/repos/repositoryTable.tsx | 10 ++--- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx b/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx index 2bbc90249..3d6bf5b57 100644 --- a/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx +++ b/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx @@ -11,6 +11,7 @@ import Image from "next/image"; import { FileIcon } from "@radix-ui/react-icons"; import clsx from "clsx"; import { RepositoryQuery } from "@/lib/types"; +import { useBrowseNavigation } from "../../browse/hooks/useBrowseNavigation"; interface RepositoryCarouselProps { repos: RepositoryQuery[]; @@ -56,6 +57,8 @@ interface RepositoryBadgeProps { const RepositoryBadge = ({ repo }: RepositoryBadgeProps) => { + const { navigateToPath } = useBrowseNavigation(); + const { repoIcon, displayName, repoLink } = (() => { const info = getCodeHostInfoForRepo({ codeHostType: repo.codeHostType, @@ -86,9 +89,11 @@ const RepositoryBadge = ({ return (
{ - if (repoLink !== undefined) { - window.open(repoLink, "_blank"); - } + navigateToPath({ + repoName: repo.repoName, + path: '/', + pathType: 'tree', + }); }} className={clsx("flex flex-row items-center gap-2 border rounded-md p-2 text-clip", { "cursor-pointer": repoLink !== undefined, diff --git a/packages/web/src/app/[domain]/repos/columns.tsx b/packages/web/src/app/[domain]/repos/columns.tsx index dc72c4a27..ca37a9b46 100644 --- a/packages/web/src/app/[domain]/repos/columns.tsx +++ b/packages/web/src/app/[domain]/repos/columns.tsx @@ -2,20 +2,22 @@ import { Button } from "@/components/ui/button" import type { ColumnDef } from "@tanstack/react-table" -import { ArrowUpDown, ExternalLink, Clock, Loader2, CheckCircle2, XCircle, Trash2, Check, ListFilter } from "lucide-react" +import { ArrowUpDown, Clock, Loader2, CheckCircle2, XCircle, Trash2, Check, ListFilter } from "lucide-react" import Image from "next/image" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { cn, getRepoImageSrc } from "@/lib/utils" import { RepoIndexingStatus } from "@sourcebot/db"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" +import Link from "next/link" +import { getBrowsePath } from "../browse/hooks/useBrowseNavigation" export type RepositoryColumnInfo = { repoId: number - name: string + repoName: string; + repoDisplayName: string imageUrl?: string repoIndexingStatus: RepoIndexingStatus lastIndexed: string - url: string } const statusLabels = { @@ -90,42 +92,38 @@ const StatusIndicator = ({ status }: { status: RepoIndexingStatus }) => { export const columns = (domain: string): ColumnDef[] => [ { - accessorKey: "name", + accessorKey: "repoDisplayName", header: 'Repository', - cell: ({ row }) => { - const repo = row.original - const url = repo.url - const isRemoteRepo = url.length > 0 - + cell: ({ row: { original: { repoId, repoName, repoDisplayName, imageUrl } } }) => { return (
- {repo.imageUrl ? ( + {imageUrl ? ( {`${repo.name} ) : (
- {repo.name.charAt(0)} + {repoDisplayName.charAt(0)}
)}
- { - if (isRemoteRepo) { - window.open(url, "_blank") - } - }} + - {repo.name.length > 40 ? `${repo.name.slice(0, 40)}...` : repo.name} - - {isRemoteRepo && } + {repoDisplayName.length > 40 ? `${repoDisplayName.slice(0, 40)}...` : repoDisplayName} +
) diff --git a/packages/web/src/app/[domain]/repos/repositoryTable.tsx b/packages/web/src/app/[domain]/repos/repositoryTable.tsx index 8bfa74ece..8d9dc0f18 100644 --- a/packages/web/src/app/[domain]/repos/repositoryTable.tsx +++ b/packages/web/src/app/[domain]/repos/repositoryTable.tsx @@ -37,21 +37,21 @@ export const RepositoryTable = ({ const tableRepos = useMemo(() => { if (reposLoading) return Array(4).fill(null).map(() => ({ repoId: 0, - name: "", + repoName: "", + repoDisplayName: "", repoIndexingStatus: RepoIndexingStatus.NEW, lastIndexed: "", - url: "", imageUrl: "", })); if (!repos) return []; return repos.map((repo): RepositoryColumnInfo => ({ repoId: repo.repoId, - name: repo.repoDisplayName ?? repo.repoName, + repoName: repo.repoName, + repoDisplayName: repo.repoDisplayName ?? repo.repoName, imageUrl: repo.imageUrl, repoIndexingStatus: repo.repoIndexingStatus as RepoIndexingStatus, lastIndexed: repo.indexedAt?.toISOString() ?? "", - url: repo.webUrl ?? repo.repoCloneUrl, })).sort((a, b) => { const getPriorityFromStatus = (status: RepoIndexingStatus) => { switch (status) { @@ -119,7 +119,7 @@ export const RepositoryTable = ({ Date: Sat, 20 Sep 2025 12:36:00 -0700 Subject: [PATCH 2/3] move to link --- .../homepage/repositoryCarousel.tsx | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx b/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx index 3d6bf5b57..0a90e1a74 100644 --- a/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx +++ b/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx @@ -11,7 +11,9 @@ import Image from "next/image"; import { FileIcon } from "@radix-ui/react-icons"; import clsx from "clsx"; import { RepositoryQuery } from "@/lib/types"; -import { useBrowseNavigation } from "../../browse/hooks/useBrowseNavigation"; +import { getBrowsePath } from "../../browse/hooks/useBrowseNavigation"; +import Link from "next/link"; +import { useDomain } from "@/hooks/useDomain"; interface RepositoryCarouselProps { repos: RepositoryQuery[]; @@ -57,9 +59,8 @@ interface RepositoryBadgeProps { const RepositoryBadge = ({ repo }: RepositoryBadgeProps) => { - const { navigateToPath } = useBrowseNavigation(); - - const { repoIcon, displayName, repoLink } = (() => { + const domain = useDomain(); + const { repoIcon, displayName } = (() => { const info = getCodeHostInfoForRepo({ codeHostType: repo.codeHostType, name: repo.repoName, @@ -75,34 +76,30 @@ const RepositoryBadge = ({ className={`w-4 h-4 ${info.iconClassName}`} />, displayName: info.displayName, - repoLink: info.repoLink, } } return { repoIcon: , displayName: repo.repoName, - repoLink: undefined, } })(); return ( -
{ - navigateToPath({ - repoName: repo.repoName, - path: '/', - pathType: 'tree', - }); - }} - className={clsx("flex flex-row items-center gap-2 border rounded-md p-2 text-clip", { - "cursor-pointer": repoLink !== undefined, + {repoIcon} {displayName} -
+ ) } From 60bf93375e286374a75381b5cb64eb75a5f38995 Mon Sep 17 00:00:00 2001 From: bkellam Date: Sat, 20 Sep 2025 12:39:10 -0700 Subject: [PATCH 3/3] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1530d376d..4033db4de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved repository query performance by adding db indices. [#526](https://github.com/sourcebot-dev/sourcebot/pull/526) - Improved repository query performance by removing JOIN on `Connection` table. [#527](https://github.com/sourcebot-dev/sourcebot/pull/527) +- Changed repo carousel and repo list links to redirect to the file browser. [#528](https://github.com/sourcebot-dev/sourcebot/pull/528) ## [4.7.1] - 2025-09-19