import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Switch } from '@/components/ui/switch'; import { Skeleton } from '@/components/ui/skeleton'; import { Badge } from '@/components/ui/badge'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { useLicense } from '@/context/LicenseContext'; import { RefreshCw, Database, Info } from 'lucide-react'; import type { PatchableSettings } from './types'; interface DeveloperSectionProps { settings: PatchableSettings; onSettingChange: (key: K, value: PatchableSettings[K]) => void; onSave: () => Promise; isSaving: boolean; isLoading: boolean; isRemote: boolean; } function SettingsSkeleton() { return (
); } export function DeveloperSection({ settings, onSettingChange, onSave, isSaving, isLoading, isRemote }: DeveloperSectionProps) { const { isPro, license } = useLicense(); return (

Developer

Power user settings for real-time observability and data retention.

{isRemote && ( Always Local These settings control this Sencho instance's UI behaviour and are never synced to remote nodes. )}
{isLoading ? : ( <>

Enable Real-Time Metrics & Extended Logs

onSettingChange('developer_mode', c ? '1' : '0')} />
{settings.developer_mode === '1' && (

SSE streaming is active - polling rate is overridden.

)}
{/* Data Retention (Observability) */}
Data Retention

How long to keep per-container CPU/RAM/network history.

onSettingChange('metrics_retention_hours', e.target.value)} className="w-20" /> hrs

How long to keep alert and notification history.

onSettingChange('log_retention_days', e.target.value)} className="w-20" /> days
{isPro && license?.variant === 'team' && (

How long to keep audit trail entries.

onSettingChange('audit_retention_days', e.target.value)} className="w-20" /> days
)}
)}
); }