feat(coding): add conversation archive and first-message titles
This commit is contained in:
@@ -9,15 +9,7 @@ import {
|
||||
Square,
|
||||
} from 'lucide-react';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import {
|
||||
Dialog,
|
||||
DialogContent,
|
||||
DialogDescription,
|
||||
DialogFooter,
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
} from '@/components/ui/dialog';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { CodingConversationRenameDialog } from './CodingConversationRenameDialog';
|
||||
import { cn } from '@/lib/utils';
|
||||
import { useSettingsStore } from '@/stores/settings';
|
||||
import { TITLEBAR_LOGO_WIDTH, WINDOWS_TITLEBAR_CONTROLS_WIDTH } from '@/components/layout/titlebar-metrics';
|
||||
@@ -75,7 +67,6 @@ export function CodingConversationHeader({
|
||||
const [busyAction, setBusyAction] = useState<string | null>(null);
|
||||
const [actionError, setActionError] = useState<LocalActionError | null>(null);
|
||||
const [renameOpen, setRenameOpen] = useState(false);
|
||||
const [titleDraft, setTitleDraft] = useState(conversation?.title ?? '');
|
||||
|
||||
const runStatus = snapshot?.run.status ?? 'preparing';
|
||||
const running = ['queued', 'running', 'retrying', 'compacting', 'aborting'].includes(runStatus);
|
||||
@@ -122,7 +113,6 @@ export function CodingConversationHeader({
|
||||
className="no-drag group flex max-w-full items-center gap-1.5 rounded-md text-left"
|
||||
disabled={!conversation}
|
||||
onClick={() => {
|
||||
setTitleDraft(conversation?.title ?? '');
|
||||
setRenameOpen(true);
|
||||
}}
|
||||
>
|
||||
@@ -204,27 +194,8 @@ export function CodingConversationHeader({
|
||||
</p>
|
||||
)}
|
||||
|
||||
<Dialog open={renameOpen} onOpenChange={setRenameOpen}>
|
||||
<DialogContent>
|
||||
<DialogHeader>
|
||||
<DialogTitle>修改对话标题</DialogTitle>
|
||||
<DialogDescription>标题只影响当前对话,不会改动智能体名称。</DialogDescription>
|
||||
</DialogHeader>
|
||||
<Input value={titleDraft} maxLength={160} aria-label="对话标题" onChange={(event) => setTitleDraft(event.target.value)} />
|
||||
<DialogFooter>
|
||||
<Button type="button" variant="outline" className="min-h-10 rounded-xl" onClick={() => setRenameOpen(false)}>取消</Button>
|
||||
<Button
|
||||
type="button"
|
||||
className="min-h-10 rounded-xl"
|
||||
disabled={!titleDraft.trim() || Boolean(busyAction)}
|
||||
onClick={() => perform('rename', async () => {
|
||||
await onRename(titleDraft.trim());
|
||||
setRenameOpen(false);
|
||||
})}
|
||||
>保存</Button>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
{renameOpen && conversation && <CodingConversationRenameDialog
|
||||
title={conversation.title} onSave={onRename} onClose={() => setRenameOpen(false)} />}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user