;
+}
+
+/**
+ * Create the tab naming API for exposure via contextBridge
+ */
+export function createTabNamingApi(): TabNamingApi {
+ return {
+ generateTabName: (config: TabNamingConfig) =>
+ ipcRenderer.invoke('tabNaming:generateTabName', config),
+ };
+}
diff --git a/src/prompts/index.ts b/src/prompts/index.ts
index 852c4052..99d1859e 100644
--- a/src/prompts/index.ts
+++ b/src/prompts/index.ts
@@ -42,4 +42,7 @@ export {
contextGroomingPrompt,
contextTransferPrompt,
contextSummarizePrompt,
+
+ // Tab naming
+ tabNamingPrompt,
} from '../generated/prompts';
diff --git a/src/prompts/tab-naming.md b/src/prompts/tab-naming.md
new file mode 100644
index 00000000..6bd944d1
--- /dev/null
+++ b/src/prompts/tab-naming.md
@@ -0,0 +1,55 @@
+You are a tab naming assistant. Your task is to generate a concise, relevant tab name based on the user's first message to an AI coding assistant.
+
+## Input
+
+You will receive a user's first message to an AI coding assistant. This message describes a task, question, or request they want help with.
+
+## Output
+
+Respond with ONLY the tab name. No explanation, no quotes, no formattingβjust the name itself.
+
+## Rules
+
+1. **Length**: 2-5 words maximum. Shorter is better.
+2. **Relevance**: Capture the specific intent or subject matter, not generic descriptions.
+3. **Uniqueness**: Avoid generic names like "Help Request", "Code Question", "New Task".
+4. **Format**: Use Title Case. No special characters except hyphens for compound concepts.
+5. **Specificity**: Reference specific technologies, files, or concepts mentioned.
+
+## Examples
+
+Message: "Can you help me add a dark mode toggle to my React app?"
+β Dark Mode Toggle
+
+Message: "There's a bug in the user authentication flow where login fails after password reset"
+β Auth Login Bug
+
+Message: "I need to refactor the database queries to use connection pooling"
+β DB Connection Pooling
+
+Message: "Help me write unit tests for the checkout component"
+β Checkout Unit Tests
+
+Message: "What's the best way to implement caching in a Node.js API?"
+β Node.js API Caching
+
+Message: "Fix the TypeScript errors in src/utils/parser.ts"
+β Parser TS Errors
+
+Message: "Add pagination to the user list endpoint"
+β User List Pagination
+
+Message: "I'm getting a CORS error when calling my API from the frontend"
+β CORS API Fix
+
+## Fallback
+
+If the message is too vague or generic to create a meaningful name, prefix with today's date:
+
+Message: "Help me with my code"
+β YYYY-MM-DD Code Help
+
+Message: "I have a question"
+β YYYY-MM-DD Question
+
+Replace YYYY-MM-DD with the actual current date.
diff --git a/src/renderer/components/SettingsModal.tsx b/src/renderer/components/SettingsModal.tsx
index 066e0c0b..25fd2d73 100644
--- a/src/renderer/components/SettingsModal.tsx
+++ b/src/renderer/components/SettingsModal.tsx
@@ -30,6 +30,7 @@ import {
Battery,
Monitor,
PartyPopper,
+ Tag,
} from 'lucide-react';
import { useSettings } from '../hooks';
import type {
@@ -307,6 +308,9 @@ export const SettingsModal = memo(function SettingsModal(props: SettingsModalPro
setSshRemoteIgnorePatterns,
sshRemoteHonorGitignore,
setSshRemoteHonorGitignore,
+ // Automatic tab naming settings
+ automaticTabNamingEnabled,
+ setAutomaticTabNamingEnabled,
} = useSettings();
const [activeTab, setActiveTab] = useState<
@@ -1404,6 +1408,17 @@ export const SettingsModal = memo(function SettingsModal(props: SettingsModalPro
theme={theme}
/>
+ {/* Automatic Tab Naming */}
+
+
{/* Default Thinking Toggle - Three states: Off, On, Sticky */}