diff --git a/client/src/features/agent/budgets/ui/AgentBudgets.tsx b/client/src/features/agent/budgets/ui/AgentBudgets.tsx index 009181c..53d04de 100644 --- a/client/src/features/agent/budgets/ui/AgentBudgets.tsx +++ b/client/src/features/agent/budgets/ui/AgentBudgets.tsx @@ -194,8 +194,6 @@ export default function AgentBudgets({ agentId }: AgentBudgetsProps) { >({}); - const [feedback, setFeedback] = useState<{ kind: 'ok' | 'err'; msg: string } | null>(null); + const [errorMsg, setErrorMsg] = useState(null); const [prevData, setPrevData] = useState(data); if (data !== prevData) { @@ -150,7 +159,7 @@ export default function AgentLimitsEditor({ agentId }: AgentLimitsEditorProps) { const handleChange = (field: WindowMeta['field']) => (e: ChangeEvent) => { const value = e.target.value; setEdits((prev) => ({ ...prev, [field]: value })); - setFeedback(null); + setErrorMsg(null); }; const handleSave = async () => { @@ -168,32 +177,31 @@ export default function AgentLimitsEditor({ agentId }: AgentLimitsEditorProps) { } }); if (errors.length > 0) { - setFeedback({ kind: 'err', msg: errors.join(' · ') }); + setErrorMsg(errors.join(' · ')); return; } + // Nothing to persist — silently no-op (the Save button is also disabled + // when nothing's dirty, so this branch is mostly defensive). if (Object.keys(patch).length === 0) { - setFeedback({ kind: 'ok', msg: 'Nothing to save.' }); + setErrorMsg(null); return; } try { await updateLimits({ agentId, patch }).unwrap(); - setFeedback({ kind: 'ok', msg: 'Saved.' }); + setErrorMsg(null); } catch (err) { - const msg = err instanceof Error ? err.message : 'Save failed'; - setFeedback({ kind: 'err', msg }); + setErrorMsg(err instanceof Error ? err.message : 'Save failed'); } }; const handleReset = () => { setEdits({}); - setFeedback(null); + setErrorMsg(null); }; return ( {isFetching && !isSaving && } {dirty && ( - )} @@ -227,7 +235,8 @@ export default function AgentLimitsEditor({ agentId }: AgentLimitsEditorProps) { disableElevation onClick={handleSave} disabled={!dirty || isSaving} - startIcon={isSaving ? : null} + startIcon={isSaving ? : null} + sx={compactButtonSx} > Save @@ -237,23 +246,19 @@ export default function AgentLimitsEditor({ agentId }: AgentLimitsEditorProps) { - theme.palette.mode === 'dark' ? 'rgba(244, 67, 54, 0.08)' : 'rgba(244, 67, 54, 0.06)', + bgcolor: 'rgba(255, 167, 38, 0.10)', }} > - + (theme.palette.mode === 'dark' ? 'warning.light' : 'warning.dark'), lineHeight: 1.4, fontSize: '0.75rem', }} @@ -278,8 +283,6 @@ export default function AgentLimitsEditor({ agentId }: AgentLimitsEditorProps) { sx={{ flex: 1, minWidth: 0, - border: '1px solid', - borderColor: 'divider', borderRadius: 1, p: 1.25, display: 'flex', @@ -367,14 +370,14 @@ export default function AgentLimitsEditor({ agentId }: AgentLimitsEditorProps) { })} - {feedback && ( + {errorMsg && ( setFeedback(null)} + onClose={() => setErrorMsg(null)} > - {feedback.msg} + {errorMsg} )} diff --git a/client/src/features/agent/skills/ui/AgentSkills.tsx b/client/src/features/agent/skills/ui/AgentSkills.tsx index bb2bf80..9bebbf3 100644 --- a/client/src/features/agent/skills/ui/AgentSkills.tsx +++ b/client/src/features/agent/skills/ui/AgentSkills.tsx @@ -185,8 +185,6 @@ export default function AgentSkills({ agentId }: AgentSkillsProps) { refetch()} disabled={isFetching} - startIcon={isFetching ? : null} + startIcon={isFetching ? : null} + sx={{ + fontSize: '0.7rem', + lineHeight: 1.4, + py: 0.25, + px: 1, + minWidth: 'auto', + textTransform: 'none', + }} > {isFetching ? 'Refreshing' : 'Refresh'} @@ -127,8 +135,6 @@ export default function AgentUsage({ agentId }: AgentUsageProps) {