Releases: RPGMais/nextool
whatsappbot 1.2.2 [GLPI 11]
Corrigido
- Modo WhatsApp (notifications_sms) agora e ativado automaticamente ao instalar ou carregar o modulo (antes ficava desabilitado por padrao, exigindo ativacao manual em Configurar > Notificacoes)
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:whatsappbot[GLPI_11]
whatsappbot 1.2.1 [GLPI 11]
Adicionado
- Toggle "Criar instancia automaticamente" na aba Conectores (antes existia apenas no backend)
- Logs de envio enriquecidos: evento (link para template de notificacao), chamado (link clicavel), telefone
- Retry automatico via fila: mensagens que falham no envio direto sao enfileiradas para ate 3 tentativas via cron
Corrigido
- Auto-criacao de instancia nao funcionava: getQrCode() retornava 404 para instancia inexistente e a excecao pulava a logica de auto-criacao
- testConnection() no modo self_hosted agora verifica se a instancia configurada existe (antes so testava conectividade com a API)
- httpRequest() tratava campo message como string quando a Evolution API retorna array (causava "Array to string conversion" e JSON corrompido)
- Healthcheck cron usava instance_name fixo ignorando connection_mode (managed) e parava de agendar ao retornar 0 em falha
- sendMessage() nao logava mais diretamente (log duplicado removido); log agora centralizado em sendNotification() com contexto completo
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:whatsappbot[GLPI_11]
subtaskflow 1.0.1 [GLPI 11]
Corrigido
- Hooks
pre_item_add,item_add,pre_item_purgeconvertidos de metodos estaticos para metodos nativos CommonDBTM (prepareInputForAdd,post_addItem,pre_deleteItem). Corrige: validacao de auto-referencia (pai=filho) e deteccao de duplicatas nao eram executadas.
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:subtaskflow[GLPI_11]
subtaskflow 1.0.0 [GLPI 11]
Adicionado
- Workflow hierárquico de subtarefas: Implementação completa de templates pai→filho com encadeamento automático.
- Soluções pré-definidas: CRUD de soluções (Sim, Não, Pendente, etc.) com validation para impedir deleção de soluções em uso.
- Hierarquia de templates: Configuração de relações pai→filho específicas por solução. Cada relação é única via UNIQUE(father_id, son_id, solution_id).
- Detecção de loops circulares: Algoritmo DFS (Depth-First Search) durante validação de nova relação pai→filho. Impede configurações cíclicas (A → B → C → A).
- Criação automática de subtasks: Hook
PRE_ITEM_UPDATEem TicketTask. Quando state=2 (Done), sistema lêtasksolutions_ide cria filhas para aquela solução viagetChildrenForParentAndSolution(). - Campo observação rich text: Campo
observation(HTML) em TicketTask com editor inline. Renderizado na timeline viaPOST_SHOW_ITEMhook. - Auditoria completa (Tracker): Tabela
glpi_plugin_nextool_subtaskflow_trackerregistra:- ticket_id, template_id, solution_id
- father_tickettask_id (task resolvida), son_tickettask_id (criada)
- users_id_create (quem resolveu), users_id_finished (quem finalizou filha)
- date_create, date_finished (timestamps)
- Config standalone (5 abas):
- Aba 1 (Configurações): toggles (ativar criação auto, detectar loops), categoria default, auto-assign requester, log operations.
- Aba 2 (Task Solutions): CRUD de soluções com soft-delete e modal form.
- Aba 3 (Registros): histórico paginado de criações automáticas.
- Aba 4 (Logs): log operacional (erros, validações).
- Aba 5 (Sobre): versão, descrição do módulo.
- AJAX endpoints: 8 ações distribuídas em 2 arquivos:
solution.php: list_solutions, add_solution, edit_solution, delete_solutiontemplate.php: list_templates, get_children, add_template, validate_no_loop, delete_template
- Sistema de permissões: 4 direitos com bits CREATE|READ|UPDATE|DELETE|PURGE:
plugin_nextool_subtaskflow_templateplugin_nextool_subtaskflow_solutionplugin_nextool_subtaskflow_tracker(READ only)plugin_nextool_subtaskflow_config(READ|UPDATE)- Fallback helpdesk habilitado.
- Integração HookDispatcher: 3 hooks em TicketTask:
POST_ITEM_FORM: injeta dropdown solução + campo observaçãoPOST_SHOW_ITEM: renderiza observação na timelinePRE_ITEM_UPDATE: intercepta state=2, cria subtasks filhas
- Soft delete patterns: Coluna
is_deletedem Solution e Template. Queries filtramis_deleted=0automaticamente. - Auto-atribuição opcional: Config toggle "auto_assign_to_requester". Se ativo, subtasks criadas são assignadas ao requester original do ticket.
- Seeding automático: install.sql cria 3 soluções padrão (Sim, Não, Pendente) + direitos iniciais.
Padrões Implementados
- CommonDBTM inheritance: Todas as classes (Solution, Template, Tracker, Config) herdam de CommonDBTM para CRUD nativo.
- Module key:
plugin_nextool_subtaskflowem setup.php, consistente em nomes de tabela, direitos e hooks. - PluginNextoolHookDispatcher: Despacha hooks para TicketTask via HookDispatcher (não $PLUGIN_HOOKS direto).
- PluginNextoolPermissionManager: Todas as permissões checadas via
haveRight()com fallback helpdesk. - Validação em banco: Constraint UNIQUE(father_id, son_id, solution_id) em template table + validação de ciclo via DFS.
- Timestamps:
date_creation,date_modem Solution, Template, Config.date_create,date_finishedem Tracker. - Iconografia: Ícone
ti ti-git-branch(Git branch) representa hierarquia e encadeamento de tarefas.
Limites de Design
- Máxima profundidade recomendada: 4-5 níveis de encadeamento (viável, mas difícil de gerenciar além).
- Múltiplas soluções para mesmo filho não suportada: Cada relação pai→filho é específica de uma solução. Se quer filho para "Sim" E "Pendente", cria 2 entradas.
- Templates filhas herdam categoria: Herdadas de config "categoria padrão", não da pai. Prioridade usa padrão do template filho.
- Tracker é imutável: Registros criados não podem ser editados. Apenas
users_id_finishedé atualizado ao finalizar filha (para auditoria completa).
Referências
- Documentação técnica completa:
ARCHITECTURE.md - Guia de navegação rápida:
AI_INDEX_subtaskflow.md - Manual de uso (end-user):
README.md - Test context:
/data/.claude/contexts/test/modules/subtaskflow.md
Suporte: Abra uma issue com tag subtaskflow ou consulte o README.md para troubleshooting.
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:subtaskflow[GLPI_11]
smartnotify 2.0.3 [GLPI 11]
Fixed
- Botao "Marcar todas como lidas" retornava 403 (CSRF) -- action
get(polling) gerava csrf_token apos session_write_close(), criando token fantasma nunca persistido na sessao. JS sobrescrevia token valido com o fantasma, causando falha no proximo POST - Queries de Changes (followups, tarefas, solucoes, documentos) falhavam com "Table glpi_groups_changes doesn't exist" -- tabela correta no GLPI 11 e
glpi_changes_groups. Corrigido em notifications.php (7 ocorrencias) e list_indicator.php (1 ocorrencia)
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:smartnotify[GLPI_11]
smartnotify 2.0.2 [GLPI 11]
Fixed
- CronTask::getInstanceByName() nao existe no GLPI 11 - causava fatal error no install() impedindo instalacao do modulo
- Cron migrado para classe dedicada PluginNextoolSmartnotifyCron (extends CommonDBTM) seguindo padrao whatsappbot
- Registro de cron movido de install() para onInit()
Added
- Arquivo
inc/smartnotifycron.class.phppara cron tasks
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:smartnotify[GLPI_11]
smartnotify 2.0.1 [GLPI 11]
Fixed
- session_write_close() movido para dentro do case 'get' apenas - POST requests agora mantem sessao aberta para validacao CSRF funcionar (fix: 403 Forbidden em "Marcar todas como lidas")
- AudioContext criado somente apos interacao do usuario (click/keydown) para respeitar politica de autoplay do Chrome
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:smartnotify[GLPI_11]
smartnotify 2.0.0 [GLPI 11]
Added
- 5 novas fontes de notificacao: tarefas de tickets, tarefas de problemas, tarefas de mudancas, solucoes ITIL e documentos anexados
- Filtro por tipo de ator (requerente/observador/tecnico) nas configuracoes de permissoes
- Sincronizacao cross-tab via BroadcastChannel (com fallback localStorage)
- Toggle unread: possibilidade de marcar notificacao como nao lida novamente
- Auto-mark-read por URL: notificacoes marcadas como lidas ao abrir o item ITIL correspondente
- List indicator: pontos vermelhos animados nas listagens de tickets/problemas/mudancas indicando itens com nao-lidos
- Timeline separator: divisor "Novas mensagens" na timeline do item ITIL (via hook post_show_item)
- Cron task automatico para limpeza de notificacoes lidas e logs antigos (SmartnotifyCleanup)
- Sistema de sons via Web Audio API com 4 tons por prioridade (subtle/default/alert/alarm)
- Agrupamento de notificacoes por item ITIL (grouping_enabled agora funcional)
- 5 novas preferencias por usuario para os novos tipos de notificacao
Fixed
- restrict_interface agora verificado em isUserAuthorized() (antes ignorado)
- allowed_entities agora verificado em isUserAuthorized() (antes ignorado)
- mark_read com try/catch para duplicatas UNIQUE KEY (evita erro 500)
- purge_read usando $DB->delete() em vez de doQuery() raw SQL
- manual.php com verificacao de permissao canManageModule (antes qualquer usuario autenticado podia enviar)
- push_enabled default corrigido de 1 para 0 (alinhado com schema)
- Link "Ver todas" no dropdown escondido para usuarios sem permissao de config
Changed
- Intervalo de retencao agora usa retention_days do config em vez de -30 dias hardcoded
- Manual notifications LIMIT agora usa max_notifications do config em vez de 50 hardcoded
- Resolucao de nomes de usuario em batch (elimina N+1 queries)
- session_write_close() adicionado em endpoints AJAX para evitar lock de sessao
- Cache-Control do JS wrapper reduzido de 300s para 60s
- PWA/Push desabilitado (stub) ate implementacao completa com VAPID keys
- Tab Integracoes exibe aviso de "em desenvolvimento" para push notifications
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:smartnotify[GLPI_11]
smartassign 1.5.12 [GLPI 11]
Corrigido
- getBillingTier() declarava PAID incorretamente no codigo do modulo (deveria ser FREE conforme catalogo central)
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:smartassign[GLPI_11]
mailanalyzer 3.4.12 [GLPI 11]
Corrigido
- Erro 403 (AccessDeniedHttpException) ao ativar/desativar ou salvar configuração do módulo. Causa: chamada duplicada de
Session::checkCSRF()noconfig.form.php-- no GLPI 11 o Symfony CheckCsrfListener já valida CSRF antes do script, e a segunda verificação consumia o token invalidando a requisição.
[GLPI 11] Esta atualização é para instâncias GLPI 11.
Download: Disponível diretamente pelo plugin NexTool no seu GLPI.
Acesse Nextools > Módulos e clique em Atualizar no card do módulo.
Os artefatos não são distribuídos pelo GitHub.Etiqueta (filtro): modulo:mailanalyzer[GLPI_11]