From 3a677474603bc453b4249488e31864ead729fd79 Mon Sep 17 00:00:00 2001 From: Himanshu Soni Date: Thu, 9 Apr 2026 01:10:26 +0530 Subject: [PATCH 1/2] feat(web): add repo browsing without requiring a search first --- packages/web/src/app/(app)/browse/layoutClient.tsx | 11 +++++++++++ .../components/navigationMenu/navigationItems.tsx | 3 +++ packages/web/src/app/(app)/repos/page.tsx | 4 +++- .../(app)/search/components/searchLandingPage.tsx | 14 ++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/web/src/app/(app)/browse/layoutClient.tsx b/packages/web/src/app/(app)/browse/layoutClient.tsx index b69dc4ad1..42b66fcf8 100644 --- a/packages/web/src/app/(app)/browse/layoutClient.tsx +++ b/packages/web/src/app/(app)/browse/layoutClient.tsx @@ -11,6 +11,9 @@ import { FileSearchCommandDialog } from "./components/fileSearchCommandDialog"; import { SearchBar } from "../components/searchBar"; import escapeStringRegexp from "escape-string-regexp"; import { Session } from "next-auth"; +import Link from "next/link"; +import { Button } from "@/components/ui/button"; +import { BookMarkedIcon } from "lucide-react"; interface LayoutProps { children: React.ReactNode; @@ -29,6 +32,14 @@ export function LayoutClient({
+ + + Repositories + + + } >

Repositories

-

View and manage your code repositories and their indexing status.

+

+ View and manage your code repositories and their indexing status. Select a repository name to open it in the file explorer. +

({ diff --git a/packages/web/src/app/(app)/search/components/searchLandingPage.tsx b/packages/web/src/app/(app)/search/components/searchLandingPage.tsx index 668c84e57..daece7725 100644 --- a/packages/web/src/app/(app)/search/components/searchLandingPage.tsx +++ b/packages/web/src/app/(app)/search/components/searchLandingPage.tsx @@ -4,6 +4,8 @@ import { RepositoryCarousel } from "../../components/repositoryCarousel" import { Separator } from "@/components/ui/separator" import { SyntaxReferenceGuideHint } from "../../components/syntaxReferenceGuideHint" import Link from "next/link" +import { Button } from "@/components/ui/button" +import { FolderTreeIcon } from "lucide-react" import { SearchBar } from "../../components/searchBar" import { SearchModeSelector } from "../../components/searchModeSelector" import { getRepos, getReposStats } from "@/actions" @@ -56,6 +58,18 @@ export const SearchLandingPage = async ({
+
+ + + Open the file explorer and pick a repo without running a search first. + +
+
Date: Thu, 9 Apr 2026 01:24:55 +0530 Subject: [PATCH 2/2] fix(web): segment-boundary Repos nav active state; changelog for #1100 --- CHANGELOG.md | 1 + .../(app)/components/navigationMenu/navigationItems.tsx | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 222887e9d..f83c9816e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Linear issue links in chat responses now render as a rich card-style UI showing the Linear logo, issue identifier, and title instead of plain hyperlinks. [#1060](https://github.com/sourcebot-dev/sourcebot/pull/1060) +- Added a "Browse repositories" entry point on the search landing page, a Repositories shortcut in the file explorer top bar, and clearer repo list copy so users can open the file explorer without running a search first. [#1100](https://github.com/sourcebot-dev/sourcebot/pull/1100) ### Changed - Links in Ask Sourcebot chat responses now open in a new tab with a subtle external link icon indicator. [#1059](https://github.com/sourcebot-dev/sourcebot/pull/1059) diff --git a/packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx b/packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx index 2e031bf66..0e35530fa 100644 --- a/packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx +++ b/packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx @@ -27,7 +27,12 @@ export const NavigationItems = ({ return pathname === '/'; } if (href === '/repos') { - return pathname.startsWith('/repos') || pathname.startsWith('/browse'); + return ( + pathname === '/repos' || + pathname.startsWith('/repos/') || + pathname === '/browse' || + pathname.startsWith('/browse/') + ); } return pathname.startsWith(href); };