auto-save 2026-05-09 16:12 (~4)
This commit is contained in:
@@ -1,19 +1,5 @@
|
|||||||
{
|
{
|
||||||
"entries": [
|
"entries": [
|
||||||
{
|
|
||||||
"files_changed" : 1,
|
|
||||||
"hash" : "ba3f0fd",
|
|
||||||
"message" : "auto-save 2026-05-07 11:48 (~1)",
|
|
||||||
"ts" : "2026-05-07T11:48:38+08:00",
|
|
||||||
"type" : "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed" : 1,
|
|
||||||
"hash" : "62fd790",
|
|
||||||
"message" : "auto-save 2026-05-07 11:54 (~1)",
|
|
||||||
"ts" : "2026-05-07T11:54:10+08:00",
|
|
||||||
"type" : "commit"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"files_changed": 1,
|
"files_changed": 1,
|
||||||
"hash": "e59742e",
|
"hash": "e59742e",
|
||||||
@@ -3494,6 +3480,19 @@
|
|||||||
"message": "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 master · 4 项未提交变更 · 最近提交:auto-save 2026-05-09 16:01 (~2)",
|
"message": "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 master · 4 项未提交变更 · 最近提交:auto-save 2026-05-09 16:01 (~2)",
|
||||||
"ts": "2026-05-09T08:05:50Z",
|
"ts": "2026-05-09T08:05:50Z",
|
||||||
"type": "assistant-session"
|
"type": "assistant-session"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-09T16:06:59+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-09 16:06 (~5)",
|
||||||
|
"hash": "90e37f3",
|
||||||
|
"files_changed": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-09T08:08:26Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 2 项未提交变更 · 最近提交:auto-save 2026-05-09 16:06 (~5)",
|
||||||
|
"files_changed": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user