ccstatusline 2.2.3 → 2.2.5

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.
@@ -13487,89 +13487,6 @@ var init_strip_ansi2 = __esm(() => {
13487
13487
  regex2 = ansiRegex2();
13488
13488
  });
13489
13489
 
13490
- // node_modules/wrap-ansi/node_modules/string-width/node_modules/get-east-asian-width/lookup.js
13491
- function isAmbiguous2(x) {
13492
- return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
13493
- }
13494
- function isFullWidth2(x) {
13495
- return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
13496
- }
13497
- function isWide2(x) {
13498
- return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
13499
- }
13500
- var init_lookup2 = () => {};
13501
-
13502
- // node_modules/wrap-ansi/node_modules/string-width/node_modules/get-east-asian-width/index.js
13503
- function validate2(codePoint) {
13504
- if (!Number.isSafeInteger(codePoint)) {
13505
- throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
13506
- }
13507
- }
13508
- function eastAsianWidth2(codePoint, { ambiguousAsWide = false } = {}) {
13509
- validate2(codePoint);
13510
- if (isFullWidth2(codePoint) || isWide2(codePoint) || ambiguousAsWide && isAmbiguous2(codePoint)) {
13511
- return 2;
13512
- }
13513
- return 1;
13514
- }
13515
- var init_get_east_asian_width2 = __esm(() => {
13516
- init_lookup2();
13517
- });
13518
-
13519
- // node_modules/wrap-ansi/node_modules/string-width/index.js
13520
- function stringWidth2(string, options = {}) {
13521
- if (typeof string !== "string" || string.length === 0) {
13522
- return 0;
13523
- }
13524
- const {
13525
- ambiguousIsNarrow = true,
13526
- countAnsiEscapeCodes = false
13527
- } = options;
13528
- if (!countAnsiEscapeCodes) {
13529
- string = stripAnsi2(string);
13530
- }
13531
- if (string.length === 0) {
13532
- return 0;
13533
- }
13534
- let width = 0;
13535
- const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
13536
- for (const { segment: character } of segmenter2.segment(string)) {
13537
- const codePoint = character.codePointAt(0);
13538
- if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
13539
- continue;
13540
- }
13541
- if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
13542
- continue;
13543
- }
13544
- if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
13545
- continue;
13546
- }
13547
- if (codePoint >= 55296 && codePoint <= 57343) {
13548
- continue;
13549
- }
13550
- if (codePoint >= 65024 && codePoint <= 65039) {
13551
- continue;
13552
- }
13553
- if (defaultIgnorableCodePointRegex2.test(character)) {
13554
- continue;
13555
- }
13556
- if (import_emoji_regex2.default().test(character)) {
13557
- width += 2;
13558
- continue;
13559
- }
13560
- width += eastAsianWidth2(codePoint, eastAsianWidthOptions);
13561
- }
13562
- return width;
13563
- }
13564
- var import_emoji_regex2, segmenter2, defaultIgnorableCodePointRegex2;
13565
- var init_string_width2 = __esm(() => {
13566
- init_strip_ansi2();
13567
- init_get_east_asian_width2();
13568
- import_emoji_regex2 = __toESM(require_emoji_regex(), 1);
13569
- segmenter2 = new Intl.Segmenter;
13570
- defaultIgnorableCodePointRegex2 = /^\p{Default_Ignorable_Code_Point}$/u;
13571
- });
13572
-
13573
13490
  // node_modules/wrap-ansi/node_modules/ansi-styles/index.js
