@dollhousemcp/mcp-server 2.0.12-rc.6 → 2.0.12-rc.7

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.
@@ -2,8 +2,8 @@
2
2
  * Auto-generated file - DO NOT EDIT
3
3
  * Generated at build time by scripts/generate-version.js
4
4
  */
5
- export declare const PACKAGE_VERSION = "2.0.12-rc.6";
6
- export declare const BUILD_TIMESTAMP = "2026-04-09T04:00:45.305Z";
5
+ export declare const PACKAGE_VERSION = "2.0.12-rc.7";
6
+ export declare const BUILD_TIMESTAMP = "2026-04-09T04:44:43.775Z";
7
7
  export declare const BUILD_TYPE: 'npm' | 'git';
8
8
  export declare const PACKAGE_NAME = "@dollhousemcp/mcp-server";
9
9
  //# sourceMappingURL=version.d.ts.map
@@ -2,8 +2,8 @@
2
2
  * Auto-generated file - DO NOT EDIT
3
3
  * Generated at build time by scripts/generate-version.js
4
4
  */
5
- export const PACKAGE_VERSION = '2.0.12-rc.6';
6
- export const BUILD_TIMESTAMP = '2026-04-09T04:00:45.305Z';
5
+ export const PACKAGE_VERSION = '2.0.12-rc.7';
6
+ export const BUILD_TIMESTAMP = '2026-04-09T04:44:43.775Z';
7
7
  export const BUILD_TYPE = 'npm';
8
8
  export const PACKAGE_NAME = '@dollhousemcp/mcp-server';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcyLjAuMTItcmMuNic7XG5leHBvcnQgY29uc3QgQlVJTERfVElNRVNUQU1QID0gJzIwMjYtMDQtMDlUMDQ6MDA6NDUuMzA1Wic7XG5leHBvcnQgY29uc3QgQlVJTERfVFlQRTogJ25wbScgfCAnZ2l0JyA9ICducG0nO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAZG9sbGhvdXNlbWNwL21jcC1zZXJ2ZXInO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcyLjAuMTItcmMuNyc7XG5leHBvcnQgY29uc3QgQlVJTERfVElNRVNUQU1QID0gJzIwMjYtMDQtMDlUMDQ6NDQ6NDMuNzc1Wic7XG5leHBvcnQgY29uc3QgQlVJTERfVFlQRTogJ25wbScgfCAnZ2l0JyA9ICducG0nO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAZG9sbGhvdXNlbWNwL21jcC1zZXJ2ZXInO1xuIl19
@@ -65,9 +65,21 @@
65
65
  return result;
66
66
  }
67
67
 
68
+ // ── Channel constants ────────────────────────────────────────────────
69
+ const CHANNELS = {
70
+ STABLE: 'latest',
71
+ RC: 'rc',
72
+ BETA: 'beta',
73
+ };
74
+ const VALID_CHANNELS = new Set(Object.values(CHANNELS));
75
+ const DEFAULT_CHANNEL = CHANNELS.STABLE;
76
+
77
+ /** Validate and normalize a channel value. Falls back to stable if invalid. */
78
+ const normalizeChannel = (ch) => VALID_CHANNELS.has(ch) ? ch : DEFAULT_CHANNEL;
79
+
68
80
  // Start with a placeholder version, update once we fetch from server
69
81
  let pinnedVersion = 'latest';
70
- let currentChannel = 'latest';
82
+ let currentChannel = DEFAULT_CHANNEL;
71
83
  let configs = buildConfigs(pinnedVersion, currentChannel);
72
84
 
73
85
  // ── Current method state ──────────────────────────────────────────────
@@ -160,11 +172,13 @@
160
172
  if (!select) return;
161
173
 
162
174
  select.addEventListener('change', () => {
163
- currentChannel = select.value;
175
+ currentChannel = normalizeChannel(select.value);
164
176
  if (hint) hint.textContent = CHANNEL_HINTS[currentChannel] || '';
165
177
  configs = buildConfigs(pinnedVersion, currentChannel);
166
178
  updateAllConfigs(currentMethod);
167
179
  updateInstallButtonLabels();
180
+ // Re-evaluate detection: current config may no longer match the new channel
181
+ updateDetectionState();
168
182
  });
