diff --git a/src/components/Icon.svelte b/src/components/Icon.svelte
index b2213e898..8952c1d40 100644
--- a/src/components/Icon.svelte
+++ b/src/components/Icon.svelte
@@ -15,6 +15,7 @@
| "checkmark"
| "chevron-down"
| "chevron-right"
+ | "clock"
| "collapse-panel"
| "comment"
| "comment-checkmark"
@@ -185,6 +186,29 @@
+ {:else if name === "clock"}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{:else if name === "collapse-panel"}
diff --git a/src/components/Revision.svelte b/src/components/Revision.svelte
index ced650c34..be8b19c4f 100644
--- a/src/components/Revision.svelte
+++ b/src/components/Revision.svelte
@@ -318,22 +318,20 @@
-
-
-
(hideChanges = !hideChanges)}>
- Changes
-
-
- {#await loadHighlightedDiff(rid, revision.base, revision.head)}
- Loading…
- {:then diff}
-
- {/await}
-
+
+
(hideChanges = !hideChanges)}>
+ Changes
+
+
+ {#await loadHighlightedDiff(rid, revision.base, revision.head)}
+ Loading…
+ {:then diff}
+
+ {/await}
diff --git a/src/views/repo/Patch.svelte b/src/views/repo/Patch.svelte
index 0654c8c9f..bf83a16fd 100644
--- a/src/views/repo/Patch.svelte
+++ b/src/views/repo/Patch.svelte
@@ -26,24 +26,23 @@
import AssigneeInput from "@app/components/AssigneeInput.svelte";
import Border from "@app/components/Border.svelte";
import CopyableId from "@app/components/CopyableId.svelte";
+ import DropdownList from "@app/components/DropdownList.svelte";
+ import DropdownListItem from "@app/components/DropdownListItem.svelte";
import Icon from "@app/components/Icon.svelte";
import InlineTitle from "@app/components/InlineTitle.svelte";
import LabelInput from "@app/components/LabelInput.svelte";
import Layout from "./Layout.svelte";
+ import NakedButton from "@app/components/NakedButton.svelte";
+ import NodeId from "@app/components/NodeId.svelte";
import PatchStateBadge from "@app/components/PatchStateBadge.svelte";
import PatchStateButton from "@app/components/PatchStateButton.svelte";
import PatchTeaser from "@app/components/PatchTeaser.svelte";
+ import PatchTimeline from "@app/components/PatchTimeline.svelte";
+ import Popover, { closeFocused } from "@app/components/Popover.svelte";
import RevisionComponent from "@app/components/Revision.svelte";
import Sidebar from "@app/components/Sidebar.svelte";
import Tab from "@app/components/Tab.svelte";
import TextInput from "@app/components/TextInput.svelte";
- import NakedButton from "@app/components/NakedButton.svelte";
- import Popover, { closeFocused } from "@app/components/Popover.svelte";
- import DropdownList from "@app/components/DropdownList.svelte";
- import DropdownListItem from "@app/components/DropdownListItem.svelte";
- import NodeId from "@app/components/NodeId.svelte";
- import Avatar from "@app/components/Avatar.svelte";
- import PatchTimeline from "@app/components/PatchTimeline.svelte";
interface Props {
repo: RepoInfo;
@@ -75,7 +74,7 @@
let updatedTitle = $state("");
let labelSaveInProgress: boolean = $state(false);
let assigneesSaveInProgress: boolean = $state(false);
- let tab: "patch" | "revisions" = $state("patch");
+ let tab: "patch" | "revisions" | "timeline" = $state("patch");
let hideTimeline = $state(false);
let selectedRevision: Revision = $state(revisions.slice(-1)[0]);
const revisionAuthors = $derived(
@@ -288,7 +287,7 @@
padding-bottom: 1rem;
}
.content {
- padding: 1rem 1rem 0 0;
+ padding: 1rem 1rem 1rem 0;
}
.metadata-divider {
@@ -455,7 +454,8 @@
class="global-flex"
style:z-index="10"
style:gap="1rem"
- style:padding="0 1rem">
+ style:padding="0 1rem"
+ style:width="100%">
Revisions
@@ -478,11 +478,6 @@
onclick={() => {
tab = "revisions";
}}>
-
{formatOid(selectedRevision.id)}
{#if selectedRevision.id === revisions.slice(-1)[0].id}
{/if}
+
+
+ {
+ tab = "timeline";
+ }}>
+
+ Timeline
+
+
- {#if tab === "patch"}
-