Extensão Manifest V3, somente leitura, para inspeção, produtividade e diagnóstico em instâncias Odoo 19 Enterprise. Voltada para desenvolvedores, analistas de sistemas, suporte técnico, consultores funcionais e key users.
- Acesse
chrome://extensions. - Ative o Modo do desenvolvedor (canto superior direito).
- Clique em Carregar sem compactação (Load unpacked).
- Selecione a pasta raiz deste projeto (
odoo-devtools/). - Abra qualquer instância Odoo 19 — o botão flutuante ⚙ aparecerá no canto inferior direito da tela.
O painel flutuante é dividido em abas. Clique no ⚙ para abrir/fechar; o painel pode ser arrastado, redimensionado e recolhido.
Ativa ou remove o modo de depuração (?debug=1) e o modo de depuração com
assets, direto pela URL — sem precisar navegar até Configurações Técnicas.
Inspeciona a view atualmente renderizada: View ID, XML ID, módulo, tipo, modelo e a lista completa de views que herdam/estendem a mesma view (com prioridade de cada herança). Cada informação pode ser copiada com um clique.
Mostra os metadados completos do registro atual: modelo, ID, display name,
XML ID, usuário e data de criação/edição, contexto ativo (context) e as
record rules que se aplicam ao modelo — útil para entender por que um
registro está (ou não está) visível para um usuário.
Captura automaticamente as chamadas RPC (call_kw) feitas pela página,
com status, tempo de resposta, URL, payload e response formatados —
equivalente a um DevTools de rede filtrado só para o essencial do Odoo.
Resume o tempo de carregamento da página, quantidade de requests, tempo total e médio de RPC, e identifica a requisição mais lenta e mais rápida do carregamento atual.
Salva views, modelos, menus e registros para acesso rápido depois — persistido localmente, sobrevive a reload de página e navegação.
Gerador de seletor XPath por tipo de elemento (basta escolher o tipo e clicar na tela) e exportador da tela atual em JSON, TXT ou Markdown.
Tema (claro/escuro), limite de requests mantidos no histórico de rede, auto-limpeza de histórico e referência ao atalho de teclado disponível.
Com o painel aberto, segure Alt e clique em qualquer campo da tela
para ver seu detalhamento técnico completo: nome técnico, modelo, tipo,
widget, campo relacionado, se é computado, readonly, required, se tem
store, domínio e contexto — com botão de cópia rápida para cada valor.
Importante: para que o Alt+clique traga o nome técnico e os demais detalhes do campo, primeiro abra o painel, vá até a aba View e clique em Inspecionar View Atual uma vez. Isso carrega o contexto do modelo ativo; sem esse passo, o popup aparece com "(campo sem nome técnico)" e não consegue identificar o modelo.
manifest.json
popup/ → UI do popup da barra de ferramentas (ações rápidas)
background/ → service worker (histórico RPC, atalhos de teclado)
content/
inject.js → roda no MAIN WORLD da página (hook de fetch/XHR,
leitura de window.odoo)
content.js → roda no ISOLATED WORLD (monta o painel flutuante)
panel.css
modules/ → uma responsabilidade por arquivo (debug, fields,
network, rpc, views, models, performance,
favorites, clipboard)
utils/ → storage, dom, notifications, helpers (sem lógica
de negócio do Odoo)
icons/
Todo o código é JavaScript puro, sem frameworks e sem bundler — os
arquivos são concatenados pelo próprio Chrome na ordem declarada em
manifest.json → content_scripts.
modules/rpc.jsmantém uma whitelist rígida de métodos RPC permitidos (read,search_read,fields_get,get_views,get_metadata, etc.). Qualquer método fora da lista (write,create,unlink, execução de SQL) é bloqueado antes mesmo de a requisição ser montada.- O hook de
fetch/XMLHttpRequestemcontent/inject.jsapenas observa as chamadas já feitas pelo próprio Odoo — nunca as modifica, bloqueia ou reenvia. - Não há nenhuma chamada de escrita em nenhum módulo do projeto.
| Atalho | Ação |
|---|---|
Alt+clique |
Inspecionar campo em tela (ver seção acima) |
- Alt+clique sem contexto de view: o nome técnico e os detalhes do campo só ficam disponíveis depois que a aba View roda "Inspecionar View Atual" pelo menos uma vez na página atual (ver nota na seção de funcionalidades acima).
- Registro atual / OWL: o Odoo não expõe uma API pública estável
para "o registro em tela".
content/inject.jsusa heurísticas sobreodoo.__WOWL_DEBUG__(disponível apenas com?debug=1ativo) que podem parar de funcionar em builds futuras do Odoo 19 caso a estrutura interna do OWL mude. Quando a heurística falha, a extensão informa "nenhum registro identificado" em vez de travar. - XML completo do campo: obtido via regex sobre o
archretornado porget_views— funciona bem para campos declarados diretamente na view principal, mas pode não capturar campos vindos de heranças complexas. - Detecção de tipo de view: feita por classes CSS conhecidas
(
.o_form_view,.o_list_view, etc.). Views totalmente customizadas por módulos de terceiros podem não ser detectadas corretamente.
Uncaught RangeError: Maximum call stack size exceededemcontent/inject.js: A extensão agora evita inicialização dupla do script injetado e protege o hook de rede para não recapturar/encadear wrappers defetcheXMLHttpRequest.kQuotaBytes quota exceededao salvar histórico RPC: As entradas persistidas nochrome.storage.localsão compactadas (truncamento de payloads grandes) e há fallback para reduzir volume do histórico quando necessário.- Após atualizar arquivos da extensão, sempre recarregue em
chrome://extensionse depois recarregue a aba do Odoo.
- Ativar/remover Debug e Debug Assets via URL
- Inspeção de campo com ALT + clique (nome técnico, modelo, tipo, widget, relacionado, computado, readonly, required, store) + cópia rápida (nome, modelo, XML, XPath, JSON)
- Inspeção de View (ID, XML ID, módulo, tipo, modelo, views relacionadas)
- Informações do Registro atual (model, id, display name, auditoria, context, record rules)
- Monitor de Network (captura automática dos endpoints RPC do escopo)
- Histórico RPC (até N requests configurável, com filtros)
- Identificação de erros (traceback, tipo de exceção)
- Painel de Performance (tempo de página, tempo RPC, médias, extremos)
- Favoritos (views, modelos, menus, registros)
- Detalhamento técnico completo do campo
- Gerador de XPath por tipo de elemento
- Exportador de tela (JSON/TXT/Markdown)
- Copiadores rápidos
- Painel flutuante recolhível, arrastável e redimensionável
- Atalhos de teclado
- Configurações persistentes (tema, idioma, limite de histórico, auto-limpeza)
- Segurança somente-leitura (whitelist de métodos RPC)
- Interface dark/light inspirada em DevTools/VSCode/GitHub
- Removida a aba Sessão do painel.
- Na aba Configurações, removida a listagem de atalhos fixos e
mantida apenas a referência ao uso de
Alt+clique.