@funnycode/myclaude 0.1.163 → 0.1.165
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/dist/myclaude.js +96 -30
- package/dist/myclaude.mjs +96 -30
- package/package.json +1 -1
package/dist/myclaude.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// MACRO - build-time constants (injected by build.ts)
|
|
5
5
|
// MACRO injected by build script
|
|
6
6
|
globalThis.MACRO = {
|
|
7
|
-
VERSION: "0.1.
|
|
8
|
-
BUILD_TIME: "2026-07-
|
|
7
|
+
VERSION: "0.1.165",
|
|
8
|
+
BUILD_TIME: "2026-07-31T00:20:09.749Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -61328,6 +61328,30 @@ function updateSettingsForSource(source, settings) {
|
|
|
61328
61328
|
}
|
|
61329
61329
|
return { error: null };
|
|
61330
61330
|
}
|
|
61331
|
+
function deleteSettingsField(source, field) {
|
|
61332
|
+
if (source === "policySettings" || source === "flagSettings") {
|
|
61333
|
+
return { error: null };
|
|
61334
|
+
}
|
|
61335
|
+
const filePath = getSettingsFilePathForSource(source);
|
|
61336
|
+
if (!filePath) {
|
|
61337
|
+
return { error: null };
|
|
61338
|
+
}
|
|
61339
|
+
try {
|
|
61340
|
+
getFsImplementation().mkdirSync(dirname13(filePath));
|
|
61341
|
+
let existingSettings = getSettingsForSourceUncached(source);
|
|
61342
|
+
if (!existingSettings) {
|
|
61343
|
+
return { error: null };
|
|
61344
|
+
}
|
|
61345
|
+
delete existingSettings[field];
|
|
61346
|
+
writeFileSyncAndFlush_DEPRECATED(filePath, jsonStringify(existingSettings));
|
|
61347
|
+
resetSettingsCache();
|
|
61348
|
+
return { error: null };
|
|
61349
|
+
} catch (e) {
|
|
61350
|
+
const error49 = new Error(`Failed to delete field ${field} from settings source ${source}: ${e}`);
|
|
61351
|
+
logError2(error49);
|
|
61352
|
+
return { error: error49 };
|
|
61353
|
+
}
|
|
61354
|
+
}
|
|
61331
61355
|
function mergeArrays(targetArray, sourceArray) {
|
|
61332
61356
|
return uniq([...targetArray, ...sourceArray]);
|
|
61333
61357
|
}
|
|
@@ -119829,7 +119853,7 @@ var package_default;
|
|
|
119829
119853
|
var init_package = __esm(() => {
|
|
119830
119854
|
package_default = {
|
|
119831
119855
|
name: "@funnycode/myclaude",
|
|
119832
|
-
version: "0.1.
|
|
119856
|
+
version: "0.1.165",
|
|
119833
119857
|
private: false,
|
|
119834
119858
|
description: "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
119835
119859
|
license: "MIT",
|
|
@@ -410020,6 +410044,9 @@ function getDirectoryFingerprint(dirPath) {
|
|
|
410020
410044
|
const fullPath = join105(dirPath, entry);
|
|
410021
410045
|
const stat37 = fs13.statSync(fullPath);
|
|
410022
410046
|
if (stat37.isDirectory()) {
|
|
410047
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist" || entry === "build" || entry === ".next" || entry === "out" || entry === "coverage") {
|
|
410048
|
+
continue;
|
|
410049
|
+
}
|
|
410023
410050
|
fingerprintParts.push(entry + "/");
|
|
410024
410051
|
fingerprintParts.push(getDirectoryFingerprint(fullPath));
|
|
410025
410052
|
} else {
|
|
@@ -501863,25 +501890,50 @@ function isBlockedV6(address) {
|
|
|
501863
501890
|
return false;
|
|
501864
501891
|
if (lower === "::")
|
|
501865
501892
|
return true;
|
|
501866
|
-
const
|
|
501867
|
-
if (
|
|
501868
|
-
return
|
|
501893
|
+
const g2 = expandIPv6Groups(lower);
|
|
501894
|
+
if (!g2)
|
|
501895
|
+
return false;
|
|
501896
|
+
const embeddedV4 = extractEmbeddedIPv4(g2);
|
|
501897
|
+
if (embeddedV4 !== null) {
|
|
501898
|
+
return isBlockedV4(embeddedV4);
|
|
501869
501899
|
}
|
|
501870
|
-
if (
|
|
501900
|
+
if (g2[0] >= 64512 && g2[0] <= 65023) {
|
|
501871
501901
|
return true;
|
|
501872
501902
|
}
|
|
501873
|
-
|
|
501874
|
-
if (firstHextet && firstHextet.length === 4 && firstHextet >= "fe80" && firstHextet <= "febf") {
|
|
501903
|
+
if (g2[0] >= 65152 && g2[0] <= 65215) {
|
|
501875
501904
|
return true;
|
|
501876
501905
|
}
|
|
501877
501906
|
return false;
|
|
501878
501907
|
}
|
|
501908
|
+
function extractEmbeddedIPv4(g2) {
|
|
501909
|
+
if (g2.length !== 8)
|
|
501910
|
+
return null;
|
|
501911
|
+
if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
|
|
501912
|
+
return composeV4(g2[6], g2[7]);
|
|
501913
|
+
}
|
|
501914
|
+
if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 0) {
|
|
501915
|
+
return composeV4(g2[6], g2[7]);
|
|
501916
|
+
}
|
|
501917
|
+
if (g2[0] === 8194) {
|
|
501918
|
+
return composeV4(g2[1], g2[2]);
|
|
501919
|
+
}
|
|
501920
|
+
if (g2[0] >= 65152 && g2[0] <= 65215 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 24318) {
|
|
501921
|
+
return composeV4(g2[6], g2[7]);
|
|
501922
|
+
}
|
|
501923
|
+
return null;
|
|
501924
|
+
}
|
|
501925
|
+
function composeV4(hi, lo) {
|
|
501926
|
+
return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
|
|
501927
|
+
}
|
|
501879
501928
|
function expandIPv6Groups(addr) {
|
|
501880
501929
|
let tailHextets = [];
|
|
501881
501930
|
if (addr.includes(".")) {
|
|
501882
501931
|
const lastColon = addr.lastIndexOf(":");
|
|
501883
501932
|
const v4 = addr.slice(lastColon + 1);
|
|
501884
501933
|
addr = addr.slice(0, lastColon);
|
|
501934
|
+
if (addr === ":") {
|
|
501935
|
+
addr = "::";
|
|
501936
|
+
}
|
|
501885
501937
|
const octets = v4.split(".").map(Number);
|
|
501886
501938
|
if (octets.length !== 4 || octets.some((n3) => !Number.isInteger(n3) || n3 < 0 || n3 > 255)) {
|
|
501887
501939
|
return null;
|
|
@@ -501915,17 +501967,6 @@ function expandIPv6Groups(addr) {
|
|
|
501915
501967
|
nums.push(...tailHextets);
|
|
501916
501968
|
return nums.length === 8 ? nums : null;
|
|
501917
501969
|
}
|
|
501918
|
-
function extractMappedIPv4(addr) {
|
|
501919
|
-
const g2 = expandIPv6Groups(addr);
|
|
501920
|
-
if (!g2)
|
|
501921
|
-
return null;
|
|
501922
|
-
if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
|
|
501923
|
-
const hi = g2[6];
|
|
501924
|
-
const lo = g2[7];
|
|
501925
|
-
return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
|
|
501926
|
-
}
|
|
501927
|
-
return null;
|
|
501928
|
-
}
|
|
501929
501970
|
function ssrfGuardedLookup(hostname4, options, callback) {
|
|
501930
501971
|
const wantsAll = "all" in options && options.all === true;
|
|
501931
501972
|
const ipVersion = isIP4(hostname4);
|
|
@@ -566386,6 +566427,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566386
566427
|
}
|
|
566387
566428
|
const originalSettings = getSettingsForSource("localSettings") || {};
|
|
566388
566429
|
const originalProjectConfig = { ...projectConfig };
|
|
566430
|
+
const originalSettingsHash = JSON.stringify(originalSettings);
|
|
566389
566431
|
const migratedFields = [];
|
|
566390
566432
|
const updates = {};
|
|
566391
566433
|
try {
|
|
@@ -566450,6 +566492,11 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566450
566492
|
}
|
|
566451
566493
|
return updated;
|
|
566452
566494
|
});
|
|
566495
|
+
const currentSettings = getSettingsForSource("localSettings") || {};
|
|
566496
|
+
const currentSettingsHash = JSON.stringify(currentSettings);
|
|
566497
|
+
if (currentSettingsHash !== originalSettingsHash) {
|
|
566498
|
+
logError2("MIGRATION WARNING: Settings file was modified concurrently during migration. " + "The migration will overwrite concurrent changes, potentially causing data loss. " + "Original settings hash: " + originalSettingsHash + ", Current settings hash: " + currentSettingsHash);
|
|
566499
|
+
}
|
|
566453
566500
|
updateSettingsForSource("localSettings", updates);
|
|
566454
566501
|
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566455
566502
|
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
@@ -566459,15 +566506,20 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566459
566506
|
} catch (error49) {
|
|
566460
566507
|
logError2("Failed to migrate MCP server settings, rolling back", error49);
|
|
566461
566508
|
let rollbackFailed = false;
|
|
566462
|
-
const rollbackUpdates = {};
|
|
566463
|
-
for (const field of migratedFields) {
|
|
566464
|
-
if (field in originalSettings) {
|
|
566465
|
-
rollbackUpdates[field] = originalSettings[field];
|
|
566466
|
-
} else {
|
|
566467
|
-
rollbackUpdates[field] = undefined;
|
|
566468
|
-
}
|
|
566469
|
-
}
|
|
566470
566509
|
try {
|
|
566510
|
+
const currentSettings = getSettingsForSource("localSettings") || {};
|
|
566511
|
+
const currentSettingsHash = JSON.stringify(currentSettings);
|
|
566512
|
+
if (currentSettingsHash !== originalSettingsHash) {
|
|
566513
|
+
logError2("MIGRATION WARNING: Settings file was modified concurrently. " + "The rollback will overwrite concurrent changes, potentially causing data loss. " + "Original settings hash: " + originalSettingsHash + ", Current settings hash: " + currentSettingsHash);
|
|
566514
|
+
}
|
|
566515
|
+
const rollbackUpdates = {};
|
|
566516
|
+
for (const field of migratedFields) {
|
|
566517
|
+
if (field in originalSettings) {
|
|
566518
|
+
rollbackUpdates[field] = originalSettings[field];
|
|
566519
|
+
} else {
|
|
566520
|
+
deleteSettingsField("localSettings", field);
|
|
566521
|
+
}
|
|
566522
|
+
}
|
|
566471
566523
|
updateSettingsForSource("localSettings", rollbackUpdates);
|
|
566472
566524
|
} catch (rollbackError) {
|
|
566473
566525
|
logError2("Rollback of settings failed", rollbackError);
|
|
@@ -566564,9 +566616,23 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
|
|
|
566564
566616
|
return prev;
|
|
566565
566617
|
if (prev.remoteControlAtStartup !== undefined)
|
|
566566
566618
|
return prev;
|
|
566567
|
-
const { replBridgeEnabled: _2, ...next } = prev;
|
|
566568
566619
|
const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
|
|
566569
|
-
return { ...
|
|
566620
|
+
return { ...prev, remoteControlAtStartup: newValue };
|
|
566621
|
+
});
|
|
566622
|
+
saveGlobalConfig((prev) => {
|
|
566623
|
+
const oldValue = prev["replBridgeEnabled"];
|
|
566624
|
+
if (oldValue === undefined)
|
|
566625
|
+
return prev;
|
|
566626
|
+
if (prev.remoteControlAtStartup === undefined) {
|
|
566627
|
+
const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
|
|
566628
|
+
return {
|
|
566629
|
+
...prev,
|
|
566630
|
+
remoteControlAtStartup: newValue,
|
|
566631
|
+
replBridgeEnabled: undefined
|
|
566632
|
+
};
|
|
566633
|
+
}
|
|
566634
|
+
const { replBridgeEnabled: _2, ...next } = prev;
|
|
566635
|
+
return next;
|
|
566570
566636
|
});
|
|
566571
566637
|
}
|
|
566572
566638
|
var init_migrateReplBridgeEnabledToRemoteControlAtStartup = __esm(() => {
|
package/dist/myclaude.mjs
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// MACRO - build-time constants (injected by build.ts)
|
|
5
5
|
// MACRO injected by build script
|
|
6
6
|
globalThis.MACRO = {
|
|
7
|
-
VERSION: "0.1.
|
|
8
|
-
BUILD_TIME: "2026-07-
|
|
7
|
+
VERSION: "0.1.165",
|
|
8
|
+
BUILD_TIME: "2026-07-31T00:20:09.749Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -61328,6 +61328,30 @@ function updateSettingsForSource(source, settings) {
|
|
|
61328
61328
|
}
|
|
61329
61329
|
return { error: null };
|
|
61330
61330
|
}
|
|
61331
|
+
function deleteSettingsField(source, field) {
|
|
61332
|
+
if (source === "policySettings" || source === "flagSettings") {
|
|
61333
|
+
return { error: null };
|
|
61334
|
+
}
|
|
61335
|
+
const filePath = getSettingsFilePathForSource(source);
|
|
61336
|
+
if (!filePath) {
|
|
61337
|
+
return { error: null };
|
|
61338
|
+
}
|
|
61339
|
+
try {
|
|
61340
|
+
getFsImplementation().mkdirSync(dirname13(filePath));
|
|
61341
|
+
let existingSettings = getSettingsForSourceUncached(source);
|
|
61342
|
+
if (!existingSettings) {
|
|
61343
|
+
return { error: null };
|
|
61344
|
+
}
|
|
61345
|
+
delete existingSettings[field];
|
|
61346
|
+
writeFileSyncAndFlush_DEPRECATED(filePath, jsonStringify(existingSettings));
|
|
61347
|
+
resetSettingsCache();
|
|
61348
|
+
return { error: null };
|
|
61349
|
+
} catch (e) {
|
|
61350
|
+
const error49 = new Error(`Failed to delete field ${field} from settings source ${source}: ${e}`);
|
|
61351
|
+
logError2(error49);
|
|
61352
|
+
return { error: error49 };
|
|
61353
|
+
}
|
|
61354
|
+
}
|
|
61331
61355
|
function mergeArrays(targetArray, sourceArray) {
|
|
61332
61356
|
return uniq([...targetArray, ...sourceArray]);
|
|
61333
61357
|
}
|
|
@@ -119829,7 +119853,7 @@ var package_default;
|
|
|
119829
119853
|
var init_package = __esm(() => {
|
|
119830
119854
|
package_default = {
|
|
119831
119855
|
name: "@funnycode/myclaude",
|
|
119832
|
-
version: "0.1.
|
|
119856
|
+
version: "0.1.165",
|
|
119833
119857
|
private: false,
|
|
119834
119858
|
description: "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
119835
119859
|
license: "MIT",
|
|
@@ -410020,6 +410044,9 @@ function getDirectoryFingerprint(dirPath) {
|
|
|
410020
410044
|
const fullPath = join105(dirPath, entry);
|
|
410021
410045
|
const stat37 = fs13.statSync(fullPath);
|
|
410022
410046
|
if (stat37.isDirectory()) {
|
|
410047
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist" || entry === "build" || entry === ".next" || entry === "out" || entry === "coverage") {
|
|
410048
|
+
continue;
|
|
410049
|
+
}
|
|
410023
410050
|
fingerprintParts.push(entry + "/");
|
|
410024
410051
|
fingerprintParts.push(getDirectoryFingerprint(fullPath));
|
|
410025
410052
|
} else {
|
|
@@ -501863,25 +501890,50 @@ function isBlockedV6(address) {
|
|
|
501863
501890
|
return false;
|
|
501864
501891
|
if (lower === "::")
|
|
501865
501892
|
return true;
|
|
501866
|
-
const
|
|
501867
|
-
if (
|
|
501868
|
-
return
|
|
501893
|
+
const g2 = expandIPv6Groups(lower);
|
|
501894
|
+
if (!g2)
|
|
501895
|
+
return false;
|
|
501896
|
+
const embeddedV4 = extractEmbeddedIPv4(g2);
|
|
501897
|
+
if (embeddedV4 !== null) {
|
|
501898
|
+
return isBlockedV4(embeddedV4);
|
|
501869
501899
|
}
|
|
501870
|
-
if (
|
|
501900
|
+
if (g2[0] >= 64512 && g2[0] <= 65023) {
|
|
501871
501901
|
return true;
|
|
501872
501902
|
}
|
|
501873
|
-
|
|
501874
|
-
if (firstHextet && firstHextet.length === 4 && firstHextet >= "fe80" && firstHextet <= "febf") {
|
|
501903
|
+
if (g2[0] >= 65152 && g2[0] <= 65215) {
|
|
501875
501904
|
return true;
|
|
501876
501905
|
}
|
|
501877
501906
|
return false;
|
|
501878
501907
|
}
|
|
501908
|
+
function extractEmbeddedIPv4(g2) {
|
|
501909
|
+
if (g2.length !== 8)
|
|
501910
|
+
return null;
|
|
501911
|
+
if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
|
|
501912
|
+
return composeV4(g2[6], g2[7]);
|
|
501913
|
+
}
|
|
501914
|
+
if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 0) {
|
|
501915
|
+
return composeV4(g2[6], g2[7]);
|
|
501916
|
+
}
|
|
501917
|
+
if (g2[0] === 8194) {
|
|
501918
|
+
return composeV4(g2[1], g2[2]);
|
|
501919
|
+
}
|
|
501920
|
+
if (g2[0] >= 65152 && g2[0] <= 65215 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 24318) {
|
|
501921
|
+
return composeV4(g2[6], g2[7]);
|
|
501922
|
+
}
|
|
501923
|
+
return null;
|
|
501924
|
+
}
|
|
501925
|
+
function composeV4(hi, lo) {
|
|
501926
|
+
return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
|
|
501927
|
+
}
|
|
501879
501928
|
function expandIPv6Groups(addr) {
|
|
501880
501929
|
let tailHextets = [];
|
|
501881
501930
|
if (addr.includes(".")) {
|
|
501882
501931
|
const lastColon = addr.lastIndexOf(":");
|
|
501883
501932
|
const v4 = addr.slice(lastColon + 1);
|
|
501884
501933
|
addr = addr.slice(0, lastColon);
|
|
501934
|
+
if (addr === ":") {
|
|
501935
|
+
addr = "::";
|
|
501936
|
+
}
|
|
501885
501937
|
const octets = v4.split(".").map(Number);
|
|
501886
501938
|
if (octets.length !== 4 || octets.some((n3) => !Number.isInteger(n3) || n3 < 0 || n3 > 255)) {
|
|
501887
501939
|
return null;
|
|
@@ -501915,17 +501967,6 @@ function expandIPv6Groups(addr) {
|
|
|
501915
501967
|
nums.push(...tailHextets);
|
|
501916
501968
|
return nums.length === 8 ? nums : null;
|
|
501917
501969
|
}
|
|
501918
|
-
function extractMappedIPv4(addr) {
|
|
501919
|
-
const g2 = expandIPv6Groups(addr);
|
|
501920
|
-
if (!g2)
|
|
501921
|
-
return null;
|
|
501922
|
-
if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
|
|
501923
|
-
const hi = g2[6];
|
|
501924
|
-
const lo = g2[7];
|
|
501925
|
-
return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
|
|
501926
|
-
}
|
|
501927
|
-
return null;
|
|
501928
|
-
}
|
|
501929
501970
|
function ssrfGuardedLookup(hostname4, options, callback) {
|
|
501930
501971
|
const wantsAll = "all" in options && options.all === true;
|
|
501931
501972
|
const ipVersion = isIP4(hostname4);
|
|
@@ -566386,6 +566427,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566386
566427
|
}
|
|
566387
566428
|
const originalSettings = getSettingsForSource("localSettings") || {};
|
|
566388
566429
|
const originalProjectConfig = { ...projectConfig };
|
|
566430
|
+
const originalSettingsHash = JSON.stringify(originalSettings);
|
|
566389
566431
|
const migratedFields = [];
|
|
566390
566432
|
const updates = {};
|
|
566391
566433
|
try {
|
|
@@ -566450,6 +566492,11 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566450
566492
|
}
|
|
566451
566493
|
return updated;
|
|
566452
566494
|
});
|
|
566495
|
+
const currentSettings = getSettingsForSource("localSettings") || {};
|
|
566496
|
+
const currentSettingsHash = JSON.stringify(currentSettings);
|
|
566497
|
+
if (currentSettingsHash !== originalSettingsHash) {
|
|
566498
|
+
logError2("MIGRATION WARNING: Settings file was modified concurrently during migration. " + "The migration will overwrite concurrent changes, potentially causing data loss. " + "Original settings hash: " + originalSettingsHash + ", Current settings hash: " + currentSettingsHash);
|
|
566499
|
+
}
|
|
566453
566500
|
updateSettingsForSource("localSettings", updates);
|
|
566454
566501
|
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566455
566502
|
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
@@ -566459,15 +566506,20 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566459
566506
|
} catch (error49) {
|
|
566460
566507
|
logError2("Failed to migrate MCP server settings, rolling back", error49);
|
|
566461
566508
|
let rollbackFailed = false;
|
|
566462
|
-
const rollbackUpdates = {};
|
|
566463
|
-
for (const field of migratedFields) {
|
|
566464
|
-
if (field in originalSettings) {
|
|
566465
|
-
rollbackUpdates[field] = originalSettings[field];
|
|
566466
|
-
} else {
|
|
566467
|
-
rollbackUpdates[field] = undefined;
|
|
566468
|
-
}
|
|
566469
|
-
}
|
|
566470
566509
|
try {
|
|
566510
|
+
const currentSettings = getSettingsForSource("localSettings") || {};
|
|
566511
|
+
const currentSettingsHash = JSON.stringify(currentSettings);
|
|
566512
|
+
if (currentSettingsHash !== originalSettingsHash) {
|
|
566513
|
+
logError2("MIGRATION WARNING: Settings file was modified concurrently. " + "The rollback will overwrite concurrent changes, potentially causing data loss. " + "Original settings hash: " + originalSettingsHash + ", Current settings hash: " + currentSettingsHash);
|
|
566514
|
+
}
|
|
566515
|
+
const rollbackUpdates = {};
|
|
566516
|
+
for (const field of migratedFields) {
|
|
566517
|
+
if (field in originalSettings) {
|
|
566518
|
+
rollbackUpdates[field] = originalSettings[field];
|
|
566519
|
+
} else {
|
|
566520
|
+
deleteSettingsField("localSettings", field);
|
|
566521
|
+
}
|
|
566522
|
+
}
|
|
566471
566523
|
updateSettingsForSource("localSettings", rollbackUpdates);
|
|
566472
566524
|
} catch (rollbackError) {
|
|
566473
566525
|
logError2("Rollback of settings failed", rollbackError);
|
|
@@ -566564,9 +566616,23 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
|
|
|
566564
566616
|
return prev;
|
|
566565
566617
|
if (prev.remoteControlAtStartup !== undefined)
|
|
566566
566618
|
return prev;
|
|
566567
|
-
const { replBridgeEnabled: _2, ...next } = prev;
|
|
566568
566619
|
const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
|
|
566569
|
-
return { ...
|
|
566620
|
+
return { ...prev, remoteControlAtStartup: newValue };
|
|
566621
|
+
});
|
|
566622
|
+
saveGlobalConfig((prev) => {
|
|
566623
|
+
const oldValue = prev["replBridgeEnabled"];
|
|
566624
|
+
if (oldValue === undefined)
|
|
566625
|
+
return prev;
|
|
566626
|
+
if (prev.remoteControlAtStartup === undefined) {
|
|
566627
|
+
const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
|
|
566628
|
+
return {
|
|
566629
|
+
...prev,
|
|
566630
|
+
remoteControlAtStartup: newValue,
|
|
566631
|
+
replBridgeEnabled: undefined
|
|
566632
|
+
};
|
|
566633
|
+
}
|
|
566634
|
+
const { replBridgeEnabled: _2, ...next } = prev;
|
|
566635
|
+
return next;
|
|
566570
566636
|
});
|
|
566571
566637
|
}
|
|
566572
566638
|
var init_migrateReplBridgeEnabledToRemoteControlAtStartup = __esm(() => {
|