diff --git a/src/base/projects/BranchSelector.svelte b/src/base/projects/BranchSelector.svelte
new file mode 100644
index 000000000..5b84785d6
--- /dev/null
+++ b/src/base/projects/BranchSelector.svelte
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+ {#if branches.length > 0}
+
+ branchesDropdown = !branchesDropdown} class="stat branch" class:not-allowed={!branches}>
+ {#if commit === project.head}
+ {project.meta.defaultBranch}
+
+ {:else if !isOid(revision)}
+ {revision}
+ {:else}
+ Browse...
+ {/if}
+
+
+ {#each branches as [name,]}
+
switchBranch(name)}>{name}
+ {/each}
+
+
+ {#if commit === project.head || !isOid(revision)}
+
+ {formatCommit(commit)}
+
+ {:else}
+
+ {commit}
+
+
+ {formatCommit(commit)}
+
+ {/if}
+
+ {:else if commit === project.head}
+
+ {project.meta.defaultBranch}
+
+
+ {formatCommit(commit)}
+
+ {:else}
+
+ {commit}
+
+
+ {formatCommit(commit)}
+
+ {/if}
+
diff --git a/src/base/projects/Browser.svelte b/src/base/projects/Browser.svelte
index 9c2dee169..b9fa85084 100644
--- a/src/base/projects/Browser.svelte
+++ b/src/base/projects/Browser.svelte
@@ -1,4 +1,5 @@
diff --git a/src/base/projects/Commit/History.svelte b/src/base/projects/Commit/History.svelte
index a57359d8d..85112d163 100644
--- a/src/base/projects/Commit/History.svelte
+++ b/src/base/projects/Commit/History.svelte
@@ -1,18 +1,26 @@