dsh-better-notice 5.1.8 → 5.1.9

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.md CHANGED
@@ -13,7 +13,7 @@ dsh plugin --profile <profile> add dsh-better-notice
13
13
  ```
14
14
 
15
15
  - Package: `dsh-better-notice` (module id is the same string)
16
- - Version: `5.1.8` (see [CHANGELOG.md](CHANGELOG.md))
16
+ - Version: `5.1.9` (see [CHANGELOG.md](CHANGELOG.md))
17
17
  - License: MIT
18
18
  - Settings live in **account menu → Settings → “Better Notice”** (a `settings.section` entry, id `hotlist`, order `30`)
19
19
 
@@ -125,7 +125,7 @@ dsh plugin --profile <profile> add dsh-better-notice
125
125
  dsh --profile <profile>
126
126
  ```
127
127
 
128
- - **Published on npm:** [dsh-better-notice](https://www.npmjs.com/package/dsh-better-notice) (current `5.1.8`). If npm is unreachable, the same tarball is attached to the [latest release](https://github.com/MeruSu/better-notice/releases) — `dsh plugin --profile <profile> add <absolute path>/dsh-better-notice-5.1.8.tgz` gives the same result and the same restart.
128
+ - **Published on npm:** [dsh-better-notice](https://www.npmjs.com/package/dsh-better-notice) (current `5.1.9`). If npm is unreachable, the same tarball is attached to the [latest release](https://github.com/MeruSu/better-notice/releases) — `dsh plugin --profile <profile> add <absolute path>/dsh-better-notice-5.1.9.tgz` gives the same result and the same restart.
129
129
  - **Use an absolute path, forward slashes** when you install from a local directory instead of the registry: `dsh plugin` forwards the argument to pnpm *inside the profile directory*, so a relative path points into the profile.
130
130
  - Installing from a directory uses `link:` — code edits need no reinstall. `client.js` changes apply on page refresh; `index.js` / `cordis.patch.yml` / `package.json` changes need a GUI restart.
131
131
  - Install from a git checkout when you also want the TTS helper (see [Sounds](#sounds-and-the-bundled-tts-tool)). The npm package's `files` field only ships `index.js`, `client.js`, `cordis.patch.yml` and `assets`, so `tools/` is **not** in it.
@@ -150,7 +150,7 @@ The host route is created during process start-up, so a page refresh is not enou
150
150
 
151
151
  In the GUI's browser console:
152
152
 
153
- 1. `window.__HOTLIST_VERSION__` → the version string, e.g. `'5.1.8'`.
153
+ 1. `window.__HOTLIST_VERSION__` → the version string, e.g. `'5.1.9'`.
154
154
  2. `Object.keys(window.__HOTLIST__)` → `['version','settings','assets']`.
155
155
  3. Settings → the left nav has **“Better Notice”**, and the page shows a global block plus **6** collapsible category cards.
156
156
  4. Session rows in the sidebar now start with a status glyph.
@@ -500,7 +500,7 @@ s.lastError() // last storage write error (string or null)
500
500
 
501
501
  // settings + the three asset pools
502
502
  const api = window.__HOTLIST__;
503
- api.version // '5.1.8'
503
+ api.version // '5.1.9'
504
504
  api.settings.get() / .set(patch) / .reset() / .subscribe(fn)
505
505
  api.settings.backups() // → [{ at, version }]
506
506
  api.settings.restore(index) // → { ok, at? }
@@ -684,7 +684,7 @@ The same ground as the pitfall list at the bottom of this file, in checklist for
684
684
  ```powershell
685
685
  node --check client.js # syntax. client.js lives inside a module loader, so a syntax error only explodes when the real page boots
686
686
  node --check index.js
687
- node test/classify.test.mjs # expect a final line: PASS — 93 groups
687
+ node test/classify.test.mjs # expect a final line: PASS — 107 groups
688
688
  ```
689
689
 
690
690
  Plus a **static gate before saving**, available on the maintainer's machine only (not shipped with the repo):
@@ -700,7 +700,7 @@ cd <the directory you cloned into>
700
700
 
701
701
  node --check client.js # client.js lives inside a module loader, so a syntax error only explodes when the real page boots
702
702
  node --check index.js
703
- node test/classify.test.mjs # expect a final line: PASS — 93 groups
703
+ node test/classify.test.mjs # expect a final line: PASS — 107 groups
704
704
  ```
705
705
 
706
706
  The unit tests read the real `client.js` source, wrap it in a stub `window.__ModuleLoader__` and run it: the fake browser is hand-written (`window` / `document`, no jsdom, `React` is a stub too), the code under test is the real source. They also include a few static scans: undeclared constants, CSS selector legality, and “shortcut labels must be thunks”.
@@ -715,7 +715,7 @@ index.js host side: registers the /hotlist-sound/ audio route
715
715
  cordis.patch.yml bundle insert line
716
716
  assets/ 3 categories with 4 raster tiers of popout art + svg for all six
717
717
  assets/sounds/ bundled cues (attention.wav / complete.wav)
718
- test/classify.test.mjs unit tests (93 groups)
718
+ test/classify.test.mjs unit tests (107 groups)
719
719
  docs/ architecture, testing, extending
720
720
  tools/meru-tts/ TTS helper (generates cues; not part of the running plugin)
721
721
  ```
package/README.zh.md CHANGED
@@ -13,7 +13,7 @@ dsh plugin --profile <profile> add dsh-better-notice
13
13
  ```
14
14
 
15
15
  - 包名:`dsh-better-notice`(模块 id 与包名相同)
16
- - 版本:`5.1.8`(见 [CHANGELOG.md](CHANGELOG.md))
16
+ - 版本:`5.1.9`(见 [CHANGELOG.md](CHANGELOG.md))
17
17
  - 许可:MIT
18
18
  - 设置位置:**账号菜单 →「设置」→ 左导航「热表」**(`settings.section`,id `hotlist`,order `30`)
19
19
 
@@ -125,7 +125,7 @@ dsh plugin --profile <profile> add dsh-better-notice
125
125
  dsh --profile <profile>
126
126
  ```
127
127
 
128
- - **已发布到 npm:**[dsh-better-notice](https://www.npmjs.com/package/dsh-better-notice)(当前 `5.1.8`)。如果 npm 拉不动,同样的 tarball 也附在[最新 Release](https://github.com/MeruSu/better-notice/releases) 里——`dsh plugin --profile <profile> add <绝对路径>/dsh-better-notice-5.1.8.tgz`,效果一样,同样要重启。
128
+ - **已发布到 npm:**[dsh-better-notice](https://www.npmjs.com/package/dsh-better-notice)(当前 `5.1.9`)。如果 npm 拉不动,同样的 tarball 也附在[最新 Release](https://github.com/MeruSu/better-notice/releases) 里——`dsh plugin --profile <profile> add <绝对路径>/dsh-better-notice-5.1.9.tgz`,效果一样,同样要重启。
129
129
  - 从**本地目录**安装时要用**绝对路径、正斜杠**:`dsh plugin` 是把参数在 profile 目录里转交给 pnpm 的,相对路径会指到 profile 里去。
130
130
  - 装目录用的是 `link:`,之后改代码不用重装:`client.js` 改完刷新页面即生效;`index.js` / `cordis.patch.yml` / `package.json` 改完要重启 GUI。
131
131
  - 想连 TTS 小工具一起用就装 git 仓库(见[提示音](#提示音与仓库自带的-tts-工具))。npm 包的 `files` 只有 `index.js`、`client.js`、`cordis.patch.yml`、`assets`,`tools/` **不在包里**。
@@ -150,7 +150,7 @@ host 路由在进程启动时创建,只刷新页面不够。
150
150
 
151
151
  在 GUI 的浏览器控制台里依次确认:
152
152
 
153
- 1. `window.__HOTLIST_VERSION__` → 版本号,例如 `'5.1.8'`;
153
+ 1. `window.__HOTLIST_VERSION__` → 版本号,例如 `'5.1.9'`;
154
154
  2. `Object.keys(window.__HOTLIST__)` → `['version','settings','assets']`;
155
155
  3. 打开设置,左导航有**「热表」**,页面里是一块全局区 + **6** 张可折叠的类别卡;
156
156
  4. 侧栏的会话行前面出现了状态图标;
@@ -500,7 +500,7 @@ s.lastError() // 最近一次写盘错误(字符串或 null)
500
500
 
501
501
  // 设置 + 三个素材池
502
502
  const api = window.__HOTLIST__;
503
- api.version // '5.1.8'
503
+ api.version // '5.1.9'
504
504
  api.settings.get() / .set(patch) / .reset() / .subscribe(fn)
505
505
  api.settings.backups() // → [{ at, version }]
506
506
  api.settings.restore(index) // → { ok, at? }
@@ -684,7 +684,7 @@ window.__HOTLIST_SETTINGS__.set({
684
684
  ```powershell
685
685
  node --check client.js # 语法。client.js 包在模块加载器里,语法错只在真机 boot 时炸
686
686
  node --check index.js
687
- node test/classify.test.mjs # 期望最后一行:PASS — 93 groups
687
+ node test/classify.test.mjs # 期望最后一行:PASS — 107 groups
688
688
  ```
689
689
 
690
690
  外加一道**保存前的静态闸门**(只在维护者机器上有,不随仓库分发):
@@ -700,7 +700,7 @@ cd <你 clone 下来的那个目录>
700
700
 
701
701
  node --check client.js # client.js 包在模块加载器里,语法错只在真机 boot 时炸
702
702
  node --check index.js
703
- node test/classify.test.mjs # 期望最后一行:PASS — 93 groups
703
+ node test/classify.test.mjs # 期望最后一行:PASS — 107 groups
704
704
  ```
705
705
 
706
706
  单测把真实的 `client.js` 源文件读进来,塞进 `window.__ModuleLoader__` 的桩里执行:假的是浏览器(手写的极简 `window` / `document`,不引 jsdom,`React` 也是桩),跑的是真源码。里面还带几道静态扫描:引用未声明的常量、注入样式选择器合法性、快捷键 label 必须是 thunk。
@@ -715,7 +715,7 @@ index.js 宿主侧:注册 /hotlist-sound/ 音频路由
715
715
  cordis.patch.yml bundle 插入行
716
716
  assets/ 3 类各 4 档弹出图素材 + 六类各一份 svg
717
717
  assets/sounds/ 内置音效(attention.wav / complete.wav)
718
- test/classify.test.mjs 单测(93 组)
718
+ test/classify.test.mjs 单测(107 组)
719
719
  docs/ 架构、测试、扩展三份维护者文档
720
720
  tools/meru-tts/ TTS 小工具(生成提示音用,不参与插件运行)
721
721
  ```
package/client.js CHANGED
@@ -79,7 +79,7 @@ window.__ModuleLoader__.load({
79
79
 
80
80
  const SLOT = 'conversation.view';
81
81
  const NS = 'hotlist';
82
- const VERSION = '5.1.8';
82
+ const VERSION = '5.1.9';
83
83
  /** Seat view ids are namespaced so a persisted leftover can be recognised and repaired. */
84
84
  const SEAT_PREFIX = 'hotlist-seat-';
85
85
  /** Every prefix ever written for a seat id; a persisted one is repaired back to `chat` on load. */
package/icon.svg ADDED
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none">
2
+ <rect x="3.5" y="7" width="25" height="18" rx="4" stroke="#5B6B7C" stroke-width="2"/>
3
+ <path d="M3.5 12.5h25" stroke="#8FA3B5" stroke-width="2"/>
4
+ <circle cx="8" cy="9.75" r="1.15" fill="#B7C4CF"/>
5
+ <rect x="7" y="15.5" width="7" height="2.4" rx="1.2" fill="#5B6B7C"/>
6
+ <rect x="16.5" y="15.5" width="7" height="2.4" rx="1.2" fill="#8FA3B5"/>
7
+ <rect x="7" y="20" width="4.5" height="2.4" rx="1.2" fill="#C3CED8"/>
8
+ <path d="M22.5 21.6c0-1.4 1.1-2.4 2.4-2.4" stroke="#E0A03A" stroke-width="2" stroke-linecap="round"/>
9
+ <circle cx="24.9" cy="21.6" r="1.5" fill="#E0A03A"/>
10
+ </svg>
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Better Notice",
4
+ "description": "Turn session state into something you can see and hear: a hot-session table page, top-strip chips, sidebar state glyphs, six per-state sounds and popout artwork, with an export API for your own tooling."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Better Notice · 会话热表",
4
+ "description": "把会话状态变成看得见、听得到的提醒:热表页、顶栏胶囊、侧栏状态图标、六类音效与弹出图,还可以导出成表。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-better-notice",
3
- "version": "5.1.8",
3
+ "version": "5.1.9",
4
4
  "private": false,
5
5
  "description": "Better Notice — unified visual and audible session notices for DeepSeek Harness: hot-session tab seats, sidebar state glyphs, per-state sounds and popout artwork",
6
6
  "type": "module",
@@ -9,13 +9,17 @@
9
9
  ".": "./index.js",
10
10
  "./client": "./client.js",
11
11
  "./assets/*": "./assets/*",
12
- "./package.json": "./package.json"
12
+ "./package.json": "./package.json",
13
+ "./locale/*.json": "./locale/*.json",
14
+ "./icon": "./icon.svg"
13
15
  },
14
16
  "files": [
15
17
  "index.js",
16
18
  "client.js",
17
19
  "cordis.patch.yml",
18
- "assets"
20
+ "assets",
21
+ "locale",
22
+ "icon.svg"
19
23
  ],
20
24
  "keywords": [
21
25
  "dsh",
@@ -39,5 +43,6 @@
39
43
  "@deepseek-ai/dsh-client-ui-conversation"
40
44
  ]
41
45
  }
42
- }
46
+ },
47
+ "icon": "./icon.svg"
43
48
  }