補上遺漏的氣泡標題列
摘要: 整理記憶中、需要你授權、工具失敗、錯誤訊息、一般通知、掰掰這六個氣泡補上第一行標題。 根本原因: 上一版把氣泡改成兩行時,是以「原本帶(專案名)尾綴」為線索去改呼叫點, 但這六個訊息本來就沒有尾綴,所以整批漏掉,顯示出來只有單行、沒有專案或對話名稱。 影響: 壓縮記憶、等授權、出錯這些最需要知道是哪個 session 的時候,反而看不到來源。 修法: - handleEvent 內六個 say() 補上 title 參數。 - 選單「動作測試」的氣泡給標題「動作測試」,才分得出是測試不是真的事件。 - first-awake 的「嗨,我是〈寵物名〉」維持沒有標題:它不屬於任何 session, 訊息本身已含寵物名,CSS 的 :empty 會把空標題整行收起來,不會留空白。 驗證: 以 DOM stub 載入完整 renderer.js 驅動 handleEvent,11 項全過: PreCompact 的標題與訊息、其餘五個補上的事件都帶標題、原本就有的「完成」仍正常、 對話名稱優先於專案名、無 cwd 也無對話名時標題為空字串、滑鼠停留提示為兩行。 另以靜態掃描確認 handleEvent 內全部 13 個 say() 都帶 title, 並在打包後的 app.asar 上重跑同一項掃描。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-pet",
|
"name": "claude-pet",
|
||||||
"version": "2.0.6",
|
"version": "2.0.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "claude-pet",
|
"name": "claude-pet",
|
||||||
"version": "2.0.6",
|
"version": "2.0.7",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^43.4.1",
|
"electron": "^43.4.1",
|
||||||
"electron-builder": "^26.0.12"
|
"electron-builder": "^26.0.12"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-pet",
|
"name": "claude-pet",
|
||||||
"version": "2.0.6",
|
"version": "2.0.7",
|
||||||
"description": "Codex Pets 相容的 Claude Code 桌面寵物(spriteVersionNumber 2:9 個動作列 + 16 方向追視)",
|
"description": "Codex Pets 相容的 Claude Code 桌面寵物(spriteVersionNumber 2:9 個動作列 + 16 方向追視)",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
|||||||
@@ -429,11 +429,11 @@ function handleEvent(p) {
|
|||||||
case "PostToolUseFailure":
|
case "PostToolUseFailure":
|
||||||
// Codex:單一工具失敗不會改變 turn 的狀態(turn 還在跑),寵物維持 running,只給個氣泡
|
// Codex:單一工具失敗不會改變 turn 的狀態(turn 還在跑),寵物維持 running,只給個氣泡
|
||||||
setState(s, "running");
|
setState(s, "running");
|
||||||
say(`😵 ${p.toolName || "工具"} 失敗了`, 4000);
|
say(`😵 ${p.toolName || "工具"} 失敗了`, 4000, false, title);
|
||||||
break;
|
break;
|
||||||
case "PermissionRequest":
|
case "PermissionRequest":
|
||||||
setState(s, "waiting");
|
setState(s, "waiting");
|
||||||
say(`🔐 需要你授權${p.toolName ? `:${p.toolName}` : ""}`, 0, true);
|
say(`🔐 需要你授權${p.toolName ? `:${p.toolName}` : ""}`, 0, true, title);
|
||||||
break;
|
break;
|
||||||
case "Notification": {
|
case "Notification": {
|
||||||
const t = p.notificationType;
|
const t = p.notificationType;
|
||||||
@@ -447,7 +447,7 @@ function handleEvent(p) {
|
|||||||
setState(s, "waiting");
|
setState(s, "waiting");
|
||||||
say("❓ 有問題想問你", 0, true, title);
|
say("❓ 有問題想問你", 0, true, title);
|
||||||
} else if (p.message) {
|
} else if (p.message) {
|
||||||
say(`💬 ${p.message}`, 4000);
|
say(`💬 ${p.message}`, 4000, false, title);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -461,7 +461,7 @@ function handleEvent(p) {
|
|||||||
case "StopFailure":
|
case "StopFailure":
|
||||||
// Codex:turn 失敗 → failed 狀態(播 failed 3 次後沉澱),維持到下一個 turn 或 1 小時到期
|
// Codex:turn 失敗 → failed 狀態(播 failed 3 次後沉澱),維持到下一個 turn 或 1 小時到期
|
||||||
setState(s, "failed");
|
setState(s, "failed");
|
||||||
say(`❌ ${p.error || "出錯了"}`, 8000);
|
say(`❌ ${p.error || "出錯了"}`, 8000, false, title);
|
||||||
break;
|
break;
|
||||||
case "SubagentStart":
|
case "SubagentStart":
|
||||||
case "SubagentStop":
|
case "SubagentStop":
|
||||||
@@ -469,13 +469,13 @@ function handleEvent(p) {
|
|||||||
break;
|
break;
|
||||||
case "PreCompact":
|
case "PreCompact":
|
||||||
setState(s, "running");
|
setState(s, "running");
|
||||||
say("🗜️ 整理記憶中…", 3000);
|
say("🗜️ 整理記憶中…", 3000, false, title);
|
||||||
break;
|
break;
|
||||||
case "SessionEnd":
|
case "SessionEnd":
|
||||||
sessions.delete(p.sessionId || "default");
|
sessions.delete(p.sessionId || "default");
|
||||||
if (sessions.size === 0) {
|
if (sessions.size === 0) {
|
||||||
hideBubble();
|
hideBubble();
|
||||||
say("👋 掰掰", 2000);
|
say("👋 掰掰", 2000, false, title);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -495,7 +495,7 @@ function handleTest(p) {
|
|||||||
} else if (anim in PRIORITY) {
|
} else if (anim in PRIORITY) {
|
||||||
const s = session("test");
|
const s = session("test");
|
||||||
setState(s, anim);
|
setState(s, anim);
|
||||||
if (anim === "waiting") say("🔐(測試)需要你授權", 0, true);
|
if (anim === "waiting") say("🔐(測試)需要你授權", 0, true, "動作測試");
|
||||||
else if (anim === "idle") hideBubble();
|
else if (anim === "idle") hideBubble();
|
||||||
}
|
}
|
||||||
report();
|
report();
|
||||||
|
|||||||
Reference in New Issue
Block a user