From 1610c22958f4c0a1ed76053203fb07f2139c0f30 Mon Sep 17 00:00:00 2001 From: ComputelessComputer Date: Sat, 28 Mar 2026 15:47:01 -0700 Subject: [PATCH 1/2] fix: simplify note folder breadcrumbs Remove the redundant note title from the note header breadcrumb, show only folder ancestry, and use monospace styling for that path. --- .../components/outer-header/folder/index.tsx | 138 +++--------------- 1 file changed, 21 insertions(+), 117 deletions(-) diff --git a/apps/desktop/src/session/components/outer-header/folder/index.tsx b/apps/desktop/src/session/components/outer-header/folder/index.tsx index 3044e91b17..b64b5fa99c 100644 --- a/apps/desktop/src/session/components/outer-header/folder/index.tsx +++ b/apps/desktop/src/session/components/outer-header/folder/index.tsx @@ -5,17 +5,13 @@ import { BreadcrumbItem, BreadcrumbLink, BreadcrumbList, - BreadcrumbPage, BreadcrumbSeparator, } from "@hypr/ui/components/ui/breadcrumb"; import { Button } from "@hypr/ui/components/ui/button"; -import { SearchableFolderDropdown } from "./searchable-dropdown"; - import { useBillingAccess } from "~/auth/billing"; import { FolderBreadcrumb } from "~/shared/ui/folder-breadcrumb"; import * as main from "~/store/tinybase/store/main"; -import { useSessionTitle } from "~/store/zustand/live-title"; import { useTabs } from "~/store/zustand/tabs"; export function FolderChain({ sessionId }: { sessionId: string }) { @@ -26,78 +22,39 @@ export function FolderChain({ sessionId }: { sessionId: string }) { "folder_id", main.STORE_ID, ); - const storeTitle = main.UI.useCell( - "sessions", - sessionId, - "title", - main.STORE_ID, - ) as string | undefined; - const title = useSessionTitle(sessionId, storeTitle); - const handleChangeTitle = main.UI.useSetPartialRowCallback( - "sessions", - sessionId, - (title: string) => ({ title }), - [], - main.STORE_ID, - ); - - if (!isPro) { - return ( - - - - - - - - - - ); + if (!folderId) { + return null; } return ( - - {folderId && } - {!folderId ? ( - - ) : ( - - )} + + + ); } -function RenderIfRootExist({ +function RenderFolderBreadcrumb({ folderId, - title, - handleChangeTitle, + isPro, }: { folderId: string; - title: string; - handleChangeTitle: (title: string) => void; + isPro: boolean; }) { const openNew = useTabs((state) => state.openNew); return ( - <> - - index > 0 ? : null - } - renderCrumb={({ id, name }) => ( - + + index > 0 ? : null + } + renderCrumb={({ id, name }) => ( + + {isPro ? ( - } - /> - - - - - - - - - ); -} - -function TitleInput({ - title, - handleChangeTitle, -}: { - title: string; - handleChangeTitle: (title: string) => void; -}) { - return ( - handleChangeTitle(e.target.value)} + ) : ( + {name} + )} + + )} /> ); } From 2c438795322f54b8b31ca5b190875cf108220991 Mon Sep 17 00:00:00 2001 From: ComputelessComputer Date: Sat, 28 Mar 2026 15:48:53 -0700 Subject: [PATCH 2/2] fix: add unassigned note folder placeholder Show a muted folder icon and Unassigned label for notes without a folder, with a Coming soon tooltip in the note header. --- .../components/outer-header/folder/index.tsx | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/session/components/outer-header/folder/index.tsx b/apps/desktop/src/session/components/outer-header/folder/index.tsx index b64b5fa99c..ff40f0638d 100644 --- a/apps/desktop/src/session/components/outer-header/folder/index.tsx +++ b/apps/desktop/src/session/components/outer-header/folder/index.tsx @@ -8,6 +8,11 @@ import { BreadcrumbSeparator, } from "@hypr/ui/components/ui/breadcrumb"; import { Button } from "@hypr/ui/components/ui/button"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@hypr/ui/components/ui/tooltip"; import { useBillingAccess } from "~/auth/billing"; import { FolderBreadcrumb } from "~/shared/ui/folder-breadcrumb"; @@ -24,7 +29,7 @@ export function FolderChain({ sessionId }: { sessionId: string }) { ); if (!folderId) { - return null; + return ; } return ( @@ -37,6 +42,24 @@ export function FolderChain({ sessionId }: { sessionId: string }) { ); } +function UnassignedFolderBreadcrumb() { + return ( + + + + + + + Unassigned + + + Coming soon + + + + ); +} + function RenderFolderBreadcrumb({ folderId, isPro,