補上遺漏的氣泡標題列
摘要: 整理記憶中、需要你授權、工具失敗、錯誤訊息、一般通知、掰掰這六個氣泡補上第一行標題。 根本原因: 上一版把氣泡改成兩行時,是以「原本帶(專案名)尾綴」為線索去改呼叫點, 但這六個訊息本來就沒有尾綴,所以整批漏掉,顯示出來只有單行、沒有專案或對話名稱。 影響: 壓縮記憶、等授權、出錯這些最需要知道是哪個 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",
|
||||
"version": "2.0.6",
|
||||
"version": "2.0.7",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "claude-pet",
|
||||
"version": "2.0.6",
|
||||
"version": "2.0.7",
|
||||
"devDependencies": {
|
||||
"electron": "^43.4.1",
|
||||
"electron-builder": "^26.0.12"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "claude-pet",
|
||||
"version": "2.0.6",
|
||||
"version": "2.0.7",
|
||||
"description": "Codex Pets 相容的 Claude Code 桌面寵物(spriteVersionNumber 2:9 個動作列 + 16 方向追視)",
|
||||
"main": "main.js",
|
||||
"private": true,
|
||||
|
||||
@@ -429,11 +429,11 @@ function handleEvent(p) {
|
||||
case "PostToolUseFailure":
|
||||
// Codex:單一工具失敗不會改變 turn 的狀態(turn 還在跑),寵物維持 running,只給個氣泡
|
||||
setState(s, "running");
|
||||
say(`😵 ${p.toolName || "工具"} 失敗了`, 4000);
|
||||
say(`😵 ${p.toolName || "工具"} 失敗了`, 4000, false, title);
|
||||
break;
|
||||
case "PermissionRequest":
|
||||
setState(s, "waiting");
|
||||
say(`🔐 需要你授權${p.toolName ? `:${p.toolName}` : ""}`, 0, true);
|
||||
say(`🔐 需要你授權${p.toolName ? `:${p.toolName}` : ""}`, 0, true, title);
|
||||
break;
|
||||
case "Notification": {
|
||||
const t = p.notificationType;
|
||||
@@ -447,7 +447,7 @@ function handleEvent(p) {
|
||||
setState(s, "waiting");
|
||||
say("❓ 有問題想問你", 0, true, title);
|
||||
} else if (p.message) {
|
||||
say(`💬 ${p.message}`, 4000);
|
||||
say(`💬 ${p.message}`, 4000, false, title);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -461,7 +461,7 @@ function handleEvent(p) {
|
||||
case "StopFailure":
|
||||
// Codex:turn 失敗 → failed 狀態(播 failed 3 次後沉澱),維持到下一個 turn 或 1 小時到期
|
||||
setState(s, "failed");
|
||||
say(`❌ ${p.error || "出錯了"}`, 8000);
|
||||
say(`❌ ${p.error || "出錯了"}`, 8000, false, title);
|
||||
break;
|
||||
case "SubagentStart":
|
||||
case "SubagentStop":
|
||||
@@ -469,13 +469,13 @@ function handleEvent(p) {
|
||||
break;
|
||||
case "PreCompact":
|
||||
setState(s, "running");
|
||||
say("🗜️ 整理記憶中…", 3000);
|
||||
say("🗜️ 整理記憶中…", 3000, false, title);
|
||||
break;
|
||||
case "SessionEnd":
|
||||
sessions.delete(p.sessionId || "default");
|
||||
if (sessions.size === 0) {
|
||||
hideBubble();
|
||||
say("👋 掰掰", 2000);
|
||||
say("👋 掰掰", 2000, false, title);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -495,7 +495,7 @@ function handleTest(p) {
|
||||
} else if (anim in PRIORITY) {
|
||||
const s = session("test");
|
||||
setState(s, anim);
|
||||
if (anim === "waiting") say("🔐(測試)需要你授權", 0, true);
|
||||
if (anim === "waiting") say("🔐(測試)需要你授權", 0, true, "動作測試");
|
||||
else if (anim === "idle") hideBubble();
|
||||
}
|
||||
report();
|
||||
|
||||
Reference in New Issue
Block a user