claude-use 11.65.10 → 11.66.0

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/cli.cjs CHANGED
@@ -25544,7 +25544,7 @@ function resolveStatusline(settings2) {
25544
25544
  }
25545
25545
  return resolved;
25546
25546
  }
25547
- var STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_SESSION_TIME_PARTS, PROMPT_CACHE_TTL_SECONDS, ORANGE_PALETTE_INDEX, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PRESETS, GIT_WITH_DIRTY_MARKER, JJ_OFF, PRESET_BUNDLES, STATUSLINE_PATH_LEVELS, STATUSLINE_USAGE_VALUES, STATUSLINE_TIME_FORMATS, STATUSLINE_HOUR_CYCLES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_COLUMNS, MIN_STATUSLINE_COLUMNS, MAX_STATUSLINE_COLUMNS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, MAX_EXTRA_COMMAND_ARGUMENTS, MAX_EXTRA_COMMAND_ARGUMENT_CHARS, STATUSLINE_EXTRA_GROUP, commandArgument, LABEL_RE2, OPTIONAL_LABEL_RE, mergeGroups, colourValue, barCharacter, STATUSLINE_CONTEXT_VALUES, STATUSLINE_CONTEXT_ESTIMATES, AUTOCOMPACT_RESERVE_FRACTION, AUTOCOMPACT_RESERVE_RAMP_START, AUTOCOMPACT_RESERVE_RAMP_END, labelWithinColumns, labelWithinColumnsMessage, labelShowsSomething, labelShowsSomethingMessage, labelIsPlainText, labelIsPlainTextMessage, windowLabel, overrideText, wholePercent, thresholdPercent, SHAPES, UNSET_NOTE, LANGUAGE_DESCRIPTION, LANGUAGE_TAGS, LANGUAGE_ALIASES, TOP_LEVEL, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
25547
+ var STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_SESSION_TIME_PARTS, PROMPT_CACHE_TTL_SECONDS, ORANGE_PALETTE_INDEX, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PRESETS, GIT_WITH_DIRTY_MARKER, JJ_OFF, PRESET_BUNDLES, STATUSLINE_PATH_LEVELS, STATUSLINE_USAGE_VALUES, STATUSLINE_BAR_GRADIENTS, STATUSLINE_TIME_FORMATS, STATUSLINE_HOUR_CYCLES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_COLUMNS, MIN_STATUSLINE_COLUMNS, MAX_STATUSLINE_COLUMNS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, MAX_EXTRA_COMMAND_ARGUMENTS, MAX_EXTRA_COMMAND_ARGUMENT_CHARS, STATUSLINE_EXTRA_GROUP, commandArgument, LABEL_RE2, OPTIONAL_LABEL_RE, mergeGroups, colourValue, barCharacter, STATUSLINE_CONTEXT_VALUES, STATUSLINE_CONTEXT_ESTIMATES, AUTOCOMPACT_RESERVE_FRACTION, AUTOCOMPACT_RESERVE_RAMP_START, AUTOCOMPACT_RESERVE_RAMP_END, labelWithinColumns, labelWithinColumnsMessage, labelShowsSomething, labelShowsSomethingMessage, labelIsPlainText, labelIsPlainTextMessage, windowLabel, overrideText, wholePercent, thresholdPercent, SHAPES, UNSET_NOTE, LANGUAGE_DESCRIPTION, LANGUAGE_TAGS, LANGUAGE_ALIASES, TOP_LEVEL, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
25548
25548
  var init_statusline = __esm({
25549
25549
  "src/config/statusline.ts"() {
25550
25550
  "use strict";
@@ -25597,6 +25597,7 @@ var init_statusline = __esm({
25597
25597
  };
25598
25598
  STATUSLINE_PATH_LEVELS = ["1", "2", "3", "full"];
25599
25599
  STATUSLINE_USAGE_VALUES = ["used", "remaining"];
25600
+ STATUSLINE_BAR_GRADIENTS = ["off", "use", "width"];
25600
25601
  STATUSLINE_TIME_FORMATS = ["relative", "absolute", "both", "elapsed", "elapsedAndAbsolute"];
25601
25602
  STATUSLINE_HOUR_CYCLES = ["auto", "h11", "h12", "h23", "h24"];
25602
25603
  MAX_PERCENT = 100;
@@ -25667,8 +25668,8 @@ var init_statusline = __esm({
25667
25668
  context: {
25668
25669
  bar: external_exports.enum(["shown", "hidden"]).describe("Whether the context row draws its bar, or only its figures on one line of text."),
25669
25670
  value: external_exports.enum(STATUSLINE_CONTEXT_VALUES).describe("The context figure: both (the tokens held against the window, then the percentage), percent, tokens, or remaining (the percentage of the window left)."),
25670
- warnAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns yellow; while it is unset the context bar follows bands.warnAt."),
25671
- criticalAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns red and, with context.breakdown set to critical, the token breakdown appears; while it is unset the context bar follows bands.criticalAt."),
25671
+ warnAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns yellow when bar.gradient is off (a bar.gradient of use holds the warning colour exactly there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn); while it is unset the context bar follows bands.warnAt."),
25672
+ criticalAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns red when bar.gradient is off (a bar.gradient of use holds the critical colour from there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn) and, with context.breakdown set to critical, the token breakdown appears; while it is unset the context bar follows bands.criticalAt."),
25672
25673
  autoCompactWindow: external_exports.number().int().positive().optional().describe("A window in tokens to measure the context against instead of the model's, matching the figure /context gives once Claude Code compacts before the window is full. While it is set, the row draws nothing until the client reports the tokens held, since without them there is nothing to measure against it; while it is unset the model's own window is used."),
25673
25674
  estimate: external_exports.enum(STATUSLINE_CONTEXT_ESTIMATES).describe(`What to draw when the client reports no percentage of the window in use, or reports 0 while tokens are already held (which is how a client says it has not worked it out yet): never (nothing is estimated: a percentage reported, 0 included, is drawn as it is, and none reported draws nothing), raw (the tokens held over the window), or buffered (that, plus the ${String(AUTOCOMPACT_RESERVE_FRACTION * MAX_PERCENT)}% of the window Claude Code reserves for compaction, rising from nothing at ${String(AUTOCOMPACT_RESERVE_RAMP_START * MAX_PERCENT)}% of the window held to the whole reserve at ${String(AUTOCOMPACT_RESERVE_RAMP_END * MAX_PERCENT)}%).`),
25674
25675
  breakdown: external_exports.enum(["never", "critical"]).describe("Whether to add the input and cache tokens of the last request to the context row once its use reaches context.criticalAt.")
@@ -25683,8 +25684,8 @@ var init_statusline = __esm({
25683
25684
  )
25684
25685
  },
25685
25686
  bands: {
25686
- warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow; it must be below criticalAt."),
25687
- criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red.")
25687
+ warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow when bar.gradient is off; it must be below criticalAt. A bar.gradient of use holds the warning colour exactly there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn."),
25688
+ criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red when bar.gradient is off. A bar.gradient of use holds the critical colour from there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn.")
25688
25689
  },
25689
25690
  labels: {
25690
25691
  fiveHour: windowLabel.describe("The name of the five-hour subscription window; empty uses the language's own name for it."),
@@ -25692,6 +25693,9 @@ var init_statusline = __esm({
25692
25693
  },
25693
25694
  bar: {
25694
25695
  width: external_exports.number().int().min(1).max(MAX_BAR_CELLS).describe("A bar's width in cells before the line's spare width is shared out among the bars."),
25696
+ gradient: external_exports.enum(STATUSLINE_BAR_GRADIENTS).describe(
25697
+ "How a bar's used part is coloured: off (the default) draws the band's single colour, the bar's own colour below the warning threshold, the warning colour from there and the critical one from the critical threshold; use blends the bar's colour with its use, from its own colour at none in use to the warning colour at the warning threshold and the critical one at the critical threshold, holding exactly the colour the bands draw at each threshold and the critical colour above it; and width colours each cell of the used part across the bar's width, from the bar's own colour at the first cell to the critical one at the last, whatever the use, with a bar one cell wide drawing that cell in its own colour. A bar's thresholds are bands.warnAt and bands.criticalAt, the context bar's own where it sets them, and the figures beside a bar keep the band's colours in every mode. The unused part keeps colours.empty in every mode, and when that is default or dim, which set no colour of their own, it draws in the colour the used part ends in: under off the band's colour, under use the blend for the bar's use (even where no cell of the used part is drawn), and under width the last drawn cell's colour (the band's colour where no cell is drawn). A gradient blends RGB values, so a colour name, or a palette index below 16, is blended at the default RGB the xterm scheme gives it rather than the shade a themed terminal draws it in, while a stop itself, where a mode holds it exactly, is drawn as the bands draw that role. A bar whose stops include a role set to default or dim, which names no colour of its own, is drawn in the band's single colour: for use those stops are the bar's own, warning and critical roles, and for width its own and critical roles. A width bar with no cell of its used part drawn has no cell to colour, so it takes the band's colours as off does."
25698
+ ),
25695
25699
  filled: barCharacter.describe("The character that draws the used part of a bar."),
25696
25700
  empty: barCharacter.describe("The character that draws the unused part of a bar.")
25697
25701
  },
@@ -25726,11 +25730,11 @@ var init_statusline = __esm({
25726
25730
  maxVisible: external_exports.number().int().min(0).describe("The most kinds of finished tool call the tools row names, the most-used first, with the rest counted as +N more. 0 names every kind.")
25727
25731
  },
25728
25732
  colours: {
25729
- context: colourValue.describe("The colour of the context bar and its figures below the warning threshold."),
25730
- usage: colourValue.describe("The colour of the quota bars and their figures below the warning threshold."),
25731
- warning: colourValue.describe("The colour of the context bar at or above bands.warnAt, and of a cache hit share that is middling."),
25732
- usageWarning: colourValue.describe("The colour of a quota bar at or above bands.warnAt."),
25733
- critical: colourValue.describe("The colour of a bar at or above bands.criticalAt, and of a cache hit share that is nearly nothing."),
25733
+ context: colourValue.describe("The colour of the context bar below the warning threshold while bar.gradient is off, of the figures beside it below that threshold in every mode, and the colour a bar.gradient of use or width blends the context bar from (at none in use for use, at the first cell for width), while a gradient bar with a stop whose colour is default or dim, or a width bar with no cell of its used part drawn, takes the band's colours."),
25734
+ usage: colourValue.describe("The colour of the quota bars and the memory bar below the warning threshold while bar.gradient is off, of the figures beside them below that threshold in every mode, and the colour a bar.gradient of use or width blends those bars from (at none in use for use, at the first cell for width), while a gradient bar with a stop whose colour is default or dim, or a width bar with no cell of its used part drawn, takes the band's colours."),
25735
+ warning: colourValue.describe("The colour of the context bar from its warning threshold (bands.warnAt, or context.warnAt where that is set) up to its critical threshold (bands.criticalAt, or context.criticalAt where that is set) when bar.gradient is off (a bar.gradient of use holds it exactly at the threshold, and a gradient bar with a stop whose colour is default or dim draws the band's colours instead, and so does a width bar with no cell of its used part drawn), of the figures beside the bar from that threshold up to its critical threshold in every mode, and of a cache hit share that is middling."),
25736
+ usageWarning: colourValue.describe("The colour of a quota bar or the memory bar from bands.warnAt up to bands.criticalAt when bar.gradient is off (a bar.gradient of use holds it exactly at bands.warnAt, and a gradient bar with a stop whose colour is default or dim draws the band's colours instead, and so does a width bar with no cell of its used part drawn), and of the figures beside the bar from that threshold up to bands.criticalAt in every mode."),
25737
+ critical: colourValue.describe("The colour of a bar at or above its critical threshold (bands.criticalAt, or context.criticalAt for the context bar where that is set) when bar.gradient is off or use, of the last cell of a full bar more than one cell wide under a bar.gradient of width (a bar one cell wide draws its cell in its own colour, and a width bar whose own colour or this one is default or dim, or that has no cell of its used part drawn, draws the band's colours instead), of the figures beside a bar from its critical threshold in every mode, and of a cache hit share that is nearly nothing."),
25734
25738
  model: colourValue.describe("The colour of the model and provider segments."),
25735
25739
  label: colourValue.describe("The colour of labels and secondary text: row labels, and the route, account, identity and headroom segments."),
25736
25740
  empty: colourValue.describe("The colour of the unused part of a bar."),
@@ -25836,7 +25840,7 @@ var init_statusline = __esm({
25836
25840
  extra: { command: [] },
25837
25841
  bands: { warnAt: 70, criticalAt: 90 },
25838
25842
  labels: { fiveHour: "", sevenDay: "" },
25839
- bar: { width: 10, filled: "\u2588", empty: "\u2591" },
25843
+ bar: { width: 10, gradient: "off", filled: "\u2588", empty: "\u2591" },
25840
25844
  usage: { value: "used", bar: true, compact: false, resetLabel: false, modelScoped: false, timeFormat: "relative", threshold: 0, sevenDayThreshold: 0 },
25841
25845
  clock: { hourCycle: "auto", seconds: false },
25842
25846
  cost: { routed: false },
@@ -37172,7 +37176,7 @@ var init_package = __esm({
37172
37176
  "package.json"() {
37173
37177
  package_default = {
37174
37178
  name: "claude-use",
37175
- version: "11.65.10",
37179
+ version: "11.66.0",
37176
37180
  description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
37177
37181
  license: "MIT",
37178
37182
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -141000,6 +141004,78 @@ function durationSegment(context) {
141000
141004
  return startedAtMs === void 0 ? void 0 : `\u23F1\uFE0F ${formatElapsed(context.nowMs - startedAtMs)}`;
141001
141005
  }
141002
141006
 
141007
+ // src/statusline/colour.ts
141008
+ init_statusline();
141009
+ var FULL_CHANNEL = 255;
141010
+ var NORMAL_PRIMARY = 205;
141011
+ var SCHEME_WHITE = 229;
141012
+ var SCHEME_BLUE = 238;
141013
+ var BRIGHT_BLACK_GREY = 127;
141014
+ var BRIGHT_BLUE_TINT = 92;
141015
+ var NAMED_DEFAULT_RGB = {
141016
+ black: [0, 0, 0],
141017
+ red: [NORMAL_PRIMARY, 0, 0],
141018
+ green: [0, NORMAL_PRIMARY, 0],
141019
+ yellow: [NORMAL_PRIMARY, NORMAL_PRIMARY, 0],
141020
+ blue: [0, 0, SCHEME_BLUE],
141021
+ magenta: [NORMAL_PRIMARY, 0, NORMAL_PRIMARY],
141022
+ cyan: [0, NORMAL_PRIMARY, NORMAL_PRIMARY],
141023
+ white: [SCHEME_WHITE, SCHEME_WHITE, SCHEME_WHITE],
141024
+ brightBlack: [BRIGHT_BLACK_GREY, BRIGHT_BLACK_GREY, BRIGHT_BLACK_GREY],
141025
+ brightRed: [FULL_CHANNEL, 0, 0],
141026
+ brightGreen: [0, FULL_CHANNEL, 0],
141027
+ brightYellow: [FULL_CHANNEL, FULL_CHANNEL, 0],
141028
+ brightBlue: [BRIGHT_BLUE_TINT, BRIGHT_BLUE_TINT, FULL_CHANNEL],
141029
+ brightMagenta: [FULL_CHANNEL, 0, FULL_CHANNEL],
141030
+ brightCyan: [0, FULL_CHANNEL, FULL_CHANNEL],
141031
+ brightWhite: [FULL_CHANNEL, FULL_CHANNEL, FULL_CHANNEL]
141032
+ };
141033
+ function isNamedColour(value2) {
141034
+ return value2 !== "default" && value2 !== "dim" && STATUSLINE_COLOUR_NAMES.some((name) => name === value2);
141035
+ }
141036
+ var NAMED_RGB_IN_PALETTE_ORDER = STATUSLINE_COLOUR_NAMES.filter(isNamedColour).map((name) => NAMED_DEFAULT_RGB[name]);
141037
+ var CUBE_SIDE = 6;
141038
+ var CUBE_FIRST_INDEX = 16;
141039
+ var GREYSCALE_FIRST_INDEX = CUBE_FIRST_INDEX + CUBE_SIDE * CUBE_SIDE * CUBE_SIDE;
141040
+ var GREYSCALE_START = 8;
141041
+ var GREYSCALE_STEP = 10;
141042
+ var CUBE_CHANNEL_BASE = 55;
141043
+ var CUBE_CHANNEL_STEP = 40;
141044
+ function cubeChannel(level) {
141045
+ return level === 0 ? 0 : CUBE_CHANNEL_BASE + CUBE_CHANNEL_STEP * level;
141046
+ }
141047
+ function paletteIndexRgb(index) {
141048
+ if (index < CUBE_FIRST_INDEX) {
141049
+ return NAMED_RGB_IN_PALETTE_ORDER[index];
141050
+ }
141051
+ if (index < GREYSCALE_FIRST_INDEX) {
141052
+ const cube = index - CUBE_FIRST_INDEX;
141053
+ return [cubeChannel(Math.floor(cube / CUBE_SIDE ** 2)), cubeChannel(Math.floor(cube / CUBE_SIDE) % CUBE_SIDE), cubeChannel(cube % CUBE_SIDE)];
141054
+ }
141055
+ const grey = GREYSCALE_START + GREYSCALE_STEP * (index - GREYSCALE_FIRST_INDEX);
141056
+ return [grey, grey, grey];
141057
+ }
141058
+ var CHANNEL_DIGITS = 2;
141059
+ var HEX_RADIX2 = 16;
141060
+ var HASH_LENGTH = 1;
141061
+ function rgbOfHex(value2) {
141062
+ const channel = (index) => Number.parseInt(value2.slice(HASH_LENGTH + index * CHANNEL_DIGITS, HASH_LENGTH + (index + 1) * CHANNEL_DIGITS), HEX_RADIX2);
141063
+ return [channel(0), channel(1), channel(2)];
141064
+ }
141065
+ function rgbOfSetting(value2) {
141066
+ if (typeof value2 === "number") {
141067
+ return paletteIndexRgb(value2);
141068
+ }
141069
+ if (value2.startsWith("#")) {
141070
+ return rgbOfHex(value2);
141071
+ }
141072
+ return isNamedColour(value2) ? NAMED_DEFAULT_RGB[value2] : void 0;
141073
+ }
141074
+ function blendRgb(from, to2, at2) {
141075
+ const channel = (start, end) => Math.round(start + (end - start) * at2);
141076
+ return [channel(from[0], to2[0]), channel(from[1], to2[1]), channel(from[2], to2[2])];
141077
+ }
141078
+
141003
141079
  // src/statusline/palette.ts
141004
141080
  init_statusline();
141005
141081
  var RESET = `${ESCAPE}[0m`;
@@ -141026,16 +141102,15 @@ var SGR_BY_NAME = {
141026
141102
  function isColourName(value2) {
141027
141103
  return STATUSLINE_COLOUR_NAMES.some((name) => name === value2);
141028
141104
  }
141029
- var CHANNELS = 3;
141030
- var CHANNEL_DIGITS = 2;
141031
- var HEX_RADIX2 = 16;
141105
+ function rgbSgr(channels) {
141106
+ return `38;2;${channels.join(";")}`;
141107
+ }
141032
141108
  function sgrOf(value2) {
141033
141109
  if (typeof value2 === "number") {
141034
141110
  return `38;5;${String(value2)}`;
141035
141111
  }
141036
141112
  if (value2.startsWith("#")) {
141037
- const channels = Array.from({ length: CHANNELS }, (_, index) => Number.parseInt(value2.slice(1 + index * CHANNEL_DIGITS, 1 + (index + 1) * CHANNEL_DIGITS), HEX_RADIX2));
141038
- return `38;2;${channels.join(";")}`;
141113
+ return rgbSgr(rgbOfHex(value2));
141039
141114
  }
141040
141115
  return isColourName(value2) ? SGR_BY_NAME[value2] : "";
141041
141116
  }
@@ -141052,7 +141127,9 @@ function createPalette(colours, enabled) {
141052
141127
  paint: (role, text5) => {
141053
141128
  const start = ansi(role);
141054
141129
  return start === "" ? text5 : `${start}${text5}${RESET}`;
141055
- }
141130
+ },
141131
+ rgb: (channels) => enabled ? `${ESCAPE}[${rgbSgr(channels)}m` : "",
141132
+ rgbOf: (role) => rgbOfSetting(colours[role])
141056
141133
  };
141057
141134
  }
141058
141135
 
@@ -141068,21 +141145,71 @@ var ONE_PERCENT = 1;
141068
141145
  function withColor(color, text5) {
141069
141146
  return color === "" ? text5 : `${color}${text5}${RESET}`;
141070
141147
  }
141148
+ function warningRoleOf(style) {
141149
+ return style.okRole === "usage" ? "usageWarning" : "warning";
141150
+ }
141071
141151
  function statusColor(fraction, isUsedMetric, style) {
141072
141152
  const yellowAt = style.bands.warnAt / FULL_PERCENT3;
141073
141153
  const redAt = style.bands.criticalAt / FULL_PERCENT3;
141074
- const warningRole = style.okRole === "usage" ? "usageWarning" : "warning";
141075
141154
  const { ansi } = style.palette;
141076
141155
  if (isUsedMetric) {
141077
141156
  if (fraction >= redAt) {
141078
141157
  return ansi("critical");
141079
141158
  }
141080
- return fraction >= yellowAt ? ansi(warningRole) : ansi(style.okRole);
141159
+ return fraction >= yellowAt ? ansi(warningRoleOf(style)) : ansi(style.okRole);
141081
141160
  }
141082
141161
  if (fraction <= 1 - redAt) {
141083
141162
  return ansi("critical");
141084
141163
  }
141085
- return fraction <= 1 - yellowAt ? ansi(warningRole) : ansi(style.okRole);
141164
+ return fraction <= 1 - yellowAt ? ansi(warningRoleOf(style)) : ansi(style.okRole);
141165
+ }
141166
+ function stopOf(role, style) {
141167
+ const rgb = style.palette.rgbOf(role);
141168
+ return rgb === void 0 ? void 0 : { role, rgb };
141169
+ }
141170
+ function colourBetween(from, to2, at2, style) {
141171
+ if (at2 <= 0) {
141172
+ return style.palette.ansi(from.role);
141173
+ }
141174
+ if (at2 >= 1) {
141175
+ return style.palette.ansi(to2.role);
141176
+ }
141177
+ return style.palette.rgb(blendRgb(from.rgb, to2.rgb, at2));
141178
+ }
141179
+ function gradientColorOf(fraction, style) {
141180
+ const ok2 = stopOf(style.okRole, style);
141181
+ const warning = stopOf(warningRoleOf(style), style);
141182
+ const critical = stopOf("critical", style);
141183
+ if (ok2 === void 0 || warning === void 0 || critical === void 0) {
141184
+ return void 0;
141185
+ }
141186
+ const warnAt = style.bands.warnAt / FULL_PERCENT3;
141187
+ const criticalAt = style.bands.criticalAt / FULL_PERCENT3;
141188
+ return fraction < warnAt ? colourBetween(ok2, warning, fraction / warnAt, style) : colourBetween(warning, critical, (fraction - warnAt) / (criticalAt - warnAt), style);
141189
+ }
141190
+ function widthStopsOf(style) {
141191
+ const ok2 = stopOf(style.okRole, style);
141192
+ const critical = stopOf("critical", style);
141193
+ return ok2 === void 0 || critical === void 0 ? void 0 : { ok: ok2, critical };
141194
+ }
141195
+ function acrossBar(column, cells) {
141196
+ return cells <= 1 ? 0 : column / (cells - 1);
141197
+ }
141198
+ function fillOf(fraction, filled, cells, style) {
141199
+ const stops = style.gradient === "width" ? widthStopsOf(style) : void 0;
141200
+ if (stops !== void 0 && filled > 0) {
141201
+ return Array.from({ length: filled }, (_, column) => `${colourBetween(stops.ok, stops.critical, acrossBar(column, cells), style)}${style.filled}`).join("");
141202
+ }
141203
+ const color = style.gradient === "use" ? gradientColorOf(fraction, style) : void 0;
141204
+ return `${color ?? statusColor(fraction, true, style)}${style.filled.repeat(filled)}`;
141205
+ }
141206
+ function drawBar(fraction, cells, style) {
141207
+ const clamped = Math.max(0, Math.min(1, fraction));
141208
+ const filled = Math.round(clamped * cells);
141209
+ const emptyColor = style.palette.ansi("empty");
141210
+ const fill = fillOf(clamped, filled, cells, style);
141211
+ const empty = style.empty.repeat(cells - filled);
141212
+ return fill === style.filled.repeat(filled) && emptyColor === "" ? `[${fill}${empty}]` : `[${fill}${emptyColor}${empty}${RESET}]`;
141086
141213
  }
141087
141214
  function formatTokens(num) {
141088
141215
  if (num >= MILLION) {
@@ -141120,17 +141247,6 @@ function secondsUntil(resetAt, nowMs) {
141120
141247
  const resetMs = Date.parse(resetAt);
141121
141248
  return Number.isNaN(resetMs) ? void 0 : Math.max(0, Math.round((resetMs - nowMs) / THOUSAND));
141122
141249
  }
141123
- function drawBar(fraction, cells, style) {
141124
- const clamped = Math.max(0, Math.min(1, fraction));
141125
- const filled = Math.round(clamped * cells);
141126
- const color = statusColor(clamped, true, style);
141127
- const emptyColor = style.palette.ansi("empty");
141128
- const body = `${style.filled.repeat(filled)}${style.empty.repeat(cells - filled)}`;
141129
- if (color === "" && emptyColor === "") {
141130
- return `[${body}]`;
141131
- }
141132
- return `[${color}${style.filled.repeat(filled)}${emptyColor}${style.empty.repeat(cells - filled)}${RESET}]`;
141133
- }
141134
141250
  function barCell(prefix, suffix, fraction, style) {
141135
141251
  return { prefix, suffix, draw: (cells) => drawBar(fraction, cells, style) };
141136
141252
  }
@@ -141902,7 +142018,7 @@ init_statusline();
141902
142018
 
141903
142019
  // src/statusline/elements/context.ts
141904
142020
  function barStyleOf({ settings: settings2, palette }, okRole) {
141905
- return { bands: settings2.bands, palette, okRole, filled: settings2.bar.filled, empty: settings2.bar.empty };
142021
+ return { bands: settings2.bands, palette, okRole, gradient: settings2.bar.gradient, filled: settings2.bar.filled, empty: settings2.bar.empty };
141906
142022
  }
141907
142023
 
141908
142024
  // src/statusline/elements/rows/context.ts
package/dist/index.cjs CHANGED
@@ -324,7 +324,7 @@ function resolveStatusline(settings) {
324
324
  }
325
325
  return resolved;
326
326
  }
327
- var import_string_width2, import_zod2, STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_SESSION_TIME_PARTS, PROMPT_CACHE_TTL_SECONDS, ORANGE_PALETTE_INDEX, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PRESETS, GIT_WITH_DIRTY_MARKER, JJ_OFF, PRESET_BUNDLES, STATUSLINE_PATH_LEVELS, STATUSLINE_USAGE_VALUES, STATUSLINE_TIME_FORMATS, STATUSLINE_HOUR_CYCLES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_COLUMNS, MIN_STATUSLINE_COLUMNS, MAX_STATUSLINE_COLUMNS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, MAX_EXTRA_COMMAND_ARGUMENTS, MAX_EXTRA_COMMAND_ARGUMENT_CHARS, STATUSLINE_EXTRA_GROUP, commandArgument, LABEL_RE2, OPTIONAL_LABEL_RE, mergeGroups, colourValue, barCharacter, STATUSLINE_CONTEXT_VALUES, STATUSLINE_CONTEXT_ESTIMATES, AUTOCOMPACT_RESERVE_FRACTION, AUTOCOMPACT_RESERVE_RAMP_START, AUTOCOMPACT_RESERVE_RAMP_END, labelWithinColumns, labelWithinColumnsMessage, labelShowsSomething, labelShowsSomethingMessage, labelIsPlainText, labelIsPlainTextMessage, windowLabel, overrideText, wholePercent, thresholdPercent, SHAPES, UNSET_NOTE, LANGUAGE_DESCRIPTION, LANGUAGE_TAGS, LANGUAGE_ALIASES, TOP_LEVEL, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
327
+ var import_string_width2, import_zod2, STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_SESSION_TIME_PARTS, PROMPT_CACHE_TTL_SECONDS, ORANGE_PALETTE_INDEX, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PRESETS, GIT_WITH_DIRTY_MARKER, JJ_OFF, PRESET_BUNDLES, STATUSLINE_PATH_LEVELS, STATUSLINE_USAGE_VALUES, STATUSLINE_BAR_GRADIENTS, STATUSLINE_TIME_FORMATS, STATUSLINE_HOUR_CYCLES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_COLUMNS, MIN_STATUSLINE_COLUMNS, MAX_STATUSLINE_COLUMNS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, MAX_EXTRA_COMMAND_ARGUMENTS, MAX_EXTRA_COMMAND_ARGUMENT_CHARS, STATUSLINE_EXTRA_GROUP, commandArgument, LABEL_RE2, OPTIONAL_LABEL_RE, mergeGroups, colourValue, barCharacter, STATUSLINE_CONTEXT_VALUES, STATUSLINE_CONTEXT_ESTIMATES, AUTOCOMPACT_RESERVE_FRACTION, AUTOCOMPACT_RESERVE_RAMP_START, AUTOCOMPACT_RESERVE_RAMP_END, labelWithinColumns, labelWithinColumnsMessage, labelShowsSomething, labelShowsSomethingMessage, labelIsPlainText, labelIsPlainTextMessage, windowLabel, overrideText, wholePercent, thresholdPercent, SHAPES, UNSET_NOTE, LANGUAGE_DESCRIPTION, LANGUAGE_TAGS, LANGUAGE_ALIASES, TOP_LEVEL, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
328
328
  var init_statusline = __esm({
329
329
  "src/config/statusline.ts"() {
330
330
  "use strict";
@@ -377,6 +377,7 @@ var init_statusline = __esm({
377
377
  };
378
378
  STATUSLINE_PATH_LEVELS = ["1", "2", "3", "full"];
379
379
  STATUSLINE_USAGE_VALUES = ["used", "remaining"];
380
+ STATUSLINE_BAR_GRADIENTS = ["off", "use", "width"];
380
381
  STATUSLINE_TIME_FORMATS = ["relative", "absolute", "both", "elapsed", "elapsedAndAbsolute"];
381
382
  STATUSLINE_HOUR_CYCLES = ["auto", "h11", "h12", "h23", "h24"];
382
383
  MAX_PERCENT = 100;
@@ -447,8 +448,8 @@ var init_statusline = __esm({
447
448
  context: {
448
449
  bar: import_zod2.z.enum(["shown", "hidden"]).describe("Whether the context row draws its bar, or only its figures on one line of text."),
449
450
  value: import_zod2.z.enum(STATUSLINE_CONTEXT_VALUES).describe("The context figure: both (the tokens held against the window, then the percentage), percent, tokens, or remaining (the percentage of the window left)."),
450
- warnAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns yellow; while it is unset the context bar follows bands.warnAt."),
451
- criticalAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns red and, with context.breakdown set to critical, the token breakdown appears; while it is unset the context bar follows bands.criticalAt."),
451
+ warnAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns yellow when bar.gradient is off (a bar.gradient of use holds the warning colour exactly there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn); while it is unset the context bar follows bands.warnAt."),
452
+ criticalAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns red when bar.gradient is off (a bar.gradient of use holds the critical colour from there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn) and, with context.breakdown set to critical, the token breakdown appears; while it is unset the context bar follows bands.criticalAt."),
452
453
  autoCompactWindow: import_zod2.z.number().int().positive().optional().describe("A window in tokens to measure the context against instead of the model's, matching the figure /context gives once Claude Code compacts before the window is full. While it is set, the row draws nothing until the client reports the tokens held, since without them there is nothing to measure against it; while it is unset the model's own window is used."),
453
454
  estimate: import_zod2.z.enum(STATUSLINE_CONTEXT_ESTIMATES).describe(`What to draw when the client reports no percentage of the window in use, or reports 0 while tokens are already held (which is how a client says it has not worked it out yet): never (nothing is estimated: a percentage reported, 0 included, is drawn as it is, and none reported draws nothing), raw (the tokens held over the window), or buffered (that, plus the ${String(AUTOCOMPACT_RESERVE_FRACTION * MAX_PERCENT)}% of the window Claude Code reserves for compaction, rising from nothing at ${String(AUTOCOMPACT_RESERVE_RAMP_START * MAX_PERCENT)}% of the window held to the whole reserve at ${String(AUTOCOMPACT_RESERVE_RAMP_END * MAX_PERCENT)}%).`),
454
455
  breakdown: import_zod2.z.enum(["never", "critical"]).describe("Whether to add the input and cache tokens of the last request to the context row once its use reaches context.criticalAt.")
@@ -463,8 +464,8 @@ var init_statusline = __esm({
463
464
  )
464
465
  },
465
466
  bands: {
466
- warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow; it must be below criticalAt."),
467
- criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red.")
467
+ warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow when bar.gradient is off; it must be below criticalAt. A bar.gradient of use holds the warning colour exactly there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn."),
468
+ criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red when bar.gradient is off. A bar.gradient of use holds the critical colour from there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn.")
468
469
  },
469
470
  labels: {
470
471
  fiveHour: windowLabel.describe("The name of the five-hour subscription window; empty uses the language's own name for it."),
@@ -472,6 +473,9 @@ var init_statusline = __esm({
472
473
  },
473
474
  bar: {
474
475
  width: import_zod2.z.number().int().min(1).max(MAX_BAR_CELLS).describe("A bar's width in cells before the line's spare width is shared out among the bars."),
476
+ gradient: import_zod2.z.enum(STATUSLINE_BAR_GRADIENTS).describe(
477
+ "How a bar's used part is coloured: off (the default) draws the band's single colour, the bar's own colour below the warning threshold, the warning colour from there and the critical one from the critical threshold; use blends the bar's colour with its use, from its own colour at none in use to the warning colour at the warning threshold and the critical one at the critical threshold, holding exactly the colour the bands draw at each threshold and the critical colour above it; and width colours each cell of the used part across the bar's width, from the bar's own colour at the first cell to the critical one at the last, whatever the use, with a bar one cell wide drawing that cell in its own colour. A bar's thresholds are bands.warnAt and bands.criticalAt, the context bar's own where it sets them, and the figures beside a bar keep the band's colours in every mode. The unused part keeps colours.empty in every mode, and when that is default or dim, which set no colour of their own, it draws in the colour the used part ends in: under off the band's colour, under use the blend for the bar's use (even where no cell of the used part is drawn), and under width the last drawn cell's colour (the band's colour where no cell is drawn). A gradient blends RGB values, so a colour name, or a palette index below 16, is blended at the default RGB the xterm scheme gives it rather than the shade a themed terminal draws it in, while a stop itself, where a mode holds it exactly, is drawn as the bands draw that role. A bar whose stops include a role set to default or dim, which names no colour of its own, is drawn in the band's single colour: for use those stops are the bar's own, warning and critical roles, and for width its own and critical roles. A width bar with no cell of its used part drawn has no cell to colour, so it takes the band's colours as off does."
478
+ ),
475
479
  filled: barCharacter.describe("The character that draws the used part of a bar."),
476
480
  empty: barCharacter.describe("The character that draws the unused part of a bar.")
477
481
  },
@@ -506,11 +510,11 @@ var init_statusline = __esm({
506
510
  maxVisible: import_zod2.z.number().int().min(0).describe("The most kinds of finished tool call the tools row names, the most-used first, with the rest counted as +N more. 0 names every kind.")
507
511
  },
508
512
  colours: {
509
- context: colourValue.describe("The colour of the context bar and its figures below the warning threshold."),
510
- usage: colourValue.describe("The colour of the quota bars and their figures below the warning threshold."),
511
- warning: colourValue.describe("The colour of the context bar at or above bands.warnAt, and of a cache hit share that is middling."),
512
- usageWarning: colourValue.describe("The colour of a quota bar at or above bands.warnAt."),
513
- critical: colourValue.describe("The colour of a bar at or above bands.criticalAt, and of a cache hit share that is nearly nothing."),
513
+ context: colourValue.describe("The colour of the context bar below the warning threshold while bar.gradient is off, of the figures beside it below that threshold in every mode, and the colour a bar.gradient of use or width blends the context bar from (at none in use for use, at the first cell for width), while a gradient bar with a stop whose colour is default or dim, or a width bar with no cell of its used part drawn, takes the band's colours."),
514
+ usage: colourValue.describe("The colour of the quota bars and the memory bar below the warning threshold while bar.gradient is off, of the figures beside them below that threshold in every mode, and the colour a bar.gradient of use or width blends those bars from (at none in use for use, at the first cell for width), while a gradient bar with a stop whose colour is default or dim, or a width bar with no cell of its used part drawn, takes the band's colours."),
515
+ warning: colourValue.describe("The colour of the context bar from its warning threshold (bands.warnAt, or context.warnAt where that is set) up to its critical threshold (bands.criticalAt, or context.criticalAt where that is set) when bar.gradient is off (a bar.gradient of use holds it exactly at the threshold, and a gradient bar with a stop whose colour is default or dim draws the band's colours instead, and so does a width bar with no cell of its used part drawn), of the figures beside the bar from that threshold up to its critical threshold in every mode, and of a cache hit share that is middling."),
516
+ usageWarning: colourValue.describe("The colour of a quota bar or the memory bar from bands.warnAt up to bands.criticalAt when bar.gradient is off (a bar.gradient of use holds it exactly at bands.warnAt, and a gradient bar with a stop whose colour is default or dim draws the band's colours instead, and so does a width bar with no cell of its used part drawn), and of the figures beside the bar from that threshold up to bands.criticalAt in every mode."),
517
+ critical: colourValue.describe("The colour of a bar at or above its critical threshold (bands.criticalAt, or context.criticalAt for the context bar where that is set) when bar.gradient is off or use, of the last cell of a full bar more than one cell wide under a bar.gradient of width (a bar one cell wide draws its cell in its own colour, and a width bar whose own colour or this one is default or dim, or that has no cell of its used part drawn, draws the band's colours instead), of the figures beside a bar from its critical threshold in every mode, and of a cache hit share that is nearly nothing."),
514
518
  model: colourValue.describe("The colour of the model and provider segments."),
515
519
  label: colourValue.describe("The colour of labels and secondary text: row labels, and the route, account, identity and headroom segments."),
516
520
  empty: colourValue.describe("The colour of the unused part of a bar."),
@@ -616,7 +620,7 @@ var init_statusline = __esm({
616
620
  extra: { command: [] },
617
621
  bands: { warnAt: 70, criticalAt: 90 },
618
622
  labels: { fiveHour: "", sevenDay: "" },
619
- bar: { width: 10, filled: "\u2588", empty: "\u2591" },
623
+ bar: { width: 10, gradient: "off", filled: "\u2588", empty: "\u2591" },
620
624
  usage: { value: "used", bar: true, compact: false, resetLabel: false, modelScoped: false, timeFormat: "relative", threshold: 0, sevenDayThreshold: 0 },
621
625
  clock: { hourCycle: "auto", seconds: false },
622
626
  cost: { routed: false },
@@ -4747,7 +4751,7 @@ var init_package = __esm({
4747
4751
  "package.json"() {
4748
4752
  package_default = {
4749
4753
  name: "claude-use",
4750
- version: "11.65.10",
4754
+ version: "11.66.0",
4751
4755
  description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
4752
4756
  license: "MIT",
4753
4757
  author: "Joseph Mearman <joseph@mearman.co.uk>",
package/dist/index.mjs CHANGED
@@ -304,7 +304,7 @@ function resolveStatusline(settings) {
304
304
  }
305
305
  return resolved;
306
306
  }
307
- var STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_SESSION_TIME_PARTS, PROMPT_CACHE_TTL_SECONDS, ORANGE_PALETTE_INDEX, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PRESETS, GIT_WITH_DIRTY_MARKER, JJ_OFF, PRESET_BUNDLES, STATUSLINE_PATH_LEVELS, STATUSLINE_USAGE_VALUES, STATUSLINE_TIME_FORMATS, STATUSLINE_HOUR_CYCLES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_COLUMNS, MIN_STATUSLINE_COLUMNS, MAX_STATUSLINE_COLUMNS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, MAX_EXTRA_COMMAND_ARGUMENTS, MAX_EXTRA_COMMAND_ARGUMENT_CHARS, STATUSLINE_EXTRA_GROUP, commandArgument, LABEL_RE2, OPTIONAL_LABEL_RE, mergeGroups, colourValue, barCharacter, STATUSLINE_CONTEXT_VALUES, STATUSLINE_CONTEXT_ESTIMATES, AUTOCOMPACT_RESERVE_FRACTION, AUTOCOMPACT_RESERVE_RAMP_START, AUTOCOMPACT_RESERVE_RAMP_END, labelWithinColumns, labelWithinColumnsMessage, labelShowsSomething, labelShowsSomethingMessage, labelIsPlainText, labelIsPlainTextMessage, windowLabel, overrideText, wholePercent, thresholdPercent, SHAPES, UNSET_NOTE, LANGUAGE_DESCRIPTION, LANGUAGE_TAGS, LANGUAGE_ALIASES, TOP_LEVEL, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
307
+ var STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_SESSION_TIME_PARTS, PROMPT_CACHE_TTL_SECONDS, ORANGE_PALETTE_INDEX, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PRESETS, GIT_WITH_DIRTY_MARKER, JJ_OFF, PRESET_BUNDLES, STATUSLINE_PATH_LEVELS, STATUSLINE_USAGE_VALUES, STATUSLINE_BAR_GRADIENTS, STATUSLINE_TIME_FORMATS, STATUSLINE_HOUR_CYCLES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_COLUMNS, MIN_STATUSLINE_COLUMNS, MAX_STATUSLINE_COLUMNS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, MAX_EXTRA_COMMAND_ARGUMENTS, MAX_EXTRA_COMMAND_ARGUMENT_CHARS, STATUSLINE_EXTRA_GROUP, commandArgument, LABEL_RE2, OPTIONAL_LABEL_RE, mergeGroups, colourValue, barCharacter, STATUSLINE_CONTEXT_VALUES, STATUSLINE_CONTEXT_ESTIMATES, AUTOCOMPACT_RESERVE_FRACTION, AUTOCOMPACT_RESERVE_RAMP_START, AUTOCOMPACT_RESERVE_RAMP_END, labelWithinColumns, labelWithinColumnsMessage, labelShowsSomething, labelShowsSomethingMessage, labelIsPlainText, labelIsPlainTextMessage, windowLabel, overrideText, wholePercent, thresholdPercent, SHAPES, UNSET_NOTE, LANGUAGE_DESCRIPTION, LANGUAGE_TAGS, LANGUAGE_ALIASES, TOP_LEVEL, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
308
308
  var init_statusline = __esm({
309
309
  "src/config/statusline.ts"() {
310
310
  "use strict";
@@ -355,6 +355,7 @@ var init_statusline = __esm({
355
355
  };
356
356
  STATUSLINE_PATH_LEVELS = ["1", "2", "3", "full"];
357
357
  STATUSLINE_USAGE_VALUES = ["used", "remaining"];
358
+ STATUSLINE_BAR_GRADIENTS = ["off", "use", "width"];
358
359
  STATUSLINE_TIME_FORMATS = ["relative", "absolute", "both", "elapsed", "elapsedAndAbsolute"];
359
360
  STATUSLINE_HOUR_CYCLES = ["auto", "h11", "h12", "h23", "h24"];
360
361
  MAX_PERCENT = 100;
@@ -425,8 +426,8 @@ var init_statusline = __esm({
425
426
  context: {
426
427
  bar: z2.enum(["shown", "hidden"]).describe("Whether the context row draws its bar, or only its figures on one line of text."),
427
428
  value: z2.enum(STATUSLINE_CONTEXT_VALUES).describe("The context figure: both (the tokens held against the window, then the percentage), percent, tokens, or remaining (the percentage of the window left)."),
428
- warnAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns yellow; while it is unset the context bar follows bands.warnAt."),
429
- criticalAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns red and, with context.breakdown set to critical, the token breakdown appears; while it is unset the context bar follows bands.criticalAt."),
429
+ warnAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns yellow when bar.gradient is off (a bar.gradient of use holds the warning colour exactly there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn); while it is unset the context bar follows bands.warnAt."),
430
+ criticalAt: wholePercent.optional().describe("The whole percentage of the context window at which the context bar turns red when bar.gradient is off (a bar.gradient of use holds the critical colour from there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn) and, with context.breakdown set to critical, the token breakdown appears; while it is unset the context bar follows bands.criticalAt."),
430
431
  autoCompactWindow: z2.number().int().positive().optional().describe("A window in tokens to measure the context against instead of the model's, matching the figure /context gives once Claude Code compacts before the window is full. While it is set, the row draws nothing until the client reports the tokens held, since without them there is nothing to measure against it; while it is unset the model's own window is used."),
431
432
  estimate: z2.enum(STATUSLINE_CONTEXT_ESTIMATES).describe(`What to draw when the client reports no percentage of the window in use, or reports 0 while tokens are already held (which is how a client says it has not worked it out yet): never (nothing is estimated: a percentage reported, 0 included, is drawn as it is, and none reported draws nothing), raw (the tokens held over the window), or buffered (that, plus the ${String(AUTOCOMPACT_RESERVE_FRACTION * MAX_PERCENT)}% of the window Claude Code reserves for compaction, rising from nothing at ${String(AUTOCOMPACT_RESERVE_RAMP_START * MAX_PERCENT)}% of the window held to the whole reserve at ${String(AUTOCOMPACT_RESERVE_RAMP_END * MAX_PERCENT)}%).`),
432
433
  breakdown: z2.enum(["never", "critical"]).describe("Whether to add the input and cache tokens of the last request to the context row once its use reaches context.criticalAt.")
@@ -441,8 +442,8 @@ var init_statusline = __esm({
441
442
  )
442
443
  },
443
444
  bands: {
444
- warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow; it must be below criticalAt."),
445
- criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red.")
445
+ warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow when bar.gradient is off; it must be below criticalAt. A bar.gradient of use holds the warning colour exactly there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn."),
446
+ criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red when bar.gradient is off. A bar.gradient of use holds the critical colour from there, and width colours a bar by its cells, not its use, once a cell of its used part is drawn; both fall back to the band colours when a stop's colour is default or dim, and width also when no cell of its used part is drawn.")
446
447
  },
447
448
  labels: {
448
449
  fiveHour: windowLabel.describe("The name of the five-hour subscription window; empty uses the language's own name for it."),
@@ -450,6 +451,9 @@ var init_statusline = __esm({
450
451
  },
451
452
  bar: {
452
453
  width: z2.number().int().min(1).max(MAX_BAR_CELLS).describe("A bar's width in cells before the line's spare width is shared out among the bars."),
454
+ gradient: z2.enum(STATUSLINE_BAR_GRADIENTS).describe(
455
+ "How a bar's used part is coloured: off (the default) draws the band's single colour, the bar's own colour below the warning threshold, the warning colour from there and the critical one from the critical threshold; use blends the bar's colour with its use, from its own colour at none in use to the warning colour at the warning threshold and the critical one at the critical threshold, holding exactly the colour the bands draw at each threshold and the critical colour above it; and width colours each cell of the used part across the bar's width, from the bar's own colour at the first cell to the critical one at the last, whatever the use, with a bar one cell wide drawing that cell in its own colour. A bar's thresholds are bands.warnAt and bands.criticalAt, the context bar's own where it sets them, and the figures beside a bar keep the band's colours in every mode. The unused part keeps colours.empty in every mode, and when that is default or dim, which set no colour of their own, it draws in the colour the used part ends in: under off the band's colour, under use the blend for the bar's use (even where no cell of the used part is drawn), and under width the last drawn cell's colour (the band's colour where no cell is drawn). A gradient blends RGB values, so a colour name, or a palette index below 16, is blended at the default RGB the xterm scheme gives it rather than the shade a themed terminal draws it in, while a stop itself, where a mode holds it exactly, is drawn as the bands draw that role. A bar whose stops include a role set to default or dim, which names no colour of its own, is drawn in the band's single colour: for use those stops are the bar's own, warning and critical roles, and for width its own and critical roles. A width bar with no cell of its used part drawn has no cell to colour, so it takes the band's colours as off does."
456
+ ),
453
457
  filled: barCharacter.describe("The character that draws the used part of a bar."),
454
458
  empty: barCharacter.describe("The character that draws the unused part of a bar.")
455
459
  },
@@ -484,11 +488,11 @@ var init_statusline = __esm({
484
488
  maxVisible: z2.number().int().min(0).describe("The most kinds of finished tool call the tools row names, the most-used first, with the rest counted as +N more. 0 names every kind.")
485
489
  },
486
490
  colours: {
487
- context: colourValue.describe("The colour of the context bar and its figures below the warning threshold."),
488
- usage: colourValue.describe("The colour of the quota bars and their figures below the warning threshold."),
489
- warning: colourValue.describe("The colour of the context bar at or above bands.warnAt, and of a cache hit share that is middling."),
490
- usageWarning: colourValue.describe("The colour of a quota bar at or above bands.warnAt."),
491
- critical: colourValue.describe("The colour of a bar at or above bands.criticalAt, and of a cache hit share that is nearly nothing."),
491
+ context: colourValue.describe("The colour of the context bar below the warning threshold while bar.gradient is off, of the figures beside it below that threshold in every mode, and the colour a bar.gradient of use or width blends the context bar from (at none in use for use, at the first cell for width), while a gradient bar with a stop whose colour is default or dim, or a width bar with no cell of its used part drawn, takes the band's colours."),
492
+ usage: colourValue.describe("The colour of the quota bars and the memory bar below the warning threshold while bar.gradient is off, of the figures beside them below that threshold in every mode, and the colour a bar.gradient of use or width blends those bars from (at none in use for use, at the first cell for width), while a gradient bar with a stop whose colour is default or dim, or a width bar with no cell of its used part drawn, takes the band's colours."),
493
+ warning: colourValue.describe("The colour of the context bar from its warning threshold (bands.warnAt, or context.warnAt where that is set) up to its critical threshold (bands.criticalAt, or context.criticalAt where that is set) when bar.gradient is off (a bar.gradient of use holds it exactly at the threshold, and a gradient bar with a stop whose colour is default or dim draws the band's colours instead, and so does a width bar with no cell of its used part drawn), of the figures beside the bar from that threshold up to its critical threshold in every mode, and of a cache hit share that is middling."),
494
+ usageWarning: colourValue.describe("The colour of a quota bar or the memory bar from bands.warnAt up to bands.criticalAt when bar.gradient is off (a bar.gradient of use holds it exactly at bands.warnAt, and a gradient bar with a stop whose colour is default or dim draws the band's colours instead, and so does a width bar with no cell of its used part drawn), and of the figures beside the bar from that threshold up to bands.criticalAt in every mode."),
495
+ critical: colourValue.describe("The colour of a bar at or above its critical threshold (bands.criticalAt, or context.criticalAt for the context bar where that is set) when bar.gradient is off or use, of the last cell of a full bar more than one cell wide under a bar.gradient of width (a bar one cell wide draws its cell in its own colour, and a width bar whose own colour or this one is default or dim, or that has no cell of its used part drawn, draws the band's colours instead), of the figures beside a bar from its critical threshold in every mode, and of a cache hit share that is nearly nothing."),
492
496
  model: colourValue.describe("The colour of the model and provider segments."),
493
497
  label: colourValue.describe("The colour of labels and secondary text: row labels, and the route, account, identity and headroom segments."),
494
498
  empty: colourValue.describe("The colour of the unused part of a bar."),
@@ -594,7 +598,7 @@ var init_statusline = __esm({
594
598
  extra: { command: [] },
595
599
  bands: { warnAt: 70, criticalAt: 90 },
596
600
  labels: { fiveHour: "", sevenDay: "" },
597
- bar: { width: 10, filled: "\u2588", empty: "\u2591" },
601
+ bar: { width: 10, gradient: "off", filled: "\u2588", empty: "\u2591" },
598
602
  usage: { value: "used", bar: true, compact: false, resetLabel: false, modelScoped: false, timeFormat: "relative", threshold: 0, sevenDayThreshold: 0 },
599
603
  clock: { hourCycle: "auto", seconds: false },
600
604
  cost: { routed: false },
@@ -4723,7 +4727,7 @@ var init_package = __esm({
4723
4727
  "package.json"() {
4724
4728
  package_default = {
4725
4729
  name: "claude-use",
4726
- version: "11.65.10",
4730
+ version: "11.66.0",
4727
4731
  description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
4728
4732
  license: "MIT",
4729
4733
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -457,6 +457,11 @@ declare const LaunchSchema: z.ZodObject<{
457
457
  }, z.core.$strict>>;
458
458
  bar: z.ZodOptional<z.ZodObject<{
459
459
  width: z.ZodOptional<z.ZodNumber>;
460
+ gradient: z.ZodOptional<z.ZodEnum<{
461
+ off: "off";
462
+ use: "use";
463
+ width: "width";
464
+ }>>;
460
465
  filled: z.ZodOptional<z.ZodString>;
461
466
  empty: z.ZodOptional<z.ZodString>;
462
467
  }, z.core.$strict>>;
@@ -1678,6 +1683,11 @@ declare const ConfigProfileSchema: z.ZodObject<{
1678
1683
  }, z.core.$strict>>;
1679
1684
  bar: z.ZodOptional<z.ZodObject<{
1680
1685
  width: z.ZodOptional<z.ZodNumber>;
1686
+ gradient: z.ZodOptional<z.ZodEnum<{
1687
+ off: "off";
1688
+ use: "use";
1689
+ width: "width";
1690
+ }>>;
1681
1691
  filled: z.ZodOptional<z.ZodString>;
1682
1692
  empty: z.ZodOptional<z.ZodString>;
1683
1693
  }, z.core.$strict>>;
@@ -2519,6 +2529,11 @@ declare const DirectoryRuleSchema: z.ZodObject<{
2519
2529
  }, z.core.$strict>>;
2520
2530
  bar: z.ZodOptional<z.ZodObject<{
2521
2531
  width: z.ZodOptional<z.ZodNumber>;
2532
+ gradient: z.ZodOptional<z.ZodEnum<{
2533
+ off: "off";
2534
+ use: "use";
2535
+ width: "width";
2536
+ }>>;
2522
2537
  filled: z.ZodOptional<z.ZodString>;
2523
2538
  empty: z.ZodOptional<z.ZodString>;
2524
2539
  }, z.core.$strict>>;
@@ -3287,6 +3302,11 @@ declare const DirectoryRulesSchema: z.ZodObject<{
3287
3302
  }, z.core.$strict>>;
3288
3303
  bar: z.ZodOptional<z.ZodObject<{
3289
3304
  width: z.ZodOptional<z.ZodNumber>;
3305
+ gradient: z.ZodOptional<z.ZodEnum<{
3306
+ off: "off";
3307
+ use: "use";
3308
+ width: "width";
3309
+ }>>;
3290
3310
  filled: z.ZodOptional<z.ZodString>;
3291
3311
  empty: z.ZodOptional<z.ZodString>;
3292
3312
  }, z.core.$strict>>;
@@ -4055,6 +4075,11 @@ declare const PortableConfigSchema: z.ZodObject<{
4055
4075
  }, z.core.$strict>>;
4056
4076
  bar: z.ZodOptional<z.ZodObject<{
4057
4077
  width: z.ZodOptional<z.ZodNumber>;
4078
+ gradient: z.ZodOptional<z.ZodEnum<{
4079
+ off: "off";
4080
+ use: "use";
4081
+ width: "width";
4082
+ }>>;
4058
4083
  filled: z.ZodOptional<z.ZodString>;
4059
4084
  empty: z.ZodOptional<z.ZodString>;
4060
4085
  }, z.core.$strict>>;
@@ -4804,6 +4829,11 @@ declare const GlobalConfigSchema: z.ZodObject<{
4804
4829
  }, z.core.$strict>>;
4805
4830
  bar: z.ZodOptional<z.ZodObject<{
4806
4831
  width: z.ZodOptional<z.ZodNumber>;
4832
+ gradient: z.ZodOptional<z.ZodEnum<{
4833
+ off: "off";
4834
+ use: "use";
4835
+ width: "width";
4836
+ }>>;
4807
4837
  filled: z.ZodOptional<z.ZodString>;
4808
4838
  empty: z.ZodOptional<z.ZodString>;
4809
4839
  }, z.core.$strict>>;
@@ -9923,6 +9953,11 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
9923
9953
  }, zod_v4_core.$strict>>;
9924
9954
  bar: zod.ZodOptional<zod.ZodObject<{
9925
9955
  width: zod.ZodOptional<zod.ZodNumber>;
9956
+ gradient: zod.ZodOptional<zod.ZodEnum<{
9957
+ off: "off";
9958
+ use: "use";
9959
+ width: "width";
9960
+ }>>;
9926
9961
  filled: zod.ZodOptional<zod.ZodString>;
9927
9962
  empty: zod.ZodOptional<zod.ZodString>;
9928
9963
  }, zod_v4_core.$strict>>;
@@ -10639,6 +10674,11 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
10639
10674
  }, zod_v4_core.$strict>>;
10640
10675
  bar: zod.ZodOptional<zod.ZodObject<{
10641
10676
  width: zod.ZodOptional<zod.ZodNumber>;
10677
+ gradient: zod.ZodOptional<zod.ZodEnum<{
10678
+ off: "off";
10679
+ use: "use";
10680
+ width: "width";
10681
+ }>>;
10642
10682
  filled: zod.ZodOptional<zod.ZodString>;
10643
10683
  empty: zod.ZodOptional<zod.ZodString>;
10644
10684
  }, zod_v4_core.$strict>>;
@@ -11831,6 +11871,11 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
11831
11871
  }, zod_v4_core.$strict>>;
11832
11872
  bar: zod.ZodOptional<zod.ZodObject<{
11833
11873
  width: zod.ZodOptional<zod.ZodNumber>;
11874
+ gradient: zod.ZodOptional<zod.ZodEnum<{
11875
+ off: "off";
11876
+ use: "use";
11877
+ width: "width";
11878
+ }>>;
11834
11879
  filled: zod.ZodOptional<zod.ZodString>;
11835
11880
  empty: zod.ZodOptional<zod.ZodString>;
11836
11881
  }, zod_v4_core.$strict>>;
@@ -12604,6 +12649,11 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
12604
12649
  }, zod_v4_core.$strict>>;
12605
12650
  bar: zod.ZodOptional<zod.ZodObject<{
12606
12651
  width: zod.ZodOptional<zod.ZodNumber>;
12652
+ gradient: zod.ZodOptional<zod.ZodEnum<{
12653
+ off: "off";
12654
+ use: "use";
12655
+ width: "width";
12656
+ }>>;
12607
12657
  filled: zod.ZodOptional<zod.ZodString>;
12608
12658
  empty: zod.ZodOptional<zod.ZodString>;
12609
12659
  }, zod_v4_core.$strict>>;
@@ -13466,6 +13516,11 @@ declare const StatuslineSchema: z.ZodObject<{
13466
13516
  }, z.core.$strict>>;
13467
13517
  bar: z.ZodOptional<z.ZodObject<{
13468
13518
  width: z.ZodOptional<z.ZodNumber>;
13519
+ gradient: z.ZodOptional<z.ZodEnum<{
13520
+ off: "off";
13521
+ use: "use";
13522
+ width: "width";
13523
+ }>>;
13469
13524
  filled: z.ZodOptional<z.ZodString>;
13470
13525
  empty: z.ZodOptional<z.ZodString>;
13471
13526
  }, z.core.$strict>>;
@@ -14319,6 +14374,11 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
14319
14374
  }, zod_v4_core.$strict>>;
14320
14375
  bar: zod.ZodOptional<zod.ZodObject<{
14321
14376
  width: zod.ZodOptional<zod.ZodNumber>;
14377
+ gradient: zod.ZodOptional<zod.ZodEnum<{
14378
+ off: "off";
14379
+ use: "use";
14380
+ width: "width";
14381
+ }>>;
14322
14382
  filled: zod.ZodOptional<zod.ZodString>;
14323
14383
  empty: zod.ZodOptional<zod.ZodString>;
14324
14384
  }, zod_v4_core.$strict>>;
@@ -15983,6 +16043,11 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
15983
16043
  }, zod_v4_core.$strict>>;
15984
16044
  bar: zod.ZodOptional<zod.ZodObject<{
15985
16045
  width: zod.ZodOptional<zod.ZodNumber>;
16046
+ gradient: zod.ZodOptional<zod.ZodEnum<{
16047
+ off: "off";
16048
+ use: "use";
16049
+ width: "width";
16050
+ }>>;
15986
16051
  filled: zod.ZodOptional<zod.ZodString>;
15987
16052
  empty: zod.ZodOptional<zod.ZodString>;
15988
16053
  }, zod_v4_core.$strict>>;
@@ -16939,6 +17004,11 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
16939
17004
  }, zod_v4_core.$strict>>;
16940
17005
  bar: zod.ZodOptional<zod.ZodObject<{
16941
17006
  width: zod.ZodOptional<zod.ZodNumber>;
17007
+ gradient: zod.ZodOptional<zod.ZodEnum<{
17008
+ off: "off";
17009
+ use: "use";
17010
+ width: "width";
17011
+ }>>;
16942
17012
  filled: zod.ZodOptional<zod.ZodString>;
16943
17013
  empty: zod.ZodOptional<zod.ZodString>;
16944
17014
  }, zod_v4_core.$strict>>;
@@ -17655,6 +17725,11 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
17655
17725
  }, zod_v4_core.$strict>>;
17656
17726
  bar: zod.ZodOptional<zod.ZodObject<{
17657
17727
  width: zod.ZodOptional<zod.ZodNumber>;
17728
+ gradient: zod.ZodOptional<zod.ZodEnum<{
17729
+ off: "off";
17730
+ use: "use";
17731
+ width: "width";
17732
+ }>>;
17658
17733
  filled: zod.ZodOptional<zod.ZodString>;
17659
17734
  empty: zod.ZodOptional<zod.ZodString>;
17660
17735
  }, zod_v4_core.$strict>>;
@@ -18847,6 +18922,11 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
18847
18922
  }, zod_v4_core.$strict>>;
18848
18923
  bar: zod.ZodOptional<zod.ZodObject<{
18849
18924
  width: zod.ZodOptional<zod.ZodNumber>;
18925
+ gradient: zod.ZodOptional<zod.ZodEnum<{
18926
+ off: "off";
18927
+ use: "use";
18928
+ width: "width";
18929
+ }>>;
18850
18930
  filled: zod.ZodOptional<zod.ZodString>;
18851
18931
  empty: zod.ZodOptional<zod.ZodString>;
18852
18932
  }, zod_v4_core.$strict>>;
@@ -19620,6 +19700,11 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
19620
19700
  }, zod_v4_core.$strict>>;
19621
19701
  bar: zod.ZodOptional<zod.ZodObject<{
19622
19702
  width: zod.ZodOptional<zod.ZodNumber>;
19703
+ gradient: zod.ZodOptional<zod.ZodEnum<{
19704
+ off: "off";
19705
+ use: "use";
19706
+ width: "width";
19707
+ }>>;
19623
19708
  filled: zod.ZodOptional<zod.ZodString>;
19624
19709
  empty: zod.ZodOptional<zod.ZodString>;
19625
19710
  }, zod_v4_core.$strict>>;
@@ -21434,6 +21519,11 @@ declare const ConfigProfileAddOutputSchema: z.ZodObject<{
21434
21519
  }, z.core.$strict>>;
21435
21520
  bar: z.ZodOptional<z.ZodObject<{
21436
21521
  width: z.ZodOptional<z.ZodNumber>;
21522
+ gradient: z.ZodOptional<z.ZodEnum<{
21523
+ off: "off";
21524
+ use: "use";
21525
+ width: "width";
21526
+ }>>;
21437
21527
  filled: z.ZodOptional<z.ZodString>;
21438
21528
  empty: z.ZodOptional<z.ZodString>;
21439
21529
  }, z.core.$strict>>;
@@ -22152,6 +22242,11 @@ declare const ConfigProfileSetOutputSchema: z.ZodObject<{
22152
22242
  }, z.core.$strict>>;
22153
22243
  bar: z.ZodOptional<z.ZodObject<{
22154
22244
  width: z.ZodOptional<z.ZodNumber>;
22245
+ gradient: z.ZodOptional<z.ZodEnum<{
22246
+ off: "off";
22247
+ use: "use";
22248
+ width: "width";
22249
+ }>>;
22155
22250
  filled: z.ZodOptional<z.ZodString>;
22156
22251
  empty: z.ZodOptional<z.ZodString>;
22157
22252
  }, z.core.$strict>>;
@@ -23346,6 +23441,11 @@ declare const ConfigRuleAddOutputSchema: z.ZodObject<{
23346
23441
  }, z.core.$strict>>;
23347
23442
  bar: z.ZodOptional<z.ZodObject<{
23348
23443
  width: z.ZodOptional<z.ZodNumber>;
23444
+ gradient: z.ZodOptional<z.ZodEnum<{
23445
+ off: "off";
23446
+ use: "use";
23447
+ width: "width";
23448
+ }>>;
23349
23449
  filled: z.ZodOptional<z.ZodString>;
23350
23450
  empty: z.ZodOptional<z.ZodString>;
23351
23451
  }, z.core.$strict>>;
@@ -24121,6 +24221,11 @@ declare const ConfigRuleSetOutputSchema: z.ZodObject<{
24121
24221
  }, z.core.$strict>>;
24122
24222
  bar: z.ZodOptional<z.ZodObject<{
24123
24223
  width: z.ZodOptional<z.ZodNumber>;
24224
+ gradient: z.ZodOptional<z.ZodEnum<{
24225
+ off: "off";
24226
+ use: "use";
24227
+ width: "width";
24228
+ }>>;
24124
24229
  filled: z.ZodOptional<z.ZodString>;
24125
24230
  empty: z.ZodOptional<z.ZodString>;
24126
24231
  }, z.core.$strict>>;
@@ -25153,6 +25258,11 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
25153
25258
  }, z.core.$strict>>;
25154
25259
  bar: z.ZodOptional<z.ZodObject<{
25155
25260
  width: z.ZodOptional<z.ZodNumber>;
25261
+ gradient: z.ZodOptional<z.ZodEnum<{
25262
+ off: "off";
25263
+ use: "use";
25264
+ width: "width";
25265
+ }>>;
25156
25266
  filled: z.ZodOptional<z.ZodString>;
25157
25267
  empty: z.ZodOptional<z.ZodString>;
25158
25268
  }, z.core.$strict>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-use",
3
- "version": "11.65.10",
3
+ "version": "11.66.0",
4
4
  "description": "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
5
5
  "license": "MIT",
6
6
  "author": "Joseph Mearman <joseph@mearman.co.uk>",