fix: toggle the teacher dock from the conversation header

This commit is contained in:
鲨鱼辣椒
2026-09-29 17:00:06 +08:00
parent 5de8ea823d
commit 2922f35e4b
6 changed files with 132 additions and 28 deletions

View File

@@ -775,9 +775,8 @@ export function CodingChatPanel({
onRecover={async () => {
if (targetConversationId) await handleRecovery(codingRecovery(runtimeError?.code).action, false);
}}
browserOpen={agentBrowserOpen}
browserAvailable={Boolean(activeProject)}
onToggleBrowser={() => setAgentBrowserOpen((current) => !current)}
consultationAvailable={Boolean(activeProject)}
onToggleConsultation={() => setConsultationOpen((current) => !current)}
projectName={activeProject?.name}
consultationOpen={consultationOpen}
teacherEntry={activeProject ? <TeacherCompanion companion={teacherCompanion} open={consultationOpen} onOpen={openTeacher} onToggle={toggleTeacher} bubbleRef={setTeacherBubble} introductionRef={setTeacherIntroduction} /> : undefined}

View File

@@ -50,12 +50,11 @@ export function CodingConversationHeader({
onRename,
onAbort,
onRecover,
browserOpen = false,
browserAvailable = false,
onToggleBrowser,
consultationAvailable = false,
onToggleConsultation,
onAskTeacher,
teacherEntry,
consultationOpen,
consultationOpen = false,
projectName,
}: {
conversation: CodingConversationMetadata | null;
@@ -63,9 +62,8 @@ export function CodingConversationHeader({
onRename(title: string): Promise<void>;
onAbort(): Promise<void>;
onRecover(): Promise<void>;
browserOpen?: boolean;
browserAvailable?: boolean;
onToggleBrowser?(): void;
consultationAvailable?: boolean;
onToggleConsultation?(): void;
onAskTeacher?(): void;
teacherEntry?: ReactNode;
consultationOpen?: boolean;
@@ -134,18 +132,19 @@ export function CodingConversationHeader({
{teacherEntry}
{!teacherEntry && onAskTeacher && <button type="button" aria-label="智能体" aria-expanded={consultationOpen} aria-controls="coding-consultation-dock"
className="no-drag shrink-0 rounded-lg px-2 py-1 text-xs" onClick={onAskTeacher}>智能体</button>}
{onToggleBrowser ? (
{onToggleConsultation ? (
<Button
type="button"
variant="ghost"
className={iconButtonClass}
disabled={!browserAvailable}
aria-label={browserOpen ? '关闭开发浏览器' : '打开开发浏览器'}
aria-pressed={browserOpen}
title={browserOpen ? '关闭开发浏览器' : '打开开发浏览器'}
onClick={onToggleBrowser}
disabled={!consultationAvailable}
aria-label={consultationOpen ? '收起老师对话栏' : '展开老师对话栏'}
aria-expanded={consultationOpen}
aria-controls="coding-consultation-dock"
title={consultationOpen ? '收起老师对话栏' : '展开老师对话栏'}
onClick={onToggleConsultation}
>
{browserOpen
{consultationOpen
? <PanelRightClose className="h-4 w-4" aria-hidden="true" />
: <PanelRightOpen className="h-4 w-4" aria-hidden="true" />}
</Button>