|
| 1 | +# Sugestão: Redesign do Chat Mestre IA |
| 2 | + |
| 3 | +Proposta de redesign visual do chat de IA da V10, **sem alterar o app em produção**. Protótipo interativo em [`mockup.html`](./mockup.html) — abra direto no navegador (Chrome/Edge para os recursos de voz). |
| 4 | + |
| 5 | +## Por que |
| 6 | + |
| 7 | +O chat atual (`v10/index.html:905-968`) é um modal central fixo de 760px, sem opção de minimizar, redimensionar ou manter aberto lateralmente enquanto se usa o resto do app. Também não existe nenhum recurso de voz nem configuração de perfil do agente pela interface (os perfis já existem em `mcp-server/model-profiles.json`, mas só são trocados por variável de ambiente). |
| 8 | + |
| 9 | +## O que muda |
| 10 | + |
| 11 | +| Recurso | Hoje | Proposta | |
| 12 | +|---|---|---| |
| 13 | +| Posição | Modal central, bloqueia a tela | Painel lateral fino, docado à direita, não bloqueia o app | |
| 14 | +| Minimizar | Não existe | Botão 🗕 recolhe para uma pílula flutuante com badge de não lidas | |
| 15 | +| Redimensionar | Tamanho fixo | Arrasta a borda esquerda (300–640px) + botão de expandir/encolher | |
| 16 | +| Voz (entrada) | Não existe | Botão de microfone com Web Speech API (STT), pt-BR | |
| 17 | +| Voz (saída) | Não existe | Botão 🔊 por mensagem + toggle "ler automaticamente" | |
| 18 | +| Perfil do agente | Só via env var `OLLAMA_MODEL_PROFILE` | Nova aba "Perfil": troca visual entre fast/balanced/agent/coding/reasoning, persona/system prompt, temperature, toggles de comportamento | |
| 19 | +| Abas existentes | Chat / Memórias | Chat / Memórias / **Perfil** (nova) | |
| 20 | + |
| 21 | +## Funcionalidade preservada (nada foi removido) |
| 22 | + |
| 23 | +Todos os elementos e IDs funcionais do chat atual têm equivalente direto no mockup: |
| 24 | + |
| 25 | +- Toolbar completa: anexar contexto do app, imagem, arquivo, terminal, salvar JSON, exportar Markdown, limpar anexos, limpar conversa |
| 26 | +- Chips de contexto anexado (`.ia-attach-panel`) |
| 27 | +- Aba de Memórias com CRUD |
| 28 | +- Bolhas de mensagem user/ai, blocos de código executáveis com botão "▶ Executar" |
| 29 | +- Indicador de "digitando..." |
| 30 | +- Seleção de modelo Ollama |
| 31 | +- Pipeline de segurança existente (`classifyCommand` → `askCommandConfirmation` para comandos destrutivos, execução direta para low-risk) — o botão "▶ Executar (low-risk)" no mockup ilustra esse fluxo já implementado no app real |
| 32 | + |
| 33 | +## Perfil do agente — integração real |
| 34 | + |
| 35 | +A aba "Perfil" mapeia diretamente para `mcp-server/model-profiles.json` (fast, balanced, agent, coding, reasoning). Na integração real, a troca de perfil pela UI chamaria o mesmo mecanismo hoje controlado por `OLLAMA_MODEL_PROFILE`, expondo-o como preferência salva em `localStorage` (padrão já usado por `iaConversation`) em vez de exigir reiniciar o launcher. |
| 36 | + |
| 37 | +## Voz — viabilidade técnica |
| 38 | + |
| 39 | +Nenhuma dependência nova é necessária: `SpeechRecognition`/`webkitSpeechRecognition` (STT) e `speechSynthesis` (TTS) são APIs nativas do navegador, já suportadas no Chrome/Edge que hospedam a UI da V10. Nenhuma lib foi encontrada referenciada no projeto (`v10/index.html`, `v10/launcher.js`, `v10/package.json`) — é feature nova, 100% client-side, sem tocar no launcher ou no MCP. |
| 40 | + |
| 41 | +## Guia de integração (quando for implementar de fato) |
| 42 | + |
| 43 | +1. Manter os IDs atuais (`iaOverlay`→pode virar `iaPanel`, `iaMessages`, `iaInput`, `iaSendBtn`, `iaStatus`, `ollamaModelSelect`, `iaAttachPanel`, `iaMemoriesList` etc.) ou atualizar em conjunto todos os `getElementById`/`onclick` inline que referenciam esses IDs (ver mapa completo do arquivo atual — chat ocupa `v10/index.html:673-755` no CSS e `905-968` no HTML, lógica JS principal em `~1572-2900`). |
| 44 | +2. Reaproveitar o padrão `.cmd-confirm-overlay`/`.cmd-confirm-modal` já existente para confirmação de comandos destrutivos — não recriar. |
| 45 | +3. Persistir estado de UI (largura do painel, minimizado/expandido, perfil selecionado, toggles de voz) em `localStorage`, seguindo o padrão de `mestre_v10_ia_conversation`. |
| 46 | +4. Migrar de `.ia-overlay` (`position:fixed; inset:0`) para o painel docado é uma mudança de z-index/layout; verificar que `.cmd-confirm-overlay` continua renderizando por cima do chat (hoje ambos coexistem por z-index 10000/10050). |
| 47 | + |
| 48 | +## Como ver |
| 49 | + |
| 50 | +Abra `mockup.html` em um navegador. Testado visualmente para os estados: painel padrão, expandido, minimizado, tema claro/escuro (reaproveita as mesmas variáveis CSS do app real), aba de Perfil. |
0 commit comments