mirror of
https://github.com/supabase/supabase.git
synced 2026-09-06 18:11:51 +08:00
<img width="1693" height="1038" alt="image" src="https://github.com/user-attachments/assets/9ef52446-c517-4ea9-ada6-ac6dc57c8af4" /> ## Summary - add an Explorer-specific chat toolbar with rename, chat ID, permission, and branching controls - list searchable non-support chats in Explorer with reactive updates and safe rehydrated-date sorting - add chat creation entry points to Explorer home and navigation menus - route chat recent items correctly and show chat icons across shared tab surfaces - make the assistant sidebar expand action open the active chat in Explorer This is PR 3 of 3 and is stacked on #49031. Review #48973 first, then #49031, then this PR. Compared with its base, this PR contains only discovery, toolbar, and cross-surface integration work. ## To Test - visit /explorer - Create a new chat either via home tab chat input OR the chats sidebar - Validate chats show up in sidebar - Validate chat conversation works - Close the chat tab and open a chat via sidebar - Change permission settings via the chat tab toolbar and verify it persists ## Test plan - `mise exec node@22 -- pnpm --dir apps/studio exec tsc --noEmit` - focused Vitest suite: 4 files / 5 tests covering reactive chat lists, navigation filtering and sorting, recent-item routing, and sidebar handoff - ESLint on changed TypeScript files - Prettier check on changed source files <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added chat creation from the Explorer home, navigation, and new-tab menu. - Added an Explorer chat toolbar with editable names, ID copying, permissions, shortcuts, and metadata warnings. - Added searchable chat history with sorting, active-chat highlighting, and clear empty states. - Chats can now open directly in Explorer from the AI Assistant panel. - Recent items now link correctly to chats and notebooks. - **Bug Fixes** - Improved chat list updates after creation, deletion, and restored sessions. - Added safer handling for chats without update timestamps. - **Tests** - Expanded coverage for chat navigation, creation, metadata warnings, shortcuts, and recent-item links. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
59 lines
2.1 KiB
TypeScript
59 lines
2.1 KiB
TypeScript
import { Button } from 'ui'
|
|
import { Admonition } from 'ui-patterns/Admonition'
|
|
|
|
import { AIOptInModal } from './AIOptInModal'
|
|
|
|
interface AIAssistantMetadataWarningProps {
|
|
visible: boolean
|
|
onVisibleChange: (visible: boolean) => void
|
|
showMetadataWarning: boolean
|
|
updatedOptInSinceMCP: boolean
|
|
isHipaaProjectDisallowed: boolean
|
|
aiOptInLevel: 'disabled' | 'schema' | 'full' | string | undefined
|
|
}
|
|
|
|
export const AIAssistantMetadataWarning = ({
|
|
visible,
|
|
onVisibleChange,
|
|
showMetadataWarning,
|
|
updatedOptInSinceMCP,
|
|
isHipaaProjectDisallowed,
|
|
aiOptInLevel,
|
|
}: AIAssistantMetadataWarningProps) => (
|
|
<>
|
|
{showMetadataWarning && (
|
|
<Admonition
|
|
type="default"
|
|
title={
|
|
!updatedOptInSinceMCP
|
|
? 'The Assistant has just been updated to help you better!'
|
|
: isHipaaProjectDisallowed
|
|
? 'Project metadata is not shared due to HIPAA'
|
|
: aiOptInLevel === 'disabled'
|
|
? 'Project metadata is currently not shared'
|
|
: 'Limited metadata is shared to the Assistant'
|
|
}
|
|
description={
|
|
!updatedOptInSinceMCP
|
|
? 'You may now opt-in to share schema metadata and even logs for better results'
|
|
: isHipaaProjectDisallowed
|
|
? 'Your organization has the HIPAA addon and will not send project metadata with your prompts for projects marked as HIPAA.'
|
|
: aiOptInLevel === 'disabled'
|
|
? 'The Assistant can provide better answers if you opt-in to share schema metadata.'
|
|
: aiOptInLevel === 'schema'
|
|
? 'Sharing query data in addition to schema can further improve responses. Update AI settings to enable this.'
|
|
: ''
|
|
}
|
|
className="border-0 border-b rounded-none bg-background"
|
|
>
|
|
{!isHipaaProjectDisallowed && (
|
|
<Button variant="default" className="w-fit mt-4" onClick={() => onVisibleChange(true)}>
|
|
Permission settings
|
|
</Button>
|
|
)}
|
|
</Admonition>
|
|
)}
|
|
<AIOptInModal visible={visible} onCancel={() => onVisibleChange(false)} />
|
|
</>
|
|
)
|