169
183
  };
170
184
 
@@ -331,12 +345,21 @@
331
345
  if (isPinned) {
332
346
  desc.textContent = `Installs DollhouseMCP v${pinnedVersion}. This version will not auto-update.`;
333
347
  } else {
334
- // Restore original text based on which panel it's in
348
+ // Restore text reflecting the selected channel.
349
+ // Use textContent for dynamic values to prevent DOM XSS (CodeQL: DOM text reinterpreted as HTML).
335
350
  const panel = desc.closest('.setup-panel');
351
+ const safeChannel = normalizeChannel(currentChannel);
336
352
  if (panel?.id === 'setup-panel-claude-desktop') {
337
- desc.innerHTML = 'Pulls the latest version of DollhouseMCP on every startup. Uses <code>npx @latest</code> under the hood. Restart Claude Desktop after.';
353
+ desc.textContent = '';
354
+ desc.append(
355
+ `Pulls the ${safeChannel} version of DollhouseMCP on every startup. Uses `,
356
+ );
357
+ const code = document.createElement('code');
358
+ code.textContent = `npx @${safeChannel}`;
359
+ desc.append(code);
360
+ desc.append(' under the hood. Restart Claude Desktop after.');
338
361
  } else if (panel?.id === 'setup-panel-claude-code') {
339
- desc.textContent = 'Adds DollhouseMCP to Claude Code, pulling the latest version on every startup.';
362
+ desc.textContent = `Adds DollhouseMCP to Claude Code, pulling the ${safeChannel} version on every startup.`;
340
363
  }
341
364
  }
342
365
  });
@@ -344,6 +367,16 @@
344
367
 
345
368
  // ── Install buttons ────────────────────────────────────────────────────
346
369
 
370
+ /** Format an install error for display. Detects channel-specific 404s. */
371
+ const formatInstallError = (err) => {
372
+ const msg = err.message || 'Installation failed';
373
+ const isChannelError = currentChannel !== DEFAULT_CHANNEL &&
374
+ (msg.includes('404') || msg.includes('Not Found') || msg.includes('not found'));
375
+ return isChannelError
376
+ ? `No ${currentChannel} release is published yet. Switch to Stable or try again later.`
377
+ : `${msg}. Try the manual config below.`;
378
+ };
379
+
347
380
  /** Handle Configure Now button click */
348
381
  const handleInstallClick = async (btn) => {
349
382
  const client = btn.dataset.installClient;
@@ -401,7 +434,7 @@
401
434
  btn.disabled = false;
402
435
  btn.classList.remove('is-loading');
403
436
  if (status) {
404
- status.textContent = err.message || 'Installation failed. Try the manual config below.';
437
+ status.textContent = formatInstallError(err);
405
438
  status.classList.add('is-error');
406
439
  }
407
440
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dollhousemcp/mcp-server",
3
- "version": "2.0.12-rc.6",
3
+ "version": "2.0.12-rc.7",
4
4
  "description": "DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.DollhouseMCP/mcp-server",
4
4
  "title": "DollhouseMCP",
5
5
  "description": "OSS to create Personas, Skills, Templates, Agents, and Memories to customize your AI experience.",
6
- "version": "2.0.12-rc.6",
6
+ "version": "2.0.12-rc.7",
7
7
  "homepage": "https://dollhousemcp.com",
8
8
  "repository": {
9
9
  "type": "git",
@@ -29,7 +29,7 @@
29
29
  {
30
30
  "registryType": "npm",
31
31
  "identifier": "@dollhousemcp/mcp-server",
32
- "version": "2.0.12-rc.6",
32
+ "version": "2.0.12-rc.7",
33
33
  "transport": {
34
34
  "type": "stdio"
35
35
  }