Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: richer OTA status bar — name, variant, stage, time; click opens /os

Status bar now shows: "oxide-stork C | kernel 55% | 2m30s"
Click opens prompt.ac/os instead of quickpick menu.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+20 -5
+20 -5
vscode-extension/extension.ts
··· 1339 1339 vscode.StatusBarAlignment.Left, 1340 1340 99, 1341 1341 ); 1342 - statusBarOTA.command = "aestheticComputer.showOTADetails"; 1342 + statusBarOTA.command = "aestheticComputer.openOSPage"; 1343 1343 context.subscriptions.push(statusBarOTA); 1344 1344 } 1345 1345 ··· 1355 1355 if (state.active) { 1356 1356 const a = state.active; 1357 1357 const elapsed = Math.round(a.elapsedMs / 1000); 1358 + const mins = Math.floor(elapsed / 60); 1359 + const secs = elapsed % 60; 1360 + const timeStr = mins > 0 ? `${mins}m${secs}s` : `${secs}s`; 1358 1361 const name = a.buildName || a.ref?.substring(0, 7) || ''; 1359 - statusBarOTA.text = `${getOTAIcon(a.stage, 'running')} ${name} ${a.stage} ${a.percent}%`; 1362 + const variant = a.stage?.startsWith('cl-') ? ' CL' : ' C'; 1363 + const stageClean = a.stage?.replace('cl-', '') || ''; 1364 + statusBarOTA.text = `${getOTAIcon(a.stage, 'running')} ${name}${variant} | ${stageClean} ${a.percent}% | ${timeStr}`; 1360 1365 statusBarOTA.backgroundColor = getOTAColor('running'); 1361 - let tip = `AC-OS Building: ${name}\nStage: ${a.stage} (${a.percent}%)\nElapsed: ${elapsed}s`; 1366 + let tip = `AC-OS Building: ${name}\nVariant:${variant}\nStage: ${stageClean} (${a.percent}%)\nElapsed: ${timeStr}`; 1362 1367 if (a.commitMsg) tip += `\n${a.commitMsg}`; 1363 1368 if (a.ref) tip += `\nCommit: ${a.ref.substring(0, 11)}`; 1364 1369 statusBarOTA.tooltip = tip; ··· 1366 1371 const r = state.recent[0]; 1367 1372 const name = r.buildName || r.ref?.substring(0, 7) || ''; 1368 1373 const elapsed = Math.round(r.elapsedMs / 1000); 1374 + const mins = Math.floor(elapsed / 60); 1375 + const timeStr = mins > 0 ? `${mins}m${elapsed % 60}s` : `${elapsed}s`; 1369 1376 const time = r.finishedAt ? new Date(r.finishedAt).toLocaleTimeString() : ''; 1370 1377 const icon = getOTAIcon(r.stage, r.status); 1371 - statusBarOTA.text = r.status === 'success' ? `${icon} ${name}` : `${icon} ${r.status}`; 1378 + statusBarOTA.text = r.status === 'success' 1379 + ? `${icon} ${name} | ${timeStr}` 1380 + : `${icon} ${name} ${r.status}`; 1372 1381 statusBarOTA.backgroundColor = getOTAColor(r.status); 1373 1382 let tip = `AC-OS: ${r.status} — ${name}`; 1374 1383 if (r.commitMsg) tip += `\n${r.commitMsg}`; 1375 - tip += `\nBuild time: ${elapsed}s`; 1384 + tip += `\nBuild time: ${timeStr}`; 1376 1385 if (time) tip += ` | Finished: ${time}`; 1377 1386 if (r.error) tip += `\nError: ${r.error}`; 1378 1387 statusBarOTA.tooltip = tip; ··· 1459 1468 }) 1460 1469 ); 1461 1470 1471 + 1472 + context.subscriptions.push( 1473 + vscode.commands.registerCommand("aestheticComputer.openOSPage", () => { 1474 + vscode.env.openExternal(vscode.Uri.parse('https://prompt.ac/os')); 1475 + }) 1476 + ); 1462 1477 1463 1478 context.subscriptions.push( 1464 1479 vscode.commands.registerCommand("aestheticComputer.openWindow", () => {