# v10 Release Notes

### ODK Release Notes

#### Launcher

* Fixed an issue where the app would load infinitely when failing to login
* Fixed an issue where the app could fail to log in automatically on launch
* Fixed an issue where the app seemed to log the user out randomly
* Fixed an issue where deleting an installation could fail with an unhelpful error message. The app now explains what's preventing deletion and some tips to resolve it
* Fixed an issue where Unreal Editor processes were not always detected when checking for running editors before delete or verify operations
* Deleting a paused download now shows a confirmation dialog instead of deleting immediately

#### NPCs, crowds, Smart Objects

* **NPCs use Workers instead of Sentinels** (follows M2 Sentinel/Worker split).
* **NPC Stations** using `M2SmartObjectsBroker` for slot-occupancy networking; vertical-offset handling for `MoveToSmartObjectSlot`.

#### Emotes

* **GIF emotes** added as a new emote type; flipbook playback after download.
* **Coop emotes**: visibility sphere-trace between participants (`ODK.CoopEmotes.VisibilityTraceRadius`), proper handling when a participant leaves, auth-client-only SFX loops.
* **Emote Priority System** prevents overlapping plays; emote sort/source-filter config; one-button-press wheel selection; controller-stuck fixes; emote wheel diamond/blur fix.
* Profile-picture emote (with empty-URL guard); dynamic emote refactor stage one; configurable bubble emotes.

#### Wallet & tokens

* **Wallet WebSocket** got reconnect logic (replaces redundant pinging); BP\_ODK\_WalletWorldService reads from ODK live config and establishes ping correctly.

#### Camera

* BPC\_ODK\_CameraControlComponent: Enable Camera Zoom toggle in pause-menu Input page, first-person FOV restore fix, valid-check when first-person mode removed (post-render-target changes).
* **Over-the-shoulder camera removed** (relied on deprecated M2 assets).
* Observer-camera controls copied in and fixed; SelfieCam scan-data on item-scan; screenshot logic moved into `BPC_ODK_ScreenshotComponent`.

#### UI / HUD

* **Button hints bar** added to ODK.
* **Quest UI** added to example HUD (selfie quest removed from Boneyard).
* **Banner container** with notification blockers (delay queue during important game events).
* Web Browser widget: portrait/landscape sizes, close-button styling, retainer-box wrapper removed.
* Super-global UI-mode context concept; UI mode removed when last needing-widget closes; P/G no longer close overlay while typing.
* Nameplates: line-of-sight visibility, local-player visibility fix, centered text-chat nameplate.

#### Input & controls

* Renamed input actions; gamepad icon scaling fix; KodaCam filter-change callout size up.
* Gamepad now works with graphics settings.

#### Animation & ABP

* **Locomotion blendspace** for Animated Crowd in `ABP_YHuman`; NPC locomotion jitter smoothed via blendspace.
* Child ABP linter rule enabled (Generated ABPs stay in sync with parents).
* ODK CustomBool anim vars converted to proper named ones, freeing up custom bools for devs

#### Persistence & KV store

* Persistence API extended for full KV-store selection, multi-read / multi-write helpers, key-attached callbacks.
* **Persistence emotes**: dynamic contexts (World, Bubbles) with fallbacks, `SetPersistenceEmoteContext`, `OnPersistenceDataUpdated` delegate.
* Quests now use an instanced persistence object (separated from Task Flow).

#### Avatars

* **Player Profile v2** integration; server KV store backs profile avatars; default-avatar swap-back failure fix.

#### Config & settings

* Project editor settings moved into the ODK plugin; M2Content INI relocated.
* Bootflow singleton absorbed config singletons; experience-id override removed (configured directly in contract lookup).
* **Default FPS 60** (was 30); vsync/maxfps removed from `DefaultConsoleVariables.ini` so Game Settings can actually change them.

#### Cleanup & redirects

* Sweeping removal of M2Deprecated dependencies from ODK.
* Removed: photo album assets, streaming context, stale Meebits content, AttachmentList,  accidental Spacebar control, deprecated `BPI_ChatCommandHandler`, unused data-table roles.
* Redirector cleanup pass.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.otherside.xyz/release-notes/releases/v10.0-release/v10-release-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
