feat: max value for context limit to model's limit + converting description and titles to settings for translation purposes

This commit is contained in:
Ton Hoang Nguyen (Bill) 2025-06-26 00:37:56 +01:00
parent 67b476285e
commit 9595f76a0d
2 changed files with 70 additions and 28 deletions

View file

@ -149,7 +149,7 @@ export const Gemini = ({
</div>
<div className="mt-6 border-t border-vscode-widget-border pt-4">
<h3 className="font-semibold text-lg mb-4">Model Parameters</h3>
<h3 className="font-semibold text-lg mb-4">{t("settings:providers.geminiSections.modelParameters")}</h3>
<div className="mt-4">
<label className="block font-medium mb-1">
@ -219,7 +219,9 @@ export const Gemini = ({
</div>
<div className="mt-6 border-t border-vscode-widget-border pt-4">
<h3 className="font-semibold text-lg mb-4">{t("settings:providers.geminiContextManagement.title")}</h3>
<h3 className="font-semibold text-lg mb-4">
{t("settings:providers.geminiSections.geminiContextManagement")}
</h3>
<div>
<Checkbox
checked={isCustomContextLimit}
@ -244,7 +246,8 @@ export const Gemini = ({
<div className="text-sm text-vscode-descriptionForeground mb-3">
<strong>{t("settings:providers.geminiContextManagement.modelDefault")}:</strong>{" "}
{(modelInfo?.contextWindow || 1048576).toLocaleString()} tokens
{(modelInfo?.contextWindow || 1048576).toLocaleString()}{" "}
{t("settings:providers.geminiContextManagement.condensingThreshold.tokenLimitTriggered")}
</div>
{isCustomContextLimit && (
@ -253,7 +256,7 @@ export const Gemini = ({
<div className="flex items-center gap-2">
<Slider
min={32000}
max={2097152}
max={modelInfo?.contextWindow || 1048576}
step={1000}
value={[apiConfiguration.contextLimit ?? modelInfo?.contextWindow ?? 1048576]}
onValueChange={([value]) => setApiConfigurationField("contextLimit", value)}
@ -271,7 +274,11 @@ export const Gemini = ({
)}
className="w-24"
/>
<span className="text-sm">tokens</span>
<span className="text-sm">
{t(
"settings:providers.geminiContextManagement.condensingThreshold.tokenLimitTriggered",
)}
</span>
</div>
</div>
</div>
@ -284,8 +291,7 @@ export const Gemini = ({
{t("settings:providers.geminiContextManagement.condensingThreshold.title")}
</label>
<div className="text-sm text-vscode-descriptionForeground mb-3">
Context condensing threshold for this Gemini profile. When context reaches this percentage,
it will be automatically condensed.
{t("settings:providers.geminiContextManagement.condensingThreshold.description")}
</div>
<div className="flex items-center gap-2 mb-2">
@ -318,36 +324,62 @@ export const Gemini = ({
return (
<>
<div>
<strong>Condensing will trigger at:</strong>{" "}
{details.actualTrigger.toLocaleString()} tokens
<strong>
{t(
"settings:providers.geminiContextManagement.condensingThreshold.condensingtriggerAt",
)}
:
</strong>{" "}
{details.actualTrigger.toLocaleString()}{" "}
{t("settings:providers.geminiContextManagement.condensingThreshold.tokens")}
{details.triggerReason === "token-limit" && (
<span className="text-yellow-600 ml-2">
(due to token limit, not percentage)
(
{t(
"settings:providers.geminiContextManagement.condensingThreshold.tokenLimitTriggered",
)}
)
</span>
)}
</div>
<div>
<strong>Available context window:</strong>{" "}
<strong>
{t(
"settings:providers.geminiContextManagement.condensingThreshold.availableContext",
)}
:
</strong>{" "}
{(
apiConfiguration?.contextLimit ||
modelInfo?.contextWindow ||
1048576
).toLocaleString()}{" "}
tokens
{t("settings:providers.geminiContextManagement.condensingThreshold.tokens")}
</div>
<div className="text-xs text-vscode-descriptionForeground">
<div className="text-vscode-descriptionForeground">
<div>
Percentage trigger: {details.percentageBasedTrigger.toLocaleString()}{" "}
tokens ({getCurrentThreshold()}%)
</div>
<div>
Token limit trigger: {details.allowedTokens.toLocaleString()} tokens
</div>
<div>
{" "}
<strong>
Actual trigger: {details.actualTrigger.toLocaleString()} tokens
</strong>
{t(
"settings:providers.geminiContextManagement.condensingThreshold.tokenLimitTrigger",
)}
:
</strong>{" "}
{details.allowedTokens.toLocaleString()}{" "}
{t(
"settings:providers.geminiContextManagement.condensingThreshold.tokens",
)}
</div>
<div>
<strong>
{t(
"settings:providers.geminiContextManagement.condensingThreshold.actualTrigger",
)}
:
</strong>{" "}
{details.actualTrigger.toLocaleString()}{" "}
{t(
"settings:providers.geminiContextManagement.condensingThreshold.tokens",
)}
</div>
</div>
</>
@ -359,7 +391,9 @@ export const Gemini = ({
</div>
<div className="mt-6 border-t border-vscode-widget-border pt-4">
<h3 className="font-semibold text-lg mb-4">Advanced Features</h3>
<h3 className="font-semibold text-lg mb-4">
{t("settings:providers.geminiSections.advancedFeatures")}
</h3>
<Checkbox
checked={!!apiConfiguration.enableUrlContext}

View file

@ -210,6 +210,11 @@
"cacheUsageNote": "Note: If you don't see cache usage, try selecting a different model and then selecting your desired model again.",
"vscodeLmModel": "Language Model",
"vscodeLmWarning": "Note: This is a very experimental integration and provider support will vary. If you get an error about a model not being supported, that's an issue on the provider's end.",
"geminiSections": {
"modelParameters": "Model Parameters",
"advancedFeatures": "Advanced Features",
"geminiContextManagement": "Gemini Context Management"
},
"geminiParameters": {
"topK": {
"title": "Top K",
@ -237,15 +242,18 @@
}
},
"geminiContextManagement": {
"title": "Gemini Context Management",
"useCustomContextWindow": "Use custom context window limit",
"description": "Override the model's default context window. When conversations approach this limit, Roo Code will automatically condense older messages.",
"modelDefault": "Model's default context window",
"condensingThreshold": {
"tokens": "tokens",
"title": "Context Condensing Threshold",
"description": "Automatically condense context when it reaches this percentage of the context window.",
"triggerAt": "Condensing will trigger at",
"availableContext": "Available context window"
"description": "Context condensing threshold for this Gemini profile. When context reaches this percentage, it will be automatically condensed.",
"condensingtriggerAt": "Condensing will trigger at",
"tokenLimitTriggered": "due to token limit, not percentage",
"availableContext": "Available context window",
"tokenLimitTrigger": "Token limit trigger",
"actualTrigger": "Actual trigger"
}
},
"googleCloudSetup": {