Fix for model in statusLine JSON being passed as string vs object, closes #157, version bump

This commit is contained in:
Matthew Breedlove committed 2026-02-02 14:32:33 -05:00
1 parent 03d19692ab
commit d457e55913
6 files changed
+23 -10

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "ccstatusline",
"version": "2.0.23",
"version": "2.0.24",
"description": "A customizable status line formatter for Claude Code CLI",
"module": "src/ccstatusline.ts",
"type": "module",
+7 -4
View File
@@ -5,10 +5,13 @@ export const StatusJSONSchema = z.looseObject({
session_id: z.string().optional(),
transcript_path: z.string().optional(),
cwd: z.string().optional(),
model: z.object({
id: z.string().optional(),
display_name: z.string().optional()
}).optional(),
model: z.union([
z.string(),
z.object({
id: z.string().optional(),
display_name: z.string().optional()
})
]).optional(),
workspace: z.object({
current_dir: z.string().optional(),
project_dir: z.string().optional()
+2 -1
View File
@@ -10,7 +10,8 @@ export function calculateContextPercentage(context: RenderContext): number {
return 0;
}
const modelId = context.data?.model?.id;
const model = context.data?.model;
const modelId = typeof model === 'string' ? model : model?.id;
const contextConfig = getContextConfig(modelId);
return Math.min(100, (context.tokenMetrics.contextLength / contextConfig.maxTokens) * 100);
+2 -1
View File
@@ -47,7 +47,8 @@ export class ContextPercentageWidget implements Widget {
const previewValue = isInverse ? '90.7%' : '9.3%';
return item.rawValue ? previewValue : `Ctx: ${previewValue}`;
} else if (context.tokenMetrics) {
const modelId = context.data?.model?.id;
const model = context.data?.model;
const modelId = typeof model === 'string' ? model : model?.id;
const contextConfig = getContextConfig(modelId);
const usedPercentage = Math.min(100, (context.tokenMetrics.contextLength / contextConfig.maxTokens) * 100);
const displayPercentage = isInverse ? (100 - usedPercentage) : usedPercentage;
+2 -1
View File
@@ -47,7 +47,8 @@ export class ContextPercentageUsableWidget implements Widget {
const previewValue = isInverse ? '88.4%' : '11.6%';
return item.rawValue ? previewValue : `Ctx(u): ${previewValue}`;
} else if (context.tokenMetrics) {
const modelId = context.data?.model?.id;
const model = context.data?.model;
const modelId = typeof model === 'string' ? model : model?.id;
const contextConfig = getContextConfig(modelId);
const usedPercentage = Math.min(100, (context.tokenMetrics.contextLength / contextConfig.usableTokens) * 100);
const displayPercentage = isInverse ? (100 - usedPercentage) : usedPercentage;
+9 -2
View File
@@ -17,8 +17,15 @@ export class ModelWidget implements Widget {
render(item: WidgetItem, context: RenderContext, settings: Settings): string | null {
if (context.isPreview) {
return item.rawValue ? 'Claude' : 'Model: Claude';
} else if (context.data?.model?.display_name) {
return item.rawValue ? context.data.model.display_name : `Model: ${context.data.model.display_name}`;
}
const model = context.data?.model;
const modelDisplayName = typeof model === 'string'
? model
: (model?.display_name ?? model?.id);
if (modelDisplayName) {
return item.rawValue ? modelDisplayName : `Model: ${modelDisplayName}`;
}
return null;
}