const fs = require('fs');
const path = require('path');

const filePath = 'C:/Users/user/.gemini/antigravity/brain/a733a408-8407-4fca-9819-33e62ae434d8/walkthrough.md';
if (!fs.existsSync(filePath)) {
    console.error("walkthrough.md not found!");
    process.exit(1);
}

let content = fs.readFileSync(filePath, 'utf8');
const searchString = "## Modificações Recentes: Sistema de Histórico Global (Desfazer/Refazer - Undo/Redo)";
const index = content.indexOf(searchString);

if (index !== -1) {
    content = content.substring(0, index);
}

const cleanEnd = `## Modificações Recentes: Sistema de Histórico Global (Desfazer/Refazer - Undo/Redo)

Implementamos um sistema completo de histórico de edições (Undo/Redo) de clique único e por atalhos de teclado para que o usuário possa reverter qualquer configuração incorreta de forma rápida e segura.

1. **Diagramador de Livros (Diagramação):**
   * **Interface Visual:** Adicionamos os botões \`#btn-undo\` (Desfazer) e \`#btn-redo\` (Refazer) no cabeçalho superior direito da tela de Diagramação. Eles ativam e desativam reativamente (com opacidade reduzida) dependendo da presença de estados na pilha de histórico.
   * **Fluxo de Captura Dinâmico:** Implementamos as funções \`recordHistoryState()\`, \`applyHistoryState()\`, \`undo()\` e \`redo()\` no \`app.js\`. O sistema detecta qualquer mudança no objeto global \`state\` ao rodar a função de atualização de tela (\`updatePreviewPages\`), empilhando a versão anterior no \`undoStack\`.
   * **Sincronização Total:** Ao clicar em Desfazer, o estado é revertido, os inputs visuais da sidebar são sincronizados via \`syncStateToUI()\`, o índice de capítulos da esquerda é atualizado com \`renderChapterList()\`, e a paginação é refeita instantaneamente.
   * **Atalhos e Resets:** Adicionamos os atalhos de teclado \`Ctrl + Z\` (Desfazer) e \`Ctrl + Y\` / \`Ctrl + Shift + Z\` (Refazer), ignorando os acionamentos quando o foco do cursor está dentro de inputs, áreas de texto ou parágrafos editáveis do livro para não conflitar com a escrita nativa. O histórico é devidamente resetado ao carregar um manuscrito DOCX ou recuperar um progresso salvo.
   * **Exportação Direta em PDF sem Impressora (Electron):** Corrigimos o comportamento que abria uma caixa de diálogo do Windows sem suporte à visualização de impressão (*"Este aplicativo não dá suporte à visualização de impressão"*). Quando executada de dentro do Electron, a ação de exportação de PDF do miolo faz uma requisição POST para a nova rota de API \`/api/print-to-pdf\` enviando o HTML e CSS compilados. O servidor principal gera o PDF diretamente em memória usando a API nativa \`printToPDF()\` do Electron (com margem zero e dimensões milimétricas exatas do formato escolhido: A5, 14x21 ou 16x23) e abre uma caixa de diálogo nativa de salvamento de arquivo (\`showSaveDialogSync\`). O processo exibe um overlay visual de processamento ("Gerando PDF do Livro...") e realiza o download direto para o diretório escolhido pelo usuário. Para garantir que nenhuma página venha com texto oculto/branco (devido ao tempo de carregamento de fontes web / FOIT) ou que estoure o limite de tamanho de links do Chromium, criamos o endpoint \`/print-base\` que serve um esqueleto HTML limpo em memória. A janela oculta carrega este esqueleto e injeta dinamicamente o HTML e os estilos usando \`document.write\` e \`executeJavaScript\`. Isso elimina a necessidade de ler/escrever arquivos temporários em disco (evitando erros de permissão EACCES/EROFS em diretórios protegidos do Windows). A compilação do PDF aguarda a resolução da promessa \`document.fonts.ready\` (com fallback de 3 segundos). O comportamento em navegadores normais continua preservando o print preview nativo.

2. **Editor de Capas (Capa):**
   * **Interface Visual:** Inserimos os botões \`#btnUndo\` (\u21b6 Desfazer) e \`#btnRedo\` (\u21b7 Refazer) com layout idêntico e consistente no cabeçalho da página \`app.html\`.
   * **Pila de Estados Independente:** Criamos o sistema correspondente \`undoStackCapa\` / \`redoStackCapa\` gravando os estados de \`window.capaStatePersistente\` logo no início da função \`renderCapa()\`.
   * **Captura de Imagens Globais:** Aprimoramos o sistema para capturar um snapshot completo dos elementos de imagem ativos (\`imgFrente\`, \`imgVerso\`, \`imgAutor\`, \`imgOrelhaVerso\`, \`imgOrelhaFrente\`, \`imgFundoCapa\`, \`imgElementoFrente\`) codificados em DataURL base64/caminho. Isso garante que uploads, remoções ou trocas entre fundos sólidos e imagens de fundo sejam 100% desfeitas e refeitas, inclusive sincronizando com o IndexedDB local.
   * **Restauração Completa:** Ao acionar o Desfazer na capa, as propriedades são restauradas e a função \`restaurarValoresInputsCapa()\` atualiza sliders, caixas de seleção, campos de texto do verso, lombada e orelhas, redesenhando o Canvas reativamente.
   * **Atalhos Integrados:** Vinculamos os atalhos de teclado \`Ctrl + Z\` e \`Ctrl + Y\` de forma isolada na inicialização \`window.onload\` da página de capas.
   * **Exportação Direta em PDF (jsPDF):** Substituímos o fluxo de impressão nativa (\`window.print()\`) no botão "Exportar PDF (Gráfica)" por um motor de compilação em lote usando a biblioteca \`jsPDF\` local. O sistema agora monta o arquivo \$.pdf\` diretamente a partir do Canvas de alta resolução respeitando a orientação da folha e a largura/altura físicas exatas da capa (incluindo lombada, orelhas e sangrias). O arquivo é gerado em memória e baixado diretamente na pasta de Downloads do usuário sem abrir caixas de diálogo de impressoras físicas. Mantivemos um fallback clássico para a tela de impressão em caso de falha.

3. **Compilação Final Desktop:**
   * Recompilamos o executável usando \`npm run package\` e atualizamos o ZIP distribuível (\`BookForge_Pro_Turbo_Setup.zip\`) na raiz do projeto.
`;

fs.writeFileSync(filePath, content + cleanEnd, 'utf8');
console.log("walkthrough.md cleaned and updated successfully.");
