feat: melhorias de UX e redesign de comentários

- Corrige sincronização do avatar no perfil após upload
- Reduz tamanho dos ícones de câmera/lixeira no avatar
- Remove atributos title (tooltips nativos) de toda aplicação
- Adiciona regra no AGENTS.md sobre uso de tooltips
- Permite desmarcar resposta no checklist (toggle)
- Torna campo answer opcional na mutation setChecklistItemAnswer
- Adiciona edição inline dos campos de resumo no painel de detalhes
- Redesenha comentários com layout mais limpo e consistente
- Cria tratamento especial para comentários automáticos de sistema
- Aplica fundo ciano semi-transparente em comentários públicos
- Corrige import do Loader2 no notification-preferences-form

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
esdrasrenan 2025-12-15 22:05:27 -03:00
parent 23ea426c68
commit 022e1f63ba
17 changed files with 636 additions and 180 deletions

View file

@ -72,9 +72,9 @@ export function ChatSessionItem({ session, isActive, onClick }: ChatSessionItemP
{/* Indicador online/offline */}
{session.machineOnline !== undefined && (
session.machineOnline ? (
<span className="size-2 rounded-full bg-emerald-500" title="Online" />
<span className="size-2 rounded-full bg-emerald-500" />
) : (
<WifiOff className="size-3 text-slate-400" title="Offline" />
<WifiOff className="size-3 text-slate-400" />
)
)}
</div>

View file

@ -68,7 +68,6 @@ export function ChatSessionList({
<button
onClick={onMinimize}
className="rounded-md p-1.5 text-slate-500 hover:bg-slate-100"
title="Minimizar"
>
<svg className="size-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M20 12H4" />
@ -77,7 +76,6 @@ export function ChatSessionList({
<button
onClick={onClose}
className="rounded-md p-1.5 text-slate-500 hover:bg-slate-100"
title="Fechar"
>
<X className="size-4" />
</button>

View file

@ -219,7 +219,6 @@ function MessageAttachment({ attachment }: { attachment: ChatAttachment }) {
<button
onClick={handleView}
className="flex size-6 items-center justify-center rounded-full bg-white/20 hover:bg-white/30"
title="Visualizar"
>
<Eye className="size-3.5 text-white" />
</button>
@ -227,7 +226,6 @@ function MessageAttachment({ attachment }: { attachment: ChatAttachment }) {
onClick={handleDownload}
disabled={downloading}
className="flex size-6 items-center justify-center rounded-full bg-white/20 hover:bg-white/30"
title="Baixar"
>
{downloading ? (
<Spinner className="size-3 text-white" />
@ -249,7 +247,6 @@ function MessageAttachment({ attachment }: { attachment: ChatAttachment }) {
<button
onClick={handleView}
className="rounded p-0.5 hover:bg-slate-200"
title="Visualizar"
>
<Eye className="size-3 text-slate-400" />
</button>
@ -257,7 +254,6 @@ function MessageAttachment({ attachment }: { attachment: ChatAttachment }) {
onClick={handleDownload}
disabled={downloading}
className="rounded p-0.5 hover:bg-slate-200"
title="Baixar"
>
{downloading ? (
<Spinner className="size-3 text-slate-400" />
@ -721,7 +717,6 @@ export function ChatWidget() {
<button
onClick={handleBackToList}
className="flex size-8 items-center justify-center rounded-lg text-slate-500 hover:bg-slate-100"
title="Voltar para lista"
>
<ChevronLeft className="size-5" />
</button>
@ -785,14 +780,12 @@ export function ChatWidget() {
<button
onClick={() => setIsMinimized(true)}
className="ml-2 rounded-md p-1.5 text-slate-500 hover:bg-slate-100"
title="Minimizar"
>
<Minimize2 className="size-4" />
</button>
<button
onClick={() => setIsOpen(false)}
className="rounded-md p-1.5 text-slate-500 hover:bg-slate-100"
title="Fechar"
>
<X className="size-4" />
</button>
@ -955,7 +948,6 @@ export function ChatWidget() {
className="size-9 text-slate-500 hover:bg-slate-100 hover:text-slate-700"
onClick={() => fileInputRef.current?.click()}
disabled={attachments.length >= MAX_ATTACHMENTS || isUploading}
title="Anexar arquivo"
>
{isUploading ? (
<Spinner className="size-4" />