v0.21.0
twentyhq/twentyv0.21.0Jul 8, 2024by charlesBochet
AI Summary
v0.21.0 of Twenty is a substantial release focused on CSV import/export capabilities, calendar V2 improvements, and enhanced UI/UX. Key additions include an upsert endpoint for CSV import, multiple new currency support (Thai Baht, Brazilian Real, Australian Dollar, South Korean Won), and a new Settings Tabs interface. The release also includes significant backend improvements around messaging/calendar sync and metadata API fixes.
Key Highlights
- CSV Import/Export with upsert capability - allows importing and updating existing records
- Calendar V2 feature flag and new sync statuses for improved calendar management
- Added support for 4 new currencies: Thai Baht, Brazilian Real, Australian Dollar, and South Korean Won
- New Settings Tabs interface for better organization of account/workspace settings
- Enhanced filter capabilities - support for orderBy arrays, multiple filters of same type, and empty/non-empty filters
New Features
- Upsert endpoint for CSV import allowing record updates
- Boolean with toggle support in CSV import
- Basic import for select fields in CSV
- Calendar V2 feature flag and new sync statuses/stages
- Refactored Calendar Settings into tabs
- Message queue module enhancements with decorators
- Text-to-SQL proof of concept
- Collapsible navigation menu
- Data skeleton loading on indexes
- Alert banner component
- RatingFieldDisplay component added and optimized
- Empty and Non-Empty filter support
- Workspace sync fields refactored
- Onboarding status computation moved from frontend to backend
- Relations many in table view support
- Favicon hover re-render fix
- Date picker timezone fixes
- Infinite scroll refactored with debouncing
- S3 credentials support via environment variables
- Dynamic hook registration for WorkspaceQueryHooks
Full Release Notes
## What's Changed * Add label to mocked connections by @thomtrp in https://github.com/twentyhq/twenty/pull/5858 * fix timeline activity pagination overflow by @Weiko in https://github.com/twentyhq/twenty/pull/5861 * Add log for errors on message import by @charlesBochet in https://github.com/twentyhq/twenty/pull/5863 * Support orderBy as array by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/5681 * fix: text field overflow beyond cell limits by @siiddhantt in https://github.com/twentyhq/twenty/pull/5834 * Collapsible menu by @FelixMalfait in https://github.com/twentyhq/twenty/pull/5846 * Fix workspaceLogo in invite-email by @martmull in https://github.com/twentyhq/twenty/pull/5865 * Fix error log on message import by @bosiraphael in https://github.com/twentyhq/twenty/pull/5866 * Fix sentry error by @martmull in https://github.com/twentyhq/twenty/pull/5848 * Fix overflow on notes by @martmull in https://github.com/twentyhq/twenty/pull/5853 * Record horizontal scrolling mobile by @RobertoSimonini1 in https://github.com/twentyhq/twenty/pull/5843 * fix: 404 generate API key link by @michaelgold in https://github.com/twentyhq/twenty/pull/5871 * Wrote 0.20 changelog by @Bonapara in https://github.com/twentyhq/twenty/pull/5870 * Fix website docs by @FelixMalfait in https://github.com/twentyhq/twenty/pull/5873 * Added Thai Baht support by @Ymirke in https://github.com/twentyhq/twenty/pull/5881 * feat: Enhancements to MessageQueue Module with Decorators by @magrinj in https://github.com/twentyhq/twenty/pull/5657 * 5236 expandable list leave options when editing by @martmull in https://github.com/twentyhq/twenty/pull/5890 * 5581 get httpsapitwentycomrestmetadata relations not working by @martmull in https://github.com/twentyhq/twenty/pull/5867 * Fix verticale line timeline activity by @thomtrp in https://github.com/twentyhq/twenty/pull/5894 * Added and optimized missing RatingFieldDisplay component by @lucasbordeau in https://github.com/twentyhq/twenty/pull/5904 * Fix secondaryLinks field input by @thomtrp in https://github.com/twentyhq/twenty/pull/5911 * add multiple filters of same FieldMetadataType by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/5892 * Add South Korean won to currency codes by @hanchchch in https://github.com/twentyhq/twenty/pull/5914 * Upgrade pg graphql version to 1.5.6 by @martmull in https://github.com/twentyhq/twenty/pull/5937 * Add loader and transition for details page tabs by @thomtrp in https://github.com/twentyhq/twenty/pull/5935 * website / Fix broken links, slow loading, and prod errors by @FelixMalfait in https://github.com/twentyhq/twenty/pull/5932 * 5582 get httpsapitwentycomrestmetadata objects filters dont work by @martmull in https://github.com/twentyhq/twenty/pull/5906 * Add http status to graphql errors by @thomtrp in https://github.com/twentyhq/twenty/pull/5896 * Handle no concurrency option by @thomtrp in https://github.com/twentyhq/twenty/pull/5952 * Favicons are being re-rendered on hover by @gitstart-twenty in https://github.com/twentyhq/twenty/pull/5849 * Add a ⏎ shortcut on Select options by @RamK777-stack in https://github.com/twentyhq/twenty/pull/5641 * Added a mechanism to reset error boundary on page change. by @lucasbordeau in https://github.com/twentyhq/twenty/pull/5913 * fix(twenty-front): update DateTimeInput styles to apply top border radius to date picker by @theonly1me in https://github.com/twentyhq/twenty/pull/5946 * (5943) Match country selector button's background to phone number input's background by @JoshuaZacek in https://github.com/twentyhq/twenty/pull/5956 * [Bug] Put back subject is email right drawer by @thomtrp in https://github.com/twentyhq/twenty/pull/5955 * Data Skeleton Loading on Indexes by @gitstart-twenty in https://github.com/twentyhq/twenty/pull/5828 * 5934 create alert banner component by @bosiraphael in https://github.com/twentyhq/twenty/pull/5950 * Fix reconnect google account bug by @bosiraphael in https://github.com/twentyhq/twenty/pull/5905 * 5898 Create a cron to monitor messageChannelSyncStatus by @bosiraphael in https://github.com/twentyhq/twenty/pull/5933 * Feat : Introduced Delay Options for Tooltip by @t007rushi in https://github.com/twentyhq/twenty/pull/5766 * add object id column to csv export by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/5971 * fix: Column header menu Filter button by @AdityaPimpalkar in https://github.com/twentyhq/twenty/pull/5973 * Fix date picker wrong on certain timezones by @lucasbordeau in https://github.com/twentyhq/twenty/pull/5972 * Add the support of Empty and Non-Empty filter by @pacyL2K19 in https://github.com/twentyhq/twenty/pull/5773 * Fix(view): `Create` Button is not visible when creating `Kanban` View by @Us3r-gitHub in https://github.com/twentyhq/twenty/pull/5969 * Add disabled style on non-draggable menu items by @thomtrp in https://github.com/twentyhq/twenty/pull/5974 * Update LOGGER_DRIVER env var description by @JarWarren in https://github.com/twentyhq/twenty/pull/5968 * Fix: Selected Line Not Fully Highlighted in Blue by @akarsanth in https://github.com/twentyhq/twenty/pull/5966 * fix: background colors for record table by @AkiPraveen in https://github.com/twentyhq/twenty/pull/5967 * Fix links chip design by @thomtrp in https://github.com/twentyhq/twenty/pull/5963 * Navigation Panel UI Sizing Changes by @Ymirke in https://github.com/twentyhq/twenty/pull/5964 * feat: add brazilian real currency by @vitorhugoro1 in https://github.com/twentyhq/twenty/pull/5989 * feat: drop calendar repository by @magrinj in https://github.com/twentyhq/twenty/pull/5824 * [FlexibleSchema] Add IndexMetadata decorator by @Weiko in https://github.com/twentyhq/twenty/pull/5981 * Improve tests by @charlesBochet in https://github.com/twentyhq/twenty/pull/5994 * Fix infinite scroll issue on table by @charlesBochet in https://github.com/twentyhq/twenty/pull/5996 * Remove Right-Edge Gap in Table Cell Display by @rksingh2001 in https://github.com/twentyhq/twenty/pull/5992 * Refactor infiniteScoll to use debouncing by @charlesBochet in https://github.com/twentyhq/twenty/pull/5999 * Create feature flag for calendar V2 by @bosiraphael in https://github.com/twentyhq/twenty/pull/5998 * Turned on tooltip on kanban cards with shortDelay by @atharvParlikar in https://github.com/twentyhq/twenty/pull/5991 * feat: add australian dollar currency by @rob-luke in https://github.com/twentyhq/twenty/pull/5990 * Add update chevron by @akarsanth in https://github.com/twentyhq/twenty/pull/5988 * Fix(view): Show Kanban View Creation by @Us3r-gitHub in https://github.com/twentyhq/twenty/pull/5985 * Remove multi select usage by @charlesBochet in https://github.com/twentyhq/twenty/pull/6004 * Create new sync statuses and stages for calendar by @bosiraphael in https://github.com/twentyhq/twenty/pull/5997 * 5951 create a command to trigger the import of a single message by @bosiraphael in https://github.com/twentyhq/twenty/pull/5962 * Add calendar cron command on self-hosting-var.mdx by @hanchchch in https://github.com/twentyhq/twenty/pull/6009 * Remove useless api position parameter by @martmull in https://github.com/twentyhq/twenty/pull/6010 * Fix sign up broken because of missing workspace schema by @charlesBochet in https://github.com/twentyhq/twenty/pull/6013 * 5615 create messageongoingstalecron by @bosiraphael in https://github.com/twentyhq/twenty/pull/6005 * feat: Dynamic hook registration for WorkspaceQueryHooks by @magrinj in https://github.com/twentyhq/twenty/pull/6008 * Fix billing signup when workspace does not exist by @Weiko in https://github.com/twentyhq/twenty/pull/6018 * Removed performance optimization and put back previous system with recoil states for edit mode and soft focus to avoid side effects. by @lucasbordeau in https://github.com/twentyhq/twenty/pull/6019 * Remove message-import cache when connectedAccount is removed by @charlesBochet in https://github.com/twentyhq/twenty/pull/6021 * Upsert endpoint and CSV import upsert by @FelixMalfait in https://github.com/twentyhq/twenty/pull/5970 * Add mutationMaximumRecordAffected to clientConfig by @Weiko in https://github.com/twentyhq/twenty/pull/6039 * Don't display unmatched columns in csv import by @FelixMalfait in https://github.com/twentyhq/twenty/pull/6037 * Fix search in csv import by @FelixMalfait in https://github.com/twentyhq/twenty/pull/6045 * Rename mutation maximum affected records by @Weiko in https://github.com/twentyhq/twenty/pull/6042 * Basic import for select in CSV by @FelixMalfait in https://github.com/twentyhq/twenty/pull/6047 * Add boolean with toggle in csv import by @FelixMalfait in https://github.com/twentyhq/twenty/pull/6050 * Improve gmail error handling by catching and throttling for 400 failedPrecondition by @bosiraphael in https://github.com/twentyhq/twenty/pull/6044 * Fix cache flush in messaging-channel-sync-status.service by @bosiraphael in https://github.com/twentyhq/twenty/pull/6024 * hide delete button for selection over 100 - issue #6023 by @Adithej in https://github.com/twentyhq/twenty/pull/6030 * Relations many in table view by @ijreilly in https://github.com/twentyhq/twenty/pull/5842 * feat: manually implement joinColumn by @magrinj in https://github.com/twentyhq/twenty/pull/6022 * Update create-workspace.mdx by @Bonapara in https://github.com/twentyhq/twenty/pull/6053 * Manage isFocused state for table cells by @ijreilly in https://github.com/twentyhq/twenty/pull/6058 * Replace ObjectRecord<MessageChannelWorkspaceEntity> with MessageChannelWorkspaceEntity by @bosiraphael in https://github.com/twentyhq/twenty/pull/6059 * Fixed board card field max width by @lucasbordeau in https://github.com/twentyhq/twenty/pull/6061 * fix navigation panel workspace picker padding by @Weiko in https://github.com/twentyhq/twenty/pull/6062 * Create fields for calendar and messaging settings v2 by @bosiraphael in https://github.com/twentyhq/twenty/pull/6049 * Change messaging batch size and cron pattern by @bosiraphael in https://github.com/twentyhq/twenty/pull/6063 * 5901 refactor email and calendar auto contact creation to create them by batch by @bosiraphael in https://github.com/twentyhq/twenty/pull/6038 * Refactor messaging refresh access token by @bosiraphael in https://github.com/twentyhq/twenty/pull/6034 * 5095 move onboardingstatus computation from frontend to backend by @martmull in https://github.com/twentyhq/twenty/pull/5954 * 0.21 changelog by @Bonapara in https://github.com/twentyhq/twenty/pull/6072 * Clarify storybook tests by @charlesBochet in https://github.com/twentyhq/twenty/pull/6073 * Improve use set next onboarding state by @martmull in https://github.com/twentyhq/twenty/pull/6076 * Allow s3 credentials via env by @brendanlaschke in https://github.com/twentyhq/twenty/pull/6066 * Remove CSS modules by @lucasbordeau in https://github.com/twentyhq/twenty/pull/6017 * feat: message cleaner drop repository by @magrinj in https://github.com/twentyhq/twenty/pull/6052 * fix: message cleaner find operator by @magrinj in https://github.com/twentyhq/twenty/pull/6080 * Fix: Tasks-List-page-Person-Switcher by @srikary12 in https://github.com/twentyhq/twenty/pull/6077 * Add exceptions for metadata modules by @thomtrp in https://github.com/twentyhq/twenty/pull/6070 * 5748 Create contacts for emails sent and received by email aliases by @bosiraphael in https://github.com/twentyhq/twenty/pull/5855 * Fix lint and used constant by @lucasbordeau in https://github.com/twentyhq/twenty/pull/6082 * Use invalid field input error for invalid object metadata input by @thomtrp in https://github.com/twentyhq/twenty/pull/6083 * Fix Active Workspaces check by @charlesBochet in https://github.com/twentyhq/twenty/pull/6084 * feature to reset value in select field by @Sudarsh1010 in https://github.com/twentyhq/twenty/pull/6067 * Reorganise calendar module by @charlesBochet in https://github.com/twentyhq/twenty/pull/6089 * Fix calendar import cron job by @bosiraphael in https://github.com/twentyhq/twenty/pull/6096 * feat: refactor workspace sync fields by @magrinj in https://github.com/twentyhq/twenty/pull/6069 * Use return await to catch exceptions by @thomtrp in https://github.com/twentyhq/twenty/pull/6109 * Fix rating field not editable if null by @Weiko in https://github.com/twentyhq/twenty/pull/6110 * Fix pg-boss worker not working with dynamic injection by @charlesBochet in https://github.com/twentyhq/twenty/pull/6119 * Fix workspace sync issue by @charlesBochet in https://github.com/twentyhq/twenty/pull/6121 * fix: small PR fixes workspace-sync-fields by @magrinj in https://github.com/twentyhq/twenty/pull/6107 * Text-to-SQL proof of concept by @ad-elias in https://github.com/twentyhq/twenty/pull/5788 * Hotfix tests after AI PR by @FelixMalfait in https://github.com/twentyhq/twenty/pull/6124 * fix: message queue injection issue by @magrinj in https://github.com/twentyhq/twenty/pull/6126 * Forbid names above 63 characters to comply with pg identifier limit by @ijreilly in https://github.com/twentyhq/twenty/pull/6095 * Fix website doc search by @FelixMalfait in https://github.com/twentyhq/twenty/pull/6134 * Implement Settings Tabs by @charlesBochet in https://github.com/twentyhq/twenty/pull/6136 * Add command to update boolean fields null values by @ijreilly in https://github.com/twentyhq/twenty/pull/6113 * Fix sort with Email and FullName field types and add sort/filter to labelIdentifier column by @Weiko in https://github.com/twentyhq/twenty/pull/6132 * 5421 box shadow on frozen header and first column by @lucasbordeau in https://github.com/twentyhq/twenty/pull/6130 * Fix storybook tests by @charlesBochet in https://github.com/twentyhq/twenty/pull/6150 * Refactor Calendar Settings into tabs by @charlesBochet in https://github.com/twentyhq/twenty/pull/6153 * Add new Settings to front-end by @charlesBochet in https://github.com/twentyhq/twenty/pull/6154 * Small fixes on accounts settings by @bosiraphael in https://github.com/twentyhq/twenty/pull/6157 * Add message import granulary on non-pro emails, group emails and received contact creation by @charlesBochet in https://github.com/twentyhq/twenty/pull/6156 * Fix z-index issue on dropdown by @charlesBochet in https://github.com/twentyhq/twenty/pull/6160 * Bump version to 0.21 by @charlesBochet in https://github.com/twentyhq/twenty/pull/6161 ## New Contributors * @michaelgold made their first contribution in https://github.com/twentyhq/twenty/pull/5871 * @Ymirke made their first contribution in https://github.com/twentyhq/twenty/pull/5881 * @hanchchch made their first contribution in https://github.com/twentyhq/twenty/pull/5914 * @theonly1me made their first contribution in https://github.com/twentyhq/twenty/pull/5946 * @JoshuaZacek made their first contribution in https://github.com/twentyhq/twenty/pull/5956 * @t007rushi made their first contribution in https://github.com/twentyhq/twenty/pull/5766 * @Us3r-gitHub made their first contribution in https://github.com/twentyhq/twenty/pull/5969 * @JarWarren made their first contribution in https://github.com/twentyhq/twenty/pull/5968 * @akarsanth made their first contribution in https://github.com/twentyhq/twenty/pull/5966 * @AkiPraveen made their first contribution in https://github.com/twentyhq/twenty/pull/5967 * @vitorhugoro1 made their first contribution in https://github.com/twentyhq/twenty/pull/5989 * @rksingh2001 made their first contribution in https://github.com/twentyhq/twenty/pull/5992 * @Adithej made their first contribution in https://github.com/twentyhq/twenty/pull/6030 * @srikary12 made their first contribution in https://github.com/twentyhq/twenty/pull/6077 * @ad-elias made their first contribution in https://github.com/twentyhq/twenty/pull/5788 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v0.20.0...v0.21.0