shortcutxl 0.3.58 → 0.3.59

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-06-03T02:10:49.171Z",
3
+ "generatedAt": "2026-06-03T05:23:21.387Z",
4
4
  "package": "shortcutxl",
5
5
  "binaryExtensions": [
6
6
  ".dll",
@@ -11,7 +11,7 @@
11
11
  "files": [
12
12
  {
13
13
  "path": "xll/ShortcutXL.xll",
14
- "sha256": "91d5e9bc42975aa414b3a4ac7f18ea1ba3d4bcbc94d4bee3d4d7dfcf33fbbaae",
14
+ "sha256": "3852e0b282c00d510c51da0501cac4971f335d4c99dba6272f15b335ad5068fd",
15
15
  "source": "ShortcutXL native XLL build",
16
16
  "version": "package",
17
17
  "builtBy": "shortcut",
@@ -523,7 +523,7 @@
523
523
  },
524
524
  {
525
525
  "path": "xll/python/Scripts/httpx.exe",
526
- "sha256": "5ece6fa700d232d712b90b2e70541b1f51fcdd3e9d3dc91e7f1c44f37d30a5c3",
526
+ "sha256": "84a59a562fcdd84adaa995aba93673f883ad1b3dc06708fcb268ea3275f839cd",
527
527
  "source": "httpx console launcher installed into embedded Python",
528
528
  "version": "see packaged httpx distribution",
529
529
  "builtBy": "third-party",
@@ -531,7 +531,7 @@
531
531
  },
532
532
  {
533
533
  "path": "xll/python/Scripts/idna.exe",
534
- "sha256": "abd6d50042c4b240cf42a5a7d6081a0cb79d15358c18641ba856b60322b2b74c",
534
+ "sha256": "a5bd06e740a8c4af1bd8d7883efc7ad16b0b2151b2a9e59ef6d64282c164a56b",
535
535
  "source": "Python package console launcher installed into embedded Python",
536
536
  "version": "see owning Python package metadata in site-packages",
537
537
  "builtBy": "third-party",
@@ -539,7 +539,7 @@
539
539
  },
540
540
  {
541
541
  "path": "xll/python/Scripts/pip.exe",
542
- "sha256": "efa224c01b807029586cfbce3c40d7fb543d905b52cf765d898e9d3db1123f28",
542
+ "sha256": "2e4bed34ea1c99aee03259cf79f1fd9a56a9900cafd7ecb60c818c45e1125533",
543
543
  "source": "pip console launcher installed into embedded Python",
544
544
  "version": "see packaged pip distribution",
545
545
  "builtBy": "third-party",
@@ -547,7 +547,7 @@
547
547
  },
548
548
  {
549
549
  "path": "xll/python/Scripts/pip3.13.exe",
550
- "sha256": "efa224c01b807029586cfbce3c40d7fb543d905b52cf765d898e9d3db1123f28",
550
+ "sha256": "2e4bed34ea1c99aee03259cf79f1fd9a56a9900cafd7ecb60c818c45e1125533",
551
551
  "source": "pip console launcher installed into embedded Python",
552
552
  "version": "see packaged pip distribution",
553
553
  "builtBy": "third-party",
@@ -555,7 +555,7 @@
555
555
  },
556
556
  {
557
557
  "path": "xll/python/Scripts/pip3.exe",
558
- "sha256": "efa224c01b807029586cfbce3c40d7fb543d905b52cf765d898e9d3db1123f28",
558
+ "sha256": "2e4bed34ea1c99aee03259cf79f1fd9a56a9900cafd7ecb60c818c45e1125533",
559
559
  "source": "pip console launcher installed into embedded Python",
560
560
  "version": "see packaged pip distribution",
561
561
  "builtBy": "third-party",
@@ -563,7 +563,7 @@
563
563
  },
564
564
  {
565
565
  "path": "xll/python/Scripts/pywin32_postinstall.exe",
566
- "sha256": "84f0a317e3016c29569be3f101db2d3557914d84c4cca693a707866d12b45fdb",
566
+ "sha256": "7c02775810d083f1e70a026c2ea80ea086373bdaac811a9a4f1c19dad9e54e6f",
567
567
  "source": "Python package console launcher installed into embedded Python",
568
568
  "version": "see owning Python package metadata in site-packages",
569
569
  "builtBy": "third-party",
@@ -571,7 +571,7 @@
571
571
  },
572
572
  {
573
573
  "path": "xll/python/Scripts/pywin32_testall.exe",
574
- "sha256": "3b6e27fe46b31904a8c760d3c70518d5eeb0d95b585e02daf93682fbe2c290f1",
574
+ "sha256": "ba14591c7c28b8e58a291040d70b0acff797598645abfc4f9eb4e2f3b6e0b9c7",
575
575
  "source": "Python package console launcher installed into embedded Python",
576
576
  "version": "see owning Python package metadata in site-packages",
577
577
  "builtBy": "third-party",
package/CHANGELOG.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Changelog
2
2
 
3
- ## [0.3.58]
3
+ ## [0.3.59]
4
4
 
5
- - **Improved update reliability** - ShortcutXL now shows clearer update errors when Windows blocks a global package upgrade.
5
+ - **Security and model updates** - Strengthened account policy checks and updated model routing/defaults.
6
6
 
7
7
  ## [0.3.57]
8
8
 
package/dist/cli.js CHANGED
@@ -167005,9 +167005,9 @@ var require_buffer_from = __commonJS({
167005
167005
  }
167006
167006
  });
167007
167007
 
167008
- // ../../node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map-support/source-map-support.js
167008
+ // ../../node_modules/.pnpm/source-map-support@0.5.13/node_modules/source-map-support/source-map-support.js
167009
167009
  var require_source_map_support = __commonJS({
167010
- "../../node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map-support/source-map-support.js"(exports, module) {
167010
+ "../../node_modules/.pnpm/source-map-support@0.5.13/node_modules/source-map-support/source-map-support.js"(exports) {
167011
167011
  var SourceMapConsumer = require_source_map().SourceMapConsumer;
167012
167012
  var path21 = __require("path");
167013
167013
  var fs16;
@@ -167019,9 +167019,6 @@ var require_source_map_support = __commonJS({
167019
167019
  } catch (err) {
167020
167020
  }
167021
167021
  var bufferFrom = require_buffer_from();
167022
- function dynamicRequire(mod, request) {
167023
- return mod.require(request);
167024
- }
167025
167022
  var errorFormatterInstalled = false;
167026
167023
  var uncaughtShimInstalled = false;
167027
167024
  var emptyCacheBetweenOperations = false;
@@ -167041,23 +167038,6 @@ var require_source_map_support = __commonJS({
167041
167038
  function hasGlobalProcessEventEmitter() {
167042
167039
  return typeof process === "object" && process !== null && typeof process.on === "function";
167043
167040
  }
167044
- function globalProcessVersion() {
167045
- if (typeof process === "object" && process !== null) {
167046
- return process.version;
167047
- } else {
167048
- return "";
167049
- }
167050
- }
167051
- function globalProcessStderr() {
167052
- if (typeof process === "object" && process !== null) {
167053
- return process.stderr;
167054
- }
167055
- }
167056
- function globalProcessExit(code) {
167057
- if (typeof process === "object" && process !== null && typeof process.exit === "function") {
167058
- return process.exit(code);
167059
- }
167060
- }
167061
167041
  function handlerExec(list2) {
167062
167042
  return function(arg) {
167063
167043
  for (var i2 = 0; i2 < list2.length; i2++) {
@@ -167282,20 +167262,15 @@ var require_source_map_support = __commonJS({
167282
167262
  object3.toString = CallSiteToString;
167283
167263
  return object3;
167284
167264
  }
167285
- function wrapCallSite(frame, state) {
167286
- if (state === void 0) {
167287
- state = { nextPosition: null, curPosition: null };
167288
- }
167265
+ function wrapCallSite(frame) {
167289
167266
  if (frame.isNative()) {
167290
- state.curPosition = null;
167291
167267
  return frame;
167292
167268
  }
167293
167269
  var source = frame.getFileName() || frame.getScriptNameOrSourceURL();
167294
167270
  if (source) {
167295
167271
  var line = frame.getLineNumber();
167296
167272
  var column = frame.getColumnNumber() - 1;
167297
- var noHeader = /^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;
167298
- var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;
167273
+ var headerLength = 62;
167299
167274
  if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {
167300
167275
  column -= headerLength;
167301
167276
  }
@@ -167304,14 +167279,10 @@ var require_source_map_support = __commonJS({
167304
167279
  line,
167305
167280
  column
167306
167281
  });
167307
- state.curPosition = position;
167308
167282
  frame = cloneCallSite(frame);
167309
167283
  var originalFunctionName = frame.getFunctionName;
167310
167284
  frame.getFunctionName = function() {
167311
- if (state.nextPosition == null) {
167312
- return originalFunctionName();
167313
- }
167314
- return state.nextPosition.name || originalFunctionName();
167285
+ return position.name || originalFunctionName();
167315
167286
  };
167316
167287
  frame.getFileName = function() {
167317
167288
  return position.source;
@@ -167346,14 +167317,9 @@ var require_source_map_support = __commonJS({
167346
167317
  var name = error2.name || "Error";
167347
167318
  var message = error2.message || "";
167348
167319
  var errorString = name + ": " + message;
167349
- var state = { nextPosition: null, curPosition: null };
167350
- var processedStack = [];
167351
- for (var i2 = stack.length - 1; i2 >= 0; i2--) {
167352
- processedStack.push("\n at " + wrapCallSite(stack[i2], state));
167353
- state.nextPosition = state.curPosition;
167354
- }
167355
- state.curPosition = state.nextPosition = null;
167356
- return errorString + processedStack.reverse().join("");
167320
+ return errorString + stack.map(function(frame) {
167321
+ return "\n at " + wrapCallSite(frame);
167322
+ }).join("");
167357
167323
  }
167358
167324
  function getErrorSource(error2) {
167359
167325
  var match2 = /\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(error2.stack);
@@ -167380,16 +167346,15 @@ var require_source_map_support = __commonJS({
167380
167346
  }
167381
167347
  function printErrorAndExit(error2) {
167382
167348
  var source = getErrorSource(error2);
167383
- var stderr = globalProcessStderr();
167384
- if (stderr && stderr._handle && stderr._handle.setBlocking) {
167385
- stderr._handle.setBlocking(true);
167349
+ if (process.stderr._handle && process.stderr._handle.setBlocking) {
167350
+ process.stderr._handle.setBlocking(true);
167386
167351
  }
167387
167352
  if (source) {
167388
167353
  console.error();
167389
167354
  console.error(source);
167390
167355
  }
167391
167356
  console.error(error2.stack);
167392
- globalProcessExit(1);
167357
+ process.exit(1);
167393
167358
  }
167394
167359
  function shimEmitUncaughtException() {
167395
167360
  var origEmit = process.emit;
@@ -167431,7 +167396,11 @@ var require_source_map_support = __commonJS({
167431
167396
  retrieveMapHandlers.unshift(options2.retrieveSourceMap);
167432
167397
  }
167433
167398
  if (options2.hookRequire && !isInBrowser()) {
167434
- var Module2 = dynamicRequire(module, "module");
167399
+ var Module2;
167400
+ try {
167401
+ Module2 = __require("module");
167402
+ } catch (err) {
167403
+ }
167435
167404
  var $compile = Module2.prototype._compile;
167436
167405
  if (!$compile.__sourceMapSupport) {
167437
167406
  Module2.prototype._compile = function(content, filename) {
@@ -167451,13 +167420,6 @@ var require_source_map_support = __commonJS({
167451
167420
  }
167452
167421
  if (!uncaughtShimInstalled) {
167453
167422
  var installHandler = "handleUncaughtExceptions" in options2 ? options2.handleUncaughtExceptions : true;
167454
- try {
167455
- var worker_threads = dynamicRequire(module, "worker_threads");
167456
- if (worker_threads.isMainThread === false) {
167457
- installHandler = false;
167458
- }
167459
- } catch (e2) {
167460
- }
167461
167423
  if (installHandler && hasGlobalProcessEventEmitter()) {
167462
167424
  uncaughtShimInstalled = true;
167463
167425
  shimEmitUncaughtException();
@@ -474973,7 +474935,7 @@ function syncXll() {
474973
474935
  try {
474974
474936
  const { updated, staleLocked } = syncDir(shippedDir, stableDir);
474975
474937
  totalUpdated += updated;
474976
- hasStaleLockedFiles = staleLocked;
474938
+ hasStaleLockedFiles = hasStaleLockedFiles || staleLocked;
474977
474939
  if (staleLocked) {
474978
474940
  console.warn(
474979
474941
  "Warning: A ShortcutXL update is available but Excel has files locked. Please close Excel and restart the Shortcut agent to apply it."
@@ -478818,26 +478780,26 @@ async function runForegroundUpdate(request, deps = {}) {
478818
478780
  kind: "failed",
478819
478781
  exitCode,
478820
478782
  signal,
478821
- message: summarizeUpdateFailure(capturedOutput),
478783
+ message: summarizeUpdateFailure(capturedOutput, request.command),
478822
478784
  logPath
478823
478785
  });
478824
478786
  });
478825
478787
  });
478826
478788
  }
478827
- function summarizeUpdateFailure(output) {
478789
+ function summarizeUpdateFailure(output, updateCommand) {
478828
478790
  if (/EEXIST[\s\S]*shortcut\.cmd/i.test(output) || /File exists:[\s\S]*shortcut\.cmd/i.test(output)) {
478829
478791
  return [
478830
478792
  "ShortcutXL could not update because an existing global `shortcut` command blocked npm from replacing it.",
478831
- "Close any running ShortcutXL terminals, then run `npm uninstall -g shortcutxl` followed by `npm install -g shortcutxl@latest`."
478793
+ `Close any running ShortcutXL terminals, remove the existing global ShortcutXL package, then retry \`${updateCommand}\`.`
478832
478794
  ].join(" ");
478833
478795
  }
478834
478796
  if (/EPERM|ENOTEMPTY|ENOENT/i.test(output) && /AppData[\\/]+Roaming[\\/]+npm[\\/]+node_modules[\\/]+shortcutxl/i.test(output)) {
478835
478797
  return [
478836
478798
  "ShortcutXL could not update because npm could not clean up the previous global install.",
478837
- "Close ShortcutXL terminals and retry `npm install -g shortcutxl@latest`."
478799
+ `Close ShortcutXL terminals and retry \`${updateCommand}\`.`
478838
478800
  ].join(" ");
478839
478801
  }
478840
- return "ShortcutXL could not update automatically. Retry with `npm install -g shortcutxl@latest`.";
478802
+ return `ShortcutXL could not update automatically. Retry with \`${updateCommand}\`.`;
478841
478803
  }
478842
478804
  function writeUpdateFailureLog({
478843
478805
  command,
@@ -481210,7 +481172,9 @@ async function main(args) {
481210
481172
  process.exit(updateResult.exitCode ?? 1);
481211
481173
  }
481212
481174
  console.log(source_default.green(`Update to v${updatePromptOutcome.update.latestVersion} succeeded.`));
481213
- console.log(source_default.green("Launching ShortcutXL..."));
481175
+ console.log(source_default.green("Restart ShortcutXL to finish applying the update:"));
481176
+ console.log(source_default.bold(" shortcut"));
481177
+ process.exit(0);
481214
481178
  }
481215
481179
  initTheme(settingsManager.getTheme(), isInteractive);
481216
481180
  sessionManager = await createSessionManager2(parsed, cwd);
package/dist/main.js CHANGED
@@ -678,7 +678,9 @@ export async function main(args) {
678
678
  process.exit(updateResult.exitCode ?? 1);
679
679
  }
680
680
  console.log(chalk.green(`Update to v${updatePromptOutcome.update.latestVersion} succeeded.`));
681
- console.log(chalk.green('Launching ShortcutXL...'));
681
+ console.log(chalk.green('Restart ShortcutXL to finish applying the update:'));
682
+ console.log(chalk.bold(' shortcut'));
683
+ process.exit(0);
682
684
  }
683
685
  initTheme(settingsManager.getTheme(), isInteractive);
684
686
  // Create session manager based on CLI flags
@@ -178,7 +178,7 @@ export function syncXll() {
178
178
  try {
179
179
  const { updated, staleLocked } = syncDir(shippedDir, stableDir);
180
180
  totalUpdated += updated;
181
- hasStaleLockedFiles = staleLocked;
181
+ hasStaleLockedFiles = hasStaleLockedFiles || staleLocked;
182
182
  if (staleLocked) {
183
183
  console.warn('Warning: A ShortcutXL update is available but Excel has files locked. ' +
184
184
  'Please close Excel and restart the Shortcut agent to apply it.');
@@ -63,28 +63,28 @@ export async function runForegroundUpdate(request, deps = {}) {
63
63
  kind: 'failed',
64
64
  exitCode,
65
65
  signal,
66
- message: summarizeUpdateFailure(capturedOutput),
66
+ message: summarizeUpdateFailure(capturedOutput, request.command),
67
67
  logPath
68
68
  });
69
69
  });
70
70
  });
71
71
  }
72
- function summarizeUpdateFailure(output) {
72
+ function summarizeUpdateFailure(output, updateCommand) {
73
73
  if (/EEXIST[\s\S]*shortcut\.cmd/i.test(output) ||
74
74
  /File exists:[\s\S]*shortcut\.cmd/i.test(output)) {
75
75
  return [
76
76
  'ShortcutXL could not update because an existing global `shortcut` command blocked npm from replacing it.',
77
- 'Close any running ShortcutXL terminals, then run `npm uninstall -g shortcutxl` followed by `npm install -g shortcutxl@latest`.'
77
+ `Close any running ShortcutXL terminals, remove the existing global ShortcutXL package, then retry \`${updateCommand}\`.`
78
78
  ].join(' ');
79
79
  }
80
80
  if (/EPERM|ENOTEMPTY|ENOENT/i.test(output) &&
81
81
  /AppData[\\/]+Roaming[\\/]+npm[\\/]+node_modules[\\/]+shortcutxl/i.test(output)) {
82
82
  return [
83
83
  'ShortcutXL could not update because npm could not clean up the previous global install.',
84
- 'Close ShortcutXL terminals and retry `npm install -g shortcutxl@latest`.'
84
+ `Close ShortcutXL terminals and retry \`${updateCommand}\`.`
85
85
  ].join(' ');
86
86
  }
87
- return 'ShortcutXL could not update automatically. Retry with `npm install -g shortcutxl@latest`.';
87
+ return `ShortcutXL could not update automatically. Retry with \`${updateCommand}\`.`;
88
88
  }
89
89
  function writeUpdateFailureLog({ command, exitCode, signal, output, truncated, resolveLogPath }) {
90
90
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shortcutxl",
3
- "version": "0.3.58",
3
+ "version": "0.3.59",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- ../../Scripts/httpx.exe,sha256=Xs5vpwDSMtcSuQsucFQbH1H83T6dPckefxxE830wpcM,108375
1
+ ../../Scripts/httpx.exe,sha256=hKWaVi_N2EraqZWrqTZz-IOtGz3AZwj8smjqMnX4Oc0,108375
2
2
  httpx-0.28.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
3
  httpx-0.28.1.dist-info/METADATA,sha256=_rubD48-gNV8gZnDBPNcQzboWB0dGNeYPJJ2a4J5OyU,7052
4
4
  httpx-0.28.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
- ../../Scripts/idna.exe,sha256=q9bVAELEskDPQqWn1ggaDLedFTWMGGQbqFa2AyKyt0w,108378
1
+ ../../Scripts/idna.exe,sha256=pb0G50CoxK8b2NeIPvx60WsLIVGyqeWe9tZCgsFkpWs,108378
2
2
  idna-3.18.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
3
  idna-3.18.dist-info/METADATA,sha256=Rt_m5axGLQ9oDs2avPZugptqIzSCS02eOXmzETXK8oE,6119
4
4
  idna-3.18.dist-info/RECORD,,
@@ -1,6 +1,6 @@
1
- ../../Scripts/pip.exe,sha256=76IkwBuAcClYbPvOPEDX-1Q9kFtSz3ZdiY6dPbESPyg,108392
2
- ../../Scripts/pip3.13.exe,sha256=76IkwBuAcClYbPvOPEDX-1Q9kFtSz3ZdiY6dPbESPyg,108392
3
- ../../Scripts/pip3.exe,sha256=76IkwBuAcClYbPvOPEDX-1Q9kFtSz3ZdiY6dPbESPyg,108392
1
+ ../../Scripts/pip.exe,sha256=LkvtNOocma7gMlnPefH9mlapkAyv1-y2DIGMReESVTM,108392
2
+ ../../Scripts/pip3.13.exe,sha256=LkvtNOocma7gMlnPefH9mlapkAyv1-y2DIGMReESVTM,108392
3
+ ../../Scripts/pip3.exe,sha256=LkvtNOocma7gMlnPefH9mlapkAyv1-y2DIGMReESVTM,108392
4
4
  pip-26.1.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
5
5
  pip-26.1.2.dist-info/METADATA,sha256=F4Mt5Htdwj5GJTuhZGJSADbyjZon1cMBV3hJUspOabI,4566
6
6
  pip-26.1.2.dist-info/RECORD,,
@@ -1,8 +1,8 @@
1
1
  ../../Scripts/__pycache__/pywin32_postinstall.cpython-313.pyc,,
2
2
  ../../Scripts/__pycache__/pywin32_testall.cpython-313.pyc,,
3
- ../../Scripts/pywin32_postinstall.exe,sha256=hPCjF-MBbClWm-PxAdstNVeRTYTEzKaTpweGbRK0X9s,108403
3
+ ../../Scripts/pywin32_postinstall.exe,sha256=fAJ3WBDQg_HnCgJsLqgOoIY3O9qsgRqaTxwZ2tnlTm8,108403
4
4
  ../../Scripts/pywin32_postinstall.py,sha256=mx4WVp1hD_8xgkSXttNtto1BVDECZOc3FCClrR1SjFM,25736
5
- ../../Scripts/pywin32_testall.exe,sha256=O24n_kazGQSox2DTxwUY1e6w2VtYXgLa-TaC--LCkPE,108399
5
+ ../../Scripts/pywin32_testall.exe,sha256=uhRZHHwouOWKKRBA1wsKz_eXWYZFq_xPnrTi87bgucc,108399
6
6
  ../../Scripts/pywin32_testall.py,sha256=hyGLMKILn3_W0q-McP1VJnNFW_z5yk_gesTMQDlUocM,3847
7
7
  PyWin32.chm,sha256=S3fN4iKEUFyW4IIm3Zf5jtdrlTJLh93MzIrT9wX3z9o,2646518
8
8
  __pycache__/pythoncom.cpython-313.pyc,,
Binary file
Binary file
Binary file
Binary file
Binary file