feat: show 🤖 badge for cron jobs in agent mode

Identify cron jobs with mode=agent (no_agent=false) in the cron list
by displaying a robot emoji badge next to the job name.
This commit is contained in:
ubuntu
2026-05-13 17:38:50 -03:00
parent 86740c425e
commit 97564c2b01
2 changed files with 9 additions and 1 deletions
+8 -1
View File
@@ -425,11 +425,13 @@ async function loadCrons(animate) {
item.id = 'cron-' + job.id;
const status = _cronStatusMeta(job);
const isNewRun = _cronNewJobIds.has(String(job.id));
const isAgentMode = !job.no_agent;
const profileLabel = _cronProfileLabel(job.profile);
const profileTitle = _cronProfileTitle(job.profile);
item.innerHTML = `
<div class="cron-header">
${isNewRun ? '<span class="cron-new-dot" title="New run"></span>' : ''}
${isAgentMode ? '<span class="cron-agent-badge" title="Agent mode">🤖</span>' : ''}
<span class="cron-name" title="${esc(job.name)}">${esc(job.name)}</span>
<span class="cron-profile-badge" title="${esc(profileTitle)}">${esc(profileLabel)}</span>
<span class="cron-status ${status.listClass}">${esc(status.label)}</span>
@@ -468,6 +470,11 @@ function _renderCronDetail(job){
const deliver = job.deliver || 'local';
const isNoAgent = !!job.no_agent;
const cronJobMode = isNoAgent ? 'no-agent' : 'agent';
const modelProvider =
job.provider && job.model ? `${esc(job.provider)}/${esc(job.model)}` :
job.model ? esc(job.model) :
job.provider ? esc(job.provider) :
isNoAgent ? '' : 'default';
const script = job.script || '';
const profileLabel = _cronProfileLabel(job.profile);
const profileTitle = _cronProfileTitle(job.profile);
@@ -498,7 +505,7 @@ function _renderCronDetail(job){
<div class="detail-row"><div class="detail-row-label">${esc(t('cron_next'))}</div><div class="detail-row-value">${esc(nextRun)}</div></div>
<div class="detail-row"><div class="detail-row-label">${esc(t('cron_last'))}</div><div class="detail-row-value">${esc(lastRun)}</div></div>
<div class="detail-row"><div class="detail-row-label">Deliver</div><div class="detail-row-value">${esc(deliver)}</div></div>
<div class="detail-row"><div class="detail-row-label">Mode</div><div class="detail-row-value"><span class="detail-badge" id="cronJobMode">${esc(cronJobMode)}</span></div></div>
<div class="detail-row"><div class="detail-row-label">Mode</div><div class="detail-row-value"><span class="detail-badge" id="cronJobMode">${esc(cronJobMode)}</span>${modelProvider ? ` <code>${modelProvider}</code>` : ''}</div></div>
${isNoAgent ? `<div class="detail-row"><div class="detail-row-label">No-agent script</div><div class="detail-row-value"><code>${esc(script || '—')}</code></div></div>` : ''}
<div class="detail-row"><div class="detail-row-label">${esc(t('cron_profile_label') || 'Profile')}</div><div class="detail-row-value"><span class="detail-badge active" title="${esc(profileTitle)}">${esc(profileLabel)}</span></div></div>
<div class="detail-row"><div class="detail-row-label">${esc(t('cron_toast_notifications_label') || 'Completion toasts')}</div><div class="detail-row-value"><span class="detail-badge ${toastNotifications ? 'active' : ''}">${esc(toastNotifications ? (t('cron_toast_notifications_enabled') || 'Enabled') : (t('cron_toast_notifications_disabled') || 'Disabled'))}</span></div></div>
+1
View File
@@ -2700,6 +2700,7 @@ main.main.showing-logs > #mainLogs{display:flex;}
/* ── Cron alert badge ── */
.cron-badge{position:absolute;top:2px;right:2px;background:#e53e3e;color:#fff;font-size:9px;font-weight:700;min-width:14px;height:14px;line-height:14px;text-align:center;border-radius:7px;padding:0 3px;}
.cron-new-dot{width:7px;height:7px;border-radius:50%;background:var(--success,#22c55e);flex-shrink:0;animation:cron-dot-pulse 2s ease-in-out infinite;}
.cron-agent-badge{flex-shrink:0;font-size:12px;line-height:1;}
@keyframes cron-dot-pulse{0%,100%{opacity:1;}50%{opacity:.4;}}
.has-new-run{border-color:var(--success,#22c55e)!important;box-shadow:0 0 0 1px var(--success,#22c55e);}