========================================================================
 AUDITORIA DE CÓDIGO — bugs e melhorias verificadas
========================================================================

─── ALTOS (corrigir primeiro) ─────────────────────────────────────────

[DONE] Leak de clicked.connect no undo/redo da workspace bar
[DONE] Editor grava PDFs sem atomic write
[DONE] _EditPageJob.run silencia todos os erros
[DONE] _parse_version rebenta em tags não canónicas
[DONE] Recent files não valida existência

─── MÉDIOS ────────────────────────────────────────────────────────────

[DONE] _redo_stack do editor sem limite (cap a 100; _pending deixado
       sem limite para não perder trabalho do user silenciosamente)
[DONE] FocusOut no inline edit faz cancel (antes: commit)
[N/A]  Search case-sensitive no viewer — FALSO POSITIVO (PyMuPDF
       search_for() já é case-insensitive por default)
[DONE] doc[0] sem bounds check — 3 sítios corrigidos
[DONE] Resource leaks em fitz.open — with/try-finally em 9 chamadas
[DONE] setAcceptDrops(False) + handlers mortos removidos do viewer panel
[DONE] page_numbers.pages_hint criado em 8 línguas
[DONE] Validação de splitter sizes (tipo, comprimento, valores, sum>0)
[DONE] DropFileEdit valida extensão no dragEnter E no drop
[DONE] Language change força restart (Sim/Cancel, sem estado incoerente)
[DONE] Open file/folder cross-platform (Windows/macOS/Linux)

─── BAIXOS / melhorias de UX ──────────────────────────────────────────

[DONE] Hit zone do text mode — tolerância de 3pt em get_span_at
[N/A]  Hit zone dos notes — FALSO POSITIVO (ícone é em screen px, já
       invariante ao zoom)
[DONE] Temp files de signature limpos ao trocar/limpar assinatura
[DONE] Sidebar collapse state persiste (full/icons/hidden em cfg)
[DONE] parse_pages: mensagem mostra "(valid: 1-{total})" claro
[DONE] PdfReader com close em info.py (via "with open()")
[N/A]  Erro silenciado em encrypt — FALSO POSITIVO (wrong password já
       tem mensagem própria; outros erros mostram str(e) não genérico)
[DONE] Convert: regex para apanhar "Page N", "N of M", etc.
[DONE] Confirmação ao fechar app com pending edits no editor
[DONE] Config path honra XDG_CONFIG_HOME em Linux (fresh installs);
       existing installs mantêm legacy sem migração disruptiva
[DONE] Assert len(NAV_ITEMS) <= 15 (fail-fast se adicionarem 16ª tool)

─── Feature requests (scope > bug fix) ────────────────────────────────

[ ] Search sem whole-word / regex — precisa de UI
[ ] Auto-save de rascunhos do editor — precisa de design
    (ver "Auto-save de sessão" na roadmap)

========================================================================
 ROADMAP DE FUNCIONALIDADES
========================================================================

Alta prioridade (UX diário)
[DONE] Assinatura digital — desenhar/importar e colocar no PDF
[DONE] Atalhos de teclado globais — Ctrl+O/S/P/W/F, F5, F11
[DONE] Bookmarks/Índice — painel lateral TOC clicável
[DONE] Anotações com caneta — desenho livre no editor
[DONE] Dark mode no canvas do viewer — leitura noturna
[DONE] Selecionar e abrir vários PDFs de uma vez

Média prioridade
[ ] Comparar PDFs — vista lado a lado com diferenças destacadas
[ ] Preencher formulários — melhor suporte a checkboxes/dropdowns/radio
[ ] Batch processing — aplicar uma operação a vários PDFs de uma vez
[ ] Crop/Trim páginas — cortar margens ou redimensionar
[DONE] Número de páginas — numeração header/footer
[DONE] Juntar páginas lado a lado — N-up printing

Baixa prioridade (nice to have)
[ ] Plugins/extensões — tools custom
[ ] Auto-save de sessão — reabrir PDFs da sessão anterior
[ ] Thumbnails na sidebar — pré-visualização de páginas
[ ] Export para PDF/A — preservação de longo prazo
[ ] Speech-to-text — ler PDF em voz alta (acessibilidade)
[DONE] Color picker no add text
[DONE] Verificar cor dos modais no light mode
