authorgravatar for 78751023+delltrak@users.noreply.github.comdelltrak <78751023+delltrak@users.noreply.github.com> 2026-08-15 09:27:01-03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-08-15 12:27:01+00:00
log39167eb1a586ee9e060d6ec3314617e14e0259c0
tree30feaa889d4930038003fbc6d9ba5bcefec4aaea
parent7ce4194707e2a883ccd6a44fd2e07eba08f5369a
signature Signed by PGP key B5690EEEBB952194

fix(web): describe what Ultracode does in the Reasoning picker (#6092)


3 files changed, 43 insertions(+), 18 deletions(-)

apps/server/src/provider/Layers/ClaudeProvider.ts+15-3
......@@ -78,7 +78,11 @@ const CLAUDE_MODEL_CATALOG: ReadonlyArray<ServerProviderModel> = [
7878 { value: "high", label: "High", isDefault: true },
7979 { value: "xhigh", label: "Extra High" },
8080 { value: "max", label: "Max" },
81 { value: "ultracode", label: "Ultracode" },
81 {
82 value: "ultracode",
83 label: "Ultracode",
84 description: "xhigh effort plus multi-agent workflow orchestration",
85 },
8286 { value: "ultrathink", label: "Ultrathink" },
8387 ],
8488 promptInjectedValues: ["ultrathink"],
......@@ -109,7 +113,11 @@ const CLAUDE_MODEL_CATALOG: ReadonlyArray<ServerProviderModel> = [
109113 { value: "high", label: "High", isDefault: true },
110114 { value: "xhigh", label: "Extra High" },
111115 { value: "max", label: "Max" },
112 { value: "ultracode", label: "Ultracode" },
116 {
117 value: "ultracode",
118 label: "Ultracode",
119 description: "xhigh effort plus multi-agent workflow orchestration",
120 },
113121 { value: "ultrathink", label: "Ultrathink" },
114122 ],
115123 promptInjectedValues: ["ultrathink"],
......@@ -145,7 +153,11 @@ const CLAUDE_MODEL_CATALOG: ReadonlyArray<ServerProviderModel> = [
145153 { value: "high", label: "High", isDefault: true },
146154 { value: "xhigh", label: "Extra High" },
147155 { value: "max", label: "Max" },
148 { value: "ultracode", label: "Ultracode" },
156 {
157 value: "ultracode",
158 label: "Ultracode",
159 description: "xhigh effort plus multi-agent workflow orchestration",
160 },
149161 { value: "ultrathink", label: "Ultrathink" },
150162 ],
151163 promptInjectedValues: ["ultrathink"],
apps/server/src/provider/providerSnapshot.ts+12-6
......@@ -168,16 +168,22 @@ export function buildSelectOptionDescriptor(input: {
168168 readonly id: string;
169169 readonly label: string;
170170 readonly options:
171 | ReadonlyArray<{ value: string; label: string; isDefault?: boolean | undefined }>
171 | ReadonlyArray<{
172 value: string;
173 label: string;
174 description?: string | undefined;
175 isDefault?: boolean | undefined;
176 }>
172177 | undefined;
173178 readonly description?: string;
174179 readonly promptInjectedValues?: ReadonlyArray<string>;
175180}) {
176 const options = (input.options ?? []).map((option) =>
177 option.isDefault
178 ? { id: option.value, label: option.label, isDefault: true }
179 : { id: option.value, label: option.label },
180 );
181 const options = (input.options ?? []).map((option) => ({
182 id: option.value,
183 label: option.label,
184 ...(option.description ? { description: option.description } : {}),
185 ...(option.isDefault ? { isDefault: true } : {}),
186 }));
181187 const currentValue = options.find((option) => option.isDefault)?.id;
182188 return {
183189 id: input.id,
apps/web/src/components/chat/TraitsPicker.tsx+16-9
......@@ -328,16 +328,23 @@ export const TraitsMenuContent = memo(function TraitsMenuContentImpl({
328328 closeOnClick
329329 disabled={ultrathinkInBodyText && descriptor.id === primarySelectDescriptor?.id}
330330 >
331 <span className="flex w-full min-w-0 items-center justify-between gap-3">
332 <span className="min-w-0 truncate">
333 {option.label}
334 {option.isDefault ? (
335 <>
336 {" "}
337 <DefaultBadge />
338 </>
339 ) : null}
331 <span className="flex w-full min-w-0 flex-col">
332 <span className="flex w-full min-w-0 items-center justify-between gap-3">
333 <span className="min-w-0 truncate">
334 {option.label}
335 {option.isDefault ? (
336 <>
337 {" "}
338 <DefaultBadge />
339 </>
340 ) : null}
341 </span>
340342 </span>
343 {option.description ? (
344 <span className="max-w-56 text-pretty text-muted-foreground/80 text-xs">
345 {option.description}
346 </span>
347 ) : null}
341348 </span>
342349 </MenuRadioItem>
343350 ))}