From 3ba65bedb7fd6d855a389abc946065bd54e893d8 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Fri, 7 Aug 2026 00:43:23 -0700 Subject: [PATCH] [eric] ux: marketplace joins click-to-fit, camera flights land soft (340ms quintic), browser-agent runs show one view not two --- .../app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx | 4 ++++ frontend/src/app/pages/Dashboard/geometry/getCardRect.ts | 5 +++++ .../pages/Dashboard/hooks/interaction/useCanvasControls.ts | 6 ++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx b/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx index 29e66e20..b6a57533 100644 --- a/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx +++ b/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx @@ -222,6 +222,10 @@ export const DefaultToolBubble: React.FC = ({ ) : ( { const t = Math.min((now - startTime) / duration, 1); - const ease = 1 - Math.pow(1 - t, 3); // cubic ease-out + // Quintic ease-out: leaves fast, lands soft. The old cubic at 150ms read as a snap; the eye + // reads the long tail as "the camera settled" rather than "the world jumped". + const ease = 1 - Math.pow(1 - t, 5); applyLive({ panX: start.panX + (target.panX - start.panX) * ease, panY: start.panY + (target.panY - start.panY) * ease,