@@ -35,6 +35,7 @@ import { IconProvider } from './contexts/IconContext';
3535import { storageService } from './services/storageService' ;
3636import { exportDocumentToFile } from './services/documentExportService' ;
3737import { llmDiscoveryService } from './services/llmDiscoveryService' ;
38+ import { llmService } from './services/llmService' ;
3839import { LOCAL_STORAGE_KEYS , DEFAULT_SETTINGS } from './constants' ;
3940import { repository , type RepositoryStartupTiming } from './services/repository' ;
4041import { DocumentNode } from './components/PromptTreeItem' ;
@@ -1725,6 +1726,28 @@ export const MainApp: React.FC = () => {
17251726 setDocumentView ( 'editor' ) ;
17261727 setView ( 'editor' ) ;
17271728
1729+ const shouldAutoGenerateTitle =
1730+ Boolean ( settings . llmProviderUrl && settings . llmModelName ) &&
1731+ settings . apiType !== 'unknown' &&
1732+ llmStatus === 'connected' ;
1733+
1734+ if ( shouldAutoGenerateTitle ) {
1735+ void ( async ( ) => {
1736+ try {
1737+ addLog ( 'INFO' , 'Auto-generating clipboard document title using local LLM.' ) ;
1738+ const generatedTitle = await llmService . generateTitle ( text , settings , addLog ) ;
1739+ const cleanedTitle = generatedTitle . trim ( ) ;
1740+ if ( cleanedTitle . length > 0 ) {
1741+ await updateItem ( newDoc . id , { title : cleanedTitle } ) ;
1742+ addLog ( 'INFO' , `Applied AI-generated title "${ cleanedTitle } " to clipboard document.` ) ;
1743+ }
1744+ } catch ( err ) {
1745+ const message = err instanceof Error ? err . message : 'Unknown error' ;
1746+ addLog ( 'ERROR' , `Automatic title generation failed: ${ message } ` ) ;
1747+ }
1748+ } ) ( ) ;
1749+ }
1750+
17281751 const detectedLanguage = summary . languageHint ?? 'unknown' ;
17291752 const mimeDescriptor = mimeType ?? 'text/plain' ;
17301753 addLog (
@@ -1764,7 +1787,7 @@ export const MainApp: React.FC = () => {
17641787 message : `Something went wrong while importing from the clipboard: ${ message } ` ,
17651788 } ) ;
17661789 }
1767- } , [ createDocumentFromClipboard , getParentIdForNewItem , ensureNodeVisible , activateDocumentTab , setSelectedIds , setLastClickedId , setActiveTemplateId , setDocumentView , setView , addLog ] ) ;
1790+ } , [ createDocumentFromClipboard , getParentIdForNewItem , ensureNodeVisible , activateDocumentTab , setSelectedIds , setLastClickedId , setActiveTemplateId , setDocumentView , setView , addLog , settings , llmStatus , updateItem ] ) ;
17681791
17691792 const handleNewCodeFile = useCallback ( async ( filename : string ) => {
17701793 addLog ( 'INFO' , `User action: Create New Code File with name "${ filename } ".` ) ;
0 commit comments