From 0e890e56929579c465ac31f2d3e276ec21bb612e Mon Sep 17 00:00:00 2001 From: yyh Date: Mon, 19 Jan 2026 13:51:08 +0800 Subject: [PATCH] feat: auto pin created editable files --- .../workflow/skill/hooks/use-inline-create-node.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/app/components/workflow/skill/hooks/use-inline-create-node.ts b/web/app/components/workflow/skill/hooks/use-inline-create-node.ts index 870b109e32..99a06af92a 100644 --- a/web/app/components/workflow/skill/hooks/use-inline-create-node.ts +++ b/web/app/components/workflow/skill/hooks/use-inline-create-node.ts @@ -12,6 +12,7 @@ import { useCreateAppAssetFolder, useRenameAppAssetNode, } from '@/service/use-app-asset' +import { getFileExtension, isCodeOrTextFile, isMarkdownFile } from '../utils/file-utils' import { createDraftTreeNode, insertDraftTreeNode } from '../utils/tree-utils' type UseInlineCreateNodeOptions = { @@ -78,12 +79,15 @@ export function useInlineCreateNode({ else { const emptyBlob = new Blob([''], { type: 'text/plain' }) const file = new File([emptyBlob], trimmedName) - await createFile.mutateAsync({ + const createdFile = await createFile.mutateAsync({ appId, name: trimmedName, file, parentId: pendingCreateParentId, }) + const extension = getFileExtension(trimmedName, createdFile.extension) + if (isMarkdownFile(extension) || isCodeOrTextFile(extension)) + storeApi.getState().openTab(createdFile.id, { pinned: true }) Toast.notify({ type: 'success', message: t('skillSidebar.menu.fileCreated'),