bingocode 1.0.33 → 1.0.34

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/bin/bingo-win.cjs CHANGED
@@ -7,31 +7,57 @@ const fs = require('fs');
7
7
 
8
8
  process.env.NoDefaultCurrentDirectoryInExePath = '1';
9
9
 
10
- // ── 首次部署:将默认 bingo 配置复制到 ~/.claude/bingo/ ──
11
- // 确保新电脑首次启动时 settings.json 存在(含占位符 ANTHROPIC_AUTH_TOKEN),
10
+ // ── 部署 / 增量合并 bingo 默认配置到 ~/.claude/bingo/ ──
11
+ // 首次安装:完整复制 settings.json(含占位符 ANTHROPIC_AUTH_TOKEN),
12
12
  // 这样 isOfficialMode() 返回 false,子进程不会走 OAuth 流程。
13
- // 用户通过 ProviderPanel 激活 provider 后 syncToSettings() 会覆盖此文件。
13
+ // 升级安装:增量合并——只补充默认配置中有但用户配置中缺失的 key,
14
+ // 保留用户已有的自定义值(如修改过的 ANTHROPIC_BASE_URL 等)。
14
15
  (function deployBingoDefaults() {
15
16
  const configDir = process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude');
16
17
  const bingoDir = path.join(configDir, 'bingo');
17
18
  const targetSettings = path.join(bingoDir, 'settings.json');
19
+ const defaultsDir = path.join(__dirname, '..', 'config', 'bingo-defaults');
20
+ const srcSettings = path.join(defaultsDir, 'settings.json');
18
21
 
19
- // 只在 settings.json 不存在时才部署(不覆盖已有配置)
20
- if (!fs.existsSync(targetSettings)) {
21
- const defaultsDir = path.join(__dirname, '..', 'config', 'bingo-defaults');
22
- const srcSettings = path.join(defaultsDir, 'settings.json');
22
+ if (!fs.existsSync(srcSettings)) return;
23
23
 
24
- if (fs.existsSync(srcSettings)) {
25
- try {
26
- if (!fs.existsSync(bingoDir)) {
27
- fs.mkdirSync(bingoDir, { recursive: true });
24
+ try {
25
+ if (!fs.existsSync(bingoDir)) {
26
+ fs.mkdirSync(bingoDir, { recursive: true });
27
+ }
28
+
29
+ if (!fs.existsSync(targetSettings)) {
30
+ // 首次安装:直接复制
31
+ fs.copyFileSync(srcSettings, targetSettings);
32
+ console.log('[bingo] 首次启动:已部署默认配置到', targetSettings);
33
+ } else {
34
+ // 升级安装:增量合并缺失的 key
35
+ const defaults = JSON.parse(fs.readFileSync(srcSettings, 'utf-8'));
36
+ const current = JSON.parse(fs.readFileSync(targetSettings, 'utf-8'));
37
+ let changed = false;
38
+
39
+ for (const section of Object.keys(defaults)) {
40
+ if (typeof defaults[section] !== 'object' || defaults[section] === null) continue;
41
+ if (!current[section] || typeof current[section] !== 'object') {
42
+ current[section] = defaults[section];
43
+ changed = true;
44
+ continue;
45
+ }
46
+ for (const key of Object.keys(defaults[section])) {
47
+ if (!(key in current[section])) {
48
+ current[section][key] = defaults[section][key];
49
+ changed = true;
50
+ }
28
51
  }
29
- fs.copyFileSync(srcSettings, targetSettings);
30
- console.log('[bingo] 首次启动:已部署默认配置到', targetSettings);
31
- } catch (err) {
32
- console.warn('[bingo] 部署默认配置失败:', err.message);
52
+ }
53
+
54
+ if (changed) {
55
+ fs.writeFileSync(targetSettings, JSON.stringify(current, null, 2) + '\n');
56
+ console.log('[bingo] 升级:已合并新增默认配置到', targetSettings);
33
57
  }
34
58
  }
59
+ } catch (err) {
60
+ console.warn('[bingo] 部署默认配置失败:', err.message);
35
61
  }
36
62
  })();
37
63
 
@@ -7,29 +7,57 @@ const fs = require('fs');
7
7
 
8
8
  process.env.NoDefaultCurrentDirectoryInExePath = '1';
9
9
 
10
- // ── 首次部署:将默认 bingo 配置复制到 ~/.claude/bingo/ ──
11
- // 确保新电脑首次启动时 settings.json 存在(含占位符 ANTHROPIC_AUTH_TOKEN),
10
+ // ── 部署 / 增量合并 bingo 默认配置到 ~/.claude/bingo/ ──
11
+ // 首次安装:完整复制 settings.json(含占位符 ANTHROPIC_AUTH_TOKEN),
12
12
  // 这样 isAnthropicAuthEnabled() 返回 false,跳过 OAuth 流程。
13
+ // 升级安装:增量合并——只补充默认配置中有但用户配置中缺失的 key,
14
+ // 保留用户已有的自定义值(如修改过的 ANTHROPIC_BASE_URL 等)。
13
15
  (function deployBingoDefaults() {
14
16
  const configDir = process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude');
15
17
  const bingoDir = path.join(configDir, 'bingo');
16
18
  const targetSettings = path.join(bingoDir, 'settings.json');
19
+ const defaultsDir = path.join(__dirname, '..', 'config', 'bingo-defaults');
20
+ const srcSettings = path.join(defaultsDir, 'settings.json');
17
21
 
18
- if (!fs.existsSync(targetSettings)) {
19
- const defaultsDir = path.join(__dirname, '..', 'config', 'bingo-defaults');
20
- const srcSettings = path.join(defaultsDir, 'settings.json');
22
+ if (!fs.existsSync(srcSettings)) return;
21
23
 
22
- if (fs.existsSync(srcSettings)) {
23
- try {
24
- if (!fs.existsSync(bingoDir)) {
25
- fs.mkdirSync(bingoDir, { recursive: true });
24
+ try {
25
+ if (!fs.existsSync(bingoDir)) {
26
+ fs.mkdirSync(bingoDir, { recursive: true });
27
+ }
28
+
29
+ if (!fs.existsSync(targetSettings)) {
30
+ // 首次安装:直接复制
31
+ fs.copyFileSync(srcSettings, targetSettings);
32
+ console.log('[bingocode] 首次启动:已部署默认配置到', targetSettings);
33
+ } else {
34
+ // 升级安装:增量合并缺失的 key
35
+ const defaults = JSON.parse(fs.readFileSync(srcSettings, 'utf-8'));
36
+ const current = JSON.parse(fs.readFileSync(targetSettings, 'utf-8'));
37
+ let changed = false;
38
+
39
+ for (const section of Object.keys(defaults)) {
40
+ if (typeof defaults[section] !== 'object' || defaults[section] === null) continue;
41
+ if (!current[section] || typeof current[section] !== 'object') {
42
+ current[section] = defaults[section];
43
+ changed = true;
44
+ continue;
45
+ }
46
+ for (const key of Object.keys(defaults[section])) {
47
+ if (!(key in current[section])) {
48
+ current[section][key] = defaults[section][key];
49
+ changed = true;
50
+ }
26
51
  }
27
- fs.copyFileSync(srcSettings, targetSettings);
28
- console.log('[bingocode] 首次启动:已部署默认配置到', targetSettings);
29
- } catch (err) {
30
- console.warn('[bingocode] 部署默认配置失败:', err.message);
52
+ }
53
+
54
+ if (changed) {
55
+ fs.writeFileSync(targetSettings, JSON.stringify(current, null, 2) + '\n');
56
+ console.log('[bingocode] 升级:已合并新增默认配置到', targetSettings);
31
57
  }
32
58
  }
59
+ } catch (err) {
60
+ console.warn('[bingocode] 部署默认配置失败:', err.message);
33
61
  }
34
62
  })();
35
63
 
@@ -8,27 +8,53 @@ const fs = require('fs');
8
8
  // 使 Windows bun/spawn 更可靠
9
9
  process.env.NoDefaultCurrentDirectoryInExePath = '1';
10
10
 
11
- // ── 首次部署:将默认 bingo 配置复制到 ~/.claude/bingo/ ──
11
+ // ── 部署 / 增量合并 bingo 默认配置到 ~/.claude/bingo/ ──
12
12
  (function deployBingoDefaults() {
13
13
  const configDir = process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude');
14
14
  const bingoDir = path.join(configDir, 'bingo');
15
15
  const targetSettings = path.join(bingoDir, 'settings.json');
16
+ const defaultsDir = path.join(__dirname, '..', 'config', 'bingo-defaults');
17
+ const srcSettings = path.join(defaultsDir, 'settings.json');
16
18
 
17
- if (!fs.existsSync(targetSettings)) {
18
- const defaultsDir = path.join(__dirname, '..', 'config', 'bingo-defaults');
19
- const srcSettings = path.join(defaultsDir, 'settings.json');
19
+ if (!fs.existsSync(srcSettings)) return;
20
20
 
21
- if (fs.existsSync(srcSettings)) {
22
- try {
23
- if (!fs.existsSync(bingoDir)) {
24
- fs.mkdirSync(bingoDir, { recursive: true });
21
+ try {
22
+ if (!fs.existsSync(bingoDir)) {
23
+ fs.mkdirSync(bingoDir, { recursive: true });
24
+ }
25
+
26
+ if (!fs.existsSync(targetSettings)) {
27
+ // 首次安装:直接复制
28
+ fs.copyFileSync(srcSettings, targetSettings);
29
+ console.log('[claude] 首次启动:已部署默认配置到', targetSettings);
30
+ } else {
31
+ // 升级安装:增量合并缺失的 key
32
+ const defaults = JSON.parse(fs.readFileSync(srcSettings, 'utf-8'));
33
+ const current = JSON.parse(fs.readFileSync(targetSettings, 'utf-8'));
34
+ let changed = false;
35
+
36
+ for (const section of Object.keys(defaults)) {
37
+ if (typeof defaults[section] !== 'object' || defaults[section] === null) continue;
38
+ if (!current[section] || typeof current[section] !== 'object') {
39
+ current[section] = defaults[section];
40
+ changed = true;
41
+ continue;
42
+ }
43
+ for (const key of Object.keys(defaults[section])) {
44
+ if (!(key in current[section])) {
45
+ current[section][key] = defaults[section][key];
46
+ changed = true;
47
+ }
25
48
  }
26
- fs.copyFileSync(srcSettings, targetSettings);
27
- console.log('[claude] 首次启动:已部署默认配置到', targetSettings);
28
- } catch (err) {
29
- console.warn('[claude] 部署默认配置失败:', err.message);
49
+ }
50
+
51
+ if (changed) {
52
+ fs.writeFileSync(targetSettings, JSON.stringify(current, null, 2) + '\n');
53
+ console.log('[claude] 升级:已合并新增默认配置到', targetSettings);
30
54
  }
31
55
  }
56
+ } catch (err) {
57
+ console.warn('[claude] 部署默认配置失败:', err.message);
32
58
  }
33
59
  })();
34
60
 
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingocode",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "claude": "bin/claude-win.cjs",