diff --git a/tauri-app/src/App.tsx b/tauri-app/src/App.tsx index 675ee8e..22500a5 100644 --- a/tauri-app/src/App.tsx +++ b/tauri-app/src/App.tsx @@ -137,6 +137,7 @@ export default function App() { onChatCreated={(id) => { setCurrentChatId(id); loadChats(); setSidebarOpen(false); }} onChatUpdated={loadChats} onOpenSidebar={() => setSidebarOpen(true)} + onOpenSettings={() => setView("settings")} /> )} diff --git a/tauri-app/src/components/ChatView.css b/tauri-app/src/components/ChatView.css index ca5e91c..13566d5 100644 --- a/tauri-app/src/components/ChatView.css +++ b/tauri-app/src/components/ChatView.css @@ -627,31 +627,59 @@ align-items: center; justify-content: space-between; gap: 14px; - margin-bottom: 14px; - padding: 14px 16px; + margin-bottom: 12px; + padding: 12px 16px; border-radius: var(--radius-lg); border: 1px solid var(--border2); - background: rgba(255, 255, 255, 0.025); + background: rgba(255, 255, 255, 0.03); + backdrop-filter: blur(8px); +} +.composer-notice strong { + display: block; + color: var(--text); + margin-bottom: 2px; + font-size: 0.85rem; + font-weight: 600; + letter-spacing: -0.01em; +} +.composer-notice p { + color: var(--text2); + font-size: 0.8rem; + line-height: 1.5; + margin: 0; +} +.composer-notice.warning { + border-color: rgba(250, 204, 21, 0.2); + background: rgba(250, 204, 21, 0.04); +} +.composer-notice.info { + border-color: rgba(72, 166, 255, 0.2); + background: rgba(72, 166, 255, 0.04); } -.composer-notice strong { display: block; color: var(--text); margin-bottom: 3px; font-size: 0.88rem; } -.composer-notice p { color: var(--text2); font-size: 0.82rem; line-height: 1.5; } -.composer-notice.warning { border-color: rgba(255,214,10,0.18); background: rgba(72,55,4,0.16); } -.composer-notice.info { border-color: rgba(72,166,255,0.2); background: rgba(16,38,63,0.2); } .notice-action-btn { border: 1px solid var(--border2); background: var(--bg3); color: var(--text); - border-radius: 10px; - padding: 9px 13px; + border-radius: var(--radius); + padding: 8px 14px; font: inherit; - font-size: 0.82rem; + font-size: 0.8rem; + font-weight: 500; white-space: nowrap; cursor: pointer; - transition: background 0.15s, border-color 0.15s; + transition: background 0.15s, border-color 0.15s, color 0.15s; flex-shrink: 0; + letter-spacing: -0.01em; +} +.notice-action-btn:hover { + background: var(--bg4); + border-color: rgba(72, 166, 255, 0.35); + color: var(--accent2); +} +.notice-action-btn:active { + transform: scale(0.98); } -.notice-action-btn:hover { background: var(--bg4); border-color: rgba(72,166,255,0.4); } /* ── Message wrappers ── */ .msg-wrapper { diff --git a/tauri-app/src/components/ChatView.tsx b/tauri-app/src/components/ChatView.tsx index f806c83..c622d40 100644 --- a/tauri-app/src/components/ChatView.tsx +++ b/tauri-app/src/components/ChatView.tsx @@ -38,6 +38,7 @@ interface Props { onChatCreated: (id: number) => void; onChatUpdated: () => void; onOpenSidebar?: () => void; + onOpenSettings?: () => void; onDegradationDetected?: () => void; } @@ -45,7 +46,7 @@ export default function ChatView({ db, chatId, server, apiKey, model, models, localModels, selectedModel, onModelChange, onModelSwap, isSwapping, status, runtimeMode = "remote", runtimeStatus = "ready", showDebugTools = Boolean((import.meta as ImportMeta & { env?: { DEV?: boolean } }).env?.DEV), - onChatCreated, onChatUpdated, onOpenSidebar, onDegradationDetected + onChatCreated, onChatUpdated, onOpenSidebar, onOpenSettings, onDegradationDetected }: Props) { const [messages, setMessages] = useState([]); const [input, setInput] = useState(""); @@ -796,11 +797,19 @@ export default function ChatView({ {composerNotice.title}

{composerNotice.description}

- {onOpenSidebar && ( - - )} + )} diff --git a/tauri-app/src/components/forgeagent/AgenticToggle.tsx b/tauri-app/src/components/forgeagent/AgenticToggle.tsx index 353a233..b5981f9 100644 --- a/tauri-app/src/components/forgeagent/AgenticToggle.tsx +++ b/tauri-app/src/components/forgeagent/AgenticToggle.tsx @@ -5,46 +5,60 @@ interface AgenticToggleProps { } export default function AgenticToggle({ isActive, onToggle, disabled = false }: AgenticToggleProps) { - const label = isActive ? "Modo agentic ativo" : "Modo agentic desativado"; - return ( );