Skip to content

Dev - #1

Merged
brunobrown merged 46 commits into
mainfrom
dev
Mar 6, 2026
Merged

Dev#1
brunobrown merged 46 commits into
mainfrom
dev

Conversation

@brunobrown

Copy link
Copy Markdown
Owner

No description provided.

  Remove abreviação de namespace (iam_ → in_app_messages_), remove
  deduplicação de invoke keys, preserva nomes originais de parâmetros
  e métodos. Score de comparação: 54% → 92%.
- Adiciona guard PascalCase e single-class em _detect_namespace
- Substitui regex [^)]* por extração balanceada de parênteses
- Remove abreviação/dedup de invoke keys (usa nome completo)
- Simplifica normalização de métodos e parâmetros
- Adiciona parsing de re-exports do barrel file
- Converte defaults Dart (true/false) para Python (True/False)
- Corrige _sanitize_python_type que corrompia nomes terminados em 'e' (ex:LaunchMode → LaunchMod) por uso incorreto de rstrip
- Adiciona Uri e Rect ao mapeamento Dart→Python no type_map
- Expande _known_types para incluir enums locais e helper classes, não apenas re-exports
- Corrige _py_default para converter defaults Dart complexos (const X(), Enum.value) para None
- Corrige parsing de parâmetros named: { retroativamente marca espaços anteriores como is_named
- Adiciona Stream<T> ao regex de bare getters para detectar eventos como onBatteryStateChanged
- Strip de comentários /// antes de parsing de valores de enums (fix LaunchMode)
- Filtra classes que estendem StatelessWidget/StatefulWidget (fix Link)
- Detecta false positives dentro de string literals (_is_inside_string)
- Valida return types de funções top-level contra tipos Dart válidos
- Gera dataclasses Python a partir de helper classes locais (Configuration, Params, etc.)
- Resolve tipos de platform_interface baixando e parseando pacotes auxiliares
- Integra resolve_platform_types no pipeline de geração
- Remove funções não utilizadas do parser, analyzer e base generator
- Adiciona enums comuns do Flutter ao type_map (TileMode, WrapAlignment, etc.)
- Corrige tipo float = None → float | None = None em propriedades
- Expande platform guard para incluir macOS, Windows e Linux
- Importa apenas tipos efetivamente usados no arquivo de controle
- Remove Optional[dict | None] redundante nos tipos gerados
…et SDK.

- Novo option "Auto-detect (recommended)" que baixa o pacote Flutter e detecta se contém widgets (ui_control) ou não (service)
- Verifica PyPI, GitHub e monorepo flet-dev/flet por pacotes existentes antes de criar, com confirmação interativa
- Novo módulo registry_checker.py com check_pypi, check_github e check_flet_packages
Removed the Flet OneSignal image and header from the README.
…troller/Painter type filter and Fit->ft.BoxFit mapping
Adiciona suporte a sub-controles compostos (SubControlPlan) e corrige
bugs encontrados na validação com o pacote health (42 métodos, 14 enums).
Updated image link in README and corrected alignment.
…xamples.

- Add ErrorEvent dataclass to types.py.jinja (service and ui_control)
- Add on_error event handler to control stubs (Service and LayoutControl)
- Export ErrorEvent in __init__.py.jinja for both template types
- Add try/catch + _handleError with triggerEvent("error") in Dart service stub
- Add on_error lambda in example main.py.jinja (logger.error or print)
- Add TODO comment guiding developers to replace example_method
- Add 2 scaffolder tests validating on_error and ErrorEvent in generated stubs
… Flutter.

Bugs corrigidos (encontrados via plugins python-reviewer, code-reviewer, security-reviewer):
- analyzer: _sanitize_python_type retornava 'dict | None' para tipos não-nullable
- analyzer: Optional[T] misturado com T | None no output gerado
- python_types: 'dict = None' sem anotação 'dict | None' (3 ocorrências)
- dart_service: double-replacement widget.widget.control. em widget families
- python_control/types/init: sub-control events nunca importados/gerados
- dart_service: sub-control widgets sem try/catch (main widgets tinham)
- pipeline: exception silenciada sem warning em resolve_platform_types
…or) + reescrever README

