Skip to content

Commit 5241e45

Browse files
committed
wip
1 parent 8acc275 commit 5241e45

File tree

3 files changed

+422
-116
lines changed

3 files changed

+422
-116
lines changed

webview-ui/src/components/settings/ContextManagementSettings.tsx

Lines changed: 107 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,107 @@ export const ContextManagementSettings = ({
9898
</SectionHeader>
9999

100100
<Section>
101+
<div>
102+
<span className="block font-medium mb-1">{t("settings:contextManagement.openTabs.label")}</span>
103+
<div className="flex items-center gap-2">
104+
<Slider
105+
min={0}
106+
max={500}
107+
step={1}
108+
value={[maxOpenTabsContext ?? 20]}
109+
onValueChange={([value]) => setCachedStateField("maxOpenTabsContext", value)}
110+
data-testid="open-tabs-limit-slider"
111+
/>
112+
<span className="w-10">{maxOpenTabsContext ?? 20}</span>
113+
</div>
114+
<div className="text-vscode-descriptionForeground text-sm mt-1">
115+
{t("settings:contextManagement.openTabs.description")}
116+
</div>
117+
</div>
118+
119+
<div>
120+
<span className="block font-medium mb-1">
121+
{t("settings:contextManagement.workspaceFiles.label")}
122+
</span>
123+
<div className="flex items-center gap-2">
124+
<Slider
125+
min={0}
126+
max={500}
127+
step={1}
128+
value={[maxWorkspaceFiles ?? 200]}
129+
onValueChange={([value]) => setCachedStateField("maxWorkspaceFiles", value)}
130+
data-testid="workspace-files-limit-slider"
131+
/>
132+
<span className="w-10">{maxWorkspaceFiles ?? 200}</span>
133+
</div>
134+
<div className="text-vscode-descriptionForeground text-sm mt-1">
135+
{t("settings:contextManagement.workspaceFiles.description")}
136+
</div>
137+
</div>
138+
139+
<div>
140+
<VSCodeCheckbox
141+
checked={showRooIgnoredFiles}
142+
onChange={(e: any) => setCachedStateField("showRooIgnoredFiles", e.target.checked)}
143+
data-testid="show-rooignored-files-checkbox">
144+
<label className="block font-medium mb-1">
145+
{t("settings:contextManagement.rooignore.label")}
146+
</label>
147+
</VSCodeCheckbox>
148+
<div className="text-vscode-descriptionForeground text-sm mt-1">
149+
{t("settings:contextManagement.rooignore.description")}
150+
</div>
151+
</div>
152+
153+
<div>
154+
<div className="flex flex-col gap-2">
155+
<span className="font-medium">{t("settings:contextManagement.maxReadFile.label")}</span>
156+
<div className="flex items-center gap-4">
157+
<Input
158+
type="number"
159+
pattern="-?[0-9]*"
160+
className="w-24 bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border px-2 py-1 rounded text-right [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none disabled:opacity-50"
161+
value={maxReadFileLine ?? -1}
162+
min={-1}
163+
onChange={(e) => {
164+
const newValue = parseInt(e.target.value, 10)
165+
if (!isNaN(newValue) && newValue >= -1) {
166+
setCachedStateField("maxReadFileLine", newValue)
167+
}
168+
}}
169+
onClick={(e) => e.currentTarget.select()}
170+
data-testid="max-read-file-line-input"
171+
disabled={maxReadFileLine === -1}
172+
/>
173+
<span>{t("settings:contextManagement.maxReadFile.lines")}</span>
174+
<VSCodeCheckbox
175+
checked={maxReadFileLine === -1}
176+
onChange={(e: any) =>
177+
setCachedStateField("maxReadFileLine", e.target.checked ? -1 : 500)
178+
}
179+
data-testid="max-read-file-always-full-checkbox">
180+
{t("settings:contextManagement.maxReadFile.always_full_read")}
181+
</VSCodeCheckbox>
182+
</div>
183+
</div>
184+
<div className="text-vscode-descriptionForeground text-sm mt-2">
185+
{t("settings:contextManagement.maxReadFile.description")}
186+
</div>
187+
</div>
188+
</Section>
189+
190+
<Section>
191+
<VSCodeCheckbox
192+
checked={autoCondenseContext}
193+
onChange={(e: any) => setCachedStateField("autoCondenseContext", e.target.checked)}
194+
data-testid="auto-condense-context-checkbox">
195+
<span className="font-medium">{t("settings:contextManagement.autoCondenseContext.name")}</span>
196+
</VSCodeCheckbox>
101197
{autoCondenseContext && (
102198
<div className="flex flex-col gap-3 pl-3 border-l-2 border-vscode-button-background">
103199
<div className="flex items-center gap-4 font-bold">
104200
<span className="codicon codicon-fold" />
105-
<div>{t("settings:experimental.autoCondenseContextPercent.label")}</div>
201+
<div>{t("settings:contextManagement.autoCondenseContextPercent.label")}</div>
106202
</div>
107203
<div>
108204
<div className="flex items-center gap-2">
@@ -118,19 +214,19 @@ export const ContextManagementSettings = ({
118214
<span className="w-20">{autoCondenseContextPercent}%</span>
119215
</div>
120216
<div className="text-vscode-descriptionForeground text-sm mt-1">
121-
{t("settings:experimental.autoCondenseContextPercent.description")}
217+
{t("settings:contextManagement.autoCondenseContextPercent.description")}
122218
</div>
123219
</div>
124220

125221
{/* API Configuration Selection */}
126222
<div className="flex flex-col gap-3">
127223
<div className="flex items-center gap-4 font-bold">
128224
<span className="codicon codicon-settings-gear" />
129-
<div>{t("settings:experimental.condensingApiConfiguration.label")}</div>
225+
<div>{t("settings:contextManagement.condensingApiConfiguration.label")}</div>
130226
</div>
131227
<div>
132228
<div className="text-[13px] text-vscode-descriptionForeground mb-2">
133-
{t("settings:experimental.condensingApiConfiguration.description")}
229+
{t("settings:contextManagement.condensingApiConfiguration.description")}
134230
</div>
135231
<Select
136232
value={condensingApiConfigId || "-"}
@@ -145,13 +241,15 @@ export const ContextManagementSettings = ({
145241
<SelectTrigger className="w-full">
146242
<SelectValue
147243
placeholder={t(
148-
"settings:experimental.condensingApiConfiguration.useCurrentConfig",
244+
"settings:contextManagement.condensingApiConfiguration.useCurrentConfig",
149245
)}
150246
/>
151247
</SelectTrigger>
152248
<SelectContent>
153249
<SelectItem value="-">
154-
{t("settings:experimental.condensingApiConfiguration.useCurrentConfig")}
250+
{t(
251+
"settings:contextManagement.condensingApiConfiguration.useCurrentConfig",
252+
)}
155253
</SelectItem>
156254
{(listApiConfigMeta || []).map((config) => (
157255
<SelectItem key={config.id} value={config.id}>
@@ -167,11 +265,11 @@ export const ContextManagementSettings = ({
167265
<div className="flex flex-col gap-3">
168266
<div className="flex items-center gap-4 font-bold">
169267
<span className="codicon codicon-edit" />
170-
<div>{t("settings:experimental.customCondensingPrompt.label")}</div>
268+
<div>{t("settings:contextManagement.customCondensingPrompt.label")}</div>
171269
</div>
172270
<div>
173271
<div className="text-[13px] text-vscode-descriptionForeground mb-2">
174-
{t("settings:experimental.customCondensingPrompt.description")}
272+
{t("settings:contextManagement.customCondensingPrompt.description")}
175273
</div>
176274
<VSCodeTextArea
177275
resize="vertical"
@@ -198,100 +296,13 @@ export const ContextManagementSettings = ({
198296
text: SUMMARY_PROMPT,
199297
})
200298
}}>
201-
{t("settings:experimental.customCondensingPrompt.reset")}
299+
{t("settings:contextManagement.customCondensingPrompt.reset")}
202300
</Button>
203301
</div>
204302
</div>
205303
</div>
206304
</div>
207305
)}
208-
<div>
209-
<span className="block font-medium mb-1">{t("settings:contextManagement.openTabs.label")}</span>
210-
<div className="flex items-center gap-2">
211-
<Slider
212-
min={0}
213-
max={500}
214-
step={1}
215-
value={[maxOpenTabsContext ?? 20]}
216-
onValueChange={([value]) => setCachedStateField("maxOpenTabsContext", value)}
217-
data-testid="open-tabs-limit-slider"
218-
/>
219-
<span className="w-10">{maxOpenTabsContext ?? 20}</span>
220-
</div>
221-
<div className="text-vscode-descriptionForeground text-sm mt-1">
222-
{t("settings:contextManagement.openTabs.description")}
223-
</div>
224-
</div>
225-
226-
<div>
227-
<span className="block font-medium mb-1">
228-
{t("settings:contextManagement.workspaceFiles.label")}
229-
</span>
230-
<div className="flex items-center gap-2">
231-
<Slider
232-
min={0}
233-
max={500}
234-
step={1}
235-
value={[maxWorkspaceFiles ?? 200]}
236-
onValueChange={([value]) => setCachedStateField("maxWorkspaceFiles", value)}
237-
data-testid="workspace-files-limit-slider"
238-
/>
239-
<span className="w-10">{maxWorkspaceFiles ?? 200}</span>
240-
</div>
241-
<div className="text-vscode-descriptionForeground text-sm mt-1">
242-
{t("settings:contextManagement.workspaceFiles.description")}
243-
</div>
244-
</div>
245-
246-
<div>
247-
<VSCodeCheckbox
248-
checked={showRooIgnoredFiles}
249-
onChange={(e: any) => setCachedStateField("showRooIgnoredFiles", e.target.checked)}
250-
data-testid="show-rooignored-files-checkbox">
251-
<label className="block font-medium mb-1">
252-
{t("settings:contextManagement.rooignore.label")}
253-
</label>
254-
</VSCodeCheckbox>
255-
<div className="text-vscode-descriptionForeground text-sm mt-1">
256-
{t("settings:contextManagement.rooignore.description")}
257-
</div>
258-
</div>
259-
260-
<div>
261-
<div className="flex flex-col gap-2">
262-
<span className="font-medium">{t("settings:contextManagement.maxReadFile.label")}</span>
263-
<div className="flex items-center gap-4">
264-
<Input
265-
type="number"
266-
pattern="-?[0-9]*"
267-
className="w-24 bg-vscode-input-background text-vscode-input-foreground border border-vscode-input-border px-2 py-1 rounded text-right [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none disabled:opacity-50"
268-
value={maxReadFileLine ?? -1}
269-
min={-1}
270-
onChange={(e) => {
271-
const newValue = parseInt(e.target.value, 10)
272-
if (!isNaN(newValue) && newValue >= -1) {
273-
setCachedStateField("maxReadFileLine", newValue)
274-
}
275-
}}
276-
onClick={(e) => e.currentTarget.select()}
277-
data-testid="max-read-file-line-input"
278-
disabled={maxReadFileLine === -1}
279-
/>
280-
<span>{t("settings:contextManagement.maxReadFile.lines")}</span>
281-
<VSCodeCheckbox
282-
checked={maxReadFileLine === -1}
283-
onChange={(e: any) =>
284-
setCachedStateField("maxReadFileLine", e.target.checked ? -1 : 500)
285-
}
286-
data-testid="max-read-file-always-full-checkbox">
287-
{t("settings:contextManagement.maxReadFile.always_full_read")}
288-
</VSCodeCheckbox>
289-
</div>
290-
</div>
291-
<div className="text-vscode-descriptionForeground text-sm mt-2">
292-
{t("settings:contextManagement.maxReadFile.description")}
293-
</div>
294-
</div>
295306
</Section>
296307
</div>
297308
)

0 commit comments

Comments
 (0)