Skip to content

Commit 5353822

Browse files
Add CLI docs links to provider install settings
- Show Install, Update, and Config links for each provider - Open docs in a new tab from the settings panel
1 parent 226f8f1 commit 5353822

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

apps/web/src/routes/_chat.settings.tsx

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import { gitRemoveWorktreeMutationOptions } from "../lib/gitReactQuery";
7474
import {
7575
ArchiveIcon,
7676
ChevronDownIcon,
77+
ExternalLinkIcon,
7778
PlusIcon,
7879
RotateCcwIcon,
7980
Undo2Icon,
@@ -153,6 +154,10 @@ type InstallBinarySettingsKey =
153154
type InstallProviderSettings = {
154155
provider: ProviderKind;
155156
title: string;
157+
docs: ReadonlyArray<{
158+
label: string;
159+
href: string;
160+
}>;
156161
binaryPathKey: InstallBinarySettingsKey;
157162
binaryPlaceholder: string;
158163
binaryDescription: ReactNode;
@@ -246,6 +251,11 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
246251
{
247252
provider: "codex",
248253
title: "Codex",
254+
docs: [
255+
{ label: "Install", href: "https://help.openai.com/en/articles/11096431" },
256+
{ label: "Update", href: "https://help.openai.com/en/articles/11096431" },
257+
{ label: "Config", href: "https://github.com/openai/codex/blob/main/docs/config.md" },
258+
],
249259
binaryPathKey: "codexBinaryPath",
250260
binaryPlaceholder: "Codex binary path",
251261
binaryDescription: (
@@ -260,6 +270,11 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
260270
{
261271
provider: "claudeAgent",
262272
title: "Claude",
273+
docs: [
274+
{ label: "Install", href: "https://code.claude.com/docs/en/installation" },
275+
{ label: "Update", href: "https://code.claude.com/docs/en/installation#update-claude-code" },
276+
{ label: "Config", href: "https://code.claude.com/docs/en/settings" },
277+
],
263278
binaryPathKey: "claudeBinaryPath",
264279
binaryPlaceholder: "Claude binary path",
265280
binaryDescription: (
@@ -271,6 +286,11 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
271286
{
272287
provider: "cursor",
273288
title: "Cursor",
289+
docs: [
290+
{ label: "Install", href: "https://docs.cursor.com/en/cli/installation" },
291+
{ label: "Update", href: "https://docs.cursor.com/en/cli/installation#updates" },
292+
{ label: "Config", href: "https://docs.cursor.com/en/cli/overview" },
293+
],
274294
binaryPathKey: "cursorBinaryPath",
275295
binaryPlaceholder: "Cursor Agent binary path",
276296
binaryDescription: (
@@ -285,6 +305,14 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
285305
{
286306
provider: "gemini",
287307
title: "Gemini",
308+
docs: [
309+
{ label: "Install", href: "https://google-gemini.github.io/gemini-cli/docs/get-started/" },
310+
{ label: "Update", href: "https://github.com/google-gemini/gemini-cli" },
311+
{
312+
label: "Config",
313+
href: "https://google-gemini.github.io/gemini-cli/docs/get-started/configuration.html",
314+
},
315+
],
288316
binaryPathKey: "geminiBinaryPath",
289317
binaryPlaceholder: "Gemini binary path",
290318
binaryDescription: (
@@ -296,6 +324,11 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
296324
{
297325
provider: "kilo",
298326
title: "Kilo",
327+
docs: [
328+
{ label: "Install", href: "https://kilo.ai/docs/cli" },
329+
{ label: "Update", href: "https://kilo.ai/docs/cli" },
330+
{ label: "Config", href: "https://kilo.ai/docs/cli#configuration" },
331+
],
299332
binaryPathKey: "kiloBinaryPath",
300333
binaryPlaceholder: "Kilo binary path",
301334
binaryDescription: (
@@ -313,6 +346,11 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
313346
{
314347
provider: "opencode",
315348
title: "OpenCode",
349+
docs: [
350+
{ label: "Install", href: "https://opencode.ai/docs/" },
351+
{ label: "Update", href: "https://opencode.ai/docs/cli/" },
352+
{ label: "Config", href: "https://opencode.ai/docs/config/" },
353+
],
316354
binaryPathKey: "openCodeBinaryPath",
317355
binaryPlaceholder: "OpenCode binary path",
318356
binaryDescription: (
@@ -331,6 +369,11 @@ const INSTALL_PROVIDER_SETTINGS: readonly InstallProviderSettings[] = [
331369
{
332370
provider: "pi",
333371
title: "Pi",
372+
docs: [
373+
{ label: "Install", href: "https://pi.dev/docs/latest" },
374+
{ label: "Update", href: "https://pi.dev/docs/latest/settings" },
375+
{ label: "Config", href: "https://pi.dev/docs/latest/settings" },
376+
],
334377
binaryPathKey: "piBinaryPath",
335378
binaryPlaceholder: "Pi binary path",
336379
binaryDescription: (
@@ -432,6 +475,30 @@ function SettingResetButton({ label, onClick }: { label: string; onClick: () =>
432475
);
433476
}
434477

478+
function ProviderDocsLinks({ docs }: { docs: InstallProviderSettings["docs"] }) {
479+
return (
480+
<div className="rounded-lg border border-border/60 bg-[var(--color-background-elevated-secondary)]/35 px-3 py-2.5">
481+
<div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between">
482+
<span className="text-xs font-medium text-foreground">CLI docs</span>
483+
<div className="flex flex-wrap gap-2">
484+
{docs.map((doc) => (
485+
<a
486+
key={`${doc.label}:${doc.href}`}
487+
href={doc.href}
488+
target="_blank"
489+
rel="noreferrer"
490+
className="inline-flex h-7 items-center gap-1.5 rounded-md border border-border/70 px-2.5 text-xs text-muted-foreground transition-colors hover:border-border hover:bg-[var(--color-background-panel)] hover:text-foreground"
491+
>
492+
<span>{doc.label}</span>
493+
<ExternalLinkIcon className="size-3" />
494+
</a>
495+
))}
496+
</div>
497+
</div>
498+
</div>
499+
);
500+
}
501+
435502
function normalizeManagedWorktreePath(value: string | null | undefined): string | null {
436503
const trimmed = value?.trim();
437504
return trimmed && trimmed.length > 0 ? trimmed : null;
@@ -2406,6 +2473,8 @@ function SettingsRouteView() {
24062473
<CollapsibleContent>
24072474
<div className="border-t border-border/70 px-4 py-4">
24082475
<div className="space-y-3">
2476+
<ProviderDocsLinks docs={providerSettings.docs} />
2477+
24092478
<label
24102479
htmlFor={`provider-install-${providerSettings.binaryPathKey}`}
24112480
className="block"

0 commit comments

Comments
 (0)