mirror of
https://github.com/tiennm99/ccstatusline.git
synced 2026-10-12 22:14:22 +00:00
Fix for model in statusLine JSON being passed as string vs object, closes #157, version bump
This commit is contained in:
1 parent
03d19692ab
commit
d457e55913
6 files changed
+23
-10
No files matched your search
+1
-1
@@ -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",
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user