diff --git a/src/components/settings/coach-memory-section.tsx b/src/components/settings/coach-memory-section.tsx
index 81f7a2f1a..dde6912bf 100644
--- a/src/components/settings/coach-memory-section.tsx
+++ b/src/components/settings/coach-memory-section.tsx
@@ -251,10 +251,26 @@ export function CoachMemorySection({
size="sm"
data-testid="settings-coach-memory-forget"
aria-label={t("settings.ai.coachMemory.forgetAria")}
- disabled={!isAuthenticated || forgetOne.isPending}
+ // v1.11.2 — per-id pending: only the row being
+ // deleted disables/spins. `forgetOne.variables` holds
+ // the id passed to the in-flight `mutate()`, so a
+ // single shared mutation no longer greys out every
+ // other row's forget button during one delete.
+ disabled={
+ !isAuthenticated ||
+ (forgetOne.isPending && forgetOne.variables === fact.id)
+ }
onClick={() => forgetOne.mutate(fact.id)}
>
-
+ {forgetOne.isPending &&
+ forgetOne.variables === fact.id ? (
+
+ ) : (
+
+ )}
{t("settings.ai.coachMemory.forget")}