Changelog
Last updated: July 1, 2023
2023 - June
- User invitations to Twisp go to new console.
- Local docker images support both amd64 and arm64 CPU platforms.
- Search indexes powered by Opensearch added to Twisp.
- Add
money(int, string)CEL constructor - Trancodes that do not specify journal id post the
DEFAULTjournal
Read more in the full post.
2023 - May
- Run a local instance of Twisp through Docker.
- Create custom indexes for and add
metadatato ledger entries. - Launched a new version of the Twisp Console. Improved GraphQL environment, new views for navigating accounts and tran codes, and streamlined UI/UX.
- Introduced the Between operator for querying and defining indexes. Use to select ranges of sorted values.
- New ACH workflow for push/pull/cancel operations.
- More reference documentation added, as well as our first two guides.
- Optimizations for account set queries and mutations.
Read more in the full post.
2023 - April
- gRPC APIs for Twisp. Deployed alongside our existing GraphQL APIs. Review the schemas at https://buf.build/twisp/api.
- Custom balances for rolling up balance calculations across user-defined dimensions and filters. Create new custom balances with
createCustomBalance; query balances withcustomBalanceandcustomBalanceByCode. - Support updating the entries, params and transaction fields of a transaction code with
updateTranCode. - Post transactions with a specific version of a tran code: the
postTransactionmutation now supports atranCodeVersionparameter. - Fix issue with concurrent put for transactions, ensuring that active records aren't overwritten after a record lock.
Read more in the full post.
2023 - March
- Default journals in every ledger. In many cases, users only need a single journal, so now every ledger will contain a default journal (with code
DEFAULT). This also simplifies many common queries by making thejournalIdfilter option optional - it will use the default journal if not provided. - New
Journal.codefield, an optional unique code for journals. - Support for Global Object Identification in the GraphQL API. All persistent core accounting models in the GraphQL schema now implement the Node interface, meaning that they have a globally unique
idfield and can be queried using the globalQuery.nodefield. - Integrated timestamps into transactional operations: mutation operations committed within the same transactional context will have the same
createdandmodifiedtimestamps in the same way that Postgresnow()andCURRENT_TIMESTAMPworks. - Configurable account sets with
AccountSetConfig. For now, theconfigonly has one optionenableConcurrentPostingthat optimizes the account set for a ridiculously high rate of entries written. The tradeoff is that read operations for balances become much more expensive and slow; to be used with caution. - Regional WAFs are deployed in every account/region.
- Suite of Tutorials published on the docs site, including the "Twisp 101" tutorial and a set of "Foundations" tutorials covering the basic operations for the ledger.
- Additional reference documentation on the API covering concepts like pagination and the various error types.
Read more in the full post.
2023 - February
- Historical indexes can be created to query all versions of records' histories. While regular indexes (such as those created by the
schema.createIndexmutation) will index the most recent version of records, a historical index will index every version. - Indexing & filtering by multiple sort/partition keys in custom indexes. Querying custom indexes accepts a list of
CustomIndexFilterto enable filtering by on indexes with multiple index keys. - Decimal type IndexKeys allow creating more flexible custom indexes.
- Money type arithmetic & logical operations in CEL. CEL expressions can now perform basic infix operations on money types, e.g.:
money("1.15","EUR") > money("1.14","EUR"). - Enable AWS Backups for business continuity plans (BCPs).
Read more in the full post.
2023 - January
- Concurrent postings for high throughput accounts allows low cardinality accounts like settlement accounts to have postings at high throughput, while maintaining all transactional guarantees at the cost of slower reads of balances on the account.
- Administrative APIs for managing user access to Twisp for your organization and managing Twisp tenants under your org.
Read more in the full post.