clawaid 1.1.27 → 1.1.28

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.
package/dist/server.js CHANGED
@@ -336,7 +336,7 @@ app.get('/api/fingerprint', (_req, res) => {
336
336
  res.json({ fingerprint: require('./diagnose').getMachineFingerprint() });
337
337
  });
338
338
  app.get('/api/health', (_req, res) => {
339
- res.json({ ok: true, version: '1.1.27', name: 'ClawAid', sessions: activeSessions.size });
339
+ res.json({ ok: true, version: '1.1.28', name: 'ClawAid', sessions: activeSessions.size });
340
340
  });
341
341
  function createServer(port) {
342
342
  return new Promise((resolve) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawaid",
3
- "version": "1.1.27",
3
+ "version": "1.1.28",
4
4
  "description": "AI-powered diagnostic and repair tool for OpenClaw",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/web/index.html CHANGED
@@ -604,7 +604,7 @@
604
604
  <!-- Steps feed -->
605
605
  <div id="feed" class="hidden"></div>
606
606
 
607
- <div class="footer">ClawAid v1.1.27</div>
607
+ <div class="footer">ClawAid v1.1.28</div>
608
608
 
609
609
  </div>
610
610
 
@@ -1285,6 +1285,11 @@
1285
1285
  var diagnosisHtml = '';
1286
1286
  var pendingFix = data.pendingFix;
1287
1287
  if (pendingFix && pendingFix.description) {
1288
+ var cmdHtml = '';
1289
+ if (pendingFix.command) {
1290
+ cmdHtml = '<div style="margin-top:8px;padding:8px 10px;background:var(--surface-alt);border-radius:6px;font-family:var(--mono);font-size:11px;color:var(--text-secondary);word-break:break-all;">'
1291
+ + '🔧 ' + (isZh ? '修复方案:' : 'Fix: ') + '<code>' + esc(pendingFix.command) + '</code></div>';
1292
+ }
1288
1293
  diagnosisHtml = '<div style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:12px;">'
1289
1294
  + '<div style="font-weight:700;font-size:14px;margin-bottom:8px;">'
1290
1295
  + (isZh ? '🔍 已找到问题:' : '🔍 Issue found:')
@@ -1292,7 +1297,9 @@
1292
1297
  + '<div style="display:flex;align-items:flex-start;gap:8px;">'
1293
1298
  + '<span style="flex-shrink:0;">⚠️</span>'
1294
1299
  + '<div style="font-size:13px;">' + esc(pendingFix.description) + '</div>'
1295
- + '</div></div>';
1300
+ + '</div>'
1301
+ + cmdHtml
1302
+ + '</div>';
1296
1303
  }
1297
1304
 
1298
1305
  // Also show rule findings if available
@@ -1339,8 +1346,8 @@
1339
1346
  div.className = 'card pw-card';
1340
1347
  div.innerHTML = '<div class="pw-hd">'
1341
1348
  + '<span class="pw-emoji">🩺</span>'
1342
- + '<div class="pw-title">' + (isZh ? '免费诊断完成' : 'Free scan complete') + '</div>'
1343
- + '<div class="pw-sub">' + (isZh ? '解锁修复,让 ClawAid 帮你搞定' : 'Unlock fixes to resolve your issues') + '</div>'
1349
+ + '<div class="pw-title">' + (isZh ? '🎯 问题已定位,修复方案已就绪' : '🎯 Issue identified, fix ready') + '</div>'
1350
+ + '<div class="pw-sub">' + (isZh ? '付费解锁 AI 自动执行修复 → 30秒搞定(自己排查可能要 1-2 小时)' : 'Pay to unlock → AI auto-fixes 30s done (vs 1-2 hours manual debugging)') + '</div>'
1344
1351
  + '</div>'
1345
1352
  + diagnosisHtml
1346
1353
  + buyBtnHtml
@@ -1361,13 +1368,22 @@
1361
1368
 
1362
1369
  // Fetch fingerprint for buy URL (Stripe) or xunhupay order creation
1363
1370
  var _pwFingerprint = '';
1371
+ var _fpReady = false;
1372
+ // Disable buy button until fingerprint is loaded
1373
+ var _buyBtn = document.getElementById('pw-buy');
1374
+ if (_buyBtn && !isCN) { _buyBtn.style.opacity = '0.5'; _buyBtn.style.pointerEvents = 'none'; }
1364
1375
  fetch('/api/fingerprint').then(function(r){return r.json();}).then(function(d) {
1365
1376
  _pwFingerprint = d.fingerprint || '';
1377
+ _fpReady = true;
1366
1378
  if (!isCN) {
1367
1379
  var btn = document.getElementById('pw-buy');
1368
- if (btn && d.fingerprint) btn.href = STRIPE_URL + '?client_reference_id=' + encodeURIComponent(d.fingerprint);
1380
+ if (btn && d.fingerprint) {
1381
+ btn.href = STRIPE_URL + '?client_reference_id=' + encodeURIComponent(d.fingerprint);
1382
+ btn.style.opacity = '1';
1383
+ btn.style.pointerEvents = 'auto';
1384
+ }
1369
1385
  }
1370
- }).catch(function(){});
1386
+ }).catch(function(){ _fpReady = true; });
1371
1387
 
1372
1388
  // Auto-poll after buy (works for both Stripe and Xunhupay)
1373
1389
  var pollTimer = null, pollCount = 0, MAX_POLLS = 120;