# Changelog

#### 2.7.0 (5/11/2025, a215d3f)

* Added an emergency withdraw functionality that allows project owners to withdraw permanently deposited tokens using a pseudo-multisig mechanism with Team TokenTable
* Added default fee and fee token in FeeCollector
* Fixed a validation bug for presets in Unlocker
* Fixed an issue with delegate.xyz
* Fixed issues in TrackerToken
* Fixed fee calculation logic when the claim amount is 0
* Updated CustomERC2771Context's base class
* Optimized precision calculation in `Unlocker::simulateAmountClaimable`
* Replaced `FutureToken::getClaimInfo`

#### 2.6.1 (3/3/2025, 71cc316)

* Added TTUMulticallDeployer contract for batch deployment functionality
* Fixed bug in deployer that forced FutureTokens to be untransferable when the instance was deployed as a clone

#### 2.6.0 (12/27/2024, 4b6f605)

* Added support for external NFT as FutureToken (experimental)
* Added delegate.xyz support to manage delegate claims
* Added distinctive versioning to all extensions
* Added ETH support in FeeCollector
* Fixed issues in the subgraph that would lead to a crash
* Fixed issues in the deployer
* Fixed an issue in Unlocker that prevented upgrades
* Removed deprecated and mock source files

#### 2.5.7 (2/14/2024, 1422afd)

* Fixed various edge case findings from the Nethermind audit of Cairo TokenTable.

#### 2.5.6 (1/26/2024, 3aede9e)

* Optimized `ITTHook` interface.
* Added `isCreateable` to fix a loophole that allowed founders to drain the pool even when `isCancelable` and `isWithdrawable` are false.
* Allow multiple claim delegates instead of just one.

#### 2.5.5 (12/29/2023, a112d20)

* Refactored storage to be upgrade-safe namespaced.
* Fixed an issue that allowed recipients to bypass skipped amounts.
* Revised use of `PresetDoesNotExist` error.
* Revised selector syntax to improve consistency.
* Optimized various variable initialization.
* Added support for using native tokens with the Unlocker.

#### 2.5.4 (12/26/2023, 28f1a51)

* Added `bytes memory extraData` to all functions.

#### 2.5.3 (12/22/2023, cad7f0e)

* `simulateAmountClaimable` now returns 0 instead of reverting under certain conditions.
* `calculateAmountClaimable` now checks if the `actualId` that's passed in exists.
* Fixed instances where `msg.data` instead of `_msgData()` is used.

#### 2.5.2 (12/21/2023, f5ed369)

* Added `recipientIds` to `createActuals` function and `ActualCreated` event.

#### 2.5.1 (12/20/2023, 373e52a)

* Updated `ActualCreated` event.

#### 2.5.0 (12/19/2023, b7a0171)

* Switched to a shared token pool for all Actuals instead of an individual pool for each Actual.
* Fixed an issue when calculating claimables.
* Added an option for the founder to perform a complete cancellation.
* Added delegate claim.
* Added `simulateAmountClaimable`.


---

# 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.tokentable.xyz/for-developers/unlocker/evm/changelog.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.
