+
{formatTimestamp(entry.created_at)}
diff --git a/src/frontend/src/pages/FlowPage/components/flowSidebarComponent/components/FlowVersionSidebar/use-flow-version-sidebar.ts b/src/frontend/src/pages/FlowPage/components/flowSidebarComponent/components/FlowVersionSidebar/use-flow-version-sidebar.ts
index 25fe21386b..8347b2e7b7 100644
--- a/src/frontend/src/pages/FlowPage/components/flowSidebarComponent/components/FlowVersionSidebar/use-flow-version-sidebar.ts
+++ b/src/frontend/src/pages/FlowPage/components/flowSidebarComponent/components/FlowVersionSidebar/use-flow-version-sidebar.ts
@@ -160,6 +160,7 @@ export function useFlowVersionSidebar(flowId: string) {
processedPreview.edges,
tag,
selectedId,
+ selectedEntryFull?.description ?? null,
);
} else if (selectedId === CURRENT_DRAFT_ID || processedPreview?.error) {
setPreview(
@@ -173,6 +174,7 @@ export function useFlowVersionSidebar(flowId: string) {
processedPreview,
selectedId,
selectedEntryFull?.version_tag,
+ selectedEntryFull?.description,
setPreview,
]);
diff --git a/src/frontend/src/pages/MainPage/pages/deploymentsPage/components/step-attach-flows-version-panel.tsx b/src/frontend/src/pages/MainPage/pages/deploymentsPage/components/step-attach-flows-version-panel.tsx
index 77d7a95236..1cefe1bcbf 100644
--- a/src/frontend/src/pages/MainPage/pages/deploymentsPage/components/step-attach-flows-version-panel.tsx
+++ b/src/frontend/src/pages/MainPage/pages/deploymentsPage/components/step-attach-flows-version-panel.tsx
@@ -1,4 +1,5 @@
import { memo } from "react";
+import VersionLabel from "@/components/common/versionLabelComponent";
import { Badge } from "@/components/ui/badge";
import type { FlowType } from "@/types/flow";
import type { FlowVersionEntry } from "@/types/flow/version";
@@ -45,15 +46,19 @@ export const VersionPanel = memo(function VersionPanel({
{selectedFlow.name}
- {isLoadingVersions ? (
+ {isLoadingVersions && (
Loading versions...
- ) : versions.length === 0 ? (
+ )}
+
+ {!isLoadingVersions && versions.length === 0 && (
No versions found
- ) : (
+ )}
+
+ {!isLoadingVersions &&
versions.map((version) => {
const isAttachedVersion = attachedEntry?.versionId === version.id;
return (
@@ -69,14 +74,18 @@ export const VersionPanel = memo(function VersionPanel({
: "border-transparent bg-muted hover:border-border",
)}
>
-
+
- {version.version_tag}
+
{isAttachedVersion && (
ATTACHED
@@ -88,8 +97,7 @@ export const VersionPanel = memo(function VersionPanel({
);
- })
- )}
+ })}
>
diff --git a/src/frontend/src/stores/versionPreviewStore.ts b/src/frontend/src/stores/versionPreviewStore.ts
index 71786d2ea4..05cacc08e9 100644
--- a/src/frontend/src/stores/versionPreviewStore.ts
+++ b/src/frontend/src/stores/versionPreviewStore.ts
@@ -7,6 +7,8 @@ interface VersionPreviewState {
previewLabel: string | null;
/** The version entry ID currently being previewed, or null for current draft. */
previewId: string | null;
+ /** Optional description of the previewed version. */
+ previewDescription: string | null;
/** True while the sidebar is fetching a version entry to display. */
isPreviewLoading: boolean;
/** True after a version was activated via the restore hook. The sidebar
@@ -18,6 +20,7 @@ interface VersionPreviewState {
edges: EdgeType[],
label: string,
id?: string | null,
+ description?: string | null,
) => void;
clearPreview: () => void;
}
@@ -27,15 +30,17 @@ const useVersionPreviewStore = create
((set) => ({
previewEdges: null,
previewLabel: null,
previewId: null,
+ previewDescription: null,
isPreviewLoading: false,
didRestore: false,
setPreviewLoading: (loading) => set({ isPreviewLoading: loading }),
- setPreview: (nodes, edges, label, id = null) =>
+ setPreview: (nodes, edges, label, id = null, description = null) =>
set({
previewNodes: nodes,
previewEdges: edges,
previewLabel: label,
previewId: id,
+ previewDescription: description,
}),
clearPreview: () =>
set({
@@ -43,6 +48,7 @@ const useVersionPreviewStore = create((set) => ({
previewEdges: null,
previewLabel: null,
previewId: null,
+ previewDescription: null,
isPreviewLoading: false,
// NOTE: didRestore is intentionally NOT reset here. It is read and
// reset by the sidebar unmount cleanup, which runs after clearPreview.