v0.3.2
twentyhq/twentyv0.3.2Mar 5, 2024by charlesBochet
AI Summary
This is a substantial release (v0.3.2) of the Twenty CRM focused on calendar settings, billing/Stripe integration, performance improvements, and multi-workspace support. The release includes numerous bug fixes, new features like calendar event management and CSV export, and infrastructure enhancements.
Key Highlights
- Calendar Settings: Added comprehensive calendar settings including contact auto-creation, event visibility, color, and display options
- Billing Integration: Added Stripe checkout, subscription management, billing webhook, and billing portal endpoints
- Performance: Improved Gmail sync speed using search params, optimized message queries, and added pagination to partial sync
- Multi-workspace Support: Backend support for users to have multiple workspaces
- Activity Improvements: Optimistic activities for better UX and improved activity editor re-renders
Breaking Changes
- Removed usage of toSorted() as it is not fully supported across all environments
- Forbidden creation of objects or fields with certain characters or keywords that clash with pg_graphql
New Features
- REST endpoints for metadata API
- Export records as CSV
- CalendarChannel and CalendarEvent data models
- Notes Relation Field
- Azure cloud provider support
- Sentry tracing for debugging
- Add pagination to partial sync with improved logging
- Enable new record board and messaging for all workspaces (except demo)
- Webhook URL validation
- Duplicate object detection
- Refactored sign-up into its own service
Full Release Notes
## What's Changed
* Release 0.3.1 by @charlesBochet in https://github.com/twentyhq/twenty/pull/4031
* Corrected a typo in the visuals ("TEXT TEXT") by @Bonapara in https://github.com/twentyhq/twenty/pull/4047
* Update of the readme with updated visuals by @Bonapara in https://github.com/twentyhq/twenty/pull/4041
* Fix/workspace health type by @magrinj in https://github.com/twentyhq/twenty/pull/4053
* fix: ignore enum options sync for now by @magrinj in https://github.com/twentyhq/twenty/pull/4056
* 3938 change email auto import to contact ive sent email to by @bosiraphael in https://github.com/twentyhq/twenty/pull/3995
* 4008 dont create a contact company if it matches the persons domain by @bosiraphael in https://github.com/twentyhq/twenty/pull/4057
* [Enter] key autosave for new API key and webhook by @Jonathanlemon in https://github.com/twentyhq/twenty/pull/3955
* 3969 Adjusted Sidebar by @Kanav-Arora in https://github.com/twentyhq/twenty/pull/3971
* Feat/activity optimistic activities by @lucasbordeau in https://github.com/twentyhq/twenty/pull/4009
* fix: Fixed LinkedIn links with unicode by @zvolcsey in https://github.com/twentyhq/twenty/pull/3953
* fix: added working `launch.json` for VSCode by @rostaklein in https://github.com/twentyhq/twenty/pull/4037
* chore: make twenty-server nest command scripts depend on twenty-email… by @thaisguigon in https://github.com/twentyhq/twenty/pull/4055
* feat: REST endpoints for metadata API by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/3912
* Resolved text editor styled by @jeet1desai in https://github.com/twentyhq/twenty/pull/4033
* fix: unwanted comment on graphQL input by @magrinj in https://github.com/twentyhq/twenty/pull/4071
* Fix delete with no result should not throw by @Weiko in https://github.com/twentyhq/twenty/pull/4091
* fix: sync and health by @magrinj in https://github.com/twentyhq/twenty/pull/4095
* feat: create Settings/Accounts/Calendars page by @thaisguigon in https://github.com/twentyhq/twenty/pull/4090
* 4008 dont create a contact company if it matches the persons domain by @bosiraphael in https://github.com/twentyhq/twenty/pull/4088
* fix: workspace health undefined relation by @magrinj in https://github.com/twentyhq/twenty/pull/4107
* feat: create Settings/Accounts/Calendars/Calendar Settings page by @thaisguigon in https://github.com/twentyhq/twenty/pull/4092
* Fix developers url and remove webhook url error by @thomtrp in https://github.com/twentyhq/twenty/pull/4120
* Added beta tag in email by @jeet1desai in https://github.com/twentyhq/twenty/pull/4098
* feat: add Calendar Settings section to Settings/Accounts/Calendars page by @thaisguigon in https://github.com/twentyhq/twenty/pull/4104
* feat: add Synchronization calendar settings by @thaisguigon in https://github.com/twentyhq/twenty/pull/4111
* Updated tasks inbox empty state wording by @jeet1desai in https://github.com/twentyhq/twenty/pull/4121
* Fix number csv import by @brendanlaschke in https://github.com/twentyhq/twenty/pull/4114
* 45 create billing core tables by @martmull in https://github.com/twentyhq/twenty/pull/4096
* Add confirmation modal when deleting/ regenerating api keys, deleting webhook by @anoopw3bdev in https://github.com/twentyhq/twenty/pull/4035
* Refactor/finish activities optimistic by @lucasbordeau in https://github.com/twentyhq/twenty/pull/4106
* feat: allow backend to rename field of custom object by @magrinj in https://github.com/twentyhq/twenty/pull/4097
* Add onDeleteAction to RelationMetadata by @Weiko in https://github.com/twentyhq/twenty/pull/4100
* feat: add Accounts List Card to Calendar Settings by @thaisguigon in https://github.com/twentyhq/twenty/pull/4129
* 3933 filter non work email from auto contact creation by @bosiraphael in https://github.com/twentyhq/twenty/pull/4131
* Add writeLog for relation update sync metadata by @Weiko in https://github.com/twentyhq/twenty/pull/4136
* Fix referential_constraints health check by @Weiko in https://github.com/twentyhq/twenty/pull/4139
* feat: add Contact Auto-Creation calendar settings by @thaisguigon in https://github.com/twentyhq/twenty/pull/4132
* feat: add Event Visibility calendar settings by @thaisguigon in https://github.com/twentyhq/twenty/pull/4138
* 46 add stripe product endpoint by @martmull in https://github.com/twentyhq/twenty/pull/4133
* Handle relations between same objects by @thomtrp in https://github.com/twentyhq/twenty/pull/4137
* 4020 timebox improve performances on messages read by @bosiraphael in https://github.com/twentyhq/twenty/pull/4140
* WIP: New User Guide by @Kanav-Arora in https://github.com/twentyhq/twenty/pull/3984
* 4150 i should be able to view my emails even if ive set my account visibility to metadata by @bosiraphael in https://github.com/twentyhq/twenty/pull/4156
* New folder structure for website by @FelixMalfait in https://github.com/twentyhq/twenty/pull/4159
* Improved activity editor re-renders by @lucasbordeau in https://github.com/twentyhq/twenty/pull/4149
* Fixed DeveloperSettings stories by @Aayush-23 in https://github.com/twentyhq/twenty/pull/4166
* Remove usage of toSorted as it is not fully supported by @charlesBochet in https://github.com/twentyhq/twenty/pull/4168
* Website: markdown to release by @brendanlaschke in https://github.com/twentyhq/twenty/pull/4146
* Build cron for data seed demo by @thomtrp in https://github.com/twentyhq/twenty/pull/4142
* fix: forbid creation of objects or fields with certain characters or with forbidden keywords that clashes with pg_graphql by @AbuHafsa in https://github.com/twentyhq/twenty/pull/3957
* feat: add Color calendar setting by @thaisguigon in https://github.com/twentyhq/twenty/pull/4141
* feat: add Display calendar settings by @thaisguigon in https://github.com/twentyhq/twenty/pull/4164
* TWNTY-3968 - Fix and enhance storybook:pages tests by @gitstart-app in https://github.com/twentyhq/twenty/pull/4072
* 47 add stripe checkout endpoint by @martmull in https://github.com/twentyhq/twenty/pull/4147
* 38 add billing webhook endpoint by @martmull in https://github.com/twentyhq/twenty/pull/4158
* feat: find duplicate objects init by @rostaklein in https://github.com/twentyhq/twenty/pull/4038
* MQ Facepaint introduced by @Kanav-Arora in https://github.com/twentyhq/twenty/pull/4169
* feat: validate webhook URL by @rostaklein in https://github.com/twentyhq/twenty/pull/4144
* feat: user can have multiple workspaces (backend) by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/4036
* Refactor sign-up into its own service by @charlesBochet in https://github.com/twentyhq/twenty/pull/4173
* TWNTY-3825 - ESLint rule: const naming by @gitstart-app in https://github.com/twentyhq/twenty/pull/4171
* Add linter to Chrome Extension (#4044). by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/4174
* 3961-Notes-Relation-Field by @Kanav-Arora in https://github.com/twentyhq/twenty/pull/3965
* fix: prevent scroll to softfocus cell when hover by @anoopw3bdev in https://github.com/twentyhq/twenty/pull/3990
* Removed the boxes around fields on shows and side panel by @jeet1desai in https://github.com/twentyhq/twenty/pull/4032
* fix: set a specifc date to date field input on the story by @AbuHafsa in https://github.com/twentyhq/twenty/pull/3919
* Feat currency type optimistic cache by @anoopw3bdev in https://github.com/twentyhq/twenty/pull/3907
* Chrome Extension: Update logo and change default routes to those of Twenty prod (#4046). by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/4172
* Update docker-compose.mdx by @AutoComput in https://github.com/twentyhq/twenty/pull/4178
* Ignore defaultValue update for select fields by @charlesBochet in https://github.com/twentyhq/twenty/pull/4193
* [messaging] clean orphan threads and messages after connected account deletion by @Weiko in https://github.com/twentyhq/twenty/pull/4195
* Fixed confirmation modal not closing after regenerating API key by @sohalkumar in https://github.com/twentyhq/twenty/pull/4192
* 4026 create storybook tests for blocklist components by @bosiraphael in https://github.com/twentyhq/twenty/pull/4185
* Fixed favicon requests for empty domain names by @sohalkumar in https://github.com/twentyhq/twenty/pull/4191
* Fix password too short issue by @thomtrp in https://github.com/twentyhq/twenty/pull/4200
* Fix demo workspace seed by @charlesBochet in https://github.com/twentyhq/twenty/pull/4211
* 4017 improve queries on messages write by @bosiraphael in https://github.com/twentyhq/twenty/pull/4207
* fix: Extend regex in Linkedin Field to support LinkedIn school URL by @EltonGohJH in https://github.com/twentyhq/twenty/pull/4198
* [messaging] fix empty history by @Weiko in https://github.com/twentyhq/twenty/pull/4218
* Add pagination to partial sync and add logs by @bosiraphael in https://github.com/twentyhq/twenty/pull/4223
* Update relation cascade on standard objects favorite, attachment, activityTargets by @charlesBochet in https://github.com/twentyhq/twenty/pull/4227
* 39 create subscription and success modale by @martmull in https://github.com/twentyhq/twenty/pull/4208
* fix: design of technical documentation by @shree-1788 in https://github.com/twentyhq/twenty/pull/4231
* Fix nullable being set to null for text field by @charlesBochet in https://github.com/twentyhq/twenty/pull/4239
* Remove html from messages by @bosiraphael in https://github.com/twentyhq/twenty/pull/4229
* 4209 speed up gmail full sync by using search params to query only the relevant emails by @bosiraphael in https://github.com/twentyhq/twenty/pull/4213
* TWNTY-3316 - Add tests for `modules/spreadsheet-import` by @gitstart-app in https://github.com/twentyhq/twenty/pull/4219
* feat: apply RecordDetailSection style on RecordDuplicatesSection and … by @thaisguigon in https://github.com/twentyhq/twenty/pull/4241
* feat: add Object Edit Settings section with Object preview by @thaisguigon in https://github.com/twentyhq/twenty/pull/4216
* feat: adjust navigation drawer design by @thaisguigon in https://github.com/twentyhq/twenty/pull/4242
* test: improve utils coverage by @thaisguigon in https://github.com/twentyhq/twenty/pull/4230
* [messaging] add better logs to messaging sync jobs by @Weiko in https://github.com/twentyhq/twenty/pull/4245
* Handle multiple orderBy sorting by @thomtrp in https://github.com/twentyhq/twenty/pull/4246
* Add export as csv by @tatethurston in https://github.com/twentyhq/twenty/pull/4034
* Expose releases as an api by @FelixMalfait in https://github.com/twentyhq/twenty/pull/4247
* Add error handling in GmailPartialSyncService by @bosiraphael in https://github.com/twentyhq/twenty/pull/4248
* Enable new record board and messaging for all workspaces except demo by @charlesBochet in https://github.com/twentyhq/twenty/pull/4243
* Added a 'Read documentation' button in the Developers tab in settings by @sohalkumar in https://github.com/twentyhq/twenty/pull/4249
* Remove Gate decorator IS_BLOCKLIST_ENABLED from BlocklistObjectMetadata by @bosiraphael in https://github.com/twentyhq/twenty/pull/4250
* Fix enum defaultValue broken by @charlesBochet in https://github.com/twentyhq/twenty/pull/4251
* Fix blocklist standard object being unhealthy by @charlesBochet in https://github.com/twentyhq/twenty/pull/4255
* Handle error 429 during partial sync by @bosiraphael in https://github.com/twentyhq/twenty/pull/4258
* Improve website github sync by @FelixMalfait in https://github.com/twentyhq/twenty/pull/4259
* TWNTY-3942 - Enable Attachments on Custom Objects by @gitstart-app in https://github.com/twentyhq/twenty/pull/4253
* 41 update subscription when workspace member changes 2 by @martmull in https://github.com/twentyhq/twenty/pull/4252
* Docs: light icon fix by @brendanlaschke in https://github.com/twentyhq/twenty/pull/4272
* Fix Internal Server Error when removing profile picture (#4257) by @vascopaisana in https://github.com/twentyhq/twenty/pull/4278
* [messaging] add more details in exceptions by @Weiko in https://github.com/twentyhq/twenty/pull/4256
* Update SettingsObjectAboutSection.tsx changed "Disable" CTA to "Deact… by @selango1 in https://github.com/twentyhq/twenty/pull/4175
* Add Azure cloud provider option by @thomtrp in https://github.com/twentyhq/twenty/pull/4296
* feat: multi-workspace followup by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/4197
* Add sentry tracing by @FelixMalfait in https://github.com/twentyhq/twenty/pull/4279
* Update docker-compose.mdx by @AutoComput in https://github.com/twentyhq/twenty/pull/4176
* Fixed index column stickiness mobile by @jeet1desai in https://github.com/twentyhq/twenty/pull/4206
* Update .env.example by @AutoComput in https://github.com/twentyhq/twenty/pull/4177
* Fix domain name parsing on company creation by @bosiraphael in https://github.com/twentyhq/twenty/pull/4297
* Fix telemetry by @FelixMalfait in https://github.com/twentyhq/twenty/pull/4303
* 4030 website header for tablet by @ahmadjafari86 in https://github.com/twentyhq/twenty/pull/4274
* refactor: validate objectMetadataItem with Zod on creation and update… by @thaisguigon in https://github.com/twentyhq/twenty/pull/4270
* feat: adding metadata open-api endpoints and updating docs by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/4170
* refactor: use react-hook-form in Settings Data Model Object pages by @thaisguigon in https://github.com/twentyhq/twenty/pull/4271
* feat: change condition of duplicate check by @rostaklein in https://github.com/twentyhq/twenty/pull/4273
* feat: add Calendar tab to Show Page Activities panel by @thaisguigon in https://github.com/twentyhq/twenty/pull/4309
* feat: remove Color setting from Calendars Settings by @thaisguigon in https://github.com/twentyhq/twenty/pull/4310
* 42 add billing portal endpoint by @martmull in https://github.com/twentyhq/twenty/pull/4315
* 4282 create calendarchannel data model by @bosiraphael in https://github.com/twentyhq/twenty/pull/4314
* 43 add billing portal link by @martmull in https://github.com/twentyhq/twenty/pull/4318
* Select Field Input Menu scrollable and add Select Field in Filter and Sort by @ARSHIL1804 in https://github.com/twentyhq/twenty/pull/3656
* Add a concise test report with just the errors by @gitstart-twenty in https://github.com/twentyhq/twenty/pull/4220
* 4281 create calendarevent data model by @bosiraphael in https://github.com/twentyhq/twenty/pull/4317
* Fix click outside on select field by @charlesBochet in https://github.com/twentyhq/twenty/pull/4323
## New Contributors
* @Jonathanlemon made their first contribution in https://github.com/twentyhq/twenty/pull/3955
* @Aayush-23 made their first contribution in https://github.com/twentyhq/twenty/pull/4166
* @AutoComput made their first contribution in https://github.com/twentyhq/twenty/pull/4178
* @sohalkumar made their first contribution in https://github.com/twentyhq/twenty/pull/4192
* @EltonGohJH made their first contribution in https://github.com/twentyhq/twenty/pull/4198
* @shree-1788 made their first contribution in https://github.com/twentyhq/twenty/pull/4231
* @tatethurston made their first contribution in https://github.com/twentyhq/twenty/pull/4034
* @vascopaisana made their first contribution in https://github.com/twentyhq/twenty/pull/4278
* @selango1 made their first contribution in https://github.com/twentyhq/twenty/pull/4175
* @ahmadjafari86 made their first contribution in https://github.com/twentyhq/twenty/pull/4274
* @ARSHIL1804 made their first contribution in https://github.com/twentyhq/twenty/pull/3656
**Full Changelog**: https://github.com/twentyhq/twenty/compare/v0.3.1...v0.3.2