From 29998823185391a2429cbdbeb7618b93b3500d86 Mon Sep 17 00:00:00 2001 From: Amit Haridas Date: Sun, 26 Oct 2025 20:45:24 +0530 Subject: [PATCH] =?UTF-8?q?Add=20comprehensive=20debugging=20logging=20for?= =?UTF-8?q?=20file=20loading=20and=20print=20issues=20-=20Added=20console.?= =?UTF-8?q?log=20statements=20throughout=20file=20loading=20flow=20-=20Tra?= =?UTF-8?q?ces:=20command-line=20args=20=E2=86=92=20pendingFile=20?= =?UTF-8?q?=E2=86=92=20renderer-ready=20=E2=86=92=20openFileFromPath=20?= =?UTF-8?q?=E2=86=92=20file-opened=20-=20Added=20logging=20to=20print-prev?= =?UTF-8?q?iew=20handlers=20-=20Added=20logging=20to=20theme-changed=20and?= =?UTF-8?q?=20renderer-ready=20-=20Enabled=20DevTools=20automatically=20fo?= =?UTF-8?q?r=20debugging=20-=20Backup=20renderer-ready=20timeout=20(100ms)?= =?UTF-8?q?=20in=20case=20theme-changed=20doesn't=20fire=20This=20debuggin?= =?UTF-8?q?g=20build=20will=20help=20identify=20exactly=20where=20the=20fl?= =?UTF-8?q?ow=20breaks.=20=F0=9F=A4=96=20Generated=20with=20[Claude=20Code?= =?UTF-8?q?](https://claude.com/claude-code)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 17 +++++++++++++++++ src/renderer.js | 16 +++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index de25012..dc6b87b 100644 --- a/src/main.js +++ b/src/main.js @@ -112,6 +112,9 @@ function createWindow() { mainWindow.loadFile(path.join(__dirname, 'index.html')); + // Open DevTools for debugging + mainWindow.webContents.openDevTools(); + createMenu(); mainWindow.on('closed', () => { @@ -1179,8 +1182,11 @@ ipcMain.on('do-print', (event, { withStyles }) => { // Handle renderer ready for file association ipcMain.on('renderer-ready', (event) => { + console.log('[MAIN] renderer-ready received, rendererReady was:', rendererReady); rendererReady = true; + console.log('[MAIN] app.pendingFile:', app.pendingFile); if (app.pendingFile) { + console.log('[MAIN] Opening pending file:', app.pendingFile); openFileFromPath(app.pendingFile); app.pendingFile = null; } @@ -1583,13 +1589,17 @@ app.whenReady().then(() => { // Handle file association on app startup // Process all command line arguments except the first two (node and script path) const fileArgs = process.argv.slice(2); + console.log('[MAIN] Command line args:', process.argv); + console.log('[MAIN] File args to process:', fileArgs); for (const arg of fileArgs) { if ((arg.endsWith('.md') || arg.endsWith('.markdown')) && fs.existsSync(arg)) { // Store the file to open after window is ready + console.log('[MAIN] Setting pendingFile to:', arg); app.pendingFile = arg; break; } } + console.log('[MAIN] Final app.pendingFile:', app.pendingFile); }); app.on('window-all-closed', () => { @@ -1641,16 +1651,23 @@ app.on('open-file', (event, filePath) => { // Handle file opening from command line or file association function openFileFromPath(filePath) { + console.log('[MAIN] openFileFromPath called with:', filePath); + console.log('[MAIN] rendererReady:', rendererReady, 'mainWindow exists:', !!mainWindow); if (fs.existsSync(filePath)) { currentFile = filePath; const content = fs.readFileSync(filePath, 'utf-8'); + console.log('[MAIN] File read successfully, content length:', content.length); if (mainWindow && mainWindow.webContents && rendererReady) { // Send file immediately - renderer-ready means UI is initialized + console.log('[MAIN] Sending file-opened to renderer'); mainWindow.webContents.send('file-opened', { path: filePath, content }); } else { // Store file to open after renderer is ready + console.log('[MAIN] Storing as pending file'); app.pendingFile = filePath; } + } else { + console.error('[MAIN] File does not exist:', filePath); } } diff --git a/src/renderer.js b/src/renderer.js index 0435375..f59c50b 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -1039,9 +1039,16 @@ document.addEventListener('DOMContentLoaded', () => { }); } - // Request current theme - renderer-ready will be sent after theme is applied + // Request current theme ipcRenderer.send('get-theme'); + // Also send renderer-ready immediately as backup + // This ensures we don't get stuck waiting for theme-changed + setTimeout(() => { + console.log('Backup renderer-ready timeout triggered'); + ipcRenderer.send('renderer-ready'); + }, 100); + // Set up auto-save interval setInterval(() => { // Auto-save logic for all tabs @@ -1059,8 +1066,11 @@ ipcRenderer.on('file-new', () => { }); ipcRenderer.on('file-opened', (event, data) => { + console.log('[RENDERER] file-opened received:', data.path, 'content length:', data.content.length); if (tabManager) { tabManager.openFile(data.path, data.content); + } else { + console.error('[RENDERER] tabManager not initialized!'); } }); @@ -1098,11 +1108,13 @@ ipcRenderer.on('toggle-find', () => { }); ipcRenderer.on('theme-changed', (event, theme) => { + console.log('[RENDERER] Theme changed to:', theme); document.body.className = `theme-${theme}`; // After theme is applied, wait for next frame then signal renderer is ready // This ensures complete UI initialization before files are opened requestAnimationFrame(() => { + console.log('[RENDERER] Sending renderer-ready from theme-changed'); ipcRenderer.send('renderer-ready'); }); }); @@ -1154,10 +1166,12 @@ ipcRenderer.on('adjust-font-size', (event, action) => { // Print preview request handlers - handle printing directly ipcRenderer.on('print-preview', () => { + console.log('[RENDERER] print-preview received'); handlePrintPreview(false); }); ipcRenderer.on('print-preview-styled', () => { + console.log('[RENDERER] print-preview-styled received'); handlePrintPreview(true); });