> ## Documentation Index
> Fetch the complete documentation index at: https://hntlabs-feature-bot-sdk-changelog-system.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Bot SDK Changelog

> Stay up to date with Towns Bot SDK changes

## Overview

Track all changes to the Towns Bot SDK. Critical changes are clearly marked and include migration instructions when available.

<Warning>
  Always review breaking changes carefully and test your bot after updating dependencies.
</Warning>

***

## Version 0.0.435

*Released December 12, 2025*

### Breaking Changes

#### Update membership pricing to have fee added on top of price

**Migration guide needed:** Please review the commit to see what changed.

**Files affected:**

* `packages/sdk/src/tests/multi/spaceWithVariousPriceConfigurations.test.ts`

[View commit →](https://github.com/towns-protocol/towns/commit/8bd3db6061f4f721176851f5cfeee252be6972f2)

***

#### Bots: breaking change - move app initialization into the framework

**Migration guide needed:** Please review the commit to see what changed.

**Files affected:**

* `packages/bot/src/bot.test.ts`
* `packages/bot/src/bot.ts`
* `packages/bot/src/smart-account.ts`

[View commit →](https://github.com/towns-protocol/towns/commit/bf3305fc580deb714d8555b642b5f6174799fc61)

***

#### Add display name field to bot metadata

**Migration guide needed:** Please review the commit to see what changed.

**Files affected:**

* `packages/bot/src/bot.test.ts`

[View commit →](https://github.com/towns-protocol/towns/commit/02295070f2d264a0bc11c060f24dfaeb0a917ec8)

***

#### Shared syncer

**Migration guide needed:** Please review the commit to see what changed.

**Files affected:**

* `packages/sdk/src/client.ts`
* `packages/sdk/src/sync-agent/syncAgent.ts`
* `packages/sdk/src/syncedStreams.ts`
* `packages/sdk/src/syncedStreamsLoop.ts`
* `packages/sdk/src/tests/multi_ne/syncedStreams.test.ts`
* ... and 2 more files

[View commit →](https://github.com/towns-protocol/towns/commit/95d501007fb9c67c46ecc1fc2fc7e2b9d3669cba)

***

#### Snapshot migration to flush lost session ids

**Migration guide needed:** Please review the commit to see what changed.

**Files affected:**

* `packages/sdk/src/migrations/migrateSnapshot.ts`
* `packages/sdk/src/migrations/snapshotMigration0004.ts`
* `packages/sdk/src/tests/unit/snapshotMigration0004.test.ts`

[View commit →](https://github.com/towns-protocol/towns/commit/3a012da367db33819b1f43fee365a81fa1c30a27)

***

### Deprecations

<Note>
  Deprecated features will be removed in a future major version. Plan to migrate soon.
</Note>

* **Jt/clean up gamma 1**
  * [View commit](https://github.com/towns-protocol/towns/commit/e4ecee2d40a7b8126e60a539bf0d6abdec8f38c7)

* **Remove deprecated `getUserData`**
  * [View commit](https://github.com/towns-protocol/towns/commit/37e862dd0f53e8615bd995123a8cf8a381acfae4)

### New Features

* Allow bot owners update their bot profile image in stream ([8743554](https://github.com/towns-protocol/towns/commit/87435543fc77cc88a302b0b0762866947eb93883))
* Implement paid commands with x402 facilitator processing ([329c59b](https://github.com/towns-protocol/towns/commit/329c59b4f3fb577257f17492e8c673a19b236671))
* Add x402 paid command option and update BotCommand type ([d5c6022](https://github.com/towns-protocol/towns/commit/d5c60227b2a1e761c0ea1a07736c94e6b87f2330))
* Roles support ([8fabbb6](https://github.com/towns-protocol/towns/commit/8fabbb6bae36ab0220504469a032c5353c7a8dee))
* Rule builder api to make easier rule structs ([682b74e](https://github.com/towns-protocol/towns/commit/682b74ece55f51a0fcfd820414bf9f4dfd09e01d))
* Improve mention behavior dx ([7d52a47](https://github.com/towns-protocol/towns/commit/7d52a47679f088559cf7e17e16be042f8840c7bb))
* Add ERC-8004 identity metadata support for bots ([f2ef316](https://github.com/towns-protocol/towns/commit/f2ef3163e4c2517c3da102d12f81d4bf2cb35a79))
* Sending link attachment ([ad639b4](https://github.com/towns-protocol/towns/commit/ad639b47544674023047cf7cfccb838fa9fae56b))
* Add owner parameter to AppCreated event ([9905355](https://github.com/towns-protocol/towns/commit/9905355ea4a7cd50e74715b2ab240555cdce89b7))
* `getSmartAccountFromUserId` ([16ab699](https://github.com/towns-protocol/towns/commit/16ab6998c1a1f76a53fdb9b77446648baff8535f))
* Allow bot to tip users ([d4039c5](https://github.com/towns-protocol/towns/commit/d4039c539b18df7f79097b353dbf4bae45380be5))
* Implement SimpleApp as ERC-4337 compatible account abstraction ([ee02b5f](https://github.com/towns-protocol/towns/commit/ee02b5fe74805189dbd4c3667a2482115cdf398c))
* Sync slash commands on bot initialization ([22db3f0](https://github.com/towns-protocol/towns/commit/22db3f0ce0d1e4ee77bf76e8104cb7ee7cb271e1))
* Viem + `appAddress` and `simpleAppAbi` ([57df5f1](https://github.com/towns-protocol/towns/commit/57df5f1fbc20cf0923f8a8c57c1cec1f9367fe9c))
* Use `sendTip` instead of `tip` & use `TipSent` event in nodes ([01a6875](https://github.com/towns-protocol/towns/commit/01a68750cf1882ede5bcd7d36a9c46a1cbfda6f5))
* Upload device keys on `makeTownsBot` ([b5a1654](https://github.com/towns-protocol/towns/commit/b5a16549acf0ad5a28aee7745c42d02d1c1e2349))
* Custom message support using GM (read/write) ([de880b7](https://github.com/towns-protocol/towns/commit/de880b7d30429518bfb77c302ae51be35930b97b))
* Initialize git project ([416bc02](https://github.com/towns-protocol/towns/commit/416bc029a67172f984caff8f058146f1a2d90e3c))
* Include app address in `APP_PRIVATE_DATA` ([ad7ecd7](https://github.com/towns-protocol/towns/commit/ad7ecd74c0b74d8a89335c2b9ab39e6271a95bae))
* Send chunked media ([3ac8d40](https://github.com/towns-protocol/towns/commit/3ac8d4093b7fa86176b21503dfccd425c7fc6041))
* Add client version in status response ([7aa84f2](https://github.com/towns-protocol/towns/commit/7aa84f227c0ccd12e5236bde19fac877c7217b2a))
* Sending image / embedded attachment ([9439a7a](https://github.com/towns-protocol/towns/commit/9439a7ac2e8441ddba1d7c7234084432d8b8d454))
* Wrapper to get snapshot data ([4a0529e](https://github.com/towns-protocol/towns/commit/4a0529e3a48f7af43501d7958999479d1b60ac51))
* Add `apps` Set in members stream view ([fb31666](https://github.com/towns-protocol/towns/commit/fb3166666fbed8563ff6129019908d6fa4ff51ab))
* Ban/unban support ([12701d7](https://github.com/towns-protocol/towns/commit/12701d7abeaa6a3b49484005e2ec6f3ae5316aff))
* Support for sending ephemeral messages ([60dd39c](https://github.com/towns-protocol/towns/commit/60dd39ceafbdc53e13efd410047676f5cfd734d9))
* Simplify handlers, improve `onMessage` ([01586cd](https://github.com/towns-protocol/towns/commit/01586cd5eaa5c3d87be02b8719b55ac53e05e6ac))
* Get mentions from messages ([d31897d](https://github.com/towns-protocol/towns/commit/d31897d788aebd23ba2da55f3a2e8d0af0d731c8))
* Support for slash commands in threads and replies ([473c422](https://github.com/towns-protocol/towns/commit/473c422751ccf46e92b93914d17642a2f5198e15))
* Feat(bots) add check permissions API ([ae85137](https://github.com/towns-protocol/towns/commit/ae85137d1b111edf892d3c0ab9c28185565d158a))
* Feat(bots) add `createdAt` in base payload ([eb14495](https://github.com/towns-protocol/towns/commit/eb144951dc181912871e9443ff1499b86d022b9d))
* Add support for slash commands ([5060153](https://github.com/towns-protocol/towns/commit/5060153e7aa0c463055b9bbed749acb4ae161e34))
* Add `towns-bot-` prefix to app private data key ([17fcca8](https://github.com/towns-protocol/towns/commit/17fcca8321122ff961043fa17cf5f154bc7f3a8d))
* Add `app_address` in stream view ([ba0ad9d](https://github.com/towns-protocol/towns/commit/ba0ad9d932698b54b0d5739d2b4256e9c6e22411))
* `bot.onMentionedInThread` ([c0eeb7e](https://github.com/towns-protocol/towns/commit/c0eeb7e657f827a55102ea257bf5b90448afdab6))
* Support for uninstall app ([54d9cbe](https://github.com/towns-protocol/towns/commit/54d9cbe4f012d057566e7915c0548cfd3d39cbc7))
* App registry rpc client ([77a1296](https://github.com/towns-protocol/towns/commit/77a12969dbeca570196b2138289882c0a627a203))
* Expose towns + rewards shim to spaceDapp ([2749e2c](https://github.com/towns-protocol/towns/commit/2749e2c9714c39622c20b5d34cce9ff0390f0607))

### Bug Fixes

* Use onchain free supply instead of hardcoding ([e273ed8](https://github.com/towns-protocol/towns/commit/e273ed8b5f374fde082b52eae83403cbcd43af41))
* Implement LRU cache for CryptoStoreInMemory to prevent memory leaks ([885392e](https://github.com/towns-protocol/towns/commit/885392e2c08f008a813469f01c2f3f682270ce94))
* Add withRetry wrapper to client-v2 for hash-too-old errors ([ac4d254](https://github.com/towns-protocol/towns/commit/ac4d2547bb82a065b837a930ac51ca3fac1a8b06))
* Don't crash if setting slash commands fail ([ce63a5c](https://github.com/towns-protocol/towns/commit/ce63a5c0e41a35b8abdf73e542e9406d2fc53e17))
* Filter `getCreate/RegisterAppEvent` by sender ([281c124](https://github.com/towns-protocol/towns/commit/281c12490ecb44eb53645627520dfa19873d69a2))
* Properly redirect senderAddress to `onTip` ([13152cc](https://github.com/towns-protocol/towns/commit/13152cc3a0372a8964f6fe28798b42f2ce6790e2))
* Clean generated artifacts and update references after SimpleApp→… ([1ebec39](https://github.com/towns-protocol/towns/commit/1ebec394c7b97f5fa99b93e14328929c926b5f0f))
* Check if we have app address before parsing ([61fe988](https://github.com/towns-protocol/towns/commit/61fe98818c3d44c56e962cc270bd4f185252b444))
* Correct dotenv command separator in test scripts ([0bb835d](https://github.com/towns-protocol/towns/commit/0bb835d3eb65e993c0d9ca70318bb4da48eca34d))
* Add `@connectrpc/connect-node` as dependency ([ba3f66c](https://github.com/towns-protocol/towns/commit/ba3f66c7299a04a9718528caa1228aec2deebe8f))
* Assign correct content to embedded image message attachments ([628c968](https://github.com/towns-protocol/towns/commit/628c9683724cc24cf409629119b0bbf01f667a7d))
* Correct spelling errors ([9e29b41](https://github.com/towns-protocol/towns/commit/9e29b41aff402b4011167e94b982a23d47d352d4))
* Dont use `window.` to call crypto function ([cb6ef64](https://github.com/towns-protocol/towns/commit/cb6ef64e8f1789742d330dacc798536046c66fb9))
* App-registry url uses https ([73fea33](https://github.com/towns-protocol/towns/commit/73fea33bdca8cc5340d0ac22b40b7dc74304dfe8))
* Update contract address path ([f32fbb7](https://github.com/towns-protocol/towns/commit/f32fbb7c54200d1c8958b1527bcbd06471791fd2))
* ChannelScrubbing.test.ts ([a35dda2](https://github.com/towns-protocol/towns/commit/a35dda239ffaf7acfc71328cd2745ded5ace1a8a))
* Add `@connectrpc/connect-web` as dev dependency of sdk ([5364dc7](https://github.com/towns-protocol/towns/commit/5364dc780112f414905e0c8fe56eea5246a938c8))
* Timeline event replace ([fe4edb5](https://github.com/towns-protocol/towns/commit/fe4edb59b44ce87b3ae158b53155f04646f0d914))

### Documentation

* Improve bot documentation to match new updates to SDK ([1df3edf](https://github.com/towns-protocol/towns/commit/1df3edf389aa916e09a1933331d0634c147a04d3))
* Update AGENTS.md with ephemeral messages ([a834b5b](https://github.com/towns-protocol/towns/commit/a834b5b492d978f1b66a2e9832f844478a0dab53))
* AGENTS.md ([9a20458](https://github.com/towns-protocol/towns/commit/9a20458c101e38d4c9311a4390e90485e6001b56))
* Update testing documentation for the sdk package ([47f3a84](https://github.com/towns-protocol/towns/commit/47f3a8447f6350bb7d4169fc71241501bc48eb41))

***

## How to Update

Update your bot dependencies to the latest version:

```bash theme={null}
bunx towns-bot update
```

Or manually update your `package.json`:

```bash theme={null}
bun update @towns-protocol/bot @towns-protocol/sdk
```
