@wonderwhy-er/desktop-commander 0.2.27 → 0.2.29-alpha.0

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.
@@ -116,7 +116,8 @@ class ConfigManager {
116
116
  allowedDirectories: [],
117
117
  telemetryEnabled: true, // Default to opt-out approach (telemetry on by default)
118
118
  fileWriteLineLimit: 50, // Default line limit for file write operations (changed from 100)
119
- fileReadLineLimit: 1000 // Default line limit for file read operations (changed from character-based)
119
+ fileReadLineLimit: 1000, // Default line limit for file read operations (changed from character-based)
120
+ pendingWelcomeOnboarding: true // New install flag - triggers A/B test for welcome page
120
121
  };
121
122
  }
122
123
  /**
@@ -2,7 +2,7 @@
2
2
  * Handle welcome page display for new users (A/B test controlled)
3
3
  *
4
4
  * Only shows to:
5
- * 1. New users (first run - config was just created)
5
+ * 1. New users (pendingWelcomeOnboarding flag set when config created)
6
6
  * 2. Users in the 'showOnboardingPage' A/B variant
7
7
  * 3. Haven't seen it yet
8
8
  */
@@ -8,14 +8,16 @@ import { capture } from './capture.js';
8
8
  * Handle welcome page display for new users (A/B test controlled)
9
9
  *
10
10
  * Only shows to:
11
- * 1. New users (first run - config was just created)
11
+ * 1. New users (pendingWelcomeOnboarding flag set when config created)
12
12
  * 2. Users in the 'showOnboardingPage' A/B variant
13
13
  * 3. Haven't seen it yet
14
14
  */
15
15
  export async function handleWelcomePageOnboarding() {
16
- // Only for brand new users (config just created)
17
- if (!configManager.isFirstRun()) {
18
- return;
16
+ // Check if this is a new install pending A/B decision
17
+ // This flag is set when config is first created and survives process restarts
18
+ const pending = await configManager.getValue('pendingWelcomeOnboarding');
19
+ if (!pending) {
20
+ return; // Existing user or already processed
19
21
  }
20
22
  // Track that we have a first-run user attempting onboarding
21
23
  const loadedFromCache = featureFlagManager.wasLoadedFromCache();
@@ -34,6 +36,9 @@ export async function handleWelcomePageOnboarding() {
34
36
  loaded_from_cache: loadedFromCache
35
37
  });
36
38
  if (!shouldShow) {
39
+ // Mark as control group for analytics - this will be sent with all future events
40
+ await configManager.setValue('sawOnboardingPage', false);
41
+ await configManager.setValue('pendingWelcomeOnboarding', false);
37
42
  logToStderr('debug', 'Welcome page skipped (A/B: noOnboardingPage)');
38
43
  return;
39
44
  }
@@ -45,10 +50,13 @@ export async function handleWelcomePageOnboarding() {
45
50
  try {
46
51
  await openWelcomePage();
47
52
  await configManager.setValue('sawOnboardingPage', true);
53
+ await configManager.setValue('pendingWelcomeOnboarding', false);
48
54
  capture('server_welcome_page_opened', { success: true });
49
55
  logToStderr('info', 'Welcome page opened');
50
56
  }
51
57
  catch (e) {
58
+ // Still clear the pending flag even on failure - don't retry forever
59
+ await configManager.setValue('pendingWelcomeOnboarding', false);
52
60
  capture('server_welcome_page_opened', { success: false, error: e instanceof Error ? e.message : String(e) });
53
61
  logToStderr('warning', `Failed to open welcome page: ${e instanceof Error ? e.message : e}`);
54
62
  }
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.2.27";
1
+ export declare const VERSION = "0.2.29-alpha.0";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.2.27';
1
+ export const VERSION = '0.2.29-alpha.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wonderwhy-er/desktop-commander",
3
- "version": "0.2.27",
3
+ "version": "0.2.29-alpha.0",
4
4
  "description": "MCP server for terminal operations and file editing",
5
5
  "mcpName": "io.github.wonderwhy-er/desktop-commander",
6
6
  "license": "MIT",
@@ -24,6 +24,9 @@
24
24
  "scripts": {
25
25
  "postinstall": "node dist/track-installation.js && node dist/npm-scripts/verify-ripgrep.js || node -e \"process.exit(0)\"",
26
26
  "open-chat": "open -n /Applications/Claude.app",
27
+ "device:install": "cd src/remote-device && npm install",
28
+ "device:start": "cd src/remote-device && npm run device",
29
+ "device:dev": "cd src/remote-device && npm run device:dev",
27
30
  "sync-version": "node scripts/sync-version.js",
28
31
  "bump": "node scripts/sync-version.js --bump",
29
32
  "bump:minor": "node scripts/sync-version.js --bump --minor",
@@ -49,6 +52,7 @@
49
52
  "release:major": "node scripts/publish-release.cjs --major",
50
53
  "release:dry": "node scripts/publish-release.cjs --dry-run",
51
54
  "release:mcp": "node scripts/publish-release.cjs --mcp-only",
55
+ "release:alpha": "node scripts/publish-release.cjs --npm-only --alpha",
52
56
  "logs:view": "npm run build && node scripts/view-fuzzy-logs.js",
53
57
  "logs:analyze": "npm run build && node scripts/analyze-fuzzy-logs.js",
54
58
  "logs:clear": "npm run build && node scripts/clear-fuzzy-logs.js",