diff --git a/job_applier.mjs b/job_applier.mjs index d4ef823..950e545 100644 --- a/job_applier.mjs +++ b/job_applier.mjs @@ -125,6 +125,7 @@ async function main() { await handleResult(job, result, results, settings); } catch (e) { console.error(` ❌ Error: ${e.message}`); + if (e.stack) console.error(` Stack: ${e.stack.split('\n').slice(1, 3).join(' | ').trim()}`); const retries = (job.retry_count || 0) + 1; if (retries <= maxRetries) { updateJobStatus(job.id, 'new', { retry_count: retries }); @@ -140,6 +141,7 @@ async function main() { } } catch (e) { console.error(` ❌ Browser error for ${platform}: ${e.message}`); + if (e.stack) console.error(` Stack: ${e.stack.split('\n').slice(1, 3).join(' | ').trim()}`); } finally { await browser?.browser?.close().catch(() => {}); } diff --git a/lib/linkedin.mjs b/lib/linkedin.mjs index 118795f..c985a68 100644 --- a/lib/linkedin.mjs +++ b/lib/linkedin.mjs @@ -75,7 +75,9 @@ export async function searchLinkedIn(page, search, { onPage } = {}) { link?.closest('li')?.click() || link?.click(); }, jobId); await page.waitForTimeout(CLICK_WAIT); - } catch {} + } catch (e) { + console.warn(` ⚠️ Could not click job card ${jobId}: ${e.message}`); + } // Read title, company, location from detail panel (more accurate) const meta = await page.evaluate(({ id, track, excludes }) => { diff --git a/lib/session.mjs b/lib/session.mjs index 08309e8..a8d2924 100644 --- a/lib/session.mjs +++ b/lib/session.mjs @@ -25,16 +25,19 @@ export async function refreshSession(platform, apiKey, connectionIds = {}) { } // If not immediately successful, poll for up to 30s + console.log(` ⏳ ${platform} session pending (status: ${loginResp.status}), polling...`); const start = Date.now(); + let pollCount = 0; while (Date.now() - start < 30000) { await new Promise(r => setTimeout(r, 2000)); + pollCount++; const conn = await kernel.auth.connections.retrieve(connectionId); if (conn.status === 'SUCCESS') { - console.log(` ✅ ${platform} session refreshed`); + console.log(` ✅ ${platform} session refreshed (after ${pollCount} polls)`); return true; } if (['FAILED', 'EXPIRED', 'CANCELED'].includes(conn.status)) { - console.warn(` ⚠️ ${platform} session refresh failed: ${conn.status}`); + console.warn(` ⚠️ ${platform} session refresh failed: ${conn.status} (after ${pollCount} polls)`); return false; } }