Merged
Conversation
* docs: adiciona documentos conceituais de brainstorm ui/ux
Inclusao dos documentos Mockup Funcional e Visao Arquitetural que servem como base estrategica para a nova experiencia do usuario inspirada em IDEs modernos.
Arquivos alterados:
- docs/reports/Ideas/Mockup Funcional de Visualizador PDF.md: Guia de design ludico e arquitetura de visualizacao.
- docs/reports/Ideas/Visualizador PDF_ UI_UX Inspirada em VS Code, Obsidian, Cursor.md: Visao estrategica.
* feat: implementa Control Center, Inteligncia AEC e Paridade GOMétrica
Este commit consolida as Sprints 16, 17 e 18, elevando o fotonPDF para uma plataforma de engenharia funcional.
Mudanças relevantes:
- Implementação do Control Center (Dashboard de Gestão) com telemetria de CPU/RAM.
- Integração de IA Multi-Provider (LiteLLM) com tradução semântica de comandos.
- Adição do AEC Inspector para identificação de formatos e controle de camadas (OCG).
- Persistência de layout da Mesa de Luz em SQLite.
- Sincronização completa de documentação (ROADMAP, SPRINTS, DASHBOARD) para visualização em Obsidian.
Arquivos alterados:
- src/interfaces/gui/main_window.py: Orquestração de novos painéis e correção de ciclo de vida.
- src/interfaces/gui/widgets/control_center.py: Novo dashboard de gestão e saúde.
- src/application/services/intelligence_core.py: Motor central de IA.
- docs/SPRINTS.md: Atualização de metas concluídas.
- docs/ROADMAP.md: Avanço para a Fase 4.
* docs: interliga relatrios e ideias ao mapa central para Obsidian
Este commit finaliza a sincronizao da documentao, garantindo que todos os arquivos de relatrios e identidade visual estejam acessveis via MAP.md e possuam links de retorno, otimizando a navegao no Obsidian.
Arquivos alterados:
- docs/MAP.md: Adio da seo 'Relatrios e Insights'.
- docs/brand/VISUAL_IDENTITY.md: Link de retorno ao mapa.
- docs/reports/comparative_analysis_ui_ux.md: Link de retorno ao mapa.
- docs/reports/Ideas/Visualizador PDF_ UI_UX Inspirada em VS Code, Obsidian, Cursor.md: Link de retorno ao mapa.
- docs/reports/Ideas/Mockup Funcional de Visualizador PDF.md: Link de retorno ao mapa.
* refactor(scripts): centraliza ferramentas de desenvolvimento e hot-reload
Reorganiza os scripts de desenvolvimento em uma estrutura mais limpa e reutilizável.
Adiciona hot_reload.py como ferramenta primária de validação de UI.
Arquivos alterados:
- scripts/hot_reload.py: Hot-reload centralizado com modos mock/app
- scripts/dev_gui_view.py: Ponto de entrada para mockup de design
- scripts/dev_mocks.py: Dados fake centralizados para testes visuais
- scripts/capture_concept.py: Captura automática do conceito HTML
* feat(ui): implementa Design System AEC-Dark Industrial Tech
Aplica novo tema visual alinhado ao conceito definido em concept.html.
Inclui paleta de cores Safety Yellow (#FFD600), Deep Space (#0F0F11),
e estilização consistente de splitters, scrollbars e botões.
Arquivos alterados:
- src/interfaces/gui/styles.py: Nova paleta AEC-Dark com variáveis conceituais
- src/interfaces/gui/widgets/infinite_canvas.py: Dot Grid no background
* feat(widgets): melhora sidebars, activity bar e bottom panel
Implementa redimensionamento livre das sidebars com memória de largura.
Adiciona atalho inteligente (duplo clique) para colapsar/expandir.
Alinha ícones da ActivityBar com concept.html (32x32, borda lateral).
Otimiza BottomPanel com resumo de log quando colapsado.
Arquivos alterados:
- side_bar.py: SideBarHeader, Smart Resize, animação unificada
- bottom_panel.py: BottomPanelHeader, summary_log, telemetria
- activity_bar.py: Ícones alinhados, font-size 20px, border-left accent
- top_bar.py: Remove tag AEC-COPILOT, alinha toggles à direita
* feat(ui): substitui MenuBar nativa por menu cascata no ícone de config
Remove a barra de menus tradicional do Qt para UI chrome-less.
Cria QMenu popup estilizado (AEC-Dark) com todos os submenus originais.
Conecta ao ícone de configurações (⚙️) na ActivityBar.
Arquivos alterados:
- main_window.py: _setup_menus() refatorado para popup, hide menuBar
- resource_service.py: Prioriza logo.ico gerado, fallback para PNG
* refactor(infrastructure): centraliza serviços de inteligência e aumenta resiliência da UI
Refatora o núcleo de inteligência para utilizar o provedor LiteLLM de forma mais robusta.
Introduz o adaptador de configurações de interface e limpa mocks legados.
Refina o tratamento de exceções em callbacks críticas do Qt.
Arquivos alterados:
- src/application/services/intelligence_core.py: Integração aprimorada com o provedor de IA
- src/infrastructure/services/ai_litellm_provider.py: Robusteza no tratamento de respostas do LiteLLM
- src/infrastructure/adapters/gui_settings_adapter.py: Novo adaptador para persistência de estado da UI
- src/infrastructure/mock/fake_data.py: Removido em favor de mocks centralizados em /scripts
- src/application/services/command_orchestrator.py: Ajustes de orquestração para novos serviços
- src/interfaces/gui/utils/ui_error_boundary.py: Melhorias no log de erros de UI
* feat(ui): refina componentes secundários e integração da interface
Aplica ajustes de design e melhorias de usabilidade em widgets satélites.
Sincroniza a paleta de comandos e o inspetor com o novo Design System AEC-Dark.
Refina a inicialização da aplicação para garantir carregamento robusto dos estilos.
Arquivos alterados:
- src/interfaces/gui/widgets/command_palette.py: Nova estilização Dark e ajustes de sombra
- src/interfaces/gui/widgets/inspector_panel.py: Melhorias no layout de propriedades AEC
- src/interfaces/gui/widgets/top_bar.py: Alinhamento de controles e remoção de poluição visual
- src/interfaces/gui/app.py: Otimização no carregamento da stylesheet principal
* test(gui): expande suíte de testes e resiliência da interface
Adiciona testes unitários e de integração focados na estabilidade da GUI.
Inclui ferramentas de depuração para inicialização robosta da MainWindow.
Define portas (interfaces) para orquestração da aplicação.
Arquivos alterados:
- tests/unit/interfaces/gui/test_resilience.py: Validação de decoradores de segurança
- tests/gui/test_integrity.py: Novo teste de integridade estrutural da UI
- tests/gui/test_robustness.py: Testes de estresse e casos de borda
- tests/trace_mainwindow.py: Utilitário para rastreamento de erros de inicialização
- src/application/ports/: Definição formal das interfaces de serviço
* docs: atualiza documentação técnica, roadmap e guias de build
Atualiza o contexto para LLMs e o guia de desenvolvimento com os novos padrões de scripts.
Refina o roadmap para refletir o progresso na UI/UX e define próximos passos.
Introduz o guia de build local para facilitar a configuração do ambiente.
Arquivos alterados:
- LLM_CONTEXT.md: Atualiza padrões de commit e ferramentação de dev
- docs/DEVELOPMENT.md: Novos detalhes sobre hot-reload e análise visual
- docs/ROADMAP.md: Marca conquistas de UI e planeja integração de IA
- docs/guides/LOCAL_BUILD.md: Instruções detalhadas para setup do projeto
* chore: atualiza scripts de build, dependências e workflows
Limpa ferramentas de desenvolvimento legadas em favor do novo hot-reload.
Atualiza workflows do GitHub e requisitos do sistema.
Configura a especificação do PyInstaller para a versão v1.0.0.
Arquivos alterados:
- requirements.txt: Atualização de dependências
- scripts/build_exe.py: Ajustes no processo de empacotamento
- scripts/dev_hot_reload.py, dev_launcher.py: Removidos (legado)
- src/interfaces/gui/development_view.py: Removido (integrado ao novo sistema)
- .github/workflows/: Sincronização de regras de CI/CD
- src/interfaces/cli/main.py: Atualização de entrypoint
* docs: adiciona snapshots de evolução da interface gráfica
Inclui capturas de tela automatizadas que documentam a evolução visual
desde o baseline até o refinamento final da Fase 2.
Arquivos alterados:
- docs/visuals/captures/: Registro visual da jornada de UI/UX
* docs: formaliza o framework foton-AIAD para desenvolvimento com IA
Estabelece o padrão oficial de fluxo de trabalho assistido por IA.
Integra o guia AIAD ao mapa central de documentação e contexto de LLM.
Define o uso de loops de snapshot e validação via hot-reload como norma.
Arquivos alterados:
- docs/guides/AIAD_WORKFLOW.md: Novo guia detalhado do framework
- docs/MAP.md: Linkagem centralizada do novo workflow
- LLM_CONTEXT.md: Inclusão do requisito de conformidade com o AIAD
* test: estabilização da infraestrutura de testes e aumento de cobertura para 90%
Este commit consolida uma série de melhorias na robustez do fotonPDF, focando em testabilidade, correção de bugs estruturais e cobertura de componentes críticos.
Mudanças principais:
- Centralização de fixtures em tests/conftest.py para garantir DRY nos testes.
- Refatoração do WindowsRegistryAdapter para permitir injeção de dependência do registro, possibilitando testes unitários sem efeitos colaterais.
- Estabilização do ResilientWidget e InspectorPanel, removendo lógicas assíncronas e logs em disco que causavam hangs em ambientes headless.
- Correção de bug no CommandOrchestrator na passagem de parâmetros para o RotatePDFUseCase.
- Adição de suítes de teste para GUI widgets (TopBar, InfiniteCanvas) e Adapters.
Arquivos alterados:
- src/application/services/command_orchestrator.py: Correção do tipo de dado passado para RotatePDFUseCase.
- src/infrastructure/adapters/windows_registry_adapter.py: Refatoração para injeção do módulo winreg.
- src/interfaces/gui/utils/ui_error_boundary.py: Sincronização da inicialização de widgets e remoção de tracing problemático.
- src/interfaces/gui/widgets/inspector_panel.py: Limpeza de imports locais e padronização de logs.
- tests/conftest.py: [NEW] Fixtures globais do projeto.
- tests/gui/test_widgets_init.py: [NEW] Testes de unidade para widgets de interface.
- tests/unit/infrastructure/test_windows_registry_adapter.py: [NEW] Cobertura completa do adaptador de registro.
- tests/integration/test_ai_orchestration.py: Atualização para novos padrões de mocks e fixtures.
- tests/unit/test_ai_core.py: Refatoração de testes unitários de IA.
* docs: sincronização de documentação (ROADMAP e DASHBOARD) pós-estabilização de testes
* docs: sincronização completa com a nova infraestrutura de testes e mocks
* feat(gui): estabilização do scroll view e refatoração da arquitetura de carregamento
Esta alteração consolida as correções para o visualizador de PDF e melhorias de estabilidade em toda a interface.
Principais mudanças:
- Resgate de Metadados e Scroll View: Corrigido o erro que impedia o carregamento do visualizador em modo SCROLL. A lógica de verificação de abas foi alterada para ser resiliente a objetos vazios do PyQt6.
- Nova Arquitetura de Controllers: Introduzido o WorkspaceController para orquestrar o carregamento de documentos, separando a lógica de negócio do MainWindow.
- Renderização Adaptativa: O ViewerWidget agora utiliza dicas de complexidade para renderização otimizada, incluindo suporte a clipping para arquivos pesados (HEAVY/ULTRA_HEAVY).
- Robustez da UI: Adicionado o decorator safe_ui_callback em diversos pontos críticos para evitar crashes e capturar exceções silenciosas.
- Correções de Erros: Resolvido AttributeError em thumbnails.set_selected_page e limpado spam de logs na mesa de luz e check_visibility.
- Infraestrutura: Implementação de TelemetryService para monitoramento de performance e StartupLogger para diagnóstico de boot.
- Build e Config: Atualização dos arquivos .spec e scripts de build para refletir a nova estrutura de dependências.
* chore: atualiza .gitignore para ignorar logs e reports de testes
* feat: estabiliza UI, inicializa sidebar colapsada e refina telemetria
* feat: suporte a grandes formatos (A0/A1) com layout estável e tiling
* feat: suporte a grandes formatos (A0/A1) com layout estável e tiling
* feat: navegação universal avançada com zoom focado no mouse e qualidade dinâmica na mesa
* feat: nova barra de navegação universal moderna e refinamentos de UX na mesa de luz
Detalhes das mudanças:
- Implementação da ModernNavBar com transparência dinâmica e submenus colapsáveis.
- Integração da barra de navegação tanto no modo leitura quanto na mesa de luz.
- Correção de estabilidade no zoom da mesa (fim do efeito de 'salto' nas páginas).
- Restauração da movimentação de páginas na mesa e sincronização de ferramentas.
- Melhoria na iconografia para compatibilidade universal Unicode.
- Correção de bugs de sincronização de estado entre abas e vistas.
* docs: atualiza documentação com Sistema de Navegação Universal e Sprint 21/22
- Adiciona seções 2.3 (Navegação Universal) e 2.5 (Mesa de Luz) em FEATURES.md
- Registra Sprint 21 (Navegação Premium) e Sprint 22 (Consolidação) em SPRINTS.md
- Atualiza DASHBOARD e ROADMAP com Fase 3.5 e progresso atual
- Inclui novas features no README: ModernNavBar, Mesa Hi-Res, Suporte A0/A1
- Corrige warnings de lint (table-column-style, first-line-heading)
* feat(nav): implementa Zoom por Área (RubberBand → Fit-in-View)
- Adiciona modo 'zoom_area' ao ViewerWidget e LightTableView
- RubberBand para seleção de área, zoom aplica fitInView() na região
- Retorna automaticamente para modo 'pan' após o zoom
- Cria test_navigation_e2e.py com 8 testes cobrindo sinais e modos
* docs: sincroniza atalhos e ativadores de ferramentas
- Mapeia tecla 'Z' para Zoom por Área em todos os widgets
- Atualiza tabela de atalhos em FEATURES.md
- Garante compatibilidade 100% entre documentação, testes e código
* docs: imortaliza a Anatomia da Interface (Skeleton) no ARCHITECTURE.md
* feat(ui): corrige Activity Bar e SideBar - nomenclatura e painéis
- Autoload de ThumbnailPanel quando documento é aberto
- Cria AnnotationsPanel (Notas) com placeholder funcional
- Atualiza nomenclatura para genérica: Páginas, Pesquisar, Índice, Notas, Ajustes
- Melhora fallback visual quando SideBar está desativada
- Mapeia idx=3 (Notas) no handler de clique
* fix: corrige TypeError no setGeometry do mouseMoveEvent (float→int)
* feat: implementa correções de usabilidade core e suite de testes
- Implementa reset de estado de renderização no PageWidget ao mudar zoom.
- Aumenta limite de qualidade de renderização na Mesa de Luz para 3x.
- Adiciona suporte inicial a extração de texto via coordenadas PDF e cópia para clipboard.
- Adiciona método get_text_in_rect ao PyMuPDFAdapter.
- Cria nova suite de testes tests/gui/test_usability_core.py.
Arquivos alterados:
- src/interfaces/gui/widgets/page_widget.py: Reseta _rendered ao mudar zoom.
- src/interfaces/gui/widgets/light_table_view.py: Aumenta limite de zoom Hi-Res.
- src/infrastructure/adapters/pymupdf_adapter.py: Novo método de extração de texto em área.
- src/interfaces/gui/widgets/viewer_widget.py: Lógica de extração e clipboard.
- tests/gui/test_usability_core.py: Novos testes de usabilidade.
* feat: implementa Dual Selection Mode (Flow + Area)
- Adiciona selection_flow: seleção palavra-a-palavra estilo editor de texto (tecla S)
- Adiciona selection_area: seleção por área estilo CAD (tecla A ou Shift+S)
- Implementa _cache_page_words_at_point para cache de palavras PyMuPDF
- Implementa _process_flow_selection para extração de texto por fluxo
- Conecta search_panel.result_clicked ao viewer.scroll_to_page
- Sincroniza search_panel.set_pdf no _on_tab_changed
- Atualiza atalhos de teclado para os novos modos
Arquivos modificados:
- src/interfaces/gui/widgets/viewer_widget.py
- src/interfaces/gui/main_window.py
* feat: implementa highlight visual palavra-a-palavra na seleção
- Adiciona _update_word_highlights para desenhar overlays azuis sobre palavras selecionadas
- Atualiza mouseMoveEvent para mostrar highlights em tempo real durante arraste
- Adiciona _clear_word_highlights para limpar overlays ao finalizar seleção
- Visual feedback similar a navegadores e editores de texto
- Mantém RubberBand como indicador de área geral
* feat: implementa paleta de cores para marcação de texto
- Adiciona botão de marcação (🖍) na ModernNavBar com menu de cores
- Cores disponíveis: Amarelo, Verde, Azul, Vermelho, Rosa
- Conecta sinal highlightColor ao viewer para aplicar cor selecionada
- CORRIGE separação de modos de seleção:
- selection_flow: mostra APENAS highlights de palavras (sem RubberBand)
- selection_area: mostra APENAS RubberBand (sem highlights de palavras)
- UI/UX mais clara e intuitiva para cada modo de seleção
* feat(viewer): implementa seleção AutoCAD-style com Overlay e feedback visual correto
* feat(viewer): refatora UX de seleção - remove auto-copy, adiciona menu de contexto com opções Copy/Highlight/Draft
* fix(sidebar): corrige inversão de painéis e inconsistência nas Notas
Resolve o problema onde clicar em Pesquisar abria Notas (e vice-versa) devido ao carregamento assíncrono (Lazy Loading) fora de ordem. Agora a SideBar utiliza índices fixos garantidos por placeholders. Além disso, corrigiu a integração do "Draft Note" com o painel de anotações correto.
Arquivos alterados:
- src/interfaces/gui/widgets/side_bar.py: Implementado preenchimento de placeholders e inserção por índice explícito para garantir coesão com a ActivityBar.
- src/interfaces/gui/main_window.py: Sincronizado nomes de painéis ("annotations") e corrigido fluxo de redirecionamento de texto selecionado para notas.
* docs: reestruturacao para Obsidian e introducao de BDD
Reorganizacao completa da pasta docs/ em uma estrutura hierarquica categorizada para melhor compatibilidade com o Obsidian. Introducao de especificacoes funcionais seguindo o padrao BDD (Gherkin) em formato Markdown. Criacao de diagramas de pipeline para o Core UX.
Arquivos alterados:
- docs/: Reorganizacao de arquivos raiz para subpastas categorizadas (00_Start, 01_Architecture, etc).
- docs/00_Start/INDEX.md: Atualizacao do indice central com Wikilinks e nova estrutura.
- docs/01_Architecture/PIPELINES.md: Criacao de diagramas Mermaid para fluxos de Highlight e Busca.
- docs/02_Features_BDD/*.md: Conversao e criacao de especificacoes BDD (Gherkin) para as features do Core UX.
- docs/*/README.md: Adicao de arquivos de leitura para cada nova categoria do vault.
* fix(core): stability overhaul - resolved pdf load freeze and ui deadlocks
- Fixed AsyncDocumentLoader closing handle prematurely (Regression fix)
- Refactored WorkspaceController initialization order (RenderEngine before UI)
- Fixed RenderEngine handle management (Single-Open Architecture)
- Refactored InspectorPanel to use QStackedLayout (Fixed UI Freeze)
- Fixed EditorGroup initialization and visibility
* test: implementa suite de testes BDD e gerador de PDFs de estresse
- Atualiza testes unitários do ResilientWidget para compatibilidade com QStackedLayout.
- Adiciona script para geração de arquivos PDF de tamanhos e complexidades variadas para testes de estresse.
- Implementa infraestrutura de testes BDD/UI para validação de fluxos críticos de abertura e navegação.
Arquivos alterados:
- tests/unit/interfaces/gui/test_resilience.py: Atualizado para refletir nova arquitetura de stack index.
- scripts/generate_test_pdfs.py: Script para criação de arquivos A0, vetores complexos e texto multi-página.
- tests/bdd/conftest.py: Configurações e fixtures para testes BDD.
- tests/bdd/test_bdd_scenarios.py: Implementação dos cenários de abertura e navegação.
* test: adiciona binários dos PDFs de estresse para suporte aos testes BDD
* feat: refatoração do menu lúdico e implementação de reordenação espacial e extração
- Refatorado _setup_menus com nova estrutura categorizada e emojis para melhor UX.
- Implementada reordenação espacial (drag-and-drop) via Mesa de Luz com sincronização global (state -> viewer -> thumbnails).
- Implementada lógica real de extração de páginas selecionadas para novo PDF.
- Corrigido bug onde a viewport não acompanhava a rotação da página no PageWidget.
- Limpeza de redundâncias e logs duplicados em _append_pdf e _on_pages_reordered.
- Implementado suporte a reordenação física de widgets no PDFViewerWidget.
Arquivos alterados:
- src/interfaces/gui/main_window.py: Centralização da lógica de menu e orquestração de reordenação.
- src/interfaces/gui/widgets/viewer_widget.py: Método reorder_pages para sincronização visual.
- src/interfaces/gui/widgets/page_widget.py: Atualização de layout-size na rotação.
- src/interfaces/gui/widgets/thumbnail_panel.py: Melhoria no reload de miniaturas.
* docs: atualização de progresso da Sprint 22
* fix: Correções de visibilidade na Sidebar e robustez do carregamento
Resolução crítica de problemas onde o conteúdo da barra lateral (ThumbnailPanel) não renderizava visivelmente devido a conflitos de layout e políticas de tamanho.
Arquivos alterados:
- src/interfaces/gui/widgets/side_bar.py: Adição de Stretch Factor para expansão vertical correta do stack de painéis.
- src/interfaces/gui/widgets/thumbnail_panel.py: Otimização de batch loading (5 itens) para prevenir GUI Freeze; correção de política de redimensionamento (Expanding).
- src/interfaces/gui/utils/ui_error_boundary.py: Simplificação do container ResilientWidget para injeção direta na stack; Imports defensivos para QSizePolicy.
- src/interfaces/gui/widgets/editor_group.py: Adaptação do layout para gerenciar seu próprio container.
- src/infrastructure/adapters/pymupdf_adapter.py: Ajustes de robustez.
- docs/00_Start/DASHBOARD.md: Atualização de progresso.
* docs: Atualização do Dashboard com fix crítico de sidebar
* fix: Resolução de renderização da Sidebar e limpeza de estado
Implementado 'Direct Layout Mode' no ThumbnailPanel para corrigir visibilidade.
Refatorado ResilientWidget para uso de setCurrentWidget.
Corrigido TabContainer para emitir sinal de limpeza ao fechar última aba.
Restaurado estilo Premium da lista de miniaturas.
Arquivos alterados:
- src/interfaces/gui/widgets/thumbnail_panel.py: Bypass de layout stack.
- src/interfaces/gui/utils/ui_error_boundary.py: Estabilidade de QStackedWidget.
- src/interfaces/gui/widgets/tab_container.py: Fix de sinal -1.
- src/interfaces/gui/main_window.py: Lógica de limpeza de painéis.
* docs: Atualização do Dashboard com fix de limpeza de UI
* test: Adição de cenários de teste e fixtures PDF
Atualizada suite de testes da Sidebar para refletir arquitetura Direct Layout.
Incluídos PDFs de teste para validação de fluxos complexos.
Arquivos alterados:
- tests/gui/test_sidebar_integration.py: Ajuste para nova arquitetura.
- test_complex.pdf, test_multi_page.pdf: Fixtures de teste.
- src/interfaces/gui/widgets/thumbnail_panel.py: Ajuste final de orfanato de stack.
* fix: Limpeza de 'arquivos fantasmas' e sincronização da Mesa de Luz
Implementado método clear() na LightTable para reset de estado.
Refatorada MainWindow para realizar limpeza profunda (Deep Clean) de todos os painéis ao fechar abas.
Sincronizada Mesa de Luz com a aba ativa durante a troca de documentos.
Arquivos alterados:
- src/interfaces/gui/widgets/light_table_view.py: Adicionado suporte a reset de cena.
- src/interfaces/gui/main_window.py: Lógica centralizada de limpeza de estado UI.
- src/interfaces/gui/controllers/workspace_controller.py: Simplificação do fluxo de carregamento.
* feat: Controle de Visibilidade de Camadas (OCG) em Tempo Real
Implementada arquitetura completa de toggling de camadas sem recarregar arquivo.
Destaques:
- PyMuPDFAdapter: Novo método apply_layer_config_to_handle.
- RenderEngine: Suporte a layer_config na chave de cache e tarefas.
- InspectorPanel: Sinais conectados à MainWindow.
- ViewerWidget/PageWidget: Propagação de configuração até o motor de renderização.
- Testes: Novo teste de isolamento test_layer_visibility.py e script de geração de PDF.
* fix: resolução do problema de visibilidade de camadas OCG em tempo real
Implementado mapeamento de Xref para índice UI no PyMuPDFAdapter para garantir compatibilidade com PyMuPDF 1.24+.
Arquivos alterados:
- src/infrastructure/adapters/pymupdf_adapter.py: Adicionado uso de set_layer_ui_config e removido modo alpha=True.
- src/interfaces/gui/widgets/page_widget.py: Removido modo alpha=True.
- src/interfaces/gui/main_window.py: Pequenos ajustes de propagação.
- src/interfaces/gui/widgets/side_bar.py: Estabilização do widget.
* chore: atualiza e organiza .gitignore para ignorar artefatos de teste e build
* fix(tests): secure async UI lifecycles and map V4 architecture to test suite
- Adopt global pytest teardown to stop QTimers and clear QThreadPool
- Prevent RuntimeError on QLabel/ViewerWidget on pytest headless mode
- Update legacy TabContainer references in BDD and robustness tests to V4 Single-Document
- Fix PyMuPDFAdapter invalid autospec mocks
* docs: balance .spec files and sync DASHBOARD, ROADMAP, and ARCHITECTURE with V4 release
- Remove outdated foton_v1.0.0.spec
- Sync ARCHITECTURE.md to V4 Single-Document design
- Mark Sprint 22 as 100% complete in DASHBOARD.md and ROADMAP.md
* docs: consolidação da infraestrutura V4 e guia estratégico para a Sprint 23
- Atualização do ARCHITECTURE.md para refletir a nova arquitetura Single-Document V4
- Atualização do DASHBOARD.md e ROADMAP.md marcando a Sprint 22 como 100% concluída
- Criação do SPRINT_23_GUIDE.md com orientações para testes de usabilidade premium e BDD interativo
- Sincronização final de documentos de reporte e análise de maturidade da branch
* fix(tests): remove autouse strict dep on GUI for global teardown to resolve CI crashes in unit tests
- Refatorado qt_teardown no conftest.py para usar QApplication.instance() dinamicamente
- Evita que a fixture crash nos testes puros da camada de domínio/aplicação que não rodam ambiente visual
* fix(ci): add pytest-qt dependency to test workflow
- The missing fixture 'qtbot' was breaking unit tests for resilient widgets on github actions because pytest-qt was not installed in the CI runner.
Cenários BDD implementados: - Física Interativa: drag-and-drop, RubberBand selection, zoom cirúrgico, recuperação de qualidade pós-zoom e navegação por teclado na LightTable e InfiniteCanvas - Command Palette: estrutura, filtragem case-insensitive, seleção automática, e validação de comandos (Girar, Mesclar, Buscar) Arquivos criados: - tests/gui/test_interactive_physics.py: 25 testes (5 classes) - tests/bdd/test_command_workflow.py: 15 testes (3 classes) - Total: 40 testes novos, todos passando
- SPRINT_23_GUIDE.md: marcados 3/4 itens do DoP como completos - ROADMAP.md: Sprint 23 adicionada como 100% - DASHBOARD.md: Sprint 23 adicionada com 6 itens concluídos
- Adicionados passos para rodar 'tests/gui' e 'tests/bdd' no GitHub Actions - Garante que a certificação da Sprint 23 seja verificada automaticamente em cada push/PR
- Necessário para o TelemetryService - Corrige falha de importação no CI/GitHub Actions
- Ambos são usados diretamente no código de update e IA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR: Certificação de Experiência Premium & BDD Interativo (Sprint 23) 💎
🎯 Resumo
Este PR conclui a Sprint 23, focada em elevar o nível de maturidade técnica do fotonPDF através da implementação de uma suíte de testes de Física Interativa e Workflows BDD. O objetivo central foi transformar as promessas de "UX Premium" (drag-and-drop, zoom cirúrgico, fluidez) em comportamentos formalmente validados e resilientes.
🚀 O que mudou?
1. Suíte de Física Interativa (
tests/gui/)Implementamos 25 novos testes focados na "sensação" física da aplicação:
RenderEngineé acionado após zooms para atualizar a nitidez das páginas visíveis de forma assíncrona.P,S,Z,Ctrl+=,Ctrl+0).2. Workflow de Produtividade (
tests/bdd/)Implementamos 15 testes para a Command Palette (Ctrl+P):
3. Infraestrutura & CI/CD
ci.ymlpara incluir a execução automática das pastastests/guietests/bdd.pytest-qtno runner de CI para permitir testes gráficos em modo headless.conftest.pypara evitarRuntimeErrorde C++ durante o encerramento do pool de renderização.📝 Documentação Atualizada
🧪 Resultados dos Testes (Local)
Note
Com este merge, o fotonPDF atinge um patamar de estabilidade industrial, garantindo que as interações de interface complexas não quebrem o fluxo de trabalho do usuário.
Branch:
feat/sprint-23-ux-certificationDestino:
develop