fix(settings): unknown drift state when Infisical unavailable + RTL drawer

- DriftBadge shows 'Unknown' (not 'Synced') when infisical_available=false
- Plumb infisicalAvailable from EnvironmentTab through EnvVarRow → DriftBadge
- Add dir='rtl' to ToolDetailDrawer SheetContent for Hebrew descriptions
This commit is contained in:
2026-05-04 07:01:42 +00:00
parent 89ce6c79d7
commit 1cb832473c
4 changed files with 26 additions and 4 deletions

View File

@@ -1,9 +1,27 @@
"use client";
import { AlertTriangle, CheckCircle2 } from "lucide-react";
import { AlertTriangle, CheckCircle2, HelpCircle } from "lucide-react";
import { Badge } from "@/components/ui/badge";
export function DriftBadge({ drift }: { drift: boolean }) {
type Props = {
drift: boolean;
// When false, Infisical was unreachable: drift state is unknown, not "synced".
infisicalAvailable?: boolean;
};
export function DriftBadge({ drift, infisicalAvailable = true }: Props) {
if (!infisicalAvailable) {
return (
<Badge
variant="outline"
className="text-ink-muted border-rule gap-1"
title="Infisical לא זמין — מצב ה-drift לא ידוע"
>
<HelpCircle className="w-3 h-3" />
Unknown
</Badge>
);
}
if (drift) {
return (
<Badge variant="outline" className="text-warn border-warn/40 gap-1">

View File

@@ -14,6 +14,7 @@ type Props = {
spec: McpEnvVar;
infisicalProjectId: string;
infisicalEnv: string;
infisicalAvailable: boolean;
onPendingRedeploy: () => void;
};
@@ -21,6 +22,7 @@ export function EnvVarRow({
spec,
infisicalProjectId,
infisicalEnv,
infisicalAvailable,
onPendingRedeploy,
}: Props) {
const [draft, setDraft] = useState<string>(spec.infisical_value ?? "");
@@ -60,7 +62,7 @@ export function EnvVarRow({
secret
</Badge>
)}
<DriftBadge drift={spec.drift} />
<DriftBadge drift={spec.drift} infisicalAvailable={infisicalAvailable} />
</div>
<p className="text-sm text-ink-muted mt-1">{spec.description}</p>
</div>

View File

@@ -67,6 +67,7 @@ export function EnvironmentTab() {
}
if (!data) return null;
const infisicalAvailable = data.errors.length === 0;
const driftCount = data.vars.filter((v) => v.drift).length;
return (
@@ -122,6 +123,7 @@ export function EnvironmentTab() {
spec={v}
infisicalProjectId={data.infisical_project_id}
infisicalEnv={data.infisical_environment}
infisicalAvailable={infisicalAvailable}
onPendingRedeploy={() => setPendingRedeploy(true)}
/>
))}

View File

@@ -19,7 +19,7 @@ type Props = {
export function ToolDetailDrawer({ tool, open, onOpenChange }: Props) {
return (
<Sheet open={open} onOpenChange={onOpenChange}>
<SheetContent side="left" className="sm:max-w-xl overflow-y-auto">
<SheetContent dir="rtl" side="left" className="sm:max-w-xl overflow-y-auto">
{tool && (
<>
<SheetHeader>