This commit is contained in:
2026-02-19 18:05:50 +00:00
parent 9870fa7ae8
commit 6a83342013
38 changed files with 1459 additions and 267 deletions
@@ -23,7 +23,7 @@ import {
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
import { useSettings } from '@/state/useSettings';
import { useVisibleClaudeModels, useVisibleOpenCodeModels } from '@/state/useModels';
import { useVisibleClaudeModels, useVisibleOpenCodeModels, useVisiblePiMonoModels } from '@/state/useModels';
import type { Attachment } from '@/Screens/Dashboard/Chat/EmbeddableChat';
export const ChatLauncher = () => {
@@ -31,9 +31,10 @@ export const ChatLauncher = () => {
const { settings } = useSettings();
const claudeModels = useVisibleClaudeModels();
const openCodeModels = useVisibleOpenCodeModels();
const piMonoModels = useVisiblePiMonoModels();
const client = useClient();
const [provider, setProvider] = useState<'claude' | 'opencode'>(settings.chat.defaultProvider);
const [provider, setProvider] = useState<'claude' | 'opencode' | 'pi-mono'>(settings.chat.defaultProvider);
const [model, setModel] = useState<string | null>(settings.chat.defaultModel);
const [input, setInput] = useState('');
const [attachments, setAttachments] = useState<Attachment[]>([]);
@@ -47,7 +48,7 @@ export const ChatLauncher = () => {
setModel(settings.chat.defaultModel);
}, [settings.chat.defaultProvider, settings.chat.defaultModel]);
const models = provider === 'claude' ? claudeModels : openCodeModels;
const models = provider === 'claude' ? claudeModels : provider === 'opencode' ? openCodeModels : piMonoModels;
const handleAttachWebpage = async (url: string) => {
const idx = attachments.length;
@@ -124,7 +125,8 @@ export const ChatLauncher = () => {
attachmentIds.push(a.attachmentId);
}
const route = provider === 'claude' ? '/chat/new' : '/chat/opencode/new';
const route =
provider === 'claude' ? '/chat/new' : provider === 'opencode' ? '/chat/opencode/new' : '/chat/pi-mono/new';
navigate(route, {
state: {
initialMessage: prompt,
@@ -257,7 +259,7 @@ export const ChatLauncher = () => {
<div className="flex items-center justify-between px-4 pb-3">
<div className="flex items-center gap-1 rounded-lg bg-duck-dark/5 p-1">
{(['claude', 'opencode'] as const).map((value) => (
{(['claude', 'opencode', 'pi-mono'] as const).map((value) => (
<button
key={value}
onClick={() => {
@@ -270,7 +272,7 @@ export const ChatLauncher = () => {
: 'text-duck-dark/50 hover:text-duck-dark/70'
}`}
>
{value === 'claude' ? 'Claude' : 'OpenCode'}
{value === 'claude' ? 'Claude' : value === 'opencode' ? 'OpenCode' : 'Pi'}
</button>
))}
</div>