+
+ {
+ setQuery(value);
+ setActive(0);
+ }}
+ onKeyDown={onKeyDown}
+ placeholder="Search branches"
+ aria-label="Search branches"
+ />
+
+
+ r.key}
+ isSection={isSection}
+ renderSection={(r) => (
+ {r.type === "section" ? r.label : ""}
+ )}
+ activeIndex={activeIndex}
+ onActiveChange={setActive}
+ onActivate={activate}
+ focusable={false}
+ hoverSelects
+ rowHeight={ROW_HEIGHT}
+ aria-label="Branches"
+ className={styles.branchFilterListBody}
+ empty={
+
+ No matching branches
+
+ }
+ renderItem={(r) =>
+ r.type === "ref" ? (
+
+
+
+ {selected.includes(r.value) && }
+
+ ) : null
+ }
+ />
+
+
+
+ );
+}
diff --git a/src/features/vcs/GitLog.module.css b/src/features/vcs/GitLog.module.css
index c3566418d..a1d11a165 100644
--- a/src/features/vcs/GitLog.module.css
+++ b/src/features/vcs/GitLog.module.css
@@ -405,3 +405,70 @@
color: var(--link-hover);
text-decoration: underline;
}
+
+.branchFilterPopup {
+ width: 360px;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+.branchFilterSearch {
+ flex: none;
+ padding: 6px 8px;
+ border-bottom: 1px solid var(--border-popup);
+}
+.branchFilterList {
+ display: flex;
+ flex-direction: column;
+ min-height: 0;
+ padding: 4px 0;
+ box-sizing: content-box;
+}
+.branchFilterListBody {
+ flex: 1;
+}
+.branchFilterSection {
+ padding: 0 10px;
+ color: var(--fg-subtle);
+ font-size: var(--fs-small);
+}
+.branchFilterRow {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+.branchFilterIcon {
+ flex: none;
+ color: var(--fg-subtle);
+}
+.branchFilterCurrent {
+ flex: none;
+ color: var(--accent);
+}
+.branchFilterLabel {
+ flex: 1;
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.branchFilterCheck {
+ flex: none;
+ color: var(--accent);
+}
+.branchFilterEmpty {
+ color: var(--fg-faint);
+}
+.branchFilterMore {
+ flex: none;
+ display: flex;
+ align-items: center;
+ padding: 6px 12px;
+ border-top: 1px solid var(--border-popup);
+ text-align: left;
+}
+.branchFilterMore:hover {
+ background: var(--bg-tree-hover);
+}
diff --git a/src/features/vcs/GitLog.tsx b/src/features/vcs/GitLog.tsx
index 6aff5e2c5..6e364171b 100644
--- a/src/features/vcs/GitLog.tsx
+++ b/src/features/vcs/GitLog.tsx
@@ -1,5 +1,6 @@
/** Git tool window: Log (graph, filters, commit details) and Console tabs. */
import { IssueText } from "./issueLinks";
+import { BranchFilterPopup } from "./BranchFilterPopup";
import {
memo,
useCallback,
@@ -325,7 +326,12 @@ function FilterButton({
{!value &&