@telosmaylx/dsh-session-notify 0.1.13 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.zh-TW.md CHANGED
@@ -13,7 +13,7 @@
13
13
  [![DSH](https://img.shields.io/badge/DSH-Web%20Profile-4D6BFE)](https://www.npmjs.com/package/@telosmaylx/dsh-session-notify)
14
14
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/TelosmaYLX/dsh-session-notify/pulls)
15
15
 
16
- 每輪對話結束時,把「已完成 / 出錯 / 被阻塞 / 達到上限」連同用時、token 消耗寫入會話日誌,並推送瀏覽器系統通知與頁內 toast。內建 5 種語言、4 套風格預設(顏文字 / 艾露貓 / 貓娘 / DeepSeek 娘)、視覺化文案模板編輯器、自訂預設庫,快取命中率與生成速度取自官方投影,與狀態列同口徑。
16
+ 每輪對話結束時,把「已完成 / 出錯 / 被阻塞 / 達到上限」連同用時、token 消耗寫入會話日誌,並推送瀏覽器系統通知與頁內 toast;**AI 向你提問時同樣立即彈窗提醒**,不必守著會話頁面。內建 5 種語言、4 套風格預設(顏文字 / 艾露貓 / 貓娘 / DeepSeek 娘)、視覺化文案模板編輯器、自訂預設庫,快取命中率與生成速度取自官方投影,與狀態列同口徑。
17
17
 
18
18
  </div>
19
19
 
@@ -49,6 +49,16 @@
49
49
 
50
50
  ## 功能特色
51
51
 
52
+ <div align="center">
53
+
54
+ <img src="screenshot/screenshot1.png" width="220" alt="標題編輯器">
55
+ <img src="screenshot/ScreenShot2png.png" width="220" alt="內容編輯器">
56
+ <img src="screenshot/ScreenShot3.png" width="220" alt="任務完成通知">
57
+ <img src="screenshot/ScreenShot4.png" width="220" alt="AI 提問通知">
58
+ <img src="screenshot/ScreenShot5.png" width="220" alt="任務出錯通知">
59
+
60
+ </div>
61
+
52
62
  ### 三通道提醒,一條不漏
53
63
 
54
64
  | 通道 | 形式 | 說明 |
@@ -62,12 +72,17 @@
62
72
  - 宿主為所有會話(含背景、未開啟視窗的)維護「最近一則通知內文」的會話投影單元(key = `session-complete-notify`),推送內文跨會話一致,不依賴你剛好開著那個視窗。
63
73
  - 用戶端從會話清單快照觀測所有會話的 `running` 位元,`true → false` 邊緣即觸發推送,與官方 sidebar 提醒同策略(首次觀測只記錄基線,已在 idle 的會話不補發)。
64
74
 
75
+ ### 提問即時提醒
76
+
77
+ - AI 呼叫 `ask_user_question` 向你提問時,宿主立刻把「提問標題 + 內文」寫入獨立投影單元(key = `session-complete-notify-question`),用戶端即時輪詢並彈窗提醒——**即使你正看著別的頁面,也不會錯過提問**。
78
+ - 提問文案完全可自訂:標題走「按原因自訂標題 → 全域標題 → 預設標題」鏈路,內文支援 `{question}` 佔位符(注入 AI 的實際提問),媒體開關 `{image}` / `{icon}` 同樣生效。
79
+
65
80
  ### 可自訂到每一句話
66
81
 
67
82
  - **5 種語言**:簡體中文、繁體中文、English、日本語、한국어 —— 通知文案、時長與用量措辭、設定面板介面全部隨語言切換(切換即時重渲染)。
68
83
  - **視覺化模板編輯器**(Chip 膠囊編輯器):動態資訊渲染為內聯膠囊(佔位符程式碼不露出),「+ 插入資訊」在游標處插入(可插到文字中間),點擊膠囊移除,每欄帶即時預覽(資訊以範例值流入內文)。
69
- - **預設系統**:內建「預設」基線 + 4 套一鍵風格預設(顏文字 / 艾露貓 / 貓娘 / DeepSeek 娘——標題與 5 原因正文整套風格化文案);目前設定可另存為自訂預設(`localStorage` 持久化),支援自動編號的未命名預設(`未命名`、`未命名 2`…)、「來自:xxx · 已修改」來源指示、刪除預設。
70
- - **推送標題模板**:留空時各原因用預設標題(完成=任務已完成 / 出錯=任務出錯 / …);`{title}` 引用會話標題。
84
+ - **預設系統**:內建「預設」基線 + 4 套一鍵風格預設(顏文字 / 艾露貓 / 貓娘 / DeepSeek 娘——標題與 5 結束原因 + 提問正文整套風格化文案);目前設定可另存為自訂預設(`localStorage` 持久化),支援自動編號的未命名預設(`未命名`、`未命名 2`…)、「來自:xxx · 已修改」來源指示、刪除預設。
85
+ - **推送標題模板**:留空時各原因用預設標題(完成=任務已完成 / 出錯=任務出錯 / … / 提問=AI 正在向你提問);`{title}` 引用會話標題。
71
86
 
72
87
  ### 與官方口徑同源
73
88
 
@@ -222,6 +237,8 @@ dsh plugin --profile web remove @telosmaylx/dsh-session-notify
222
237
 
223
238
  **子代理會話預設跳過**(`header.origin === 'subagent'` 或 `delegationDepth > 0`)—— 子代理由父會話編排,逐輪提醒是噪音;可在宿主設定關閉跳過。
224
239
 
240
+ **提問是獨立通道,不走上面的白名單**:AI 呼叫 `ask_user_question` 等待你回答時(`tool/call` 事件)立即提醒,`tool/result` 返回後提醒失效。提問不寫會話日誌,只彈通知。
241
+
225
242
  ### 推送內文從哪來
226
243
 
227
244
  用戶端在會話清單觀測到 `running: true → false` 邊緣時推送,內文按以下優先級取得(最長輪詢 6 秒,400ms 間隔):
@@ -230,20 +247,22 @@ dsh plugin --profile web remove @telosmaylx/dsh-session-notify
230
247
  2. **會話事件視窗裡的 notice 節點**(`kind=context` + `form=notice`)—— 正在查看的會話,寫入磁碟後立即可用;
231
248
  3. **降級** —— 「詳情見會話內系統訊息」+ 工作區資訊(`cwd` 最後一段)。
232
249
 
250
+ 提問提醒的內文同樣優先取宿主投影(key = `session-complete-notify-question`,宿主已渲染好標題與內文),老宿主無該投影時用戶端自行拼接標題與 `{question}` 文字兜底。
251
+
233
252
  ### 通知範例
234
253
 
235
- 以下均由 `lib/core.js` 的 `buildNotice` 實際生成。預設文案統一為「會話「{title}」已xx,請點擊查看。」句式(按結束原因差異用詞;**不含用時與消耗**):
236
-
237
- 繁體中文預設文案:
238
-
239
- ```text
240
- 會話「重构登录模块」已完成,請點擊查看。 ← 完成
241
- 會話「重构登录模块」已中止,請點擊查看。 ← 中止
242
- 會話「重构登录模块」被阻塞,請點擊查看。 ← 阻塞
243
- 會話「重构登录模块」達到上限,請點擊查看。 ← 上限
244
- 會話「重构登录模块」出錯,請點擊查看。 ← 出錯
245
- ```
246
-
254
+ 以下均由 `lib/core.js` 的 `buildNotice` 實際生成。預設文案統一為「會話「{title}」已xx,請點擊查看。」句式(按結束原因差異用詞;**不含用時與消耗**):
255
+
256
+ 繁體中文預設文案:
257
+
258
+ ```text
259
+ 會話「重构登录模块」已完成,請點擊查看。 ← 完成
260
+ 會話「重构登录模块」已中止,請點擊查看。 ← 中止
261
+ 會話「重构登录模块」被阻塞,請點擊查看。 ← 阻塞
262
+ 會話「重构登录模块」達到上限,請點擊查看。 ← 上限
263
+ 會話「重构登录模块」出錯,請點擊查看。 ← 出錯
264
+ ```
265
+
247
266
  > 會話無標題(`titleValue` 為空)時自動回退「會話已完成,請點擊查看。」;用時/消耗/快取命中/速度等資料只在自訂模板中透過 `{duration}` `{usage}` `{cache}` `{tps}` 佔位符插入時顯示。
248
267
 
249
268
  自訂模板(在設定面板編輯,本例用到全部資訊位):
@@ -281,7 +300,7 @@ Session "重构登录模块" completed (took 3m25s, used 1,240 in / 3,560 out).
281
300
 
282
301
  ## 設定
283
302
 
284
- 絕大多數設定在 **DSH Web UI → 設定 → 外掛 → 會話完成提醒** 面板完成(儲存後點「點擊重新整理」生效)。僅「觸發原因白名單」與「跳過子代理」兩項在宿主 `cordis.patch.yml` 的 `config` 中設定。
303
+ 絕大多數設定在 **DSH Web UI → 設定 → 外掛 → 會話完成提醒** 面板完成(儲存後點「點擊重新整理」生效)。僅「觸發原因白名單」在宿主 `cordis.patch.yml` 的 `config` 中設定(跳過子代理在面板中以核取方塊控制)。
285
304
 
286
305
  ### 設定面板
287
306
 
@@ -293,12 +312,12 @@ Session "重构登录模块" completed (took 3m25s, used 1,240 in / 3,560 out).
293
312
  | 語言 | 5 種語言單選,切換即時重渲染整個面板 |
294
313
  | 推送方式 | 三選一:雙通道(系統通知 + 頁內提示,預設)/ 僅系統通知 / 僅頁內提示 |
295
314
  | 通知圖片 | 大圖兩種來源:**按原因上傳**——在模板中透過「+ 插入資訊 → 圖片」插入 `{image}` 標籤並選擇本機圖片(編輯器內顯示為帶縮圖的標籤,**自動壓縮至 512px 寬、按通知顯示比例 16:9 居中裁切**,隨各原因獨立儲存);**全域大圖/圖示**——兩張上傳卡片並排一行(**圖示在前**,空態 = 圓角矩形 + 號,點擊上傳;**大圖 512×288(16:9 居中裁切)、圖示 128×128(1:1 方形居中裁切)**;已上傳則卡片顯示縮圖,**點擊縮圖可全螢幕查看完整原圖(等比未裁切)**,右上角 × 刪除)。圖示留空用網站預設圖示,也可在模板中插入 `{icon}` 標籤**按原因指定圖示**(優先於全域)。僅系統通知通道生效(頁內 toast 為文字卡片),「傳送」測試按鈕同樣生效 |
296
- | 標題 | 摺疊區(**預設收起**,點擊展開):**全域推送標題**(所有原因共用,Chip 編輯器——點「+ 插入資訊」插入的資訊以**膠囊標籤**形式顯示,點擊膠囊移除;**通知發送時標題裡的資訊位(用時/消耗/錯誤/快取命中/速度)會替換為實際值,不再顯示代碼**;留空時各原因用預設標題——完成=任務已完成、出錯=任務出錯、中止=任務已中止、阻塞=任務被阻塞、上限=任務達到輸出上限)+ **按原因自訂標題**(5 條原因各自輸入,留空 = 用全域或語言預設標題) |
297
- | 內容 | 摺疊區(**預設收起**,點擊展開);展開後每條結束原因(完成、出錯、中止、阻塞、輸出上限)**一行式佈局**(原因標籤 + Chip 編輯器 + 「+」插入按鈕——選單展開時變「−」+ **紙飛機發送按鈕**,按鈕為矩形、垂直居中):**空模板(預設預設)時編輯器顯示預設文案**,文字 + 內聯資訊膠囊,游標處插入;`{image}`/`{icon}` 標籤**點擊縮圖可預覽大圖、點 × 才刪除**(防誤刪),其他標籤點擊移除;**編輯後刪空則顯示「留空則使用預設文案」佔位(不可選取/刪除)** |
315
+ | 標題 | 摺疊區(**預設收起**,點擊展開):**全域推送標題**(所有原因共用,Chip 編輯器——點「+ 插入資訊」插入的資訊以**膠囊標籤**形式顯示,點擊膠囊移除;**通知發送時標題裡的資訊位(用時/消耗/錯誤/快取命中/速度)會替換為實際值,不再顯示代碼**;留空時各原因用預設標題——完成=任務已完成、出錯=任務出錯、中止=任務已中止、阻塞=任務被阻塞、上限=任務達到輸出上限、提問=AI 正在向你提問)+ **按原因自訂標題**(6 條原因各自輸入,每行帶「+」插入按鈕——可插入資訊標籤(含「提問」,不含圖片/圖示),插入到游標處;**優先於全域標題**,留空 = 用全域或語言預設標題) |
316
+ | 內容 | 摺疊區(**預設收起**,點擊展開);展開後每條結束原因(完成、出錯、中止、阻塞、輸出上限、提問)**一行式佈局**(原因標籤 + Chip 編輯器 + 「+」插入按鈕——選單展開時變「−」+ **紙飛機發送按鈕**,按鈕為矩形、垂直居中):**空模板(預設預設)時編輯器顯示預設文案**,文字 + 內聯資訊膠囊,游標處插入;`{image}`/`{icon}` 標籤**點擊縮圖可預覽大圖、點 × 才刪除**(防誤刪),其他標籤點擊移除;**編輯後刪空則顯示「留空則使用預設文案」佔位(不可選取/刪除)**;提問行的預設文案為「AI 向你提問:{question}」,`{question}` 會在發送時替換為 AI 的實際提問(插入選單同樣提供「提問」標籤,與其他標籤同款互動) |
298
317
  | 跳過子代理會話 | 核取方塊(儲存時一併寫入設定文件) |
299
318
  | 通知權限 | 狀態即時顯示:已授權(綠)/ 尚未授權(附「請求授權」按鈕)/ 已被瀏覽器封鎖(附網址列操作指引)/ 環境不支援 |
300
319
  | 按原因自訂標題 | 收合區(預設收合):每個結束原因一個獨立標題輸入框,留空 = 用全域模板或語言預設標題 |
301
- | 儲存 | 寫入宿主設定文件(`language` / `templates` / `titleTemplate` / `titleTemplates` / `pushMode`);儲存後顯示「點擊重新整理」連結 |
320
+ | 儲存 | 寫入宿主設定文件(`language` / `templates` / `titleTemplate` / `titleTemplates` / `pushMode` / `skipSubagents`);儲存後顯示「點擊重新整理」連結 |
302
321
  | 重置 | 一鍵還原預設值(**語言保留目前選擇**,標題/模板/推送方式恢復預設)並立即儲存 |
303
322
 
304
323
  > [!NOTE]
@@ -324,6 +343,7 @@ Session "重构登录模块" completed (took 3m25s, used 1,240 in / 3,560 out).
324
343
  | `{tps}` | 生成速度(官方投影口徑,無資料為空) | `92 tok/s` |
325
344
  | `{image}` | 自訂通知大圖開關:從「+ 插入資訊」插入並選擇本機圖片(自動壓縮至 512px),按原因獨立;正文渲染時剝除,不寫入會話日誌;刪除標籤時該原因圖片資料一併清除 | — |
326
345
  | `{icon}` | 自訂通知圖示開關:從「+ 插入資訊」插入並選擇本機圖片(自動壓縮至 128×128 方形),按原因獨立;正文渲染時剝除,不寫入會話日誌;優先於全域「通知圖示」;刪除標籤時該原因圖示資料一併清除 | — |
346
+ | `{question}` | **提問行的專屬佔位符**:發送時替換為 AI 的實際提問文字;與「+ 插入資訊」選單聯動(可直接選「提問」標籤,手輸 `{question}` 同樣識別為膠囊),僅提問通道可用,其他原因行插了也會被替換為空(防字面量洩漏) | `要繼續生成報告嗎?` |
327
347
  | `{label}` | 已廢棄 —— 渲染時自動剝除,舊模板仍相容(插入選單已移除該選項) | — |
328
348
 
329
349
  模板留空即使用內建預設文案(「會話「{title}」已xx,請點擊查看。」句式,不含用時與消耗)。收合行 `summary` 與內文同源(渲染結果截斷至 120 字元)—— 只看收合行的使用者也能看到真實標題與用時、消耗。
@@ -365,6 +385,7 @@ Session "重构登录模块" completed (took 3m25s, used 1,240 in / 3,560 out).
365
385
  │ session/event 火线 │
366
386
  │ ├─ turn/start → tracker 起表(key: sessionId:turn) │
367
387
  │ ├─ assistant/message → 累加该轮 token 用量 │
388
+ │ ├─ tool/call → ask_user_question?写提问投影(标题+正文) │
368
389
  │ └─ turn/end → reason.kind ∈ reasons ? │
369
390
  │ ├─ 子代理会话?跳过 │
370
391
  │ ├─ 读官方投影:cache / tps / title │
@@ -374,6 +395,8 @@ Session "重构登录模块" completed (took 3m25s, used 1,240 in / 3,560 out).
374
395
  │ │
375
396
  │ settings.register → 官方「设置 → 插件」命名空间(失败退避重试) │
376
397
  │ sessionProjections → 注册投影单元(key=session-complete-notify) │
398
+ │ + 提问投影(key=session-complete-notify- │
399
+ │ question,等待回答期间持续推送) │
377
400
  └──────────────────────────────┬──────────────────────────────────────┘
378
401
  │ user/message (source: plugin, form: notice)
379
402
  ▼ JSONL 持久化 + 投影推送
@@ -383,6 +406,8 @@ Session "重构登录模块" completed (took 3m25s, used 1,240 in / 3,560 out).
383
406
  │ ├─ 取正文:投影 → 事件窗口 notice → 降级(轮询 ≤6s) │
384
407
  │ ├─ Web Notification(独立 tag,点击聚焦) │
385
408
  │ └─ 页内 toast(永远展示,≤3 条,10s 自动消失) │
409
+ │ 提问投影轮询(key=session-complete-notify-question): │
410
+ │ 有值 → 立即弹提醒(标题+正文),无值清空 │
386
411
  │ │
387
412
  │ slots.inject('settings.plugin.item') → 设置卡片(预设/语言/模板) │
388
413
  └─────────────────────────────────────────────────────────────────────┘
@@ -410,7 +435,8 @@ dsh-session-notify/
410
435
  │ │ # sessionProjections 投影单元(后台会话推送正文)
411
436
  │ ├── core.js # 纯逻辑层(零依赖,可独立测试):轮次计时与用量聚合、
412
437
  │ │ # 5 语言文案表、时长/用量/缓存/速度格式化、
413
- │ │ # 模板渲染({title}{duration}{usage}{error}{cache}{tps}
438
+ │ │ # 模板渲染({title}{duration}{usage}{error}{cache}{tps})、
439
+ │ │ # 提问正文构建(buildQuestionBody,{question} + 媒体剥除)
414
440
  │ └── client.js # 浏览器平面:完成推送(系统通知 + toast)、
415
441
  │ # 设置卡片(Chip 模板编辑器 + 预设系统 + 实时预览)
416
442
  ├── scripts/
@@ -471,6 +497,13 @@ node scripts/verify-notice.mjs <session.jsonl.zstd>
471
497
 
472
498
  </details>
473
499
 
500
+ <details>
501
+ <summary><b>AI 向我提問時也會彈窗提醒嗎?</b></summary>
502
+
503
+ 會。AI 呼叫 `ask_user_question` 等待你回答時,宿主立刻把「提問標題 + 內文」寫入獨立投影(key = `session-complete-notify-question`),用戶端輪詢到後立即彈提醒——即使你正看著別的頁面也不會錯過。提問文案與完成通知一樣完全可自訂:設定面板的「標題 / 內容」摺疊區各有「提問」一行,內文支援 `{question}` 佔位符(注入 AI 的實際提問),`{image}` / `{icon}` 媒體開關同樣生效。回答後(`tool/result`)提醒失效,不會殘留。
504
+
505
+ </details>
506
+
474
507
  <details>
475
508
  <summary><b>為什麼「中斷」(interrupted)不提醒?</b></summary>
476
509
 
@@ -533,27 +566,31 @@ node scripts/verify-notice.mjs <session.jsonl.zstd>
533
566
 
534
567
  ---
535
568
 
536
- ## 更新紀錄
537
-
538
- | 版本 | 日期 | 變更 |
539
- | --- | --- | --- |
540
- | **0.1.13** | 2026-08-29 | 新增 **4 套一鍵風格預設**(顏文字 / 艾露貓 / 貓娘 / DeepSeek 娘——標題 + 5 原因正文整套風格化文案,**支援 5 語言**、載入不強制切換介面語言);清理預設下拉中已廢棄的舊模板名(playful/formal/detail);README 預設文案範例同步為「會話「{title}」已xx,請點擊查看。」句式(不含用時與消耗) |
541
- | **0.1.12** | 2026-08-29 | 發佈套件清理:移除打包進 scripts 的臨時稽核腳本 |
542
- | **0.1.11** | 2026-08-29 | 新增**自訂通知圖片**:① 模板「+ 插入資訊」新增**圖片**標籤——插入 `{image}` 並選擇本機圖片(**自動壓縮至 512px 寬、按通知顯示比例 16:9 居中裁切**,編輯器內顯示為帶縮圖的小標籤),按原因獨立上傳、儲存於設定文件(正文渲染時剝除,不寫入會話日誌);② **通知大圖/通知圖示改為上傳卡片**(空態 = 圓角矩形 + 號,點擊上傳;**大圖 512×288(16:9 居中裁切)、圖示 128×128(1:1 方形居中裁切)**;已上傳顯示縮圖,右上角 × 刪除)——裁切保證上傳的圖完整顯示在通知卡片中,不被系統按顯示區域硬裁;③ **推送標題的「+ 插入資訊」**可插入任意資訊位(會話標題/用時/消耗/快取命中/速度),不再只有會話標題;設定面板「通知圖片」區顯示**處理方式說明**(裁切比例)與**上傳後的縮圖預覽**;④ **按原因指定通知圖示**(模板插入 `{icon}` 標籤 + 本機上傳,128×128 方形,優先於全域圖示);⑤ **刪除 `{image}`/`{icon}` 標籤即清除該原因的圖片/圖示資料**;⑥ **佈局優化:「正文模板 × 5」改為摺疊區(預設收起保持面板簡潔,頭部顯示已自訂條數,點擊展開)**;⑦ **佈局優化②:通知大圖/圖示上傳卡片並排一行(中間留白);推送標題與按原因自訂標題合併為「標題」摺疊區(預設收起);摺疊指示改為三角形圖示(移除「展開/收起」文案,減少 i18n 負擔)**;⑧ **互動優化:推送標題改為 Chip 編輯器(插入的資訊顯示為膠囊標籤,不再暴露 `{title}` 等代碼);通知大圖/圖示順序調換(圖示在前);「正文模板 × 5」改名為「內容」;圖片/圖示縮圖點擊可全螢幕預覽大圖(lightbox),標籤只有點 × 才刪除(防誤刪)**;⑨ **預覽統一為完整原圖:上傳時同時保存裁切版(通知用)與等比完整版(1024px,lightbox 查看原圖用),卡片與標籤的放大預覽都顯示未裁切的原始圖像;摺疊三角形圖示放大**;⑩ **標題資訊位修復:通知標題裡的 `{duration}` `{usage}` `{error}` `{cache}` `{tps}` 會替換為會話實際值,不再洩漏代碼文字(編輯時膠囊、發送時真實資料);「內容」改為一行式佈局(原因標籤 + 編輯器 + 「+/-」插入按鈕 + 紙飛機發送按鈕)**;⑪ **細節:移除內容行下方的即時預覽(更緊湊);內容編輯器內邊距收窄(compact);「+/-」與紙飛機按鈕改矩形邊框、垂直居中**;⑫ **刪除體驗修復:內容刪空後不再復原為預設文案(改顯示佔位提示),且刪空後游標自動回到末尾——按住 Backspace 可連續刪除;「+/-」改用 SVG 線條圖示(相對按鈕邊框精確置中);紙飛機圖示逆時針旋轉 30°**;⑬ **佔位與預設文案:預設預設(空模板)時編輯器直接顯示預設文案(所見即所推);編輯後刪空顯示「留空則使用預設文案」佔位——改用 CSS 偽元素實現(與原生 input placeholder 一致:不可選取、不可刪除),取代原可複製的佔位文字**;⑭ **細節②:推送標題佔位描述改為「通用推送標題,留空時則使用預設標題,優先級低於下方自訂標題」,空編輯器點擊時游標移到最前(輸入文字從最左開始,與原生 placeholder 一致);紙飛機圖示再逆時針轉 30°(共 60°);「內容」原因標籤改為自適應寬度(編輯器緊貼標籤文字);編輯器高度統一(box-sizing border-box + min-height 38px,與普通輸入框一致)**;⑮ **細節③:原因標籤統一為固定 70px 寬(內容與按原因自訂標題一致);Backspace/Delete 刪除標籤改為手動刪除並恢復游標到刪除位置(不再跳到編輯器開頭);傳送按鈕圖示更換為鈴鐺(推送語義);自訂預設現在同時儲存通知大圖/圖示(含完整預覽版),預設預設保持留空**;⑯ **細節④:通知大圖/圖示上傳卡片等高(統一 64px 高,大圖 16:9 寬 114px);原因標籤寬 70px → 60px;傳送按鈕圖示由鈴鐺改為向右推送箭頭;「標題」「內容」摺疊區標題文字加粗**;⑰ **預設文案與標籤:max-tokens 的顯示統一改為「上限」(標籤/預設標題/佔位,5 語言同步);各原因預設文案改為「會話「{title}」已xx,請點擊查看。」(5 語言,編輯器的 hint 與宿主實際渲染同步);按原因自訂標題每行新增「+」插入按鈕(同推送標題:僅資訊標籤,不含圖片/圖示,插入到游標處)**;⑱ **標籤化與預設管理:按原因自訂標題改為 Chip 編輯器(插入的資訊以膠囊標籤顯示,不再暴露 {title} 等代碼;禁止 {image}{icon}——手輸保持字面文本、發送時剝除);自訂預設新增「重新命名」功能(選中自訂預設時出現重新命名按鈕,改名後下拉與目前預設同步)**;⑲ **細節⑤:Chip 編輯器文字垂直置中(行高與膠囊統一 20px、上下內邊距 9px,單行文字在 38px 框內正中);「標題」「內容」折疊欄加底色填充區分(折疊頭為圓角底色欄,展開內容區帶左側豎線縮排);全面核對 5 語言 86 個文案鍵(全部翻譯齊全,修訂 zh-TW「重新命名」、ko「放棄」兩處用詞)**;各原因「傳送」測試按鈕同樣生效;僅系統通知通道生效(頁內 toast 為文字卡片);⑳ **細節⑥:移除「標題」「內容」摺疊頭的底色填充;佔位符文字顏色改為 rgba(127,127,127,0.5)(更淡,不再受主題變數影響)**;各原因「傳送」測試按鈕同樣生效;僅系統通知通道生效(頁內 toast 為文字卡片);㉑ **修復:移除「內容」各原因行之間的分隔橫線;「內容」摺疊區展開後頭下方的橫線補齊,與「標題」一致(全寬);退格/刪除鍵刪除標籤時游標不再跳到開頭(元素容器內按子節點序號取標籤,含游標在標籤後/編輯器末尾的場景);重新命名「未命名」預設時自動升級為具名預設(換用新 id),下拉立即顯示新名字**;各原因「傳送」測試按鈕同樣生效;僅系統通知通道生效(頁內 toast 為文字卡片);㉒ **修復:輸入文字後佔位提示不再殘留(佔位 CSS 選擇器與狀態屬性對齊,輸入即消失,文字從最左開始);上傳/刪除圖片、圖示後游標保持原位,不再跳到最前(重建 DOM 前儲存游標偏移、重建後恢復);預設下拉框聚焦時不再出現白色選中態描邊**;各原因「傳送」測試按鈕同樣生效;僅系統通知通道生效(頁內 toast 為文字卡片);㉓ **修復:刪除標籤(含圖片/圖示膠囊)後游標不再跳走或消失,可連貫連續刪除——圖片資料變化觸發的重建改為按需執行(DOM 中已無該媒體膠囊且模板無對應標籤時跳過重建,游標保留在原刪除位置;僅上傳/替換圖片需要刷新縮圖時才重建),並修正游標偏移計算(膠囊統一按 1 個位置計,不深入內部文字)**;各原因「傳送」測試按鈕同樣生效;僅系統通知通道生效(頁內 toast 為文字卡片) |
543
- | **0.1.10** | 2026-08-29 | 「推送標題」改為原生輸入框(原生佔位提示:不可複製、輸入才消失、清空恢復;「+ 會話標題」在游標處插入 `{title}`);文件補充 QQ 瀏覽器內建推送彈出視窗說明(三種推送方式的實際表現 + 傳送按鈕測試同規則) |
544
- | **0.1.9** | 2026-08-29 | 推送標題支援**按原因自訂**(收合區 UI,預設收合不臃腫;留空時各原因用差異化預設標題:任務已完成/任務出錯/任務已中止/任務被阻塞/任務達到輸出上限,5 語言);投影升級為物件(kind/text/title)承載 host 渲染好的標題;重置按鈕**保留目前語言**;預設文案內嵌「會話標題」標籤(會話「{title}」已完成,無標題自動回退);設定面板模板預覽同步;「+插入資訊」插入標籤後不再自動收合;刪除目前使用的自訂預設自動切回預設;模板預覽修復(點擊不消失、輸入才隱藏、清空恢復);每個原因新增「傳送」按鈕(一鍵發目前模板渲染的測試通知) |
545
- | **0.1.8** | 2026-08-29 | 預設推送標題改為「任務已完成」(`{title}` 仍可引用會話標題);預設文案按結束原因差異化表達(完成緊湊括號式 / 中止·阻塞拆句 / 出錯錯誤前置 / 上限附建議,5 語言);設定面板新增「重置」按鈕一鍵還原預設 |
546
- | **0.1.7** | 2026-08-29 | 修復 0.1.6 的設定卡片崩潰:`notificationPermissionRow`/`requestPermissionNow` 曾引用 Card 元件內 state(作用域外)導致渲染 ReferenceError、整個設定卡片消失;改為自包含 + 回呼傳參 |
547
- | **0.1.6** | 2026-08-29 | 設定面板新增「通知權限」狀態區(授權狀態即時顯示 + 一鍵請求授權按鈕 + 被封鎖時的網址列操作指引);授權改為**使用者手勢內請求**(Chromium 忽略非手勢自動請求,Edge 對不熟悉網站自動封鎖通知的典型場景得以解決);FAQ 新增瀏覽器差異說明 |
548
- | **0.1.5** | 2026-08-29 | 新增「推送方式」設定(雙通道 / 僅系統通知 / 僅頁內提示):解決 QQ 瀏覽器等 Chromium 殼把 `Notification` 渲染成頁內橫幅導致的雙提示;`pushMode` 加入設定 schema 與設定面板 |
549
- | **0.1.4** | 2026-08-28 | 補充完整解除安裝支援:`dispose` 生命週期收尾(host 置解除安裝旗標抑制待附加微任務;client 清理內文輪詢計時器、`__dsch_notify_debug` 鉤子、toast 容器);解除安裝文件與 FAQ 同步 |
550
- | **0.1.3** | 2026-08-28 | 宣告官方 `dsh.bundle` manifest(`dsh plugin add` 一條指令自動掛載);settings 重試計時器改為 `ctx.effect()` 包裝(Cordis effect 紀律);安裝文件重排 |
551
- | 0.1.2 | 2026-08-27 | 套件更名至 `@telosmaylx` scope(npm 使用者名稱作用域) |
552
- | 0.1.1 | 2026-08-27 | GitHub、npm 安裝方式文件化 |
553
- | 0.1.0 | 2026-08-26 | 初始版本:會話內系統訊息 + 瀏覽器推送 + 官方設定面板 |
554
-
555
- ---
556
-
569
+ ## 更新紀錄
570
+
571
+ | 版本 | 日期 | 變更 |
572
+ | --- | --- | --- |
573
+ | **0.1.17** | 2026-08-30 | **提問即時提醒(可自訂)**:AI 提問立即彈窗;提問文案支援 `{question}` 佔位符與媒體開關;4 套預設補齊 5 語言提問文案;舊宿主自動兜底 |
574
+ | **0.1.16** | 2026-08-30 | **互動修正**:連按 Backspace 不再誤刪標籤(僅當游標與標籤間無文字時才刪標籤) |
575
+ | **0.1.15** | 2026-08-30 | **互動優化**:「內容」摺疊區預設展開;刪除標籤後游標直達真實內容,可連貫刪除 |
576
+ | **0.1.14** | 2026-08-30 | **程式碼審查修正**:刪除預設確認、預設恢復為已儲存設定、媒體「×」清除預覽、按原因圖片參與預設比對、同名預設提示、重設僅在有修改時可用、除錯日誌自動截斷 |
577
+ | **0.1.13** | 2026-08-29 | 新增 4 套一鍵風格預設(顏文字/艾露貓/貓娘/DeepSeek 娘),支援 5 語言 |
578
+ | **0.1.12** | 2026-08-29 | 發布包清理 |
579
+ | **0.1.11** | 2026-08-29 | **自訂通知媒體**:模板可插 `{image}`/`{icon}` 並上傳圖片/圖示(自動裁切);推送標題支援資訊佔位符;「正文模板 × 5」改摺疊區,佈局互動全面優化 |
580
+ | **0.1.10** | 2026-08-29 | 推送標題改原生輸入框;新增多語言 README(English/繁體/日本語/한국어) |
581
+ | **0.1.9** | 2026-08-29 | 推送標題按原因自訂;投影升級為物件;重設保留語言;每原因加「傳送」測試按鈕 |
582
+ | **0.1.8** | 2026-08-29 | 預設標題「任務已完成」;預設文案按結束原因差異化;新增重設按鈕 |
583
+ | **0.1.7** | 2026-08-29 | 修正設定卡片崩潰(通知權限列作用域問題) |
584
+ | **0.1.6** | 2026-08-29 | 新增通知權限狀態區;權限改為使用者手勢內請求 |
585
+ | **0.1.5** | 2026-08-29 | 新增推送方式(雙通道/僅系統/僅頁內),解決 QQ 瀏覽器雙提示 |
586
+ | **0.1.4** | 2026-08-28 | 完整解除安裝支援(dispose 生命週期收尾) |
587
+ | **0.1.3** | 2026-08-28 | 宣告 dsh.bundle manifest;settings 重試定時器改 ctx.effect() |
588
+ | 0.1.2 | 2026-08-27 | 套件更名至 `@telosmaylx` scope |
589
+ | 0.1.1 | 2026-08-27 | GitHub、npm 安裝方式文件化 |
590
+ | 0.1.0 | 2026-08-26 | 初始版本:會話內系統訊息 + 瀏覽器推送 + 官方設定面板 |
591
+
592
+ ---
593
+
557
594
  ## 貢獻
558
595
 
559
596
  歡迎 Issue 與 PR: