feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(web): add repo browsing without requiring a search first - #1100

Closed
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472
Closed

feat(web): add repo browsing without requiring a search first#1100
h30s wants to merge 2 commits into
sourcebot-dev:mainfrom
h30s:h30s/feat-browse-repos-472

Conversation

@h30s

@h30sh30s commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a 'Browse repositories' button on the search landing page so users can go straight to the repo list`
  • Adds a 'Repositories' back-button in the file explorer top bar
  • Fixes the Repositories nav item active state to stay highlighted on /browse routes

Fixes#472

Summary by CodeRabbit

  • New Features
    • Added a "Repositories" button to the top navigation for quick access to browse repositories.
    • Added a "Browse repositories" call-to-action on the search page with guidance to open repos in the file explorer.
    • Improved navigation highlighting for repository-related sections.
    • Clarified repository page description with instructions for opening repositories.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f830a0ba-4b8a-4ee4-89f9-351759c5c71f

📥 Commits

Reviewing files that changed from the base of the PR and between 3a67747 and 4d00870.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
✅ Files skipped from review due to trivial changes (2)
  • CHANGELOG.md
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx

Walkthrough

Adds explicit entry points for repository browsing: a TopBar action button, updated navigation active-state logic for /repos, a CTA on the search landing page linking to /repos, and clarified repo list copy on the repositories page.

Changes

Cohort / File(s)Summary
TopBar & Layout
packages/web/src/app/(app)/browse/layoutClient.tsx
Passes an actions React node into TopBar that renders an outline/small button linking to /repos with a BookMarkedIcon.
Navigation Active State
packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
Updates isActive(href) to treat /repos as active when pathname is /repos, starts with /repos/, is /browse, or starts with /browse/.
Search Landing CTA
packages/web/src/app/(app)/search/components/searchLandingPage.tsx
Adds a centered CTA (outline Button with Link to /repos, FolderTreeIcon) and helper text prompting users to open the file explorer and pick a repo.
Repos Page Copy
packages/web/src/app/(app)/repos/page.tsx
Adjusts repository list description to instruct that selecting a repository opens it in the file explorer.
Changelog
CHANGELOG.md
Adds an Unreleased → Added entry describing the new browse/repositories UI affordances.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: enabling repository browsing without requiring a search first, which matches the primary objective of the changeset.
Linked Issues check✅ PassedThe PR fully addresses issue #472 by adding multiple UI entry points for browsing repos without search: a 'Browse repositories' button on the search landing page and a 'Repositories' shortcut in the top bar.
Out of Scope Changes check✅ PassedAll changes are directly related to enabling repository browsing without search: UI navigation additions, active state fixes for the Repositories nav item, and documentation updates are all in scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/web/src/app/`(app)/components/navigationMenu/navigationItems.tsx:
- Around line 29-31: The active-state check using startsWith in the block that
handles href === '/repos' is too permissive; change the logic that currently
returns pathname.startsWith('/repos') || pathname.startsWith('/browse') to
perform exact-or-subpath matching (e.g., pathname === '/repos' ||
pathname.startsWith('/repos/') and similarly for '/browse') so unrelated
prefixes like '/browseXYZ' don't match; update the condition in the function
handling href === '/repos' (reference: href and pathname checks in
navigationItems.tsx) to use these exact-or-subpath checks or a small helper like
isExactOrSubpath(prefix, pathname).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c14fcc13-2c73-4ab1-bd36-6c76ef6f1bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 44e7e62 and 3a67747.

📒 Files selected for processing (4)
  • packages/web/src/app/(app)/browse/layoutClient.tsx
  • packages/web/src/app/(app)/components/navigationMenu/navigationItems.tsx
  • packages/web/src/app/(app)/repos/page.tsx
  • packages/web/src/app/(app)/search/components/searchLandingPage.tsx

@h30s

h30s commented Apr 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@msukkari PTAL

@brendan-kellam

Copy link
Copy Markdown
Contributor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

@h30s

h30s commented Apr 9, 2026

Copy link
Copy Markdown
ContributorAuthor

@h30s I'm going to close this PR as we are currently re-working the UI to fulfill this requirement. For future reference, please discuss with us prior to opening a PR that makes changes to the UI or core product, as outlined in the CONTRIBUTING.md

ah got it 👍will discuss first next time before pushing UI changes

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FR] Provide an easy way to use Sourcebot for browsing repos

2 participants

@h30s@brendan-kellam