- Adicionar refinamento de código por IA usando pydantic-ai (uv add flet-pkg[ai])
- Implementar padrão Architect/Editor: análise de gaps → raciocínio LLM → edições de código → validação
- Suportar 4 providers: ollama (padrão), anthropic, openai, google
- Atualizar modelos padrão: claude-sonnet-4-6, gpt-4.1-mini, gemini-2.5-flash, qwen2.5-coder
- Adicionar opções CLI --ai-refine, --ai-provider, --ai-model com painéis rich
- Adicionar prompts interativos de IA (seleção de provider, avisos de API key, instruções Ollama)
- Corrigir from __future__ import annotations quebrando @agent.tool do pydantic-ai em runtime
- Corrigir mensagem duplicada 'AI refinement failed' (pipeline + create imprimindo ambos)
- Adicionar mensagens de erro amigáveis para quota, chave inválida, rate limit e timeout
- Reescrever README com aviso importante, referência completa do CLI, docs de IA e exemplos
- Priorizar UV sobre pip em todas as instruções de instalação
- Adicionar 33 testes para o pipeline de IA (gap analyzer, config, models, edits, validação)
Added emojis to the important note for emphasis.
…orreções de IA

- Adicionar servidor MCP (src/flet_pkg/mcp/) para integração com IDEs
- Adicionar about_pkg_flet.md.jinja aos templates service e ui_control com guia em 4 partes (Iniciante/Intermediário/Avançado/Prático), checklist de debugging, analogia do controle remoto e docs de uv build/publish
- Adicionar scripts/flet_log.py e flet_log.sh (visualizadores Android LogCat) em ambos os templates
- Corrigir nome do modelo Ollama: usar tag completa (qwen2.5-coder:14b) em vez de nome sem tag para evitar 404 na API OpenAI-compatible
- Adicionar detecção dinâmica de modelos Ollama no modo interativo via /api/tags
- Aumentar retries do Agent pydantic-ai de 1 para 3 para modelos menores
- Corrigir falso positivo de 'quota exceeded' para provider Ollama local
- Adicionar mensagens de erro para context-length e output estruturado
…breakdown. Adiciona flag --verbose/-v ao comando create que exibe saída detalhada em cada etapa do pipeline (parse, analyze, generate, AI refine) e uma tabela Rich com breakdown de cobertura por categoria (Methods, Events, Enums, Properties). O score de cobertura (ex: 'Coverage: 95.4%') é sempre exibido, mesmo sem -v. Libera -v de --version (mantém apenas --version). Inclui 7 novos testes e atualização do README.
…icas. O gerador de controles, Python, não verificava plan.properties nem sub-controls ao decidir se Any precisava ser importado de typing. Tipos como dynamic/Object mapeados para Any geravam código inválido (ex: builder: Any | None = None sem import). Corrige também sibling widgets com o mesmo problema.
… refinement.

- Adiciona exibição de diffs coloridos no terminal (verbose) mostrando o que a IA alterou, com sugestões pendentes do Architect listadas separadamente.
- Gera arquivo .ai-review.md com diffs e sugestões completas sempre que --ai-refine é usado.
- Inclui spinners animados alinhados à tree visual durante chamadas LLM (Architect e Editor) para indicar progresso ao desenvolvedor.
- Exibe comparação antes/depois do coverage score quando a IA melhora a cobertura (ex: "Coverage: 75.3% -> 80.0% (+4.7% with AI)").
- Corrige templates de exemplo com [tool.flet.app] path e versão explícita em dependencies. Adiciona tratamento de erro 500 do provider.
… docs MCP.

- Adicionar docstrings Google-style em ~20 arquivos fonte (scaffolder, validators, main, create, generators, pipeline, analyzer, ai/refiner, mcp/server)
- Criar página de documentação do MCP Server (docs/mcp-server.md)
- Atualizar architecture.md com seções AI Refinement, Generators, Pipeline, MCP
- Atualizar cli-reference.md com --ai-refine, --ai-provider, --ai-model, --verbose
- Adicionar @pytest.mark.network nos testes de cobertura, excluir do CI
- Remover tests/fixtures/compound_widget/ (não utilizado)
- Adicionar exemplos de prompts MCP na docs e README

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, we are unable to review this pull request

The GitHub API does not allow us to fetch diffs exceeding 20000 lines

@brunobrown
brunobrown merged commit afc014c into main Mar 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant