2026-02-27 04:29:51 +00:00
|
|
|
import ApiKeyInput from "./ApiKeyInput";
|
|
|
|
|
import DockerSettings from "./DockerSettings";
|
2026-02-27 15:22:49 +00:00
|
|
|
import AwsSettings from "./AwsSettings";
|
2026-02-27 18:39:20 -08:00
|
|
|
import { useSettings } from "../../hooks/useSettings";
|
2026-02-27 04:29:51 +00:00
|
|
|
|
|
|
|
|
export default function SettingsPanel() {
|
2026-02-27 18:39:20 -08:00
|
|
|
const { appSettings, saveSettings } = useSettings();
|
|
|
|
|
|
2026-02-27 04:29:51 +00:00
|
|
|
return (
|
|
|
|
|
<div className="p-4 space-y-6">
|
|
|
|
|
<h2 className="text-xs font-semibold uppercase text-[var(--text-secondary)]">
|
|
|
|
|
Settings
|
|
|
|
|
</h2>
|
|
|
|
|
<ApiKeyInput />
|
|
|
|
|
<DockerSettings />
|
2026-02-27 15:22:49 +00:00
|
|
|
<AwsSettings />
|
2026-02-27 18:39:20 -08:00
|
|
|
<div>
|
|
|
|
|
<label className="block text-sm font-medium mb-2">Claude Instructions</label>
|
|
|
|
|
<p className="text-xs text-[var(--text-secondary)] mb-1.5">
|
|
|
|
|
Global instructions applied to all projects (written to ~/.claude/CLAUDE.md in containers)
|
|
|
|
|
</p>
|
|
|
|
|
<textarea
|
|
|
|
|
value={appSettings?.global_claude_instructions ?? ""}
|
|
|
|
|
onChange={async (e) => {
|
|
|
|
|
if (!appSettings) return;
|
|
|
|
|
await saveSettings({ ...appSettings, global_claude_instructions: e.target.value || null });
|
|
|
|
|
}}
|
|
|
|
|
placeholder="Instructions for Claude Code in all project containers..."
|
|
|
|
|
rows={4}
|
|
|
|
|
className="w-full px-2 py-1.5 text-xs bg-[var(--bg-primary)] border border-[var(--border-color)] rounded focus:outline-none focus:border-[var(--accent)] resize-y font-mono"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
2026-02-27 04:29:51 +00:00
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|