fix: sync context progress bar with custom context length setting
- Add customMaxTokens override to ContextManager - maxTokens is now derived from custom override or model default - ChatWindow syncs settings.num_ctx to context manager - Progress bar now shows custom context length when enabled
This commit is contained in:
@@ -182,6 +182,15 @@
|
||||
}
|
||||
});
|
||||
|
||||
// Sync custom context limit with settings
|
||||
$effect(() => {
|
||||
if (settingsState.useCustomParameters) {
|
||||
contextManager.setCustomContextLimit(settingsState.num_ctx);
|
||||
} else {
|
||||
contextManager.setCustomContextLimit(null);
|
||||
}
|
||||
});
|
||||
|
||||
// Update context manager when messages change
|
||||
$effect(() => {
|
||||
contextManager.updateMessages(chatState.visibleMessages);
|
||||
|
||||
@@ -24,8 +24,14 @@ class ContextManager {
|
||||
/** Current model name */
|
||||
currentModel = $state<string>('');
|
||||
|
||||
/** Maximum context length for current model */
|
||||
maxTokens = $state<number>(4096);
|
||||
/** Maximum context length for current model (from model lookup) */
|
||||
modelMaxTokens = $state<number>(4096);
|
||||
|
||||
/** Custom context limit override (from user settings) */
|
||||
customMaxTokens = $state<number | null>(null);
|
||||
|
||||
/** Effective max tokens (custom override or model default) */
|
||||
maxTokens = $derived(this.customMaxTokens ?? this.modelMaxTokens);
|
||||
|
||||
/**
|
||||
* Cached token estimates for messages (id -> estimate)
|
||||
@@ -94,7 +100,15 @@ class ContextManager {
|
||||
*/
|
||||
setModel(modelName: string): void {
|
||||
this.currentModel = modelName;
|
||||
this.maxTokens = getModelContextLimit(modelName);
|
||||
this.modelMaxTokens = getModelContextLimit(modelName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set custom context limit override
|
||||
* Pass null to clear and use model default
|
||||
*/
|
||||
setCustomContextLimit(tokens: number | null): void {
|
||||
this.customMaxTokens = tokens;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user