From 69cd5f3322163bea99f45465faad5f25494fe442 Mon Sep 17 00:00:00 2001 From: ComputelessComputer Date: Fri, 27 Mar 2026 21:42:18 -0700 Subject: [PATCH 1/3] fix: show personal templates first --- .../desktop/src/templates/sidebar-content.tsx | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/apps/desktop/src/templates/sidebar-content.tsx b/apps/desktop/src/templates/sidebar-content.tsx index 3f620096db..453eeaeeea 100644 --- a/apps/desktop/src/templates/sidebar-content.tsx +++ b/apps/desktop/src/templates/sidebar-content.tsx @@ -247,20 +247,6 @@ export function TemplatesSidebarContent({
- {isWebLoading && ( -
- Provided by Char -
- {[0, 1, 2, 3].map((index) => ( -
-
-
-
- ))} -
-
- )} - {isEmpty ? (
@@ -272,12 +258,47 @@ export function TemplatesSidebarContent({ onClick={handleCreateTemplate} className="mt-3 text-sm text-neutral-600 underline hover:text-neutral-800" > - Create your first template + Create my first template )}
) : ( <> + {hasMineResults && ( +
+ My templates + {filteredMine.map((template) => ( + + ))} +
+ )} + + {isWebLoading && !hasWebResults && ( +
+ Provided by Char +
+ {[0, 1, 2, 3].map((index) => ( +
+
+
+
+ ))} +
+
+ )} + {hasWebResults && (
Provided by Char @@ -314,24 +335,6 @@ export function TemplatesSidebarContent({ ))}
)} - - {hasMineResults && ( -
- Your templates - {filteredMine.map((template) => ( - - ))} -
- )} )}
From 5e88c8dd17335c02aeda7b537732361cf0150601 Mon Sep 17 00:00:00 2001 From: ComputelessComputer Date: Fri, 27 Mar 2026 21:51:49 -0700 Subject: [PATCH 2/3] fix: simplify template sidebar rows --- apps/desktop/src/templates/sidebar-content.tsx | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/apps/desktop/src/templates/sidebar-content.tsx b/apps/desktop/src/templates/sidebar-content.tsx index 453eeaeeea..ba816110df 100644 --- a/apps/desktop/src/templates/sidebar-content.tsx +++ b/apps/desktop/src/templates/sidebar-content.tsx @@ -318,17 +318,7 @@ export function TemplatesSidebarContent({
{template.title || "Untitled"} - {template.category && ( - - ({template.category}) - - )}
- {template.description && ( -
- {template.description} -
- )}
@@ -398,11 +388,6 @@ function TemplateListItem({
{template.title?.trim() || "Untitled"}
- {template.description && ( -
- {template.description} -
- )}
From cdef2281fbe8fd037f7d29c05c29bd5ad1aabc87 Mon Sep 17 00:00:00 2001 From: ComputelessComputer Date: Fri, 27 Mar 2026 21:56:06 -0700 Subject: [PATCH 3/3] fix: fork community templates on edit --- .../src/shared/ui/resource-list/preview-header.tsx | 8 ++++++-- apps/desktop/src/templates/components/details.tsx | 4 ++++ apps/desktop/src/templates/index.tsx | 14 +++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/apps/desktop/src/shared/ui/resource-list/preview-header.tsx b/apps/desktop/src/shared/ui/resource-list/preview-header.tsx index e3922fd1d9..d93f34b2d2 100644 --- a/apps/desktop/src/shared/ui/resource-list/preview-header.tsx +++ b/apps/desktop/src/shared/ui/resource-list/preview-header.tsx @@ -9,6 +9,8 @@ export function ResourcePreviewHeader({ category, targets, onClone, + actionLabel = "Clone", + actionIcon, children, }: { title: string; @@ -16,6 +18,8 @@ export function ResourcePreviewHeader({ category?: string | null; targets?: string[] | null; onClone: () => void; + actionLabel?: string; + actionIcon?: ReactNode; children?: ReactNode; }) { return ( @@ -30,8 +34,8 @@ export function ResourcePreviewHeader({ )}
{category && ( diff --git a/apps/desktop/src/templates/components/details.tsx b/apps/desktop/src/templates/components/details.tsx index d7c6990537..f97186247e 100644 --- a/apps/desktop/src/templates/components/details.tsx +++ b/apps/desktop/src/templates/components/details.tsx @@ -1,3 +1,5 @@ +import { Pencil } from "lucide-react"; + import type { TemplateSection } from "@hypr/store"; import { SectionsList } from "./sections-editor"; @@ -77,6 +79,8 @@ function WebTemplatePreview({ description={template.description} category={template.category} targets={template.targets} + actionLabel="Edit" + actionIcon={} onClone={() => onClone({ title: template.title ?? "", diff --git a/apps/desktop/src/templates/index.tsx b/apps/desktop/src/templates/index.tsx index 217effac65..b3865979bf 100644 --- a/apps/desktop/src/templates/index.tsx +++ b/apps/desktop/src/templates/index.tsx @@ -109,7 +109,10 @@ function TemplateView({ tab }: { tab: Extract }) { description: string; sections: TemplateSection[]; }) => { - const id = createTemplate(template); + const id = createTemplate({ + ...template, + title: getTemplateCopyTitle(template.title), + }); if (id) { setSelectedMineId(id); } @@ -129,3 +132,12 @@ function TemplateView({ tab }: { tab: Extract }) { ); } + +function getTemplateCopyTitle(title: string) { + const value = title.trim(); + + if (!value) return "Untitled (Copy)"; + if (value.endsWith("(Copy)")) return value; + + return `${value} (Copy)`; +}