@spatialwalk/avatarkit 1.0.0-beta.64 → 1.0.0-beta.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.0.0-beta.65] - 2026-01-14
6
+
7
+ ### 🐛 Bugfixes
8
+ - **Transition Frame Reset Logic** - Fixed issue where `currentPlayingFrame` was not reset after generating transitions, causing jump artifacts on second conversation
9
+ - Reset `currentPlayingFrame` to `null` after generating idle->speaking transitions
10
+ - Reset `currentPlayingFrame` to `null` after generating speaking->idle transitions
11
+ - Reset `currentPlayingFrame` to `null` when entering Idle state
12
+ - Ensures each transition starts from the correct current frame by re-fetching the current state frame when needed
13
+
5
14
  ## [1.0.0-beta.64] - 2026-01-14
6
15
 
7
16
  ### ✨ New Features
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { A as APP_CONFIG, l as logger, e as errorToMessage, a as logEvent } from "./index-D0sXXlqd.js";
4
+ import { A as APP_CONFIG, l as logger, e as errorToMessage, a as logEvent } from "./index-xTAIRBMF.js";
5
5
  class StreamingAudioPlayer {
6
6
  constructor(options) {
7
7
  __publicField(this, "audioContext", null);
@@ -7624,7 +7624,7 @@ const _AnimationPlayer = class _AnimationPlayer {
7624
7624
  if (this.streamingPlayer) {
7625
7625
  return;
7626
7626
  }
7627
- const { StreamingAudioPlayer } = await import("./StreamingAudioPlayer-CugAsNXV.js");
7627
+ const { StreamingAudioPlayer } = await import("./StreamingAudioPlayer-GEsQnXc9.js");
7628
7628
  const { AvatarSDK: AvatarSDK2 } = await Promise.resolve().then(() => AvatarSDK$1);
7629
7629
  const audioFormat = AvatarSDK2.getAudioFormat();
7630
7630
  this.streamingPlayer = new StreamingAudioPlayer({
@@ -8961,7 +8961,7 @@ class AvatarSDK {
8961
8961
  }
8962
8962
  __publicField(AvatarSDK, "_isInitialized", false);
8963
8963
  __publicField(AvatarSDK, "_configuration", null);
8964
- __publicField(AvatarSDK, "_version", "1.0.0-beta.64");
8964
+ __publicField(AvatarSDK, "_version", "1.0.0-beta.65");
8965
8965
  __publicField(AvatarSDK, "_avatarCore", null);
8966
8966
  __publicField(AvatarSDK, "_dynamicSdkConfig", null);
8967
8967
  const AvatarSDK$1 = Object.freeze(Object.defineProperty({
@@ -14520,6 +14520,7 @@ class AvatarView {
14520
14520
  this.lastRealtimeProtoFrame = null;
14521
14521
  this.transitionKeyframes = [];
14522
14522
  this.transitionStartTime = 0;
14523
+ this.currentPlayingFrame = null;
14523
14524
  }
14524
14525
  }
14525
14526
  get isRealtimePlaying() {
@@ -14604,6 +14605,7 @@ class AvatarView {
14604
14605
  const firstSpeakingWithPostProcessing = this.avatarController.applyPostProcessingToFlame(firstSpeaking);
14605
14606
  this.transitionKeyframes = this.generateAndAlignTransitionFrames(fromFrame, firstSpeakingWithPostProcessing, this.startTransitionDurationMs, true);
14606
14607
  this.transitionStartTime = performance.now();
14608
+ this.currentPlayingFrame = null;
14607
14609
  if (this.transitionKeyframes.length === 0) {
14608
14610
  this.setState("speaking");
14609
14611
  this.avatarController.onTransitionComplete();
@@ -14681,6 +14683,7 @@ class AvatarView {
14681
14683
  if (idleFirstProto) {
14682
14684
  this.transitionKeyframes = this.generateAndAlignTransitionFrames(fromFrameWithPostProcessing, idleFirstProto, this.endTransitionDurationMs);
14683
14685
  this.transitionStartTime = performance.now();
14686
+ this.currentPlayingFrame = null;
14684
14687
  if (this.transitionKeyframes.length > 0 && this.renderingState === "transitioningToIdle") {
14685
14688
  if (APP_CONFIG.debug)
14686
14689
  logger.log("[AvatarView] Return transition started:", this.transitionKeyframes.length, "frames");
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b, c, m, f, d, j, g, C, i, D, E, k, h, L, R, n } from "./index-D0sXXlqd.js";
1
+ import { b, c, m, f, d, j, g, C, i, D, E, k, h, L, R, n } from "./index-xTAIRBMF.js";
2
2
  export {
3
3
  b as Avatar,
4
4
  c as AvatarController,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spatialwalk/avatarkit",
3
3
  "type": "module",
4
- "version": "1.0.0-beta.64",
4
+ "version": "1.0.0-beta.65",
5
5
  "packageManager": "pnpm@10.18.2",
6
6
  "description": "SPAvatar SDK - 3D Gaussian Splatting Avatar Rendering SDK",
7
7
  "author": "SPAvatar Team",