 JianMiauandClaude Fable 5
|
4e4563e861
|
完成時氣泡改顯示最後一句回覆,不再延到下一輪才出現
根本原因:
Stop 事件時 main.js 已從 transcript 附上最後一句助理訊息(narration),
但 renderer 的 Stop 分支寫死顯示「完成!」沒使用它,也沒把 narrationId
標記為已顯示;下一輪第一個工具事件呼叫 sayActivity 時,transcript 裡
最新的助理訊息仍是上一輪結尾、id 又沒被消費過,就被當成新話顯示出來。
影響:
對話收尾只看得到「完成!」,看不到 AI 的最後一句回覆;等使用者送出
下一句指令後,寵物反而冒出上一輪的舊訊息,時序錯亂。
修法:
Stop 時若帶有 narration,氣泡直接顯示「✅ 最後一句」並消費 narrationId,
沒有才退回「完成!」;UserPromptSubmit 也先把當下 narrationId 標記為已
顯示,雙重保險。另修 release.js 只挑檔名含當前版本的產物,避免 dist/
殘留的舊版檔案混進新 release。版號 2.0.9。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-24 16:40:32 +08:00 |
|
 JianMiauandClaude Fable 5
|
f1e7aca797
|
新增發佈到 Gitea Releases 的腳本
摘要:
scripts/release.js 建立 tag v<版本> 的 release 並上傳 dist 的 .exe / .zip,
附帶 --dry-run 與伺服器設定預檢。
根本原因:
產物有 345 MB 且不進版控,需要一個散布管道。Gitea 有 Releases 與附件 API,
但目前伺服器設定會擋下全部三個檔:
- [attachment] max_size 為 100 MB,portable 101.7 / setup 102.0 / zip 141.3 都超過
- allowed_types 白名單只有文件與圖片類,沒有 .exe
另外 .npmrc 裡現有的 token 只有套件庫權限,呼叫 repo API 會回 403。
影響:
沒有腳本就得手動上傳三個上百 MB 的檔;直接上傳也會因上述設定而失敗。
修法:
- 新增 scripts/release.js 與 npm script release:
owner/repo 由 git remote 推導,網址可用 GITEA_URL 覆寫(SSH 埠與網頁埠不同時)。
release 說明取自上一個 tag 之後的 commit 標題;沒有舊 tag 就取最近 30 筆。
release 已存在則重用,同名附件先刪再傳,可重複執行。
- 上傳採用手動組裝的 multipart 並以串流送出,不把上百 MB 的檔案讀進記憶體。
- 發佈前先讀 /api/v1/settings/attachment 做預檢,超過上限或副檔名不允許時
直接列出是哪個檔案卡在哪一條並中止,不會傳到一半才失敗。
- --dry-run 只做讀取,印出將建立或重用的 release 與變更說明。
- git() 關閉 stderr:releaseNotes 會刻意 describe 一個可能不存在的舊 tag,
否則 git 的 fatal 訊息會被誤認成發佈失敗。
- README 新增「發佈到 Gitea Releases」一節,寫明所需的 app.ini 設定與 token 權限。
驗證:
- 對真實伺服器執行 --dry-run:正確推導出 AI/claude-pet 與 tag v2.0.3,
並列出三個檔各自違反的限制後中止,全程只有 GET。
- 另寫一個假的 Gitea(本機 http)跑完整流程:建立 release 的 tag、名稱、
target_commitish 與說明皆正確;三個附件的 Content-Length 與實收位元組相符、
multipart 邊界與 Content-Disposition 正確、結尾正確,
且收到的檔案內容 SHA256 與磁碟上的完全一致(共 345 MB)。
未執行:
實際發佈需要伺服器調整設定與一個有 write:repository 權限的 token,兩者都在使用者手上。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-24 08:30:07 +08:00 |
|