Releases: franciscorizzo/GxObjGen-install
Release list
GxObjGen v1.11.5 - gateway 8780 sem falha silenciosa
GxObjGen v1.11.5 — gateway 8780 sem falha silenciosa
Correção da issue #15 — obrigado, @bpessoni, pelo relato com evidências na medida!
O problema
O gateway multi-KB (porta 8780) é um script Python que a extensão lança ao abrir o IDE — e Python no PATH era um pré-requisito não documentado. Sem Python, o gateway não subia e nada aparecia no IDE (o motivo ia só para o log interno); como a doc inteira cravava 8780, o "connection refused" parecia MCP quebrado. O servidor por-KB (porta determinística, faixa 8787–8986, estável entre reaberturas) sempre esteve vivo — era a porta que o Output do IDE mostrava.
O que mudou
- Status do gateway SEMPRE no Output do IDE (seção "GxObjGen MCP"):
ATIVO/iniciado/NAO INICIADO: <motivo>(ex.: "Python nao encontrado no PATH") — com o workaround por-KB na própria mensagem. - A mensagem por-KB (a que aparece ao abrir a KB) ganhou uma linha com o estado real do gateway.
install.ps1checa Python ao final: verde (gateway ok, registre a 8780) ou amarelo (conecte pela porta por-KB; para habilitar o gateway:winget install Python.Python.3.12).- Doc alinhada: README com as duas formas de conectar (gateway 8780 requer Python × porta por-KB sem dependência), GETTING-STARTED com o troubleshooting exato do sintoma ("connection refused na 8780 mas o IDE mostrou outra porta" → não reinstale), CLAUDE.md idem.
Validação
Deploy real: gateway ATIVO detectado e reportado no boot; regressão completa 24/24 PASS; as duas branches da detecção de Python do install.ps1 exercitadas.
Ação
- Atualize:
git pull(repo de instalação) ou baixe o asset abaixo e rodeinstall.ps1(GeneXus fechado). /mcpno Claude Code p/ reconectar.
— Equipe CQ1
GxObjGen v1.11.4 - variables[] no Web Panel + run headless de verdade
GxObjGen v1.11.4 — variables[] no Web Panel + run headless de verdade
Onda 3 do feedback da comunidade (issues #13 e #14 — obrigado de novo, @yurecamilo! — e a sugestão do gx_gxserver na #12).
Variáveis tipadas em Web Panel / qualquer objeto — issue #13
variables[]nogx_create_or_update_webpanel— mesmo payload do procedure/API (type|domain|basedOnAttribute|basedOnObject,isCollection, Data Types do GX por nome). Tipando as vars dos eventos, ogx_specifyfecha limpo — semspc0047 not defined/spc0023 wrong typeao chamar Procedure tipado.gx_set_variables(nova tool) — tipa/atualiza variáveis de qualquer objeto com VariablesPart (WebPanel, WebComponent, Transaction, API, Procedure...). É a paridade de ESCRITA com ogx_var_inspect. Cria novas e ATUALIZA existentes (só os campos declarados, com relatório antes→depois).typeé opcional (desambigua homônimos).- Nota: nomes de variáveis standard do GX (
Msg,Today,Pgmname...) são reservados — criação recusada na hora com o motivo.
gx_run: E2E de Procedure com efeitos reais — issue #14
capture=trueé o run HEADLESS real (agora documentado como tal): compila o objeto se preciso (BuildOne, sem BuildAll) e roda o exe gerado como processo filho —&HttpClientfaz a requisição DE VERDADE,New/update GRAVAM no banco, e o stdout/stderr vem na resposta com exit code.argsno capture — os parâmetros doparm()do proc main viram linha de comando do exe.msg()só captura na formamsg(&x, status)— semstatus, vira diálogo modal no exe gerado e pendura até o timeout (agora avisado na descrição da tool).- Os modos SEM capture (in-process, o F5 do IDE) agora avisam no retorno: não comprovam a execução/efeitos do programa — resposta vazia não significa "não executou".
gx_gxserver — parcial da issue #12
- O stub não afirma mais "esta KB é LOCAL": reporta que a conexão Team Dev não é inspecionável por este build, que a KB pode estar sob GeneXus Server, e descreve o sintoma do lock (diálogo do Team Dev atrás do IDE pendurando o Save) + workaround (check-out manual antes da tool de escrita).
Validação
E2E na KB de teste (net-zero): webpanel com evento chamando procedure tipado → specify limpo; update/criação/recusa de variáveis; efeitos reais observados — listener HTTP local recebeu o POST com o body exato + row gravado pelo capture e lido por um SEGUNDO exe; args chegando no exe. Regressão completa: 24/24 PASS.
Ação
- Atualize:
git pull(repo de instalação) ou baixe o asset abaixo e rodeinstall.ps1(GeneXus fechado). /mcpno Claude Code p/ reconectar.
— Equipe CQ1
GxObjGen v1.11.3 - variables[] v2 + build sem modal
GxObjGen v1.11.3 — variables[] v2 + build sem modal
Onda 2 do feedback da comunidade (issues #9, #10 e #11 — obrigado de novo, @yurecamilo!).
variables[] v2 (procedure/API) — issues #9 e #10
- Atualiza variável existente — re-rodar com
type/length/decimals/isCollection
diferentes agora APLICA e reportaN nova(s), M atualizada(s) [&Var: antes -> depois]. Só os
campos declarados são tocados (payload só comnamenão clobba nada). O caso "type GUID virou
Character(40) em silêncio" era exatamente isso: a var placeholder já existia e o re-run pulava. domainebasedOnAttribute— tipar por Domain (inclusive enumerado) ou "based on" um
atributo (herda tipo/tamanho), paridade com o Data Selector.- Data Types do GX por nome —
type:"HttpRequest"(e os demais do combo do IDE) funciona de
verdade (usa o mesmo parser do IDE).&HttpRequest.GetHeader(...)compila. - Type desconhecido = erro na hora com a lista dos tipos aceitos.
gx_var_inspectaceita qualquer objeto com variáveis (WebPanel, WebComponent...).
gx_build / gx_run — issue #11
- Pré-check de reorganização pendente — se o build/run fosse abrir o modal de reorg no IDE
(chamada pendurada até timeout ambíguo), agora ele NEM INICIA e devolve o status distinto
"REORGANIZACAO PENDENTE" com as opções. autoReorg=true— roda o reorganize incremental headless antes do build (opt-in,
porque altera o schema do banco).- Guard de concorrência — um build/run por vez; chamada concorrente recebe
"BUILD EM ANDAMENTO" em vez de empilhar MSBuild zumbi.
Validação
E2E na KB de teste (net-zero): criação/update/idempotência/erros de variáveis (GUID, domain,
based on, HttpRequest) + pré-check/autoReorg/guard com pendência real de schema — 15/15;
regressão geral 19/19.
Ação
- Atualize:
git pull(repo de instalação) ou baixe o asset abaixo e rodeinstall.ps1(GeneXus fechado). /mcpno Claude Code p/ reconectar.
— Equipe CQ1
GxObjGen v1.11.2 - WWP: grid tab de tabela neta
GxObjGen v1.11.2 — WWP: grid tab de tabela "neta"
Fecha o ciclo do feedback da issue #7 (obrigado de novo, @yurecamilo!): grid tab de transação que
não é filha direta da root, mas tem FK direta (ex.: chave EmpresaCNPJ+Ano+Mes+Plano numa
WorkWithPlusEmpresa).
Os 2 problemas reportados
levelsumia do<transaction>— o valor era aceito em memória e descartado em silêncio
na serialização (props de tipo custom não passavam pelo TypeConverter do pattern). Corrigido:
todas as props agora são gravadas pelo mesmo caminho da desserialização do pattern —level,
defaultLevele qualquer custom/enum/bool persistem de verdade.- Scaffold via
sourcegerava aba vazia p/ transação não-filha-direta — os defaults do WWP só
resolvem filha direta (oGridTabnão tem bloco<Initialization>;attFromnão resolve FK
nesse caminho). Corrigido: osourceagora materializa o<transaction>explícito
(transaction+level='root:<Trn>'+ defaults) — o mesmo shape que o wizard "Add › Grid Tab"
do IDE grava.
Bônus
- Prop inexistente é recusada na hora com a lista
nome(tipo)dos atributos válidos do nó
(antes o typo era engolido e a validação recusava sem bullet no fim). - Referências por nome simples com resolução tipada:
transaction:"Conta"resolve pela
Transaction (não pela Table homônima) — vale p/ todos osreference(...). - Doc corrigida: o
sourcenão gera grid/colunas — ogrid+ colunas vêm nochildren.
Validação
E2E net-zero em KB real com o shape exato do relato (neta com FK direta): árvore manual com level
explícito ✅ · source+attFrom ✅ · regressão filha direta ✅ · prop inexistente → erro claro ✅ ·
regressão geral 19/19 ✅.
Ação
- Atualize:
git pull(repo de instalação) ou baixe o asset abaixo e rodeinstall.ps1(GeneXus fechado). /mcpno Claude Code p/ reconectar.
— Equipe CQ1
GxObjGen v1.11.1 — HOTFIX CRITICO (data-loss)
⚠️ HOTFIX CRÍTICO (perda de dados) — atualize já
GxObjGen v1.11.1
O bug
Nas versões anteriores, gx_reorganize com execute=true executava internamente um Create Tables
(recria as tabelas → APAGA todos os dados) em vez de um Reorganize incremental. Ao adicionar um
atributo numa Transaction e reorganizar, os registros do banco eram perdidos.
A correção
gx_reorganize execute=trueagora faz reorganização incremental (ALTER/CREATE conforme o diff,
preserva os dados). Validado com teste de perda de dados (o dado sobrevive ao add-attribute+reorg).- O create-tables destrutivo foi isolado num alvo separado e explícito.
gx_build action=allfoi auditado: já era incremental (seguro).
Ação
- Atualize:
git pull(repo de instalação) ou baixe o asset abaixo e rodeinstall.ps1(GeneXus fechado). /mcpno Claude Code p/ reconectar.- Boa prática: sempre
gx_reorganize execute=false(análise) antes de um reorg real.
Obrigado a quem reportou. — Equipe CQ1
v1.11.0 — gx_wwp_add_tree: grid tab relacionada em WWP via MCP
Grid tab relacionada em WorkWithPlus via MCP (obrigado, @yurecamilo! — issue #7).
- gx_wwp_add_tree — adiciona uma subárvore completa a uma instância WorkWithPlus de forma atômica: monta todos os nós em memória e valida/salva uma única vez no fim. Estruturas que só são válidas completas (ex.: grid tab de tabela relacionada) agora nascem via MCP.
- Scaffold do wizard via
source—{type:"gridTab", source:"Conta"}(ougx_wwp_add childType=gridTab source=Conta) ≈ "Add › Grid Tab" do IDE;attFromdesambigua a FK. Complete com ogride as colunas na mesma chamada (a validação exige um main Grid e owcname). - Referências em props —
transaction/attribute/gxobjectaceitamguidTipo-Nome(como nogx_wwp_read) ou o nome do objeto (também emgx_wwp_set/gx_wwp_add). - Motivo REAL nas recusas de validação do pattern + XML do que foi montado; em recusa nada persiste (rollback automático).
Instalação: extrair o zip e rodar install.ps1 (ou copiar Packages\GxObjGen.dll). Changelog completo no repositório.
GxObjGen v1.10.0 (beta)
GxObjGen v1.10.0 — onda a partir do feedback da comunidade.
Novidades
- gx_diff — compara o texto de dois objetos (diff alinhado -/+). Otimo p/ ver o que muda entre implementacoes similares.
- gx_lint — roda o specify em LOTE e lista so os erros/avisos reais (ex.: spc0038), escopado por type/like, com teto. Antes de um build.
- Call tree mais facil de achar — gx_analyze mode=impact (quem chama, transitivo = raio de impacto) / mode=hierarchy (o que chama) agora aceitam sinonimos reverse_call_tree/call_tree/callers.
- Fix instalador — install.ps1 reescrito em ASCII + BOM (nao quebra mais no PowerShell 5.1).
- (1.9.0) build/run por objeto sem BuildAll. (1.8.0) enum/Domain, Data Selector var-param, gx_recover. (1.7.0) erro de validacao real, busca indexada, leitura granular.
Instalacao
- Baixe/extraia o asset, ou
git clone. 2. GeneXus fechado:powershell -ExecutionPolicy Bypass -File install.ps1(auto-eleva). 3.claude mcp add --transport http genexus http://127.0.0.1:8780/mcp. Read-only por padrao; escrita via GXOBJGEN_WRITE=1.
GxObjGen v1.9.0 (beta)
GxObjGen v1.9.0 — extensao GeneXus (17/18) + servidor MCP para operar a KB aberta pelo Claude Code.
Novidades
- Build por objeto, SEM BuildAll:
gx_build action=objectcompila so o objeto (in-process, como o F5 — muito mais rapido). Tambemrebuild,buildWithThisOnly,rebuildAll.action=all= build completo via MSBuild. - Modos de run:
gx_run mode=runWithoutBuilding(roda sem compilar) |runWithThisOnly. gx_run capture=truecompila o objeto automaticamente (sem BuildAll) quando o exe nao existe.- (Atende a issue #2 da comunidade.) Obs: capturar o
msg()de Procedure em apps .NET 8 ainda em investigacao. - (1.8.0) Dominio enumerado, atributo por Domain, Data Selector com parametro-variavel, gx_recover. (1.7.0) Erro de validacao real, busca indexada, leitura granular.
Instalacao
- Baixe/extraia o asset, ou
git clone. - GeneXus fechado, PowerShell:
powershell -ExecutionPolicy Bypass -File install.ps1(auto-eleva via UAC). claude mcp add --transport http genexus http://127.0.0.1:8780/mcp
Read-only por padrao; escrita via GXOBJGEN_WRITE=1.
GxObjGen v1.8.0 (beta)
GxObjGen v1.8.0 — extensao GeneXus (17/18) + servidor MCP para operar a KB aberta pelo Claude Code.
Novidades
- Dominio ENUMERADO: gx_create_or_update_domain aceita
enumValues(valores fixos {name,value,description}). - Atributo tipado por Domain: gx_create_or_update_transaction aceita
domainpor atributo (herda tipo/tamanho e, se enumerado, os valores). - Data Selector com PARAMETRO-VARIAVEL: gx_create_or_update_dataselector aceita
parameters[].variable(por domain/basedOnAttribute/type). - gx_recover:
action=listlista objetos DELETADOS recuperaveis;action=recoverorienta a recuperacao (feita no IDE via Ctrl+Shift+R — a operacao exige o contexto interativo do IDE). - (1.7.0) Erro de validacao real, busca indexada (gx_search_indexed) e leitura granular seguem disponiveis.
Instalacao
- Baixe e extraia o asset, ou
git clone. - GeneXus fechado, PowerShell admin:
powershell -ExecutionPolicy Bypass -File install.ps1 claude mcp add --transport http genexus http://127.0.0.1:8780/mcp
Guia no README.md / GETTING-STARTED.md. Historico no CHANGELOG.md. Read-only por padrao; escrita via GXOBJGEN_WRITE=1.
GxObjGen v1.7.0 (beta)
GxObjGen v1.7.0 — extensao GeneXus (17/18) + servidor MCP para operar a KB aberta pelo Claude Code.
Destaques
- Erro de validacao real: create/edit que falha traz o motivo exato do engine (nao mais "Validation failed").
gx_search_indexed: busca full-text pelo indice do IDE — localiza codigo/objetos em ~0,1-0,4s mesmo em KB grande (dezenas a centenas de vezes mais rapido que a varredura). Ordena por relevancia;minScorecorta ruido.gx_search_in_sourcerobusto em KB grande (pula tipos sem codigo + teto de tempo; parcial com aviso em vez de travar).- Leitura granular no
gx_get_object_text(part / faixa de linhas /find+context).
Instalacao
- Baixe e extraia o asset, ou
git clone. - GeneXus fechado, PowerShell admin:
powershell -ExecutionPolicy Bypass -File install.ps1 claude mcp add --transport http genexus http://127.0.0.1:8780/mcp
Guia completo no README.md e GETTING-STARTED.md. Historico de todas as versoes no CHANGELOG.md.
Read-only por padrao; escrita via GXOBJGEN_WRITE=1.