@goodandready/dsh-plugin-notify 0.3.0 → 0.3.2
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/CHANGELOG.md +24 -0
- package/README.md +2 -1
- package/README.ru.md +1 -0
- package/README.zh.md +1 -0
- package/lib/client.js +32 -3
- package/package.json +13 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.3.2] - 2026-09-19
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **Settings reachable again on the plugin's own page**: the current core
|
|
11
|
+
(0.1.6-alpha.2) renders a plugin's configuration page only for entries registered
|
|
12
|
+
in the plugin-list seat `plugins.item` — that is how `dsh-agentrouter` and
|
|
13
|
+
`dsh-agent-orchestrator` show their settings, while the row seat and the legacy card
|
|
14
|
+
alone leave the page without the form. The view-aware card is now registered there
|
|
15
|
+
too (`id: 'plugin-notify'` — the row id from `cordis.patch.yml` — order 40, static
|
|
16
|
+
label); both older seats stay as fallbacks.
|
|
17
|
+
|
|
18
|
+
## [0.3.1] - 2026-09-19
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **Settings reachable again**: the card registered into `settings.plugin.item`, a
|
|
22
|
+
slot the current DSH core (0.1.6-alpha.2) no longer renders, so the plugin's
|
|
23
|
+
settings were unreachable. The surface now registers into the Plugins page row
|
|
24
|
+
seat `plugins.row.config`, keyed `@goodandready/dsh-plugin-notify#plugin-notify`
|
|
25
|
+
— the row id `cordis.patch.yml` declares is `plugin-notify`, not the directory
|
|
26
|
+
name. The plugin's row gains a configure control whose page is the settings form
|
|
27
|
+
(`view: 'page'`, open and without our card chrome — the host page draws the title,
|
|
28
|
+
icon, crumb and padding) plus a one-line state for `view: 'summary'`. The legacy
|
|
29
|
+
seat stays registered as a fallback for older cores.
|
|
30
|
+
|
|
7
31
|
## [0.3.0] - 2026-09-18
|
|
8
32
|
|
|
9
33
|
### Added
|
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
<h3>Remote IM webhooks for turn done, errors, and approval waits</h3>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-plugin-notify"><img src="https://img.shields.io/npm/v/@goodandready/dsh-plugin-notify.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
|
|
8
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-10b981.svg?style=for-the-badge&labelColor=064e3b" alt="license"></a>
|
|
9
10
|
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
10
11
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
@@ -88,7 +89,7 @@ graph TD
|
|
|
88
89
|
|
|
89
90
|
## Install
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
Install via the DSH web profile:
|
|
92
93
|
|
|
93
94
|
```sh
|
|
94
95
|
dsh plugin --profile web add @goodandready/dsh-plugin-notify
|
package/README.ru.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
<h3>Удалённые IM-webhook уведомления о завершении хода, ошибке и ожидании approval</h3>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-plugin-notify"><img src="https://img.shields.io/npm/v/@goodandready/dsh-plugin-notify.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
|
|
8
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-10b981.svg?style=for-the-badge&labelColor=064e3b" alt="license"></a>
|
|
9
10
|
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
10
11
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
package/README.zh.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
<h3>回合完成、出错、等待审批时发送远程 IM Webhook 通知</h3>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-plugin-notify"><img src="https://img.shields.io/npm/v/@goodandready/dsh-plugin-notify.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
|
|
8
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-10b981.svg?style=for-the-badge&labelColor=064e3b" alt="license"></a>
|
|
9
10
|
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
10
11
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
package/lib/client.js
CHANGED
|
@@ -4,6 +4,11 @@ window.__ModuleLoader__.load({
|
|
|
4
4
|
var module = { exports: {} }
|
|
5
5
|
const React = require('react')
|
|
6
6
|
const NS = '@goodandready/dsh-plugin-notify'
|
|
7
|
+
// Plugins page row seat (DSH 0.1.6-alpha.2): key = '<package name>#<row id>'.
|
|
8
|
+
// The row id declared by cordis.patch.yml is 'plugin-notify' (not the folder name).
|
|
9
|
+
const PKG = '@goodandready/dsh-plugin-notify'
|
|
10
|
+
const ROW_ID = 'plugin-notify'
|
|
11
|
+
const ROW_CONFIG_KEY = PKG + '#' + ROW_ID
|
|
7
12
|
const CHANNELS = ['feishu', 'wecom', 'dingtalk', 'slack', 'discord', 'custom']
|
|
8
13
|
|
|
9
14
|
const en = {
|
|
@@ -574,8 +579,15 @@ window.__ModuleLoader__.load({
|
|
|
574
579
|
: null,
|
|
575
580
|
)
|
|
576
581
|
|
|
577
|
-
|
|
578
|
-
|
|
582
|
+
// Row seat (plugins.row.config): the host page draws title/icon/crumb and the
|
|
583
|
+
// padding, so the summary is a one-liner and the page drops our card chrome.
|
|
584
|
+
if (props && props.view === 'summary') {
|
|
585
|
+
return React.createElement('span', { className: 'pn-sub' }, t('subtitle'))
|
|
586
|
+
}
|
|
587
|
+
const page = !!(props && props.view === 'page')
|
|
588
|
+
|
|
589
|
+
return React.createElement(page ? 'div' : 'li', { className: page ? 'pn-page' : 'pn-card' },
|
|
590
|
+
React.createElement('button', { type: 'button', className: 'pn-head', style: page ? { display: 'none' } : undefined, 'aria-expanded': page ? true : open, onClick: () => setOpen((v) => !v) },
|
|
579
591
|
React.createElement('span', { style: { display: 'flex', flexDirection: 'column' } },
|
|
580
592
|
React.createElement('span', { className: 'pn-title' }, t('title')),
|
|
581
593
|
React.createElement('span', { className: 'pn-sub' }, t('subtitle')),
|
|
@@ -668,6 +680,23 @@ window.__ModuleLoader__.load({
|
|
|
668
680
|
ctx.effect(() => ctx.locale.register(NS, { en, zh }), 'dsh-plugin-notify: dictionaries')
|
|
669
681
|
|
|
670
682
|
try {
|
|
683
|
+
// Plugin-list seat (plugins.item) first: the seat the current core
|
|
684
|
+
// (0.1.6-alpha.2) renders as the plugin's own page with its configuration. The
|
|
685
|
+
// label is a static string on purpose — it is resolved while the page renders,
|
|
686
|
+
// and a locale lookup there would take the whole client batch down with it.
|
|
687
|
+
ctx.slots.inject('plugins.item', () => {
|
|
688
|
+
ctx.slots.register(
|
|
689
|
+
{ name: 'plugins.item', id: ROW_ID, order: 40, label: () => 'Notify', locale: NS, inject: () => ({ ctx }) },
|
|
690
|
+
(props) => React.createElement(NotifyCard, { ...props, ctx }),
|
|
691
|
+
)
|
|
692
|
+
})
|
|
693
|
+
// Row seat and the legacy seat kept as fallbacks for older cores.
|
|
694
|
+
ctx.slots.inject('plugins.row.config', () => {
|
|
695
|
+
ctx.slots.register(
|
|
696
|
+
{ name: 'plugins.row.config', key: ROW_CONFIG_KEY, locale: NS, order: 40, inject: () => ({ ctx }) },
|
|
697
|
+
(props) => React.createElement(NotifyCard, { ...props, ctx }),
|
|
698
|
+
)
|
|
699
|
+
})
|
|
671
700
|
ctx.slots.inject('settings.plugin.item', () => {
|
|
672
701
|
ctx.slots.register(
|
|
673
702
|
{ name: 'settings.plugin.item', key: NS, locale: NS, order: 40, inject: () => ({ ctx }) },
|
|
@@ -675,7 +704,7 @@ window.__ModuleLoader__.load({
|
|
|
675
704
|
)
|
|
676
705
|
})
|
|
677
706
|
} catch (e) {
|
|
678
|
-
console.warn('[dsh-plugin-notify] settings
|
|
707
|
+
console.warn('[dsh-plugin-notify] settings seats failed', e)
|
|
679
708
|
}
|
|
680
709
|
|
|
681
710
|
let currentSettings = {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-plugin-notify",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "DSH plugin: audio chimes, cross-session toasts, desktop push, and IM webhooks for turn completion, errors, and approvals.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -56,5 +56,16 @@
|
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
59
|
-
}
|
|
59
|
+
},
|
|
60
|
+
"author": "GooDAnDReaDY <support@goodandready.app>",
|
|
61
|
+
"keywords": [
|
|
62
|
+
"dsh",
|
|
63
|
+
"dsh-plugin",
|
|
64
|
+
"deepseek-harness",
|
|
65
|
+
"notifications",
|
|
66
|
+
"webhooks",
|
|
67
|
+
"desktop-push",
|
|
68
|
+
"audio-chimes",
|
|
69
|
+
"toasts"
|
|
70
|
+
]
|
|
60
71
|
}
|