@goodandready/dsh-plugin-notify 0.4.3 → 0.4.4

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 CHANGED
@@ -4,6 +4,11 @@ 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.4.4] - 2026-10-15
8
+
9
+ ### Fixed
10
+ - **Client config form lookup** (#61): Query `ctx.configForms` strictly by canonical entry id `plugin-notify` (`ROW_ID`) rather than attempting fallback queries to scoped package name `@goodandready/dsh-plugin-notify`, fixing unresolvable configuration lookups in the settings panel.
11
+
7
12
  ## [0.4.3] - 2026-10-15
8
13
 
9
14
  ### Fixed
package/lib/client.js CHANGED
@@ -675,22 +675,17 @@ window.__ModuleLoader__.load({
675
675
  }
676
676
  }
677
677
 
678
- // In DSH 0.2.x configForms is keyed strictly by entry id (ROW_ID = 'plugin-notify').
679
- // Hold both candidates and prefer ROW_ID whenever it is ready or NS is unavailable.
680
- const [scopeRow, scopeNS] = React.useMemo(
681
- () => (ctx && ctx.configForms ? [ctx.configForms.get(ROW_ID), ctx.configForms.get(NS)] : [undefined, undefined]),
678
+ // In DSH configForms is keyed by entry id (ROW_ID = 'plugin-notify').
679
+ // Query ROW_ID directly; no entry id in the environment has the package name.
680
+ const scope = React.useMemo(
681
+ () => (ctx && ctx.configForms ? ctx.configForms.get(ROW_ID) : undefined),
682
682
  [ctx],
683
683
  )
684
- const useSnap = (scope) => React.useSyncExternalStore(
684
+ const snapshot = React.useSyncExternalStore(
685
685
  React.useMemo(() => (cb) => (scope ? scope.subscribe(cb) : () => {}), [scope]),
686
686
  React.useCallback(() => (scope ? scope.getSnapshot() : { status: 'loading' }), [scope]),
687
687
  React.useCallback(() => ({ status: 'loading' }), []),
688
688
  )
689
- const snapRow = useSnap(scopeRow)
690
- const snapNS = useSnap(scopeNS)
691
- const useRow = scopeRow && (snapRow.status === 'ready' || snapNS.status !== 'ready')
692
- const scope = useRow ? scopeRow : (scopeNS || scopeRow)
693
- const snapshot = useRow ? snapRow : (scopeNS ? snapNS : snapRow)
694
689
 
695
690
  React.useEffect(() => { ensureStyles() }, [])
696
691
 
@@ -909,9 +904,7 @@ window.__ModuleLoader__.load({
909
904
  let currentSettings = {}
910
905
  if (ctx.configForms) {
911
906
  try {
912
- const candidates = [ctx.configForms.get(ROW_ID), ctx.configForms.get(NS)]
913
- const ready = candidates.find((s) => s && s.getSnapshot && s.getSnapshot().status === 'ready')
914
- const scope = ready || candidates[0]
907
+ const scope = ctx.configForms.get(ROW_ID)
915
908
  if (scope && typeof scope.subscribe === 'function') {
916
909
  scope.subscribe(() => {
917
910
  const snap = scope.getSnapshot ? scope.getSnapshot() : null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-plugin-notify",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "DSH plugin: audio chimes, cross-session toasts, desktop push, IM webhooks, and web push (PWA) for turn completion, errors, and approvals.",
5
5
  "license": "MIT",
6
6
  "type": "module",