- Adiciona item "Visitas" no submenu de Tickets com icone MapPin
- Cria pagina /tickets/visits que filtra apenas tickets da fila Visitas
- Corrige teste de automacao para usar emailProps ao inves de html
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move renderizacao do React Email para a action Node.js
- Passa props do email em vez do HTML ja renderizado
- Resolve erro "dynamic module import unsupported"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Tickets com status AWAITING_ATTENDANCE mas sem play ativo
agora contam como "Em aberto"
- "Em andamento" mostra apenas tickets onde working === true
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Corrige erro de TypeScript ao usar o componente legado que
aceita o formato { ticket: TicketCardData }
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adiciona campo reopenWindowDays no cadastro de empresa (padrao 7 dias)
- Ticket usa automaticamente o prazo da empresa ao ser resolvido
- Remove selecao de prazo do modal de encerramento de ticket
- Valor e gravado no ticket no momento da resolucao
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove templates incompativeis quando empresa do ticket muda
- Limpa selecao de template ao mudar empresa
- Remove texto "(opcional)" do titulo da secao de checklist
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Centraliza dados das celulas em todas as tabelas (text-center)
- Melhora layout do modal de exclusao com card destacado
- Exibe nome e email do usuario no card de confirmacao
- Usa cores rose para indicar acao destrutiva
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adiciona text-center em todas as celulas de dados
- Centraliza botoes de acoes com inline-flex
- Mantem consistencia visual entre headers e dados
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove text-[11px] e tracking-wide dos headers
- Remove table-fixed e larguras fixas das colunas
- Usa mesmo estilo de /admin/companies (tamanho padrao)
- Remove bordas laterais desnecessarias dos headers
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove uppercase dos headers das tabelas
- Corrige acentuacao em "Acoes" para "Ações"
- Ajusta tamanho da fonte para text-[11px] (consistente com outras tabelas)
- Remove min-width das tabelas para evitar scroll horizontal
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Cria 10 novos templates React Email (invite, password-reset, new-login,
sla-warning, sla-breached, ticket-created, ticket-resolved,
ticket-assigned, ticket-status, ticket-comment)
- Adiciona envio de email ao criar convite de usuario
- Adiciona security_invite em COLLABORATOR_VISIBLE_TYPES
- Melhora tabela de equipe com badges de papel e colunas fixas
- Atualiza TicketCard com nova interface de props
- Remove botao de limpeza de dados antigos do admin
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Propaga Set-Cookie do Better Auth no endpoint de avatar\n- Forca refresh da sessao apos upload/remocao\n- Adiciona teste de propagacao e defaults de env para testes
- Remove texto com encoding quebrado ("informações da máquina")
- Corrige gênero de "dispositivo" (masculino, não feminino)
- Remove lógica redundante - skeleton já cobre o estado de carregamento
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adiciona skeleton loading no formulario de novo chamado do portal
- Remove texto confuso do tipo de solicitacao padrao
- Padroniza estilo dos labels Categoria/Subcategoria com os demais campos
- Move botao "Criar" do header para parte inferior do modal na web
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adiciona skeleton no header quando dados do usuario estao carregando
- Remove mensagem "Sem e-mail definido" durante loading
- Substitui spinner por skeleton cards na lista de tickets
- Cria componente PortalTicketCardSkeleton para estado de loading
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Corrige avatar desincronizado na listagem de tickets usando sessao do usuario logado
- Otimiza timer da tickets-table de 1s para 15s (reduz re-renders)
- Remove useEffect desnecessario em status-select (usa prop diretamente)
- Remove useEffects desnecessarios em ticket-custom-fields (usa ticket.customFields diretamente)
- Adiciona React.memo no AssigneeCell para evitar re-renders
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Usa next/font/google para carregar Inter e JetBrains Mono
- Remove @font-face manuais do globals.css
- Corrige variaveis CSS confusas (--font-geist-* com 4 hifens)
- Remove duplicacao de @layer base
- Fontes agora sao otimizadas automaticamente (WOFF2, subset, preload)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Altera altura para h-9 (36px) igual ao componente web
- Aumenta fonte de text-xs para text-sm
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O fix de permissao anterior limpou o diretorio mas o rsync nao
copiou os arquivos corretamente. Este commit dispara um novo deploy.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Atualiza docs/SETUP.md e scripts/setup-dev.sh com:
- Instrucoes para configurar chave SSH
- Opcao de usar Personal Access Token (PAT)
- Comandos para clonar/configurar via SSH ou HTTPS
- Script setup-dev.sh agora aceita --ssh para repo privado
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O problema anterior: apos limpar o conteudo do diretorio, o proprio
diretorio ainda tinha permissoes de root, fazendo o cp do .env falhar.
Nova abordagem:
- Salvar .env usando Docker (monta origem e /tmp)
- Remover o diretorio COMPLETAMENTE usando Docker (monta diretorio pai)
- Recriar o diretorio com mkdir -p (permissoes do usuario runner)
- Restaurar o .env (agora o diretorio tem permissoes corretas)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O problema: Docker cria arquivos como root durante o build, e em
deploys subsequentes o rsync falha com "Permission denied" porque
o usuario runner nao consegue sobrescrever arquivos de root.
A solucao anterior (chown do destino) falhava silenciosamente porque
alguns arquivos ja tinham permissoes de root de deploys anteriores.
Nova abordagem:
- Antes do rsync, limpar completamente o destino usando Docker Alpine
- Docker Alpine roda como root e consegue remover qualquer arquivo
- O .env eh preservado (backup/restore)
- rsync copia para diretorio limpo, sem conflitos de permissao
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adiciona step dedicado para corrigir permissoes apos build Docker:
- Usa container Alpine para fazer chown -R 1000:1000 no build
- Tambem corrige permissoes do destino antes do rsync
Isso resolve o erro "Permission denied" do rsync causado por
arquivos criados pelo Docker como root.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move .github/workflows para .github/workflows.disabled
- Adiciona docs/SETUP.md com guia de setup em novo computador
- Adiciona scripts/setup-dev.sh para setup automatizado
- Remove GitHub Actions runner da VPS (agora usa apenas Forgejo)
CI/CD agora e feito exclusivamente via Forgejo Actions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Arquivos em src/generated/prisma/ criados por containers Docker
(como root) impediam o rsync de sobrescrever no proximo deploy.
Adiciona correcao de permissoes antes do rsync para garantir que
o usuario runner consiga sobrescrever os arquivos.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adiciona solucoes para problemas comuns:
- Regeneracao de hooks quando workflows nao disparam
- Correcao de erro de LevelDB lock
- Reinicio do runner apos reinicio do Forgejo
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O Forgejo estava falhando ao iniciar as queues devido ao LevelDB
nao funcionar bem em containers Docker. A mudanca para queue
type=channel resolve o problema de lock.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove setup pnpm e Node.js (bun ja inclui Node.js)
- Remove steps Verify Bun e Permissions diagnostic
- Remove Prune workspace (criava pnpm-workspace.yaml)
- Remove smoke test (register + heartbeat) - nao mais necessario
- Atualiza chaves de cache para usar apenas bun.lock
- Atualiza docs para indicar desktop_release comentado
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O job ficava 'aguardando' eternamente porque nao existe runner
com labels [self-hosted, windows, desktop]. Comentado ate que
um runner Windows seja configurado.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove referencias ao mirror (desabilitado) e documenta o novo fluxo
de push para ambos os remotes (GitHub + Forgejo).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O rsync estava preservando o UID 1000 dos arquivos criados pelo
container Docker, causando erros de permissao para o runner (UID 999).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O runner do Forgejo roda com UID 999, mas o workflow estava
fazendo chown para UID 1000, causando erros de permissao no rsync.
- Usa id -u e id -g para pegar o UID/GID correto do runner
- Remove --chown do rsync para usar permissoes do runner
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adiciona type: boolean aos inputs para compatibilidade com Forgejo Actions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O Forgejo agora esta configurado como pull mirror do GitHub:
- Sincronizacao automatica a cada 10 minutos
- Usuario continua usando apenas git push origin main
- CI/CD dispara automaticamente apos sincronizacao
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
O runner Forgejo esta configurado como self-hosted, entao todos os jobs
precisam usar as labels corretas em vez de ubuntu-latest.
Alteracoes:
- ci-cd-web-desktop.yml: job changes agora usa [self-hosted, linux, vps]
- quality-checks.yml: job lint-test-build agora usa [self-hosted, linux, vps]
- docs/FORGEJO-CI-CD.md: documentacao atualizada com essa diferenca
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>