From 14472cb8e6758ba88ee9c53f800cd71e5b27b4c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B0=D0=B5=D1=80=20=D0=9C=D0=B8=D1=85=D0=B0=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D1=87?= Date: Thu, 27 Aug 2026 00:50:55 +0300 Subject: [PATCH] feat: refine onboarding animation timing --- src/features/avatar/avatars.ts | 10 +++++----- src/features/studio/__tests__/studio-document-test.ts | 11 +++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/features/avatar/avatars.ts b/src/features/avatar/avatars.ts index 5762513..829a426 100644 --- a/src/features/avatar/avatars.ts +++ b/src/features/avatar/avatars.ts @@ -384,23 +384,23 @@ const mementoBehavior = (behavior?: AvatarBehaviorLibrary): AvatarBehaviorLibrar { id: 'memento-onboarding-listening-step', expressionId: 'memento-onboarding-listening', - holdMs: 1200, + holdMs: 2000, transitionMs: 350, transition: 'smooth' as const, }, { id: 'memento-onboarding-curious-step', expressionId: 'memento-onboarding-curious', - holdMs: 1200, + holdMs: 2000, transitionMs: 350, transition: 'smooth' as const, }, ], blink: { enabled: true, - initialDelayMs: 2600, - minIntervalMs: 3400, - maxIntervalMs: 6200, + initialDelayMs: 350, + minIntervalMs: 2070, + maxIntervalMs: 2070, durationMs: 280, }, }, diff --git a/src/features/studio/__tests__/studio-document-test.ts b/src/features/studio/__tests__/studio-document-test.ts index b1b5fa0..443a1d0 100644 --- a/src/features/studio/__tests__/studio-document-test.ts +++ b/src/features/studio/__tests__/studio-document-test.ts @@ -224,6 +224,17 @@ describe('Studio document', () => { expect( strokeMemento?.behavior?.sequences.some(sequence => sequence.semanticKey === 'onboarding') ).toBe(true) + const onboarding = strokeMemento?.behavior?.sequences.find( + sequence => sequence.semanticKey === 'onboarding' + ) + expect(onboarding?.steps.map(step => step.holdMs)).toEqual([2000, 2000]) + expect(onboarding?.blink).toEqual({ + enabled: true, + initialDelayMs: 350, + minIntervalMs: 2070, + maxIntervalMs: 2070, + durationMs: 280, + }) expect( document.library.avatars.find(avatar => avatar.id === 'primitive-apple-bite')?.colors ).toEqual({ body: '#ff5558', eyes: '#111316' })