froggo-mission-control 1.2.13 → 1.2.15

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": "froggo-mission-control",
3
- "version": "1.2.13",
3
+ "version": "1.2.15",
4
4
  "description": "Self-hosted AI agent platform for Claude Code CLI. Multi-agent orchestration, task management, Gmail, Calendar, Kanban and more.",
5
5
  "keywords": [
6
6
  "claude",
@@ -134,16 +134,40 @@ function installObsidian() {
134
134
  installObsidian();
135
135
 
136
136
  // ── Rebuild native addons for current Node.js version ──────────────────────
137
+ // npm rebuild can target the wrong copy when packages are in .pnpm/ or .ignored/.
138
+ // Use require.resolve to find the ACTUAL installed location, then node-gyp rebuild there.
137
139
  info('Rebuilding native modules for Node.js ' + process.version + '...');
138
- // Use 'inherit' so failures are visible; npm rebuild finds nested .pnpm packages automatically
139
140
  for (const mod of ['better-sqlite3', 'keytar']) {
140
- const result = spawnSync('npm', ['rebuild', mod], {
141
- cwd: ROOT, shell: true, stdio: 'inherit',
141
+ let modDir = null;
142
+ try {
143
+ modDir = path.dirname(require.resolve(`${mod}/package.json`, { paths: [ROOT] }));
144
+ } catch {
145
+ warn(`${mod} not found in node_modules — skipping`);
146
+ continue;
147
+ }
148
+
149
+ info(`Rebuilding ${mod} at ${modDir}...`);
150
+ // Find node-gyp: prefer the one bundled in this package, fall back to global
151
+ const nodeGypLocal = path.join(ROOT, 'node_modules', 'node-gyp', 'bin', 'node-gyp.js');
152
+ const nodeGypPnpm = path.join(ROOT, 'node_modules', '.pnpm', 'node-gyp@12.2.0', 'node_modules', 'node-gyp', 'bin', 'node-gyp.js');
153
+ const nodeGypBin = existsSync(nodeGypLocal) ? nodeGypLocal : existsSync(nodeGypPnpm) ? nodeGypPnpm : null;
154
+ if (!nodeGypBin) { warn(`node-gyp not found — skipping ${mod} rebuild`); continue; }
155
+
156
+ const result = spawnSync(process.execPath, [nodeGypBin, 'rebuild'], {
157
+ cwd: modDir,
158
+ stdio: 'inherit',
142
159
  });
160
+
143
161
  if (result.status === 0) {
144
162
  success(`${mod} compiled`);
145
163
  } else {
146
- warn(`${mod} rebuild failed the app may not start correctly. Try: npm rebuild ${mod} in the install directory`);
164
+ // Fall back to npm rebuild as secondary attempt
165
+ const r2 = spawnSync('npm', ['rebuild', mod], { cwd: ROOT, shell: true, stdio: 'inherit' });
166
+ if (r2.status === 0) {
167
+ success(`${mod} compiled (via npm rebuild)`);
168
+ } else {
169
+ warn(`${mod} rebuild failed — run: cd ${modDir} && node-gyp rebuild`);
170
+ }
147
171
  }
148
172
  }
149
173
 
@@ -182,7 +182,7 @@ export default function OnboardingWizard({ onComplete, onSkip }: OnboardingWizar
182
182
  const [geminiSkipped, setGeminiSkipped] = useState(false);
183
183
 
184
184
  // Step 5 — Google Workspace
185
- const [googleStatus, setGoogleStatus] = useState<'checking' | 'connected' | 'disconnected' | 'error'>('checking');
185
+ const [googleStatus, setGoogleStatus] = useState<'checking' | 'connected' | 'disconnected' | 'error'>('disconnected');
186
186
  const [googleEmail, setGoogleEmail] = useState('');
187
187
  const [googleSkipped, setGoogleSkipped] = useState(false);
188
188
  const [googleConnecting, setGoogleConnecting] = useState(false);
@@ -338,6 +338,7 @@ function initSchema(db: Database.Database) {
338
338
  core INTEGER DEFAULT 0,
339
339
  defaultPersonality TEXT,
340
340
  installed INTEGER DEFAULT 0,
341
+ enabled INTEGER DEFAULT 1,
341
342
  createdAt INTEGER NOT NULL DEFAULT (unixepoch() * 1000),
342
343
  updatedAt INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
343
344
  );
@@ -459,6 +460,7 @@ function initSchema(db: Database.Database) {
459
460
  `ALTER TABLE catalog_agents ADD COLUMN defaultPersonality TEXT`,
460
461
  `ALTER TABLE catalog_agents ADD COLUMN core INTEGER DEFAULT 0`,
461
462
  `ALTER TABLE catalog_agents ADD COLUMN avatar TEXT`,
463
+ `ALTER TABLE catalog_agents ADD COLUMN enabled INTEGER DEFAULT 1`,
462
464
  `ALTER TABLE agents ADD COLUMN role TEXT`,
463
465
  `ALTER TABLE agents ADD COLUMN emoji TEXT DEFAULT '🤖'`,
464
466
  `ALTER TABLE agents ADD COLUMN color TEXT DEFAULT '#00BCD4'`,