claude-code-memory-explorer 1.3.2 → 1.3.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-memory-explorer",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "Memory explorer dashboard for Claude Code",
5
5
  "main": "server.js",
6
6
  "type": "commonjs",
@@ -22,6 +22,7 @@
22
22
  "open": "^11.0.0"
23
23
  },
24
24
  "devDependencies": {
25
+ "@biomejs/biome": "2.4.10",
25
26
  "husky": "^9.0.0"
26
27
  },
27
28
  "keywords": [
@@ -1,4 +1,4 @@
1
- // claude-hub-sdk 1.5.0 (sha256 1505d3d5f8ba). Copied by npm run sdk:sync in claude-code-hub. Do not edit.
1
+ // claude-hub-sdk 1.8.0 (sha256 9a67dd2aa534). Copied by npm run sdk:sync in claude-code-hub. Do not edit.
2
2
  // Claude Code Hub SDK: the one rule that names a key press, shared by the hub page, client.js and
3
3
  // stub.js. The hub serves it to its page as /sdk/keys.js; mount() and sdk:sync put it in front of
4
4
  // client.js and stub.js, so an app still loads one file.
@@ -33,7 +33,21 @@ var ClaudeHubKeys = (() => {
33
33
  return combo.split('+').map((k) => mods[k] ?? named[k] ?? (k.length === 1 ? k.toUpperCase() : k));
34
34
  }
35
35
 
36
- return { comboOf, keyParts };
36
+ // A host claim (protocol §5.2) names a press by its physical code, or by its character when the layout
37
+ // moves the key: {ctrlKey?, altKey?, shiftKey?, metaKey?, code, key: 'Unidentified'} or {…, key, code: ''}.
38
+ // A press matches a claim when one of its two signatures is the claim's first. AltGr types a
39
+ // character, so its press matches by character only. cck's frames use the same format.
40
+ function keySigs(e) {
41
+ const mods = [e.ctrlKey && 'ctrl', e.altKey && 'alt', e.shiftKey && 'shift', e.metaKey && 'meta']
42
+ .filter(Boolean)
43
+ .join('+');
44
+ return [
45
+ e.code && !e.getModifierState?.('AltGraph') && `${mods}|c:${e.code}`,
46
+ typeof e.key === 'string' && e.key !== 'Unidentified' && `${mods}|k:${e.key.toLowerCase()}`,
47
+ ].filter(Boolean);
48
+ }
49
+
50
+ return { comboOf, keyParts, keySigs };
37
51
  })();
38
52
 
39
53
  if (typeof module === 'object' && module.exports) module.exports = ClaudeHubKeys;
@@ -60,6 +74,8 @@ if (typeof module === 'object' && module.exports) module.exports = ClaudeHubKeys
60
74
  status: 'standalone',
61
75
  themes: [],
62
76
  inHub: false,
77
+ settings: null,
78
+ onSettings: () => off,
63
79
  onStatus: () => off,
64
80
  onActive: () => off,
65
81
  onThemes: () => off,
@@ -67,9 +83,10 @@ if (typeof module === 'object' && module.exports) module.exports = ClaudeHubKeys
67
83
  bindTheme: () => off,
68
84
  handle() {},
69
85
  publish() {},
70
- invoke(action, params = {}) {
86
+ invoke(action, params = {}, opts = {}) {
71
87
  const target = standaloneFn(action)?.(params);
72
88
  if (!target) return Promise.resolve({ ok: false, reason: 'unhandled' });
89
+ if (opts.open === 'pane') return Promise.resolve({ ok: true, handledBy: 'standalone', url: target });
73
90
  win.open(target, '_blank', 'noopener');
74
91
  return Promise.resolve({ ok: true, handledBy: 'standalone' });
75
92
  },