mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-17 10:15:27 -04:00
Polish task activity icons
This commit is contained in:
+11
-3
@@ -349,6 +349,12 @@ function _taskIcon(task) {
|
|||||||
return `<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="opacity:0.4;flex-shrink:0;position:relative;top:-4px;">${path}</svg>`;
|
return `<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="opacity:0.4;flex-shrink:0;position:relative;top:-4px;">${path}</svg>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _taskAiMark(task) {
|
||||||
|
const kind = task?.task_type || task?.kind || '';
|
||||||
|
if (kind !== 'llm') return '';
|
||||||
|
return '<svg class="task-ai-mark" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" aria-label="Uses model"><path d="M12 2l2.25 6.75L21 11l-6.75 2.25L12 20l-2.25-6.75L3 11l6.75-2.25L12 2z"/></svg>';
|
||||||
|
}
|
||||||
|
|
||||||
// ---- Custom pickers ----
|
// ---- Custom pickers ----
|
||||||
|
|
||||||
function _buildTimePicker(containerId, hour, minute) {
|
function _buildTimePicker(containerId, hour, minute) {
|
||||||
@@ -663,7 +669,7 @@ function _renderList() {
|
|||||||
const builtinBadge = task.is_builtin
|
const builtinBadge = task.is_builtin
|
||||||
? `<span class="task-builtin-badge${task.is_modified ? ' modified' : ''}" title="${task.is_modified ? 'Built-in task — edited from its default' : 'Built-in task'}">built-in${task.is_modified ? ' · edited' : ''}</span>`
|
? `<span class="task-builtin-badge${task.is_modified ? ' modified' : ''}" title="${task.is_modified ? 'Built-in task — edited from its default' : 'Built-in task'}">built-in${task.is_modified ? ' · edited' : ''}</span>`
|
||||||
: '';
|
: '';
|
||||||
titleRow.innerHTML = `${_taskIcon(task)}<span class="memory-item-title">${_esc(task.name)}</span>${builtinBadge}<span style="flex:1;"></span>${statusBadge}`;
|
titleRow.innerHTML = `${_taskIcon(task)}<span class="memory-item-title">${_esc(task.name)}</span>${_taskAiMark(task)}${builtinBadge}<span style="flex:1;"></span>${statusBadge}`;
|
||||||
|
|
||||||
// ... menu button (hover to show)
|
// ... menu button (hover to show)
|
||||||
const actionsWrap = document.createElement('div');
|
const actionsWrap = document.createElement('div');
|
||||||
@@ -2298,7 +2304,8 @@ function _renderActivityEntry(entry) {
|
|||||||
<div class="task-log-row is-skipped" data-kind="${_escHtml(entry.kind)}" data-entry-idx="${entryIdx}" style="${styleVars}">
|
<div class="task-log-row is-skipped" data-kind="${_escHtml(entry.kind)}" data-entry-idx="${entryIdx}" style="${styleVars}">
|
||||||
<div class="task-log-row-head">
|
<div class="task-log-row-head">
|
||||||
${statusDot}
|
${statusDot}
|
||||||
<span class="task-log-name">${_escHtml(entry.taskName)}</span>
|
<span class="task-log-task-icon">${_taskIcon({ action: entry.action, task_type: entry.kind })}</span>
|
||||||
|
<span class="task-log-name">${_escHtml(entry.taskName)}</span>${_taskAiMark({ task_type: entry.kind })}
|
||||||
${repeatBadge}
|
${repeatBadge}
|
||||||
<span class="task-log-skipped-reason">skipped${reason ? ' — ' + _escHtml(reason) : ''}</span>
|
<span class="task-log-skipped-reason">skipped${reason ? ' — ' + _escHtml(reason) : ''}</span>
|
||||||
<span style="flex:1"></span>
|
<span style="flex:1"></span>
|
||||||
@@ -2311,7 +2318,8 @@ function _renderActivityEntry(entry) {
|
|||||||
<div class="task-log-row${long ? ' is-long' : ''}${_isRunning ? ' is-running' : ''}" data-kind="${_escHtml(entry.kind)}" data-entry-idx="${entryIdx}" style="${styleVars}">
|
<div class="task-log-row${long ? ' is-long' : ''}${_isRunning ? ' is-running' : ''}" data-kind="${_escHtml(entry.kind)}" data-entry-idx="${entryIdx}" style="${styleVars}">
|
||||||
<div class="task-log-row-head">
|
<div class="task-log-row-head">
|
||||||
${statusDot}
|
${statusDot}
|
||||||
<span class="task-log-name">${_escHtml(entry.taskName)}</span>
|
<span class="task-log-task-icon">${_taskIcon({ action: entry.action, task_type: entry.kind })}</span>
|
||||||
|
<span class="task-log-name">${_escHtml(entry.taskName)}</span>${_taskAiMark({ task_type: entry.kind })}
|
||||||
${repeatBadge}
|
${repeatBadge}
|
||||||
<span style="flex:1"></span>
|
<span style="flex:1"></span>
|
||||||
${rightHtml}
|
${rightHtml}
|
||||||
|
|||||||
+23
-2
@@ -20825,6 +20825,20 @@ body:not(.welcome-ready) #welcome-screen {
|
|||||||
title still reads in dark mode. Lightness stays adaptive. */
|
title still reads in dark mode. Lightness stays adaptive. */
|
||||||
color: hsl(var(--cat-hue) 60% 60%);
|
color: hsl(var(--cat-hue) 60% 60%);
|
||||||
}
|
}
|
||||||
|
.task-log-task-icon {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
margin-right: -3px;
|
||||||
|
}
|
||||||
|
.task-log-task-icon svg {
|
||||||
|
top: 0 !important;
|
||||||
|
opacity: 0.46 !important;
|
||||||
|
}
|
||||||
|
.task-log-row-head .task-ai-mark {
|
||||||
|
top: 0;
|
||||||
|
margin-left: -4px;
|
||||||
|
}
|
||||||
.task-log-repeat {
|
.task-log-repeat {
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@@ -20879,7 +20893,7 @@ body:not(.welcome-ready) #welcome-screen {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -2px;
|
top: -3px;
|
||||||
}
|
}
|
||||||
.task-log-stop:hover {
|
.task-log-stop:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
@@ -21065,7 +21079,7 @@ body:not(.welcome-ready) #welcome-screen {
|
|||||||
}
|
}
|
||||||
.task-log-clear-cache svg {
|
.task-log-clear-cache svg {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 2px;
|
top: 0;
|
||||||
}
|
}
|
||||||
/* Activity filter chips — toggle-out model: ON by default (solid),
|
/* Activity filter chips — toggle-out model: ON by default (solid),
|
||||||
click to toggle OFF (dimmed + strikethrough) to hide that group. */
|
click to toggle OFF (dimmed + strikethrough) to hide that group. */
|
||||||
@@ -21199,6 +21213,13 @@ a.chat-link[href^="#research-"] {
|
|||||||
the click when hitting the inner glyph). */
|
the click when hitting the inner glyph). */
|
||||||
.task-card .memory-item-actions .memory-item-btn svg { pointer-events: none; }
|
.task-card .memory-item-actions .memory-item-btn svg { pointer-events: none; }
|
||||||
.task-card .task-builtin-badge { position: relative; top: -4px; }
|
.task-card .task-builtin-badge { position: relative; top: -4px; }
|
||||||
|
.task-ai-mark {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
color: var(--accent, var(--red));
|
||||||
|
opacity: 0.78;
|
||||||
|
position: relative;
|
||||||
|
top: -4px;
|
||||||
|
}
|
||||||
/* Per-card select checkbox rides up to the title line. The "All" checkbox is
|
/* Per-card select checkbox rides up to the title line. The "All" checkbox is
|
||||||
#tasks-select-all (not .memory-select-cb), so it stays put. */
|
#tasks-select-all (not .memory-select-cb), so it stays put. */
|
||||||
.task-card .memory-select-cb { position: relative; top: -4px; }
|
.task-card .memory-select-cb { position: relative; top: -4px; }
|
||||||
|
|||||||
Reference in New Issue
Block a user