auto-save 2026-05-09 16:12 (~4)

This commit is contained in:
2026-05-09 16:12:31 +08:00
parent 90e37f31ed
commit e74787b2d9
4 changed files with 2540 additions and 2531 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1478,18 +1478,12 @@ function renderAgents() {
const sEl = card.querySelector(".agent-skills"); const sEl = card.querySelector(".agent-skills");
const skills = (a.skills || []).map(skillById).filter(Boolean); const skills = (a.skills || []).map(skillById).filter(Boolean);
if (skills.length) { if (skills.length) {
for (const s of skills.slice(0, 5)) { for (const s of skills) {
const tag = document.createElement("span"); const tag = document.createElement("span");
tag.className = "mini-skill"; tag.className = "mini-skill";
tag.textContent = s.emoji + " " + s.name; tag.textContent = s.emoji + " " + s.name;
sEl.appendChild(tag); sEl.appendChild(tag);
} }
if (skills.length > 5) {
const more = document.createElement("span");
more.className = "mini-skill";
more.textContent = "+" + (skills.length - 5);
sEl.appendChild(more);
}
} }
card.querySelector(".chat").onclick = () => chatWithAgent(a.id); card.querySelector(".chat").onclick = () => chatWithAgent(a.id);
card.querySelector(".edit").onclick = () => openAgentModal(a.id); card.querySelector(".edit").onclick = () => openAgentModal(a.id);

View File

@@ -947,6 +947,7 @@ a { color: var(--orange-3); text-decoration: none; }
border-radius: 14px; border-radius: 14px;
padding: 14px 18px 16px; padding: 14px 18px 16px;
min-height: 100px; min-height: 100px;
max-height: min(250px, 38vh);
transition: border-color 0.15s, background 0.15s; transition: border-color 0.15s, background 0.15s;
} }
.studio-stage.drop-hover { .studio-stage.drop-hover {
@@ -1122,6 +1123,7 @@ a { color: var(--orange-3); text-decoration: none; }
border: 1px solid rgba(255,105,0,0.25); border: 1px solid rgba(255,105,0,0.25);
border-radius: 6px; border-radius: 6px;
font-weight: 600; font-weight: 600;
overflow-wrap: anywhere;
} }
/* Agent picker 列表 */ /* Agent picker 列表 */
@@ -1910,13 +1912,14 @@ a { color: var(--orange-3); text-decoration: none; }
/* 最常用智能体大卡 */ /* 最常用智能体大卡 */
.top-agent-card { .top-agent-card {
display: flex; display: flex;
align-items: center; align-items: flex-start;
gap: 18px; gap: 18px;
padding: 22px 26px; padding: 22px 26px;
background: var(--card-bg); background: var(--card-bg);
border: 1px solid var(--line); border: 1px solid var(--line);
border-radius: 18px; border-radius: 18px;
margin-bottom: 18px; margin-bottom: 18px;
max-height: min(190px, 34vh);
/* blur 已在外壳统一处理,内部卡片不再单独磨砂以降低合成成本 */ /* blur 已在外壳统一处理,内部卡片不再单独磨砂以降低合成成本 */
} }
.top-agent-avatar { .top-agent-avatar {
@@ -1944,11 +1947,13 @@ a { color: var(--orange-3); text-decoration: none; }
font-weight: 800; font-weight: 800;
color: var(--text); color: var(--text);
letter-spacing: -0.3px; letter-spacing: -0.3px;
overflow-wrap: anywhere;
} }
.top-agent-sub { .top-agent-sub {
font-size: 12px; font-size: 12px;
color: var(--text-dim); color: var(--text-dim);
margin-top: 3px; margin-top: 3px;
overflow-wrap: anywhere;
} }
/* 热力图 — 全宽大格 */ /* 热力图 — 全宽大格 */
.heatmap-wrap { .heatmap-wrap {
@@ -2039,6 +2044,7 @@ a { color: var(--orange-3); text-decoration: none; }
border: 1px solid var(--line); border: 1px solid var(--line);
border-radius: 14px; border-radius: 14px;
min-height: 100px; min-height: 100px;
max-height: min(340px, 48vh);
margin-bottom: 10px; margin-bottom: 10px;
/* 卡片层不再单独磨砂 */ /* 卡片层不再单独磨砂 */
} }
@@ -2082,7 +2088,13 @@ a { color: var(--orange-3); text-decoration: none; }
} }
[data-theme="light"] .day-convo-item { background: rgba(15,22,40,0.03); } [data-theme="light"] .day-convo-item { background: rgba(15,22,40,0.03); }
.day-convo-item:hover { background: var(--card-hover-bg); border-color: var(--line-strong); } .day-convo-item:hover { background: var(--card-hover-bg); border-color: var(--line-strong); }
.day-convo-title { flex: 1; font-size: 13px; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .day-convo-title {
flex: 1;
font-size: 13px;
font-weight: 600;
color: var(--text);
overflow-wrap: anywhere;
}
.day-convo-meta { font-size: 11px; color: var(--text-dim2); white-space: nowrap; } .day-convo-meta { font-size: 11px; color: var(--text-dim2); white-space: nowrap; }
.dash-grid { .dash-grid {
@@ -2099,6 +2111,7 @@ a { color: var(--orange-3); text-decoration: none; }
border: 1px solid var(--line); border: 1px solid var(--line);
border-radius: 18px; border-radius: 18px;
transition: border-color 0.2s, background 0.2s; transition: border-color 0.2s, background 0.2s;
max-height: min(190px, 34vh);
} }
.stat:hover { border-color: var(--line-strong); background: var(--card-hover-bg); } .stat:hover { border-color: var(--line-strong); background: var(--card-hover-bg); }
.stat-label { .stat-label {
@@ -2115,8 +2128,13 @@ a { color: var(--orange-3); text-decoration: none; }
margin: 6px 0; margin: 6px 0;
color: var(--text); color: var(--text);
font-variant-numeric: tabular-nums; font-variant-numeric: tabular-nums;
overflow-wrap: anywhere;
}
.stat-sub {
font-size: 12px;
color: var(--text-dim);
overflow-wrap: anywhere;
} }
.stat-sub { font-size: 12px; color: var(--text-dim); }
/* ========== 设置 ========== */ /* ========== 设置 ========== */
.settings-scroll { .settings-scroll {
@@ -2143,7 +2161,9 @@ a { color: var(--orange-3); text-decoration: none; }
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-width: 0; min-width: 0;
max-height: min(380px, 54vh);
} }
.settings-group.wide { max-height: min(460px, 62vh); }
.settings-group-head { .settings-group-head {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -2182,9 +2202,8 @@ a { color: var(--orange-3); text-decoration: none; }
font-size: 12px; font-size: 12px;
color: var(--text-dim2); color: var(--text-dim2);
margin-top: 2px; margin-top: 2px;
white-space: nowrap; line-height: 1.45;
overflow: hidden; overflow-wrap: anywhere;
text-overflow: ellipsis;
} }
.settings-group-body { .settings-group-body {
padding: 18px 22px 22px; padding: 18px 22px 22px;
@@ -2414,6 +2433,7 @@ a { color: var(--orange-3); text-decoration: none; }
flex-direction: column; flex-direction: column;
gap: 10px; gap: 10px;
position: relative; position: relative;
max-height: min(300px, 46vh);
} }
.agent-card:hover { .agent-card:hover {
transform: translateY(-3px); transform: translateY(-3px);
@@ -2441,9 +2461,7 @@ a { color: var(--orange-3); text-decoration: none; }
font-weight: 700; font-weight: 700;
color: var(--text); color: var(--text);
margin-bottom: 2px; margin-bottom: 2px;
white-space: nowrap; overflow-wrap: anywhere;
overflow: hidden;
text-overflow: ellipsis;
} }
.agent-model { .agent-model {
font-size: 11px; font-size: 11px;
@@ -2456,10 +2474,7 @@ a { color: var(--orange-3); text-decoration: none; }
color: var(--text-dim); color: var(--text-dim);
line-height: 1.55; line-height: 1.55;
flex: 1; flex: 1;
display: -webkit-box; overflow-wrap: anywhere;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
} }
.agent-actions { .agent-actions {
display: flex; display: flex;
@@ -2654,6 +2669,7 @@ a { color: var(--orange-3); text-decoration: none; }
flex-direction: column; flex-direction: column;
gap: 8px; gap: 8px;
min-height: 140px; min-height: 140px;
max-height: min(420px, 52vh);
} }
.cluster-col-head { .cluster-col-head {
display: flex; display: flex;
@@ -2688,6 +2704,9 @@ a { color: var(--orange-3); text-decoration: none; }
color: var(--text); color: var(--text);
white-space: pre-wrap; white-space: pre-wrap;
word-wrap: break-word; word-wrap: break-word;
min-height: 0;
overflow-y: auto;
padding-right: 4px;
} }
/* ========== Cron 定时任务 ========== */ /* ========== Cron 定时任务 ========== */
@@ -2708,8 +2727,9 @@ a { color: var(--orange-3); text-decoration: none; }
display: grid; display: grid;
grid-template-columns: auto 1fr auto auto auto; grid-template-columns: auto 1fr auto auto auto;
gap: 14px; gap: 14px;
align-items: center; align-items: start;
transition: border-color 0.2s, background 0.2s; transition: border-color 0.2s, background 0.2s;
max-height: min(220px, 42vh);
} }
.cron-item:hover { border-color: var(--line-strong); background: var(--card-hover-bg); } .cron-item:hover { border-color: var(--line-strong); background: var(--card-hover-bg); }
.cron-item.disabled { opacity: 0.55; } .cron-item.disabled { opacity: 0.55; }
@@ -2730,9 +2750,7 @@ a { color: var(--orange-3); text-decoration: none; }
font-size: 14px; font-size: 14px;
font-weight: 700; font-weight: 700;
color: var(--text); color: var(--text);
white-space: nowrap; overflow-wrap: anywhere;
overflow: hidden;
text-overflow: ellipsis;
} }
.cron-meta { .cron-meta {
font-size: 11px; font-size: 11px;
@@ -2749,15 +2767,15 @@ a { color: var(--orange-3); text-decoration: none; }
padding: 1px 6px; padding: 1px 6px;
border-radius: 4px; border-radius: 4px;
font-size: 10.5px; font-size: 10.5px;
overflow-wrap: anywhere;
} }
.cron-prompt-preview { .cron-prompt-preview {
font-size: 11.5px; font-size: 11.5px;
color: var(--text-dim); color: var(--text-dim);
margin-top: 4px; margin-top: 4px;
max-width: 560px; max-width: 560px;
white-space: nowrap; line-height: 1.55;
overflow: hidden; overflow-wrap: anywhere;
text-overflow: ellipsis;
} }
.cron-pill { .cron-pill {
font-size: 10px; font-size: 10px;
@@ -2898,9 +2916,10 @@ a { color: var(--orange-3); text-decoration: none; }
border: 1px solid var(--line); border: 1px solid var(--line);
border-radius: 12px; border-radius: 12px;
display: flex; display: flex;
align-items: center; align-items: flex-start;
gap: 12px; gap: 12px;
transition: border-color 0.2s, background 0.2s; transition: border-color 0.2s, background 0.2s;
max-height: min(150px, 30vh);
} }
.tool-chip:hover { background: var(--card-hover-bg); border-color: var(--line-strong); } .tool-chip:hover { background: var(--card-hover-bg); border-color: var(--line-strong); }
.tool-chip.off { opacity: 0.5; } .tool-chip.off { opacity: 0.5; }
@@ -2910,17 +2929,14 @@ a { color: var(--orange-3); text-decoration: none; }
font-size: 13px; font-size: 13px;
font-weight: 700; font-weight: 700;
color: var(--text); color: var(--text);
white-space: nowrap; overflow-wrap: anywhere;
overflow: hidden;
text-overflow: ellipsis;
} }
.tool-chip .tool-desc { .tool-chip .tool-desc {
font-size: 11px; font-size: 11px;
color: var(--text-dim2); color: var(--text-dim2);
margin-top: 2px; margin-top: 2px;
white-space: nowrap; line-height: 1.45;
overflow: hidden; overflow-wrap: anywhere;
text-overflow: ellipsis;
} }
.tool-chip .tool-status { .tool-chip .tool-status {
font-size: 9px; font-size: 9px;

View File

@@ -1,6 +1,6 @@
// 爱马仕 Hermes · 轻量 Service Worker // 爱马仕 Hermes · 轻量 Service Worker
// 静态壳走 network-first拿不到再回退缓存API 直通 // 静态壳走 network-first拿不到再回退缓存API 直通
const CACHE = "hermes-ui-v7"; const CACHE = "hermes-ui-v8";
const ASSETS = [ const ASSETS = [
"./", "./",
"./index.html", "./index.html",