dankgrinder 7.58.0 → 7.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/grinder.js +6 -5
  2. package/package.json +1 -1
package/lib/grinder.js CHANGED
@@ -586,7 +586,7 @@ function renderDashboard() {
586
586
 
587
587
  for (const wk of visibleWorkers) {
588
588
  const origNum = (wk.idx + 1).toString().padStart(colNum);
589
- const rawStat = (wk.lastStatus || 'idle').replace(RE, '');
589
+ const rawStat = (wk.lastStatus || 'ready').replace(RE, '');
590
590
  const activityText = rawStat.substring(0, colActivity);
591
591
 
592
592
  // ── Status icon ──
@@ -1133,6 +1133,7 @@ class AccountWorker {
1133
1133
  this.lastRunTime = {};
1134
1134
  this.cycleCount = 0;
1135
1135
  this.lastCommandRun = 0;
1136
+ this.lastStatus = 'ready';
1136
1137
  this.paused = false;
1137
1138
  this.dashboardPaused = false;
1138
1139
  this._sellRunning = false;
@@ -3646,12 +3647,12 @@ async function start(apiKey, apiUrl, opts = {}) {
3646
3647
  parts.push(`${D}${pulse}♥?${c.reset}`);
3647
3648
  }
3648
3649
  if (parts.length > 0) {
3649
- console.log(` ${c.dim}├${c.reset} ${c.bold}${w.username}${c.reset} ${parts.join(' ')}`);
3650
+ recentLogs.push({ ts: Date.now(), username: w.username, color: w.color, command: 'dm check', response: parts.join(' '), status: 'ok' });
3650
3651
  }
3651
3652
  } catch {}
3652
3653
  }
3653
3654
  if (dmNoLs.length > 0) {
3654
- console.log(` ${rgb(239, 68, 68)}⚠${c.reset} ${c.bold}${c.red}DM confirms 0 lifesavers:${c.reset} ${dmNoLs.join(', ')}`);
3655
+ recentLogs.push({ ts: Date.now(), username: 'system', color: rgb(239, 68, 68), command: 'dm check', response: `⚠ No lifesavers: ${dmNoLs.join(', ')}`, status: 'warn' });
3655
3656
  // Set Redis keys to block crime/search
3656
3657
  for (const w of activeWorkers) {
3657
3658
  if (dmNoLs.includes(w.username) && redis) {
@@ -3663,7 +3664,7 @@ async function start(apiKey, apiUrl, opts = {}) {
3663
3664
  }
3664
3665
  }
3665
3666
  if (dmUnknown.length > 0) {
3666
- console.log(` ${rgb(251, 191, 36)}⚠${c.reset} ${c.dim}Lifesavers unknown — live DM monitor active:${c.reset} ${dmUnknown.join(', ')}`);
3667
+ recentLogs.push({ ts: Date.now(), username: 'system', color: rgb(251, 191, 36), command: 'dm check', response: `⚠ Lifesavers unknown — live monitor: ${dmUnknown.join(', ')}`, status: 'warn' });
3667
3668
  // Crime/search on these accounts will be skipped via safety hold until the live
3668
3669
  // DM gateway listener detects a death (→ sets count) or confirms clean.
3669
3670
  }
@@ -3671,7 +3672,7 @@ async function start(apiKey, apiUrl, opts = {}) {
3671
3672
  if (dmDeaths > 0) dmSummaryParts.push(`${dmDeaths} deaths`);
3672
3673
  if (dmLevelUps > 0) dmSummaryParts.push(`${dmLevelUps} level-ups`);
3673
3674
  if (dmUnknown.length > 0) dmSummaryParts.push(`${dmUnknown.length} pending`);
3674
- console.log(` ${rgb(52, 211, 153)}✓${c.reset} ${c.bold}DM check${c.reset} ${dmSummaryParts.length > 0 ? c.dim + dmSummaryParts.join(', ') + c.reset : c.dim + 'clean — no deaths or level-ups' + c.reset}`);
3675
+ recentLogs.push({ ts: Date.now(), username: 'system', color: rgb(52, 211, 153), command: 'dm check', response: dmSummaryParts.length > 0 ? dmSummaryParts.join(', ') : 'clean — no deaths or level-ups', status: 'ok' });
3675
3676
  console.log('');
3676
3677
 
3677
3678
  console.log(` ${rgb(139, 92, 246)}${c.bold}>>>${c.reset} ${gradientText('Starting grind loops...', [139, 92, 246], [52, 211, 153])}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dankgrinder",
3
- "version": "7.58.0",
3
+ "version": "7.60.0",
4
4
  "description": "Dank Memer automation engine — grind coins while you sleep",
5
5
  "bin": {
6
6
  "dankgrinder": "bin/dankgrinder.js"