13574
13491
  function assembleStyles2() {
13575
13492
  const codes = new Map;
@@ -13754,13 +13671,13 @@ function wrapAnsi(string, columns, options) {
13754
13671
  `).map((line) => exec(line, columns, options)).join(`
13755
13672
  `);
13756
13673
  }
13757
- var ESCAPES, END_CODE = 39, ANSI_ESCAPE_BELL = "\x07", ANSI_CSI = "[", ANSI_OSC = "]", ANSI_SGR_TERMINATOR = "m", ANSI_ESCAPE_LINK, wrapAnsiCode = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`, wrapAnsiHyperlink = (url) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`, wordLengths = (string) => string.split(" ").map((character) => stringWidth2(character)), wrapWord = (rows, word, columns) => {
13674
+ var ESCAPES, END_CODE = 39, ANSI_ESCAPE_BELL = "\x07", ANSI_CSI = "[", ANSI_OSC = "]", ANSI_SGR_TERMINATOR = "m", ANSI_ESCAPE_LINK, wrapAnsiCode = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`, wrapAnsiHyperlink = (url) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`, wordLengths = (string) => string.split(" ").map((character) => stringWidth(character)), wrapWord = (rows, word, columns) => {
13758
13675
  const characters = [...word];
13759
13676
  let isInsideEscape = false;
13760
13677
  let isInsideLinkEscape = false;
13761
- let visible = stringWidth2(stripAnsi2(rows.at(-1)));
13678
+ let visible = stringWidth(stripAnsi2(rows.at(-1)));
13762
13679
  for (const [index, character] of characters.entries()) {
13763
- const characterLength = stringWidth2(character);
13680
+ const characterLength = stringWidth(character);
13764
13681
  if (visible + characterLength <= columns) {
13765
13682
  rows[rows.length - 1] += character;
13766
13683
  } else {
@@ -13796,7 +13713,7 @@ var ESCAPES, END_CODE = 39, ANSI_ESCAPE_BELL = "\x07", ANSI_CSI = "[", ANSI_OSC
13796
13713
  const words2 = string.split(" ");
13797
13714
  let last2 = words2.length;
13798
13715
  while (last2 > 0) {
13799
- if (stringWidth2(words2[last2 - 1]) > 0) {
13716
+ if (stringWidth(words2[last2 - 1]) > 0) {
13800
13717
  break;
13801
13718
  }
13802
13719
  last2--;
@@ -13818,7 +13735,7 @@ var ESCAPES, END_CODE = 39, ANSI_ESCAPE_BELL = "\x07", ANSI_CSI = "[", ANSI_OSC
13818
13735
  if (options.trim !== false) {
13819
13736
  rows[rows.length - 1] = rows.at(-1).trimStart();
13820
13737
  }
13821
- let rowLength = stringWidth2(rows.at(-1));
13738
+ let rowLength = stringWidth(rows.at(-1));
13822
13739
  if (index !== 0) {
13823
13740
  if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
13824
13741
  rows.push("");
@@ -13893,7 +13810,7 @@ var ESCAPES, END_CODE = 39, ANSI_ESCAPE_BELL = "\x07", ANSI_CSI = "[", ANSI_OSC
13893
13810
  return returnValue;
13894
13811
  };
13895
13812
  var init_wrap_ansi = __esm(() => {
13896
- init_string_width2();
13813
+ init_string_width();
13897
13814
  init_strip_ansi2();
13898
13815
  init_ansi_styles2();
13899
13816
  ESCAPES = new Set([
@@ -20491,7 +20408,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
20491
20408
  }
20492
20409
  return 0;
20493
20410
  };
20494
- var validate3 = function validate4(version) {
20411
+ var validate2 = function validate3(version) {
20495
20412
  return typeof version === "string" && /^[v\d]/.test(version) && semver.test(version);
20496
20413
  };
20497
20414
  var compare = function compare2(v1, v2, operator) {
@@ -35007,12 +34924,12 @@ function findWideFastPathRange(ranges) {
35007
34924
  }
35008
34925
  return [fastPathStart, fastPathEnd];
35009
34926
  }
35010
- var minimumAmbiguousCodePoint, maximumAmbiguousCodePoint, minimumFullWidthCodePoint, maximumFullWidthCodePoint, minimumHalfWidthCodePoint, maximumHalfWidthCodePoint, minimumNarrowCodePoint, maximumNarrowCodePoint, minimumWideCodePoint, maximumWideCodePoint, commonCjkCodePoint = 19968, wideFastPathStart, wideFastPathEnd, isFullWidth3 = (codePoint) => {
34927
+ var minimumAmbiguousCodePoint, maximumAmbiguousCodePoint, minimumFullWidthCodePoint, maximumFullWidthCodePoint, minimumHalfWidthCodePoint, maximumHalfWidthCodePoint, minimumNarrowCodePoint, maximumNarrowCodePoint, minimumWideCodePoint, maximumWideCodePoint, commonCjkCodePoint = 19968, wideFastPathStart, wideFastPathEnd, isFullWidth2 = (codePoint) => {
35011
34928
  if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
35012
34929
  return false;
35013
34930
  }
35014
34931
  return isInRange(fullwidthRanges, codePoint);
35015
- }, isWide3 = (codePoint) => {
34932
+ }, isWide2 = (codePoint) => {
35016
34933
  if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
35017
34934
  return true;
35018
34935
  }
@@ -35021,7 +34938,7 @@ var minimumAmbiguousCodePoint, maximumAmbiguousCodePoint, minimumFullWidthCodePo
35021
34938
  }
35022
34939
  return isInRange(wideRanges, codePoint);
35023
34940
  };
35024
- var init_lookup3 = __esm(() => {
34941
+ var init_lookup2 = __esm(() => {
35025
34942
  init_lookup_data();
35026
34943
  minimumAmbiguousCodePoint = ambiguousRanges[0];
35027
34944
  maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
@@ -35037,8 +34954,8 @@ var init_lookup3 = __esm(() => {
35037
34954
  });
35038
34955
 
35039
34956
  // node_modules/slice-ansi/node_modules/is-fullwidth-code-point/node_modules/get-east-asian-width/index.js
35040
- var init_get_east_asian_width3 = __esm(() => {
35041
- init_lookup3();
34957
+ var init_get_east_asian_width2 = __esm(() => {
34958
+ init_lookup2();
35042
34959
  });
35043
34960
 
35044
34961
  // node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js
@@ -35046,10 +34963,10 @@ function isFullwidthCodePoint2(codePoint) {
35046
34963
  if (!Number.isInteger(codePoint)) {
35047
34964
  return false;
35048
34965
  }
35049
- return isFullWidth3(codePoint) || isWide3(codePoint);
34966
+ return isFullWidth2(codePoint) || isWide2(codePoint);
35050
34967
  }
35051
34968
  var init_is_fullwidth_code_point = __esm(() => {
35052
- init_get_east_asian_width3();
34969
+ init_get_east_asian_width2();
35053
34970
  });
35054
34971
 
35055
34972
  // node_modules/slice-ansi/index.js
@@ -35108,15 +35025,15 @@ function tokenize(string, endCharacter = Number.POSITIVE_INFINITY) {
35108
35025
  continue;
35109
35026
  }
35110
35027
  }
35111
- const isFullWidth4 = isFullwidthCodePoint2(codePoint);
35028
+ const isFullWidth3 = isFullwidthCodePoint2(codePoint);
35112
35029
  const character = String.fromCodePoint(codePoint);
35113
35030
  returnValue.push({
35114
35031
  type: "character",
35115
35032
  value: character,
35116
- isFullWidth: isFullWidth4
35033
+ isFullWidth: isFullWidth3
35117
35034
  });
35118
35035
  index += character.length;
35119
- visibleCount += isFullWidth4 ? 2 : character.length;
35036
+ visibleCount += isFullWidth3 ? 2 : character.length;
35120
35037
  if (visibleCount >= endCharacter) {
35121
35038
  break;
35122
35039
  }
@@ -37479,7 +37396,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37479
37396
  this.stack = "";
37480
37397
  }
37481
37398
  PropTypeError.prototype = Error.prototype;
37482
- function createChainableTypeChecker(validate3) {
37399
+ function createChainableTypeChecker(validate2) {
37483
37400
  if (true) {
37484
37401
  var manualPropTypeCallCache = {};
37485
37402
  var manualPropTypeWarningCount = 0;
@@ -37510,7 +37427,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37510
37427
  }
37511
37428
  return null;
37512
37429
  } else {
37513
- return validate3(props, propName, componentName, location, propFullName);
37430
+ return validate2(props, propName, componentName, location, propFullName);
37514
37431
  }
37515
37432
  }
37516
37433
  var chainedCheckType = checkType.bind(null, false);
@@ -37518,7 +37435,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37518
37435
  return chainedCheckType;
37519
37436
  }
37520
37437
  function createPrimitiveTypeChecker(expectedType) {
37521
- function validate3(props, propName, componentName, location, propFullName, secret) {
37438
+ function validate2(props, propName, componentName, location, propFullName, secret) {
37522
37439
  var propValue = props[propName];
37523
37440
  var propType = getPropType(propValue);
37524
37441
  if (propType !== expectedType) {
@@ -37527,13 +37444,13 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37527
37444
  }
37528
37445
  return null;
37529
37446
  }
37530
- return createChainableTypeChecker(validate3);
37447
+ return createChainableTypeChecker(validate2);
37531
37448
  }
37532
37449
  function createAnyTypeChecker() {
37533
37450
  return createChainableTypeChecker(emptyFunctionThatReturnsNull);
37534
37451
  }
37535
37452
  function createArrayOfTypeChecker(typeChecker) {
37536
- function validate3(props, propName, componentName, location, propFullName) {
37453
+ function validate2(props, propName, componentName, location, propFullName) {
37537
37454
  if (typeof typeChecker !== "function") {
37538
37455
  return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf.");
37539
37456
  }
@@ -37550,10 +37467,10 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37550
37467
  }
37551
37468
  return null;
37552
37469
  }
37553
- return createChainableTypeChecker(validate3);
37470
+ return createChainableTypeChecker(validate2);
37554
37471
  }
37555
37472
  function createElementTypeChecker() {
37556
- function validate3(props, propName, componentName, location, propFullName) {
37473
+ function validate2(props, propName, componentName, location, propFullName) {
37557
37474
  var propValue = props[propName];
37558
37475
  if (!isValidElement(propValue)) {
37559
37476
  var propType = getPropType(propValue);
@@ -37561,10 +37478,10 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37561
37478
  }
37562
37479
  return null;
37563
37480
  }
37564
- return createChainableTypeChecker(validate3);
37481
+ return createChainableTypeChecker(validate2);
37565
37482
  }
37566
37483
  function createElementTypeTypeChecker() {
37567
- function validate3(props, propName, componentName, location, propFullName) {
37484
+ function validate2(props, propName, componentName, location, propFullName) {
37568
37485
  var propValue = props[propName];
37569
37486
  if (!ReactIs.isValidElementType(propValue)) {
37570
37487
  var propType = getPropType(propValue);
@@ -37572,10 +37489,10 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37572
37489
  }
37573
37490
  return null;
37574
37491
  }
37575
- return createChainableTypeChecker(validate3);
37492
+ return createChainableTypeChecker(validate2);
37576
37493
  }
37577
37494
  function createInstanceTypeChecker(expectedClass) {
37578
- function validate3(props, propName, componentName, location, propFullName) {
37495
+ function validate2(props, propName, componentName, location, propFullName) {
37579
37496
  if (!(props[propName] instanceof expectedClass)) {
37580
37497
  var expectedClassName = expectedClass.name || ANONYMOUS;
37581
37498
  var actualClassName = getClassName(props[propName]);
@@ -37583,7 +37500,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37583
37500
  }
37584
37501
  return null;
37585
37502
  }
37586
- return createChainableTypeChecker(validate3);
37503
+ return createChainableTypeChecker(validate2);
37587
37504
  }
37588
37505
  function createEnumTypeChecker(expectedValues) {
37589
37506
  if (!Array.isArray(expectedValues)) {
@@ -37596,7 +37513,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37596
37513
  }
37597
37514
  return emptyFunctionThatReturnsNull;
37598
37515
  }
37599
- function validate3(props, propName, componentName, location, propFullName) {
37516
+ function validate2(props, propName, componentName, location, propFullName) {
37600
37517
  var propValue = props[propName];
37601
37518
  for (var i = 0;i < expectedValues.length; i++) {
37602
37519
  if (is(propValue, expectedValues[i])) {
@@ -37612,10 +37529,10 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37612
37529
  });
37613
37530
  return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + "."));
37614
37531
  }
37615
- return createChainableTypeChecker(validate3);
37532
+ return createChainableTypeChecker(validate2);
37616
37533
  }
37617
37534
  function createObjectOfTypeChecker(typeChecker) {
37618
- function validate3(props, propName, componentName, location, propFullName) {
37535
+ function validate2(props, propName, componentName, location, propFullName) {
37619
37536
  if (typeof typeChecker !== "function") {
37620
37537
  return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf.");
37621
37538
  }
@@ -37634,7 +37551,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37634
37551
  }
37635
37552
  return null;
37636
37553
  }
37637
- return createChainableTypeChecker(validate3);
37554
+ return createChainableTypeChecker(validate2);
37638
37555
  }
37639
37556
  function createUnionTypeChecker(arrayOfTypeCheckers) {
37640
37557
  if (!Array.isArray(arrayOfTypeCheckers)) {
@@ -37648,7 +37565,7 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37648
37565
  return emptyFunctionThatReturnsNull;
37649
37566
  }
37650
37567
  }
37651
- function validate3(props, propName, componentName, location, propFullName) {
37568
+ function validate2(props, propName, componentName, location, propFullName) {
37652
37569
  var expectedTypes = [];
37653
37570
  for (var i2 = 0;i2 < arrayOfTypeCheckers.length; i2++) {
37654
37571
  var checker2 = arrayOfTypeCheckers[i2];
@@ -37663,22 +37580,22 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37663
37580
  var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : "";
37664
37581
  return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + "."));
37665
37582
  }
37666
- return createChainableTypeChecker(validate3);
37583
+ return createChainableTypeChecker(validate2);
37667
37584
  }
37668
37585
  function createNodeChecker() {
37669
- function validate3(props, propName, componentName, location, propFullName) {
37586
+ function validate2(props, propName, componentName, location, propFullName) {
37670
37587
  if (!isNode2(props[propName])) {
37671
37588
  return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode."));
37672
37589
  }
37673
37590
  return null;
37674
37591
  }
37675
- return createChainableTypeChecker(validate3);
37592
+ return createChainableTypeChecker(validate2);
37676
37593
  }
37677
37594
  function invalidValidatorError(componentName, location, propFullName, key, type) {
37678
37595
  return new PropTypeError((componentName || "React class") + ": " + location + " type `" + propFullName + "." + key + "` is invalid; " + "it must be a function, usually from the `prop-types` package, but received `" + type + "`.");
37679
37596
  }
37680
37597
  function createShapeTypeChecker(shapeTypes) {
37681
- function validate3(props, propName, componentName, location, propFullName) {
37598
+ function validate2(props, propName, componentName, location, propFullName) {
37682
37599
  var propValue = props[propName];
37683
37600
  var propType = getPropType(propValue);
37684
37601
  if (propType !== "object") {
@@ -37696,10 +37613,10 @@ var require_factoryWithTypeCheckers = __commonJS((exports, module) => {
37696
37613
  }
37697
37614
  return null;
37698
37615
  }
37699
- return createChainableTypeChecker(validate3);
37616
+ return createChainableTypeChecker(validate2);
37700
37617
  }
37701
37618
  function createStrictShapeTypeChecker(shapeTypes) {
37702
- function validate3(props, propName, componentName, location, propFullName) {
37619
+ function validate2(props, propName, componentName, location, propFullName) {
37703
37620
  var propValue = props[propName];
37704
37621
  var propType = getPropType(propValue);
37705
37622
  if (propType !== "object") {
@@ -37723,7 +37640,7 @@ Valid keys: ` + JSON.stringify(Object.keys(shapeTypes), null, " "));
37723
37640
  }
37724
37641
  return null;
37725
37642
  }
37726
- return createChainableTypeChecker(validate3);
37643
+ return createChainableTypeChecker(validate2);
37727
37644
  }
37728
37645
  function isNode2(propValue) {
37729
37646
  switch (typeof propValue) {
@@ -54965,6 +54882,13 @@ function toggleMetadataFlag(item, key) {
54965
54882
  }
54966
54883
  };
54967
54884
  }
54885
+ function removeMetadataKeys(item, keys2) {
54886
+ const nextMetadata = Object.fromEntries(Object.entries(item.metadata ?? {}).filter(([key]) => !keys2.includes(key)));
54887
+ return {
54888
+ ...item,
54889
+ metadata: Object.keys(nextMetadata).length > 0 ? nextMetadata : undefined
54890
+ };
54891
+ }
54968
54892
 
54969
54893
  // src/widgets/shared/git-no-git.ts
54970
54894
  function isHideNoGitEnabled(item) {
@@ -56103,7 +56027,7 @@ function getTerminalWidth() {
56103
56027
  function canDetectTerminalWidth() {
56104
56028
  return probeTerminalWidth() !== null;
56105
56029
  }
56106
- var __dirname = "/Users/sirmalloc/Projects/Personal/ccstatusline/src/utils", PACKAGE_VERSION = "2.2.3";
56030
+ var __dirname = "/Users/sirmalloc/Projects/Personal/ccstatusline/src/utils", PACKAGE_VERSION = "2.2.5";
56107
56031
  var init_terminal = () => {};
56108
56032
 
56109
56033
  // src/utils/renderer.ts
@@ -56190,9 +56114,9 @@ function renderPowerlineStatusLine(widgets, settings, context, lineIndex = 0, gl
56190
56114
  }
56191
56115
  const actualPreRenderedIndex = preRenderedIndices[i];
56192
56116
  const preRendered = actualPreRenderedIndex !== undefined ? preRenderedWidgets[actualPreRenderedIndex] : undefined;
56117
+ const widgetImpl = getWidget(widget.type);
56193
56118
  if (preRendered?.content) {
56194
56119
  widgetText = preRendered.content;
56195
- const widgetImpl = getWidget(widget.type);
56196
56120
  if (widgetImpl) {
56197
56121
  defaultColor = widgetImpl.getDefaultColor();
56198
56122
  }
@@ -56314,7 +56238,7 @@ function renderPowerlineStatusLine(widgets, settings, context, lineIndex = 0, gl
56314
56238
  const separatorIndex = Math.min(globalIndex, separators.length - 1);
56315
56239
  const separator = separators[separatorIndex] ?? "";
56316
56240
  const shouldInvert = invertBgs[separatorIndex] ?? false;
56317
- let separatorOutput = "";
56241
+ let separatorOutput;
56318
56242
  const sameBackground = widget.bgColor && nextWidget.bgColor && widget.bgColor === nextWidget.bgColor;
56319
56243
  if (shouldInvert) {
56320
56244
  if (widget.bgColor && nextWidget.bgColor) {
@@ -56628,7 +56552,7 @@ function renderStatusLine(widgets, settings, context, preRenderedWidgets, preCal
56628
56552
  }
56629
56553
  }
56630
56554
  });
56631
- let statusLine = "";
56555
+ let statusLine;
56632
56556
  if (hasFlexSeparator && terminalWidth) {
56633
56557
  const parts = [[]];
56634
56558
  let currentPart = 0;
@@ -57465,8 +57389,8 @@ var import_react27, jsx_dev_runtime, CustomTextEditor = ({ widget, onComplete, o
57465
57389
  const [cursorPos, setCursorPos] = import_react27.useState(text.length);
57466
57390
  const getGraphemes = (str) => {
57467
57391
  if ("Segmenter" in Intl) {
57468
- const segmenter3 = new Intl.Segmenter(undefined, { granularity: "grapheme" });
57469
- return Array.from(segmenter3.segment(str), (seg) => seg.segment);
57392
+ const segmenter2 = new Intl.Segmenter(undefined, { granularity: "grapheme" });
57393
+ return Array.from(segmenter2.segment(str), (seg) => seg.segment);
57470
57394
  }
57471
57395
  return Array.from(str);
57472
57396
  };
@@ -58943,7 +58867,7 @@ var init_usage_types = __esm(() => {
58943
58867
  });
58944
58868
 
58945
58869
  // src/utils/usage-fetch.ts
58946
- import { execSync as execSync4 } from "child_process";
58870
+ import { execFileSync } from "child_process";
58947
58871
  import * as fs3 from "fs";
58948
58872
  import * as https from "https";
58949
58873
  import * as os3 from "os";
@@ -59019,33 +58943,121 @@ function getStaleUsageOrError(error48, now2, errorCacheMaxAge = LOCK_MAX_AGE) {
59019
58943
  }
59020
58944
  return setCachedUsageError(error48, now2, errorCacheMaxAge);
59021
58945
  }
59022
- function getUsageToken() {
59023
- const now2 = Math.floor(Date.now() / 1000);
59024
- if (cachedUsageToken && now2 - usageTokenCacheTime < TOKEN_CACHE_MAX_AGE) {
59025
- return cachedUsageToken;
58946
+ function normalizeSecurityTimedateValue(rawValue) {
58947
+ const cleaned = rawValue.replace(/\\000/g, "").replace(/\0/g, "").trim();
58948
+ return /^\d{14}Z$/.test(cleaned) ? cleaned : null;
58949
+ }
58950
+ function decodeHexAscii(rawHex) {
58951
+ if (rawHex.length === 0 || rawHex.length % 2 !== 0) {
58952
+ return null;
59026
58953
  }
59027
- try {
59028
- const isMac = process.platform === "darwin";
59029
- if (isMac) {
59030
- const result2 = execSync4('security find-generic-password -s "Claude Code-credentials" -w 2>/dev/null', { encoding: "utf8", stdio: ["pipe", "pipe", "pipe"] }).trim();
59031
- const token2 = parseUsageAccessToken(result2);
59032
- if (token2) {
59033
- cachedUsageToken = token2;
59034
- usageTokenCacheTime = now2;
59035
- }
59036
- return token2;
58954
+ let decoded = "";
58955
+ for (let i = 0;i < rawHex.length; i += 2) {
58956
+ const byte = Number.parseInt(rawHex.slice(i, i + 2), 16);
58957
+ if (Number.isNaN(byte)) {
58958
+ return null;
59037
58959
  }
59038
- const credFile = path2.join(getClaudeConfigDir(), ".credentials.json");
59039
- const token = parseUsageAccessToken(fs3.readFileSync(credFile, "utf8"));
58960
+ decoded += String.fromCharCode(byte);
58961
+ }
58962
+ return decoded;
58963
+ }
58964
+ function parseModifiedTimeFromKeychainBlock(block) {
58965
+ const quotedMatch = /"mdat"<timedate>=(?:0x[0-9A-Fa-f]+\s+)?"([^"]+)"/.exec(block);
58966
+ if (quotedMatch?.[1]) {
58967
+ const parsed = normalizeSecurityTimedateValue(quotedMatch[1]);
58968
+ if (parsed !== null) {
58969
+ return parsed;
58970
+ }
58971
+ }
58972
+ const hexMatch = /"mdat"<timedate>=0x([0-9A-Fa-f]+)/.exec(block);
58973
+ if (!hexMatch?.[1]) {
58974
+ return null;
58975
+ }
58976
+ const decoded = decodeHexAscii(hexMatch[1]);
58977
+ return decoded ? normalizeSecurityTimedateValue(decoded) : null;
58978
+ }
58979
+ function sortMacKeychainCredentialCandidates(a, b) {
58980
+ if (a.modifiedAt !== null && b.modifiedAt !== null && a.modifiedAt !== b.modifiedAt) {
58981
+ return b.modifiedAt.localeCompare(a.modifiedAt);
58982
+ }
58983
+ if (a.modifiedAt !== null && b.modifiedAt === null) {
58984
+ return -1;
58985
+ }
58986
+ if (a.modifiedAt === null && b.modifiedAt !== null) {
58987
+ return 1;
58988
+ }
58989
+ return a.order - b.order;
58990
+ }
58991
+ function parseMacKeychainCredentialCandidates(rawDump, servicePrefix = MACOS_USAGE_CREDENTIALS_SERVICE) {
58992
+ const blocks = rawDump.split(/(?=^keychain:\s)/m).filter((block) => block.trim().length > 0);
58993
+ const dedupedCandidates = new Map;
58994
+ let order = 0;
58995
+ for (const block of blocks) {
58996
+ const serviceMatch = /"svce"<blob>="([^"]+)"/.exec(block);
58997
+ const service = serviceMatch?.[1];
58998
+ if (!service || !service.startsWith(servicePrefix) || service === MACOS_USAGE_CREDENTIALS_SERVICE) {
58999
+ continue;
59000
+ }
59001
+ const candidate = {
59002
+ modifiedAt: parseModifiedTimeFromKeychainBlock(block),
59003
+ order,
59004
+ service
59005
+ };
59006
+ order += 1;
59007
+ const existing = dedupedCandidates.get(service);
59008
+ if (!existing || sortMacKeychainCredentialCandidates(candidate, existing) < 0) {
59009
+ dedupedCandidates.set(service, candidate);
59010
+ }
59011
+ }
59012
+ return [...dedupedCandidates.values()].sort(sortMacKeychainCredentialCandidates).map((candidate) => candidate.service);
59013
+ }
59014
+ function readMacKeychainSecret(service) {
59015
+ try {
59016
+ return execFileSync("security", ["find-generic-password", "-s", service, "-w"], { encoding: "utf8", stdio: ["pipe", "pipe", "ignore"] }).trim();
59017
+ } catch {
59018
+ return null;
59019
+ }
59020
+ }
59021
+ function readUsageTokenFromMacKeychainService(service) {
59022
+ const secret = readMacKeychainSecret(service);
59023
+ return secret ? parseUsageAccessToken(secret) : null;
59024
+ }
59025
+ function listMacKeychainCredentialCandidates() {
59026
+ try {
59027
+ const rawDump = execFileSync("security", ["dump-keychain"], {
59028
+ encoding: "utf8",
59029
+ maxBuffer: MACOS_SECURITY_DUMP_MAX_BUFFER,
59030
+ stdio: ["pipe", "pipe", "ignore"]
59031
+ });
59032
+ return parseMacKeychainCredentialCandidates(rawDump);
59033
+ } catch {
59034
+ return [];
59035
+ }
59036
+ }
59037
+ function readUsageTokenFromMacKeychainCandidates() {
59038
+ const candidates = listMacKeychainCredentialCandidates();
59039
+ for (const service of candidates) {
59040
+ const token = readUsageTokenFromMacKeychainService(service);
59040
59041
  if (token) {
59041
- cachedUsageToken = token;
59042
- usageTokenCacheTime = now2;
59042
+ return token;
59043
59043
  }
59044
- return token;
59044
+ }
59045
+ return null;
59046
+ }
59047
+ function readUsageTokenFromCredentialsFile() {
59048
+ try {
59049
+ const credFile = path2.join(getClaudeConfigDir(), ".credentials.json");
59050
+ return parseUsageAccessToken(fs3.readFileSync(credFile, "utf8"));
59045
59051
  } catch {
59046
59052
  return null;
59047
59053
  }
59048
59054
  }
59055
+ function getUsageToken() {
59056
+ if (process.platform !== "darwin") {
59057
+ return readUsageTokenFromCredentialsFile();
59058
+ }
59059
+ return readUsageTokenFromMacKeychainService(MACOS_USAGE_CREDENTIALS_SERVICE) ?? readUsageTokenFromMacKeychainCandidates() ?? readUsageTokenFromCredentialsFile();
59060
+ }
59049
59061
  function readStaleUsageCache() {
59050
59062
  try {
59051
59063
  return parseCachedUsageData(fs3.readFileSync(CACHE_FILE, "utf8"));
@@ -59233,7 +59245,7 @@ async function fetchUsageData() {
59233
59245
  return getStaleUsageOrError("parse-error", now2);
59234
59246
  }
59235
59247
  }
59236
- var import_https_proxy_agent, CACHE_DIR, CACHE_FILE, LOCK_FILE, CACHE_MAX_AGE = 180, LOCK_MAX_AGE = 30, DEFAULT_RATE_LIMIT_BACKOFF = 300, TOKEN_CACHE_MAX_AGE = 3600, UsageCredentialsSchema, UsageLockErrorSchema, UsageLockSchema, CachedUsageDataSchema, UsageApiResponseSchema, cachedUsageData = null, usageCacheTime = 0, cachedUsageToken = null, usageTokenCacheTime = 0, usageErrorCacheMaxAge, USAGE_API_HOST = "api.anthropic.com", USAGE_API_PATH = "/api/oauth/usage", USAGE_API_TIMEOUT_MS = 5000;
59248
+ var import_https_proxy_agent, CACHE_DIR, CACHE_FILE, LOCK_FILE, CACHE_MAX_AGE = 180, LOCK_MAX_AGE = 30, DEFAULT_RATE_LIMIT_BACKOFF = 300, MACOS_USAGE_CREDENTIALS_SERVICE = "Claude Code-credentials", MACOS_SECURITY_DUMP_MAX_BUFFER, UsageCredentialsSchema, UsageLockErrorSchema, UsageLockSchema, CachedUsageDataSchema, UsageApiResponseSchema, cachedUsageData = null, usageCacheTime = 0, usageErrorCacheMaxAge, USAGE_API_HOST = "api.anthropic.com", USAGE_API_PATH = "/api/oauth/usage", USAGE_API_TIMEOUT_MS = 5000;
59237
59249
  var init_usage_fetch = __esm(() => {
59238
59250
  init_zod();
59239
59251
  init_claude_settings();
@@ -59242,6 +59254,7 @@ var init_usage_fetch = __esm(() => {
59242
59254
  CACHE_DIR = path2.join(os3.homedir(), ".cache", "ccstatusline");
59243
59255
  CACHE_FILE = path2.join(CACHE_DIR, "usage.json");
59244
59256
  LOCK_FILE = path2.join(CACHE_DIR, "usage.lock");
59257
+ MACOS_SECURITY_DUMP_MAX_BUFFER = 8 * 1024 * 1024;
59245
59258
  UsageCredentialsSchema = exports_external.object({ claudeAiOauth: exports_external.object({ accessToken: exports_external.string().nullable().optional() }).optional() });
59246
59259
  UsageLockErrorSchema = exports_external.enum(["timeout", "rate-limited"]);
59247
59260
  UsageLockSchema = exports_external.object({
@@ -62175,11 +62188,57 @@ var init_jsonl_metrics = __esm(() => {
62175
62188
  init_jsonl_lines();
62176
62189
  });
62177
62190
 
62191
+ // src/utils/jsonl-metadata.ts
62192
+ function normalizeThinkingEffort(value) {
62193
+ if (!value) {
62194
+ return;
62195
+ }
62196
+ const normalized = value.toLowerCase();
62197
+ if (normalized === "low" || normalized === "medium" || normalized === "high" || normalized === "max") {
62198
+ return normalized;
62199
+ }
62200
+ return;
62201
+ }
62202
+ function getTranscriptThinkingEffort(transcriptPath) {
62203
+ if (!transcriptPath) {
62204
+ return;
62205
+ }
62206
+ try {
62207
+ const lines = readJsonlLinesSync(transcriptPath);
62208
+ for (let i = lines.length - 1;i >= 0; i--) {
62209
+ const line = lines[i];
62210
+ if (!line) {
62211
+ continue;
62212
+ }
62213
+ const entry = parseJsonlLine(line);
62214
+ if (typeof entry?.message?.content !== "string") {
62215
+ continue;
62216
+ }
62217
+ const visibleContent = getVisibleText(entry.message.content).trim();
62218
+ if (!visibleContent.startsWith(MODEL_STDOUT_PREFIX)) {
62219
+ continue;
62220
+ }
62221
+ const match = MODEL_STDOUT_EFFORT_REGEX.exec(visibleContent);
62222
+ return normalizeThinkingEffort(match?.[1]);
62223
+ }
62224
+ } catch {
62225
+ return;
62226
+ }
62227
+ return;
62228
+ }
62229
+ var MODEL_STDOUT_PREFIX = "<local-command-stdout>Set model to ", MODEL_STDOUT_EFFORT_REGEX;
62230
+ var init_jsonl_metadata = __esm(() => {
62231
+ init_ansi();
62232
+ init_jsonl_lines();
62233
+ MODEL_STDOUT_EFFORT_REGEX = /^<local-command-stdout>Set model to[\s\S]*? with (low|medium|high|max) effort<\/local-command-stdout>$/i;
62234
+ });
62235
+
62178
62236
  // src/utils/jsonl.ts
62179
62237
  var init_jsonl = __esm(() => {
62180
62238
  init_jsonl_cache();
62181
62239
  init_jsonl_blocks();
62182
62240
  init_jsonl_metrics();
62241
+ init_jsonl_metadata();
62183
62242
  });
62184
62243
 
62185
62244
  // src/utils/usage-windows.ts
@@ -62243,17 +62302,16 @@ function getWeeklyUsageWindowFromResetAt(weeklyResetAt, nowMs = Date.now()) {
62243
62302
  function resolveWeeklyUsageWindow(usageData, nowMs = Date.now()) {
62244
62303
  return getWeeklyUsageWindowFromResetAt(usageData.weeklyResetAt, nowMs);
62245
62304
  }
62246
- function formatUsageDuration(durationMs, compact2 = false) {
62305
+ function formatUsageDuration(durationMs, compact2 = false, useDays = true) {
62247
62306
  const clampedMs = Math.max(0, durationMs);
62248
- const elapsedHours = Math.floor(clampedMs / (1000 * 60 * 60));
62249
- const elapsedMinutes = Math.floor(clampedMs % (1000 * 60 * 60) / (1000 * 60));
62250
- if (compact2) {
62251
- return elapsedMinutes === 0 ? `${elapsedHours}h` : `${elapsedHours}h${elapsedMinutes}m`;
62252
- }
62253
- if (elapsedMinutes === 0) {
62254
- return `${elapsedHours}hr`;
62255
- }
62256
- return `${elapsedHours}hr ${elapsedMinutes}m`;
62307
+ const totalHours = Math.floor(clampedMs / (1000 * 60 * 60));
62308
+ const m = Math.floor(clampedMs % (1000 * 60 * 60) / (1000 * 60));
62309
+ const hLabel = compact2 ? "h" : "hr";
62310
+ const sep2 = compact2 ? "" : " ";
62311
+ const d = useDays ? Math.floor(totalHours / 24) : 0;
62312
+ const h = useDays ? totalHours % 24 : totalHours;
62313
+ const parts = [d > 0 && `${d}d`, h > 0 && `${h}${hLabel}`, m > 0 && `${m}m`].filter(Boolean);
62314
+ return parts.length > 0 ? parts.join(sep2) : "0m";
62257
62315
  }
62258
62316
  function getUsageErrorMessage(error48) {
62259
62317
  switch (error48) {
@@ -62320,30 +62378,49 @@ function getUsageDisplayModifierText(item, options = {}) {
62320
62378
  if (isUsageInverted(item)) {
62321
62379
  modifiers.push("inverted");
62322
62380
  }
62323
- if (options.includeCompact && isUsageCompact(item)) {
62381
+ if (options.includeCompact && !isUsageProgressMode(mode) && isUsageCompact(item)) {
62324
62382
  modifiers.push("compact");
62325
62383
  }
62326
62384
  return makeModifierText(modifiers);
62327
62385
  }
62328
- function cycleUsageDisplayMode(item) {
62386
+ function cycleUsageDisplayMode(item, disabledInProgressKeys = []) {
62329
62387
  const currentMode = getUsageDisplayMode(item);
62330
62388
  const nextMode = currentMode === "time" ? "progress" : currentMode === "progress" ? "progress-short" : "time";
62389
+ const nextItem = removeMetadataKeys(item, nextMode === "time" ? ["invert"] : disabledInProgressKeys);
62331
62390
  const nextMetadata = {
62332
- ...item.metadata ?? {},
62391
+ ...nextItem.metadata ?? {},
62333
62392
  display: nextMode
62334
62393
  };
62335
- if (nextMode === "time") {
62336
- delete nextMetadata.invert;
62337
- }
62338
62394
  return {
62339
- ...item,
62395
+ ...nextItem,
62340
62396
  metadata: nextMetadata
62341
62397
  };
62342
62398
  }
62343
62399
  function toggleUsageInverted(item) {
62344
62400
  return toggleMetadataFlag(item, "invert");
62345
62401
  }
62346
- var init_usage_display = () => {};
62402
+ function getUsagePercentCustomKeybinds(item) {
62403
+ const keybinds = [PROGRESS_TOGGLE_KEYBIND];
62404
+ if (item && isUsageProgressMode(getUsageDisplayMode(item))) {
62405
+ keybinds.push(INVERT_TOGGLE_KEYBIND);
62406
+ }
62407
+ return keybinds;
62408
+ }
62409
+ function getUsageTimerCustomKeybinds(item) {
62410
+ const keybinds = [PROGRESS_TOGGLE_KEYBIND];
62411
+ if (item && isUsageProgressMode(getUsageDisplayMode(item))) {
62412
+ keybinds.push(INVERT_TOGGLE_KEYBIND);
62413
+ } else {
62414
+ keybinds.push(COMPACT_TOGGLE_KEYBIND);
62415
+ }
62416
+ return keybinds;
62417
+ }
62418
+ var PROGRESS_TOGGLE_KEYBIND, INVERT_TOGGLE_KEYBIND, COMPACT_TOGGLE_KEYBIND;
62419
+ var init_usage_display = __esm(() => {
62420
+ PROGRESS_TOGGLE_KEYBIND = { key: "p", label: "(p)rogress toggle", action: "toggle-progress" };
62421
+ INVERT_TOGGLE_KEYBIND = { key: "v", label: "in(v)ert fill", action: "toggle-invert" };
62422
+ COMPACT_TOGGLE_KEYBIND = { key: "s", label: "(s)hort time", action: "toggle-compact" };
62423
+ });
62347
62424
 
62348
62425
  // src/widgets/BlockTimer.ts
62349
62426
  function makeTimerProgressBar(percent, width) {
@@ -62374,7 +62451,7 @@ class BlockTimerWidget {
62374
62451
  }
62375
62452
  handleEditorAction(action, item) {
62376
62453
  if (action === "toggle-progress") {
62377
- return cycleUsageDisplayMode(item);
62454
+ return cycleUsageDisplayMode(item, ["compact"]);
62378
62455
  }
62379
62456
  if (action === "toggle-invert") {
62380
62457
  return toggleUsageInverted(item);
@@ -62417,12 +62494,8 @@ class BlockTimerWidget {
62417
62494
  const elapsedTime = formatUsageDuration(window2.elapsedMs, compact2);
62418
62495
  return formatRawOrLabeledValue(item, "Block: ", elapsedTime);
62419
62496
  }
62420
- getCustomKeybinds() {
62421
- return [
62422
- { key: "p", label: "(p)rogress toggle", action: "toggle-progress" },
62423
- { key: "v", label: "in(v)ert fill", action: "toggle-invert" },
62424
- { key: "s", label: "(s)hort time", action: "toggle-compact" }
62425
- ];
62497
+ getCustomKeybinds(item) {
62498
+ return getUsageTimerCustomKeybinds(item);
62426
62499
  }
62427
62500
  supportsRawValue() {
62428
62501
  return true;
@@ -63057,7 +63130,7 @@ var init_TotalSpeed = __esm(async () => {
63057
63130
  });
63058
63131
 
63059
63132
  // src/widgets/FreeMemory.ts
63060
- import { execSync as execSync5 } from "child_process";
63133
+ import { execSync as execSync4 } from "child_process";
63061
63134
  import os6 from "os";
63062
63135
  function formatBytes(bytes) {
63063
63136
  const GB = 1024 ** 3;
@@ -63073,7 +63146,7 @@ function formatBytes(bytes) {
63073
63146
  }
63074
63147
  function getUsedMemoryMacOS() {
63075
63148
  try {
63076
- const output = execSync5("vm_stat", { encoding: "utf8" });
63149
+ const output = execSync4("vm_stat", { encoding: "utf8" });
63077
63150
  const lines = output.split(`
63078
63151
  `);
63079
63152
  const firstLine = lines[0];
@@ -63251,11 +63324,8 @@ class SessionUsageWidget {
63251
63324
  }
63252
63325
  return formatRawOrLabeledValue(item, "Session: ", `${percent.toFixed(1)}%`);
63253
63326
  }
63254
- getCustomKeybinds() {
63255
- return [
63256
- { key: "p", label: "(p)rogress toggle", action: "toggle-progress" },
63257
- { key: "v", label: "in(v)ert fill", action: "toggle-invert" }
63258
- ];
63327
+ getCustomKeybinds(item) {
63328
+ return getUsagePercentCustomKeybinds(item);
63259
63329
  }
63260
63330
  supportsRawValue() {
63261
63331
  return true;
@@ -63325,11 +63395,8 @@ class WeeklyUsageWidget {
63325
63395
  }
63326
63396
  return formatRawOrLabeledValue(item, "Weekly: ", `${percent.toFixed(1)}%`);
63327
63397
  }
63328
- getCustomKeybinds() {
63329
- return [
63330
- { key: "p", label: "(p)rogress toggle", action: "toggle-progress" },
63331
- { key: "v", label: "in(v)ert fill", action: "toggle-invert" }
63332
- ];
63398
+ getCustomKeybinds(item) {
63399
+ return getUsagePercentCustomKeybinds(item);
63333
63400
  }
63334
63401
  supportsRawValue() {
63335
63402
  return true;
@@ -63372,7 +63439,7 @@ class BlockResetTimerWidget {
63372
63439
  }
63373
63440
  handleEditorAction(action, item) {
63374
63441
  if (action === "toggle-progress") {
63375
- return cycleUsageDisplayMode(item);
63442
+ return cycleUsageDisplayMode(item, ["compact"]);
63376
63443
  }
63377
63444
  if (action === "toggle-invert") {
63378
63445
  return toggleUsageInverted(item);
@@ -63413,12 +63480,8 @@ class BlockResetTimerWidget {
63413
63480
  const remainingTime = formatUsageDuration(window2.remainingMs, compact2);
63414
63481
  return formatRawOrLabeledValue(item, "Reset: ", remainingTime);
63415
63482
  }
63416
- getCustomKeybinds() {
63417
- return [
63418
- { key: "p", label: "(p)rogress toggle", action: "toggle-progress" },
63419
- { key: "v", label: "in(v)ert fill", action: "toggle-invert" },
63420
- { key: "s", label: "(s)hort time", action: "toggle-compact" }
63421
- ];
63483
+ getCustomKeybinds(item) {
63484
+ return getUsageTimerCustomKeybinds(item);
63422
63485
  }
63423
63486
  supportsRawValue() {
63424
63487
  return true;
@@ -63439,6 +63502,33 @@ function makeTimerProgressBar3(percent, width) {
63439
63502
  const emptyWidth = width - filledWidth;
63440
63503
  return "█".repeat(filledWidth) + "░".repeat(emptyWidth);
63441
63504
  }
63505
+ function isWeeklyResetHoursOnly(item) {
63506
+ return isMetadataFlagEnabled(item, "hours");
63507
+ }
63508
+ function toggleWeeklyResetHoursOnly(item) {
63509
+ return toggleMetadataFlag(item, "hours");
63510
+ }
63511
+ function getWeeklyResetModifierText(item) {
63512
+ const displayMode = getUsageDisplayMode(item);
63513
+ const modifiers = [];
63514
+ if (displayMode === "progress") {
63515
+ modifiers.push("progress bar");
63516
+ } else if (displayMode === "progress-short") {
63517
+ modifiers.push("short bar");
63518
+ }
63519
+ if (isUsageInverted(item)) {
63520
+ modifiers.push("inverted");
63521
+ }
63522
+ if (!isUsageProgressMode(displayMode)) {
63523
+ if (isUsageCompact(item)) {
63524
+ modifiers.push("compact");
63525
+ }
63526
+ if (isWeeklyResetHoursOnly(item)) {
63527
+ modifiers.push("hours only");
63528
+ }
63529
+ }
63530
+ return makeModifierText(modifiers);
63531
+ }
63442
63532
 
63443
63533
  class WeeklyResetTimerWidget {
63444
63534
  getDefaultColor() {
@@ -63456,12 +63546,12 @@ class WeeklyResetTimerWidget {
63456
63546
  getEditorDisplay(item) {
63457
63547
  return {
63458
63548
  displayText: this.getDisplayName(),
63459
- modifierText: getUsageDisplayModifierText(item, { includeCompact: true })
63549
+ modifierText: getWeeklyResetModifierText(item)
63460
63550
  };
63461
63551
  }
63462
63552
  handleEditorAction(action, item) {
63463
63553
  if (action === "toggle-progress") {
63464
- return cycleUsageDisplayMode(item);
63554
+ return cycleUsageDisplayMode(item, ["compact", "hours"]);
63465
63555
  }
63466
63556
  if (action === "toggle-invert") {
63467
63557
  return toggleUsageInverted(item);
@@ -63469,12 +63559,16 @@ class WeeklyResetTimerWidget {
63469
63559
  if (action === "toggle-compact") {
63470
63560
  return toggleUsageCompact(item);
63471
63561
  }
63562
+ if (action === "toggle-hours") {
63563
+ return toggleWeeklyResetHoursOnly(item);
63564
+ }
63472
63565
  return null;
63473
63566
  }
63474
63567
  render(item, context, settings) {
63475
63568
  const displayMode = getUsageDisplayMode(item);
63476
63569
  const inverted = isUsageInverted(item);
63477
63570
  const compact2 = isUsageCompact(item);
63571
+ const useDays = !isWeeklyResetHoursOnly(item);
63478
63572
  if (context.isPreview) {
63479
63573
  const previewPercent = inverted ? 90 : 10;
63480
63574
  if (isUsageProgressMode(displayMode)) {
@@ -63482,7 +63576,7 @@ class WeeklyResetTimerWidget {
63482
63576
  const progressBar = makeTimerProgressBar3(previewPercent, barWidth);
63483
63577
  return formatRawOrLabeledValue(item, "Weekly Reset ", `[${progressBar}] ${previewPercent.toFixed(1)}%`);
63484
63578
  }
63485
- return formatRawOrLabeledValue(item, "Weekly Reset: ", compact2 ? "36h30m" : "36hr 30m");
63579
+ return formatRawOrLabeledValue(item, "Weekly Reset: ", formatUsageDuration(WEEKLY_PREVIEW_DURATION_MS, compact2, useDays));
63486
63580
  }
63487
63581
  const usageData = context.usageData ?? {};
63488
63582
  const window2 = resolveWeeklyUsageWindow(usageData);
@@ -63499,15 +63593,15 @@ class WeeklyResetTimerWidget {
63499
63593
  const percentage = percent.toFixed(1);
63500
63594
  return formatRawOrLabeledValue(item, "Weekly Reset ", `[${progressBar}] ${percentage}%`);
63501
63595
  }
63502
- const remainingTime = formatUsageDuration(window2.remainingMs, compact2);
63596
+ const remainingTime = formatUsageDuration(window2.remainingMs, compact2, useDays);
63503
63597
  return formatRawOrLabeledValue(item, "Weekly Reset: ", remainingTime);
63504
63598
  }
63505
- getCustomKeybinds() {
63506
- return [
63507
- { key: "p", label: "(p)rogress toggle", action: "toggle-progress" },
63508
- { key: "v", label: "in(v)ert fill", action: "toggle-invert" },
63509
- { key: "s", label: "(s)hort time", action: "toggle-compact" }
63510
- ];
63599
+ getCustomKeybinds(item) {
63600
+ const keybinds = getUsageTimerCustomKeybinds(item);
63601
+ if (!item || !isUsageProgressMode(getUsageDisplayMode(item))) {
63602
+ keybinds.push({ key: "h", label: "(h)ours only", action: "toggle-hours" });
63603
+ }
63604
+ return keybinds;
63511
63605
  }
63512
63606
  supportsRawValue() {
63513
63607
  return true;
@@ -63516,9 +63610,11 @@ class WeeklyResetTimerWidget {
63516
63610
  return true;
63517
63611
  }
63518
63612
  }
63613
+ var WEEKLY_PREVIEW_DURATION_MS;
63519
63614
  var init_WeeklyResetTimer = __esm(() => {
63520
63615
  init_usage();
63521
63616
  init_usage_display();
63617
+ WEEKLY_PREVIEW_DURATION_MS = 36.5 * 60 * 60 * 1000;
63522
63618
  });
63523
63619
 
63524
63620
  // src/widgets/ContextBar.ts
@@ -63856,12 +63952,15 @@ class SkillsWidget {
63856
63952
  { event: "UserPromptSubmit" }
63857
63953
  ];
63858
63954
  }
63859
- getCustomKeybinds() {
63860
- return [
63955
+ getCustomKeybinds(item) {
63956
+ const keybinds = [
63861
63957
  { key: "v", label: "(v)iew: last/count/list", action: "cycle-mode" },
63862
- { key: "h", label: "(h)ide when empty", action: TOGGLE_HIDE_EMPTY_ACTION },
63863
- { key: "l", label: "(l)imit", action: EDIT_LIST_LIMIT_ACTION }
63958
+ { key: "h", label: "(h)ide when empty", action: TOGGLE_HIDE_EMPTY_ACTION }
63864
63959
  ];
63960
+ if (item && this.getMode(item) === "list") {
63961
+ keybinds.push({ key: "l", label: "(l)imit", action: EDIT_LIST_LIMIT_ACTION });
63962
+ }
63963
+ return keybinds;
63865
63964
  }
63866
63965
  getEditorDisplay(item) {
63867
63966
  const modifiers = [MODE_LABELS[this.getMode(item)]];
@@ -63879,7 +63978,8 @@ class SkillsWidget {
63879
63978
  handleEditorAction(action, item) {
63880
63979
  if (action === "cycle-mode") {
63881
63980
  const next = MODES[(MODES.indexOf(this.getMode(item)) + 1) % MODES.length] ?? "current";
63882
- return { ...item, metadata: { ...item.metadata, mode: next } };
63981
+ const nextItem = next === "list" ? item : removeMetadataKeys(item, [LIST_LIMIT_KEY]);
63982
+ return { ...nextItem, metadata: { ...nextItem.metadata, mode: next } };
63883
63983
  }
63884
63984
  if (action === TOGGLE_HIDE_EMPTY_ACTION) {
63885
63985
  return toggleMetadataFlag(item, HIDE_WHEN_EMPTY_KEY);
@@ -63998,6 +64098,182 @@ var init_Skills = __esm(async () => {
63998
64098
  MODE_LABELS = { current: "last used", count: "total count", list: "unique list" };
63999
64099
  });
64000
64100
 
64101
+ // src/widgets/ThinkingEffort.ts
64102
+ function normalizeThinkingEffort2(value) {
64103
+ if (!value) {
64104
+ return;
64105
+ }
64106
+ const normalized = value.toLowerCase();
64107
+ if (normalized === "low" || normalized === "medium" || normalized === "high" || normalized === "max") {
64108
+ return normalized;
64109
+ }
64110
+ return;
64111
+ }
64112
+ function resolveThinkingEffortFromSettings() {
64113
+ try {
64114
+ const settings = loadClaudeSettingsSync({ logErrors: false });
64115
+ return normalizeThinkingEffort2(settings.effortLevel);
64116
+ } catch {}
64117
+ return;
64118
+ }
64119
+ function resolveThinkingEffort(context) {
64120
+ return getTranscriptThinkingEffort(context.data?.transcript_path) ?? resolveThinkingEffortFromSettings() ?? "medium";
64121
+ }
64122
+
64123
+ class ThinkingEffortWidget {
64124
+ getDefaultColor() {
64125
+ return "magenta";
64126
+ }
64127
+ getDescription() {
64128
+ return `Displays the current thinking effort level (low, medium, high, max).
64129
+ May be incorrect when multiple Claude Code sessions are running due to current Claude Code limitations.`;
64130
+ }
64131
+ getDisplayName() {
64132
+ return "Thinking Effort";
64133
+ }
64134
+ getCategory() {
64135
+ return "Core";
64136
+ }
64137
+ getEditorDisplay(item) {
64138
+ return { displayText: this.getDisplayName() };
64139
+ }
64140
+ render(item, context, settings) {
64141
+ if (context.isPreview) {
64142
+ return item.rawValue ? "high" : "Thinking: high";
64143
+ }
64144
+ const effort = resolveThinkingEffort(context);
64145
+ return item.rawValue ? effort : `Thinking: ${effort}`;
64146
+ }
64147
+ supportsRawValue() {
64148
+ return true;
64149
+ }
64150
+ supportsColors(item) {
64151
+ return true;
64152
+ }
64153
+ }
64154
+ var init_ThinkingEffort = __esm(() => {
64155
+ init_claude_settings();
64156
+ init_jsonl();
64157
+ });
64158
+
64159
+ // src/widgets/VimMode.ts
64160
+ function getFormat(item) {
64161
+ const f = item.metadata?.format;
64162
+ return FORMATS.includes(f ?? "") ? f : DEFAULT_FORMAT;
64163
+ }
64164
+ function setFormat(item, format) {
64165
+ if (format === DEFAULT_FORMAT) {
64166
+ const { format: removedFormat, ...restMetadata } = item.metadata ?? {};
64167
+ return {
64168
+ ...item,
64169
+ metadata: Object.keys(restMetadata).length > 0 ? restMetadata : undefined
64170
+ };
64171
+ }
64172
+ return {
64173
+ ...item,
64174
+ metadata: {
64175
+ ...item.metadata ?? {},
64176
+ format
64177
+ }
64178
+ };
64179
+ }
64180
+ function isNerdFontEnabled(item) {
64181
+ return item.metadata?.[NERD_FONT_METADATA_KEY] === "true";
64182
+ }
64183
+ function toggleNerdFont(item) {
64184
+ if (!isNerdFontEnabled(item)) {
64185
+ return {
64186
+ ...item,
64187
+ metadata: {
64188
+ ...item.metadata ?? {},
64189
+ [NERD_FONT_METADATA_KEY]: "true"
64190
+ }
64191
+ };
64192
+ }
64193
+ const { [NERD_FONT_METADATA_KEY]: removedNerdFont, ...restMetadata } = item.metadata ?? {};
64194
+ return {
64195
+ ...item,
64196
+ metadata: Object.keys(restMetadata).length > 0 ? restMetadata : undefined
64197
+ };
64198
+ }
64199
+ function formatMode(mode, format, icon) {
64200
+ const letter = mode === "NORMAL" ? "N" : mode === "INSERT" ? "I" : mode[0] ?? mode;
64201
+ switch (format) {
64202
+ case "icon-dash-letter":
64203
+ return `${icon}-${letter}`;
64204
+ case "icon-letter":
64205
+ return `${icon} ${letter}`;
64206
+ case "icon":
64207
+ return icon;
64208
+ case "letter":
64209
+ return letter;
64210
+ case "word":
64211
+ return mode;
64212
+ }
64213
+ }
64214
+
64215
+ class VimModeWidget {
64216
+ getDefaultColor() {
64217
+ return "green";
64218
+ }
64219
+ getDescription() {
64220
+ return "Displays current vim editor mode";
64221
+ }
64222
+ getDisplayName() {
64223
+ return "Vim Mode";
64224
+ }
64225
+ getCategory() {
64226
+ return "Core";
64227
+ }
64228
+ getEditorDisplay(item) {
64229
+ const modifiers = [getFormat(item)];
64230
+ if (isNerdFontEnabled(item)) {
64231
+ modifiers.push("nerd font");
64232
+ }
64233
+ return {
64234
+ displayText: this.getDisplayName(),
64235
+ modifierText: `(${modifiers.join(", ")})`
64236
+ };
64237
+ }
64238
+ handleEditorAction(action, item) {
64239
+ if (action === CYCLE_FORMAT_ACTION) {
64240
+ const currentFormat = getFormat(item);
64241
+ const nextFormat = FORMATS[(FORMATS.indexOf(currentFormat) + 1) % FORMATS.length] ?? DEFAULT_FORMAT;
64242
+ return setFormat(item, nextFormat);
64243
+ }
64244
+ if (action === TOGGLE_NERD_FONT_ACTION) {
64245
+ return toggleNerdFont(item);
64246
+ }
64247
+ return null;
64248
+ }
64249
+ render(item, context, _settings) {
64250
+ const format = getFormat(item);
64251
+ const icon = isNerdFontEnabled(item) ? VIM_NERD_FONT_ICON : VIM_ICON;
64252
+ if (context.isPreview)
64253
+ return formatMode("NORMAL", format, icon);
64254
+ const mode = context.data?.vim?.mode;
64255
+ if (mode === undefined)
64256
+ return null;
64257
+ return formatMode(mode, format, icon);
64258
+ }
64259
+ getCustomKeybinds() {
64260
+ return [
64261
+ { key: "f", label: "(f)ormat", action: CYCLE_FORMAT_ACTION },
64262
+ { key: "n", label: "(n)erd font", action: TOGGLE_NERD_FONT_ACTION }
64263
+ ];
64264
+ }
64265
+ supportsRawValue() {
64266
+ return false;
64267
+ }
64268
+ supportsColors(_item) {
64269
+ return true;
64270
+ }
64271
+ }
64272
+ var VIM_ICON = "v", VIM_NERD_FONT_ICON = "", FORMATS, DEFAULT_FORMAT = "icon-dash-letter", CYCLE_FORMAT_ACTION = "cycle-format", TOGGLE_NERD_FONT_ACTION = "toggle-nerd-font", NERD_FONT_METADATA_KEY = "nerdFont";
64273
+ var init_VimMode = __esm(() => {
64274
+ FORMATS = ["icon-dash-letter", "icon-letter", "icon", "letter", "word"];
64275
+ });
64276
+
64001
64277
  // src/widgets/index.ts
64002
64278
  var init_widgets = __esm(async () => {
64003
64279
  init_GitBranch();
@@ -64017,6 +64293,8 @@ var init_widgets = __esm(async () => {
64017
64293
  init_BlockResetTimer();
64018
64294
  init_WeeklyResetTimer();
64019
64295
  init_ContextBar();
64296
+ init_ThinkingEffort();
64297
+ init_VimMode();
64020
64298
  await __promiseAll([
64021
64299
  init_TokensInput(),
64022
64300
  init_TokensOutput(),
@@ -64074,7 +64352,9 @@ var init_widget_manifest = __esm(async () => {
64074
64352
  { type: "reset-timer", create: () => new BlockResetTimerWidget },
64075
64353
  { type: "weekly-reset-timer", create: () => new WeeklyResetTimerWidget },
64076
64354
  { type: "context-bar", create: () => new ContextBarWidget },
64077
- { type: "skills", create: () => new SkillsWidget }
64355
+ { type: "skills", create: () => new SkillsWidget },
64356
+ { type: "thinking-effort", create: () => new ThinkingEffortWidget },
64357
+ { type: "vim-mode", create: () => new VimModeWidget }
64078
64358
  ];
64079
64359
  LAYOUT_WIDGET_MANIFEST = [
64080
64360
  {
@@ -64383,7 +64663,7 @@ var init_config = __esm(() => {
64383
64663
  });
64384
64664
 
64385
64665
  // src/utils/claude-settings.ts
64386
- import { execSync as execSync6 } from "child_process";
64666
+ import { execSync as execSync5 } from "child_process";
64387
64667
  import * as fs10 from "fs";
64388
64668
  import * as os8 from "os";
64389
64669
  import * as path8 from "path";
@@ -64440,6 +64720,22 @@ async function backupClaudeSettings(suffix = ".bak") {
64440
64720
  }
64441
64721
  return null;
64442
64722
  }
64723
+ function loadClaudeSettingsSync(options = {}) {
64724
+ const { logErrors = true } = options;
64725
+ const settingsPath2 = getClaudeSettingsPath();
64726
+ if (!fs10.existsSync(settingsPath2)) {
64727
+ return {};
64728
+ }
64729
+ try {
64730
+ const content = fs10.readFileSync(settingsPath2, "utf-8");
64731
+ return JSON.parse(content);
64732
+ } catch (error48) {
64733
+ if (logErrors) {
64734
+ console.error("Failed to load Claude settings:", error48);
64735
+ }
64736
+ throw error48;
64737
+ }
64738
+ }
64443
64739
  async function loadClaudeSettings(options = {}) {
64444
64740
  const { logErrors = true } = options;
64445
64741
  const settingsPath2 = getClaudeSettingsPath();
@@ -64476,7 +64772,7 @@ async function isInstalled() {
64476
64772
  function isBunxAvailable() {
64477
64773
  try {
64478
64774
  const command = process.platform === "win32" ? "where bunx" : "which bunx";
64479
- execSync6(command, { stdio: "ignore" });
64775
+ execSync5(command, { stdio: "ignore" });
64480
64776
  return true;
64481
64777
  } catch {
64482
64778
  return false;
@@ -65073,7 +65369,7 @@ function openExternalUrl(url2) {
65073
65369
  }
65074
65370
 
65075
65371
  // src/utils/powerline.ts
65076
- import { execSync as execSync7 } from "child_process";
65372
+ import { execSync as execSync6 } from "child_process";
65077
65373
  import * as fs11 from "fs";
65078
65374
  import * as os10 from "os";
65079
65375
  import * as path9 from "path";
@@ -65207,7 +65503,7 @@ async function installPowerlineFonts() {
65207
65503
  if (fs11.existsSync(tempDir)) {
65208
65504
  fs11.rmSync(tempDir, { recursive: true, force: true });
65209
65505
  }
65210
- execSync7(`git clone --depth=1 https://github.com/powerline/fonts.git "${tempDir}"`, {
65506
+ execSync6(`git clone --depth=1 https://github.com/powerline/fonts.git "${tempDir}"`, {
65211
65507
  stdio: "pipe",
65212
65508
  encoding: "utf8"
65213
65509
  });
@@ -65215,14 +65511,14 @@ async function installPowerlineFonts() {
65215
65511
  const installScript = path9.join(tempDir, "install.sh");
65216
65512
  if (fs11.existsSync(installScript)) {
65217
65513
  fs11.chmodSync(installScript, 493);
65218
- execSync7(`cd "${tempDir}" && ./install.sh`, {
65514
+ execSync6(`cd "${tempDir}" && ./install.sh`, {
65219
65515
  stdio: "pipe",
65220
65516
  encoding: "utf8",
65221
65517
  shell: "/bin/bash"
65222
65518
  });
65223
65519
  if (platform4 === "linux") {
65224
65520
  try {
65225
- execSync7("fc-cache -f -v", {
65521
+ execSync6("fc-cache -f -v", {
65226
65522
  stdio: "pipe",
65227
65523
  encoding: "utf8"
65228
65524
  });
@@ -67200,7 +67496,7 @@ function handleNormalInputMode({
67200
67496
  setMoveMode,
67201
67497
  setShowClearConfirm,
67202
67498
  openWidgetPicker,
67203
- getVisibleCustomKeybinds,
67499
+ getCustomKeybindsForWidget,
67204
67500
  setCustomEditorWidget
67205
67501
  }) {
67206
67502
  if (key.upArrow && widgets.length > 0) {
@@ -67277,7 +67573,7 @@ function handleNormalInputMode({
67277
67573
  if (!widgetImpl?.getCustomKeybinds) {
67278
67574
  return;
67279
67575
  }
67280
- const customKeybinds = getVisibleCustomKeybinds(widgetImpl, currentWidget);
67576
+ const customKeybinds = getCustomKeybindsForWidget(widgetImpl, currentWidget);
67281
67577
  const matchedKeybind = customKeybinds.find((kb) => kb.key === input);
67282
67578
  if (matchedKeybind && !key.ctrl) {
67283
67579
  if (widgetImpl.handleEditorAction) {
@@ -67297,24 +67593,6 @@ function handleNormalInputMode({
67297
67593
  }
67298
67594
  }
67299
67595
 
67300
- // src/tui/components/items-editor/keybind-visibility.ts
67301
- function isProgressMode(widget) {
67302
- const mode = widget.metadata?.display;
67303
- return mode === "progress" || mode === "progress-short";
67304
- }
67305
- function shouldShowCustomKeybind(widget, keybind) {
67306
- if (keybind.action === "edit-list-limit") {
67307
- return widget.type === "skills" && widget.metadata?.mode === "list";
67308
- }
67309
- if (keybind.action === "toggle-invert") {
67310
- return isProgressMode(widget);
67311
- }
67312
- if (keybind.action === "toggle-compact") {
67313
- return !isProgressMode(widget);
67314
- }
67315
- return true;
67316
- }
67317
-
67318
67596
  // src/tui/components/ItemsEditor.tsx
67319
67597
  var jsx_dev_runtime12 = __toESM(require_jsx_dev_runtime(), 1);
67320
67598
  var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
@@ -67351,11 +67629,11 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
67351
67629
  const handleEditorCancel = () => {
67352
67630
  setCustomEditorWidget(null);
67353
67631
  };
67354
- const getVisibleCustomKeybinds = (widgetImpl, widget) => {
67632
+ const getCustomKeybindsForWidget = (widgetImpl, widget) => {
67355
67633
  if (!widgetImpl.getCustomKeybinds) {
67356
67634
  return [];
67357
67635
  }
67358
- return widgetImpl.getCustomKeybinds().filter((keybind) => shouldShowCustomKeybind(widget, keybind));
67636
+ return widgetImpl.getCustomKeybinds(widget);
67359
67637
  };
67360
67638
  const openWidgetPicker = (action) => {
67361
67639
  if (widgetCatalog.length === 0) {
@@ -67440,7 +67718,7 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
67440
67718
  setMoveMode,
67441
67719
  setShowClearConfirm,
67442
67720
  openWidgetPicker,
67443
- getVisibleCustomKeybinds,
67721
+ getCustomKeybindsForWidget,
67444
67722
  setCustomEditorWidget
67445
67723
  });
67446
67724
  });
@@ -67477,7 +67755,7 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
67477
67755
  const widgetImpl = getWidget(currentWidget.type);
67478
67756
  if (widgetImpl) {
67479
67757
  canToggleRaw = widgetImpl.supportsRawValue();
67480
- customKeybinds = getVisibleCustomKeybinds(widgetImpl, currentWidget);
67758
+ customKeybinds = getCustomKeybindsForWidget(widgetImpl, currentWidget);
67481
67759
  } else {
67482
67760
  canToggleRaw = false;
67483
67761
  }
@@ -70185,7 +70463,8 @@ var StatusJSONSchema = exports_external.looseObject({
70185
70463
  ]).nullable().optional(),
70186
70464
  used_percentage: CoercedNumberSchema.nullable().optional(),
70187
70465
  remaining_percentage: CoercedNumberSchema.nullable().optional()
70188
- }).nullable().optional()
70466
+ }).nullable().optional(),
70467
+ vim: exports_external.object({ mode: exports_external.string().optional() }).nullable().optional()
70189
70468
  });
70190
70469
 
70191
70470
  // src/ccstatusline.ts
@@ -70292,8 +70571,8 @@ async function ensureWindowsUtf8CodePage() {
70292
70571
  return;
70293
70572
  }
70294
70573
  try {
70295
- const { execFileSync } = await import("child_process");
70296
- execFileSync("chcp.com", ["65001"], { stdio: "ignore" });
70574
+ const { execFileSync: execFileSync2 } = await import("child_process");
70575
+ execFileSync2("chcp.com", ["65001"], { stdio: "ignore" });
70297
70576
  } catch {}
70298
70577
  }
70299
70578
  async function renderMultipleLines(data) {