github twentyhq/twenty sdk/v2.38.1

3 hours ago

What's Changed

  • chore: bump version to 2.38.0 by @twenty-pr[bot] in #24948
  • Preserve hash and query in OAuth connect redirect locations by @FelixMalfait in #24959
  • Fix double-composited translucency on tooltips by @FelixMalfait in #24962
  • perf(server): declarative shared fetch plan for workspace cache recomputation by @prastoin in #24750
  • fix(server): stop rate-limit throttler exceptions from reaching Sentry by @charlesBochet in #24931
  • Fix stack overflow when importing a large Gmail folder by @neo773 in #24883
  • Align timeline event icons with their row text by @FelixMalfait in #24957
  • Make Edit Layout available across the app by @Bonapara in #24865
  • Remove pre-2-32 uiScale and pre-2-27 openRecordIn fallbacks by @FelixMalfait in #24966
  • refactor(server): extract WorkflowMetadataReadService from the common god-service by @charlesBochet in #24963
  • v1.7.1 — feat(partners): add a How to review playbook in Matching Admin by @rashad in #24904
  • i18n - website translations by @github-actions[bot] in #24972
  • v1.7.2 — feat(partners): add opportunity process playbooks by @rashad in #24956
  • chore(billing): drop the creditBalanceMicro and hasReachedCurrentPeriodCap columns by @FelixMalfait in #24969
  • Anchor email and calendar timeline activities at their semantic time by @FelixMalfait in #24967
  • Scope two-hop relation widgets through the right morph branch by @thomtrp in #24929
  • i18n - website translations by @github-actions[bot] in #24977
  • Prerender record page tabs on hover by @FelixMalfait in #24958
  • Follow reschedules on linked timeline activities by @FelixMalfait in #24968
  • Bill logic function executions for duration like AWS Lambda by @martmull in #24938
  • Show Stripe Link in the onboarding payment step by @FelixMalfait in #24978
  • Make the timeline happensAt mapping timeline activity type metadata by @FelixMalfait in #24970
  • perf(server): serve the field-metadata query path from the lean projection by @charlesBochet in #24973
  • Unify record and side-panel header identifiers by @Bonapara in #24935
  • fix(server): report a credential-less request to UserAuthGuard as UNAUTHENTICATED by @FelixMalfait in #24981
  • test(e2e): cookie-authenticate direct backend calls, and clear the token pair on switch by @FelixMalfait in #24982
  • v1.8.0 — Super partner flag and directory view by @rashad in #24951
  • Add Super partner pinning and mark on the website marketplace by @rashad in #24952
  • i18n - website translations by @github-actions[bot] in #24991
  • Tune squircle corners to K 2.2 and preserve round shapes by @Bonapara in #24974
  • Replace record summary cards with an identifier bar by @Bonapara in #24936
  • Add canonical product icon dictionary by @Bonapara in #23719
  • perf(server): diff full-sync message deletes via a Set, not Array.includes by @charlesBochet in #24996
  • feat(page-layout): declare the record form layout and form field widget by @thomtrp in #24961
  • Stop flagging MCP execute_tool as destructive by @FelixMalfait in #24995
  • i18n - website translations by @github-actions[bot] in #24998
  • Allow record page layouts to unpin the first tab by @Bonapara in #24937
  • Hide the group header when the fields widget has a single group by @FelixMalfait in #24997
  • Add sidebar command and tooltips by @Bonapara in #24985
  • Add the blocklist scope field and make its owner optional by @neo773 in #24813
  • Fix e2e on main: disabled sortable cells claim button semantics by @FelixMalfait in #24979
  • Add a domain subtype to LINKS fields and normalize domains on write by @neo773 in #24911
  • feat(front): serve the core workflows index on the workflows object route by @thomtrp in #24939
  • perf(server): reuse the html-to-text converter across imported messages by @charlesBochet in #25004
  • Fix additionalEmails typing in generated client SDK by @martmull in #24869
  • v1.8.1 — Fix partner case-study save rejected by RLS by @rashad in #25010
  • Pin Ask AI globally and open new chats in full page by @FelixMalfait in #25005
  • Slide the mobile record table's frozen column instead of resizing it by @FelixMalfait in #24993
  • Upgrade public apps to twenty-sdk 2.37.0 and label their application variables by @martmull in #24990
  • Center the full page AI chat and suggest prompts from the browsed page by @FelixMalfait in #25016
  • Fix the chat focus crash and give the preprompt effect the suggested prompts by @FelixMalfait in #25017
  • Account for every AI chat turn outcome exactly once by @FelixMalfait in #25019
  • Stop caching the partners API response by @neo773 in #25021
  • fix(ai): refresh the default model lists for self-hosted instances by @FelixMalfait in #25022
  • Move AI provider admin operations to their own resolver by @FelixMalfait in #25023
  • Read the agent suites' model ids from the recommended list by @FelixMalfait in #25026
  • Switch between Home, AI and Settings from one segmented control by @FelixMalfait in #25059
  • Make QA Scout failures quiet on PRs and legible in CI by @FelixMalfait in #25060
  • Sync calendar webhooks without waiting for the import cron by @neo773 in #24987
  • Grant credits to enrichment-qualified workspaces by @FelixMalfait in #25063
  • Hide Twenty-operated config variables from the admin panel by @FelixMalfait in #25068
  • Drop the tab list from the walkthrough modal when there is a single tab by @FelixMalfait in #25069
  • fix(ci): authenticate the app-dev test leg as the seeded admin user by @abdulrahmancodes in #25028
  • Register transcription models alongside language models by @FelixMalfait in #25064
  • Fix the rich text editor crash on the full screen toggle by @FelixMalfait in #25071
  • Keep only the writes inside the calendar and messaging import transactions by @neo773 in #24681
  • Make the list view GA and fix what QA found on it by @FelixMalfait in #25072
  • Remove the legacy token-pair credential from the front by @FelixMalfait in #25070
  • fix: preserve editor content when toggling fullscreen by @saadassali in #24563
  • Add dictation to the AI chat composer by @FelixMalfait in #25073
  • Swap Settings for a record-open switcher in the workspace dropdown by @FelixMalfait in #25077
  • Surface structured login verification errors by @FelixMalfait in #25080
  • Fix auth provider propagation in password sign-up flows by @FelixMalfait in #25078
  • Migrate react-grid-layout to v2 by @ehconitin in #24922
  • Fix morph junction relation picker in field widgets by @FelixMalfait in #25097
  • Fail closed when issuing required user sessions by @FelixMalfait in #25079
  • Widget-level isUIEditable setting; kanban/table parity on read-only surfaces by @ehconitin in #24308
  • fix(server): persist user locale on userWorkspace create by @cfngc4594 in #25098
  • feat(slack): admin-set manual user links on app-locked records by @abdulrahmancodes in #24670
  • fix(workflow): create a record when a relation variable resolves to null by @thomtrp in #25000
  • fix(server): release S3 sockets held by abandoned response bodies by @thomtrp in #25107
  • Cancel Recall bot when a call recording is deleted by @ehconitin in #25115
  • Scaffold Fathom Twenty app by @ehconitin in #24900
  • Load saved any-field filters in record widgets by @FelixMalfait in #25118
  • Make inferred workspace logo upload best effort by @Weiko in #25100
  • Preserve record widget settings on data source change by @FelixMalfait in #25117
  • Move the object navigation command menu item into the metadata side-effect engine by @prastoin in #23795
  • Distribute orphan Recall cleanup jobs across workspaces by @ehconitin in #25114
  • Remove no-op universal flat entity casts in side effect handlers by @prastoin in #25121
  • Await inferred workspace logo upload during sign-up by @Weiko in #25126
  • Fix solo field widget header actions by @FelixMalfait in #25102
  • Validate junction relation target settings by @FelixMalfait in #25108
  • Add role and app reference chips to AI chat by @FelixMalfait in #25129
  • Add page link and theme commands to command menu by @Bonapara in #25002
  • Add Note widgets to record page layouts by @Bonapara in #25086
  • Resolve reverse junction relations directionally by @FelixMalfait in #25113
  • Fix chat reference chip Storybook assertion by @FelixMalfait in #25145
  • feat(slack): settings UI and consent flow for Slack user links by @abdulrahmancodes in #24887
  • Improve record page layout editing experience by @Bonapara in #25087
  • Scope calendar orphan cleanup to the events the sync just unlinked by @neo773 in #24988
  • Treat Google policy_enforced as a permanent OAuth error by @neo773 in #25148
  • fix(messaging): register blocklist delete listener on DELETED, not CREATED by @neo773 in #25149
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in #25152
  • Keep workflow nodes centered when renamed by @rafipopz98 in #24334
  • Surface Relations on email thread and calendar event record pages by @FelixMalfait in #24994
  • Port genql 3.0.5 test suite and run twenty-client-sdk tests in CI by @prastoin in #25092
  • Compute selected call recording on the server by @ehconitin in #24945
  • Generalize upgrade:background into a background wrapper for any nest command by @prastoin in #25131
  • Add copy and see-all actions to the call recording summary widget header by @ehconitin in #24924
  • docs: clarify that the app key-value store is persistent (Postgres-backed) by @martmull in #25160
  • feat(slack): auto-link the installer on connect and clear ghost links by @abdulrahmancodes in #25150
  • Unify workspace routes across main and side panel by @FelixMalfait in #25141
  • fix: exclude CalDAV collection href from event sync by @MoonBrillante in #25094
  • Fix workflow diagram jumping 200px left when a rename forks a draft by @thomtrp in #25162
  • Fix IMAP messages without Date header by @Leotrancoz0 in #25120
  • Resolve morph member IDs in grouped metadata by @FelixMalfait in #25137
  • Restore purpose-built side panel page state by @FelixMalfait in #25167
  • Email campaigns 1/4: give each delivery its own row by @neo773 in #25122
  • feat(server): run newly installed packaged application logic functions in prebuilt mode by @martmull in #25119
  • Email campaigns 2/4: claim each send exactly once by @neo773 in #25123
  • Type composite raw JSON sub-fields in the workspace GraphQL schema by @martmull in #25116
  • Add lifecycle state column to application by @martmull in #25163
  • Show status-specific call recording placeholders by @ehconitin in #24947
  • fix(exception-handler): guard Sentry driver against non-object exceptions by @etiennejouan in #25171
  • Hide Ask AI command when in side panel by @FelixMalfait in #25168
  • Email campaigns 3/4: record delivery outcomes from webhooks by @neo773 in #25124
  • Preserve typed characters when focusing the activity editor by @Weiko in #25172
  • feat(workflow): filters on the core workflows index by @thomtrp in #25109
  • Show the Stripe billing date in self-hosted enterprise settings by @ijreilly in #25170
  • feat(usage) - collect + attribute every CommonAPI request by @etiennejouan in #24960
  • fix(twenty-front): blank index field labels on settings page by @Amit91848 in #24503
  • Add call recording animated placeholder by @ehconitin in #25142
  • Fix admin panel app install counts and show suspended installs by @ehconitin in #25158
  • Fix dashboard record table settings context by @Weiko in #25180
  • Provision missing object system relations by @thomtrp in #25169
  • Email campaigns 4/4: honour unsubscribes and meter sends by @neo773 in #25125
  • fix(ai-chat) - fix AI chat questions stuck on 'already been answered' after interrupted streams by @etiennejouan in #25175
  • Simplify settings-shell opening in useNavigateSettings and add routed side-panel test by @FelixMalfait in #25187
  • Remove the orphaned message deliveryStatus field by @FelixMalfait in #25161
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in #25194
  • Support nested relation create with morph target selection by @FelixMalfait in #25174
  • Include Note/Task rich-text body in field lists and add unit test by @FelixMalfait in #25195
  • Add customizable call recorder chat notice by @ehconitin in #25146
  • feat(workflow): dispatch workflow triggers on core ids by @thomtrp in #25104
  • Harden unified workspace surfaces by @FelixMalfait in #25164
  • Drop objectMetadataItemId from navigation command menu item payloads by @prastoin in #25132
  • Update Ask AI command icon and migrate legacy sparkle icon in 2.38 by @FelixMalfait in #25201
  • Simplify default Task and Note record pages and add workspace migration by @FelixMalfait in #25177
  • Insert actions on existing workflow branches by @Bonapara in #25133
  • Reconnect workflow arrow targets without rebuilding actions by @Bonapara in #25134
  • Search workflow fields across steps from the root picker by @Bonapara in #25135
  • Add Fathom OAuth connection by @ehconitin in #25197
  • Fix main's red typecheck: drop removed portal fields from the settings test wrapper by @FelixMalfait in #25196
  • fix(billing) - fix stale seat count billed on plan and interval subscription updates by @etiennejouan in #25202
  • test(server): cover field read permission for group-by records selection by @prastoin in #25206
  • feat(slack): match the Slack roster by email and list unlinked users by @abdulrahmancodes in #25151
  • Broadcast application and applicationRegistration changes over SSE by @martmull in #25173
  • v1.8.3 — Keep applied briefs visible after unlist by @rashad in #25001
  • Run connection-provider disconnect hooks before deleting the token by @ehconitin in #25215
  • feat(server): add command converting existing application logic functions to prebuilt by @martmull in #25178
  • Remove the automatic snackbar when a front component copies to the clipboard by @martmull in #25220
  • Update Legal FAQ by @BOHEUS in #25209
  • fix(server): propagate stream destroy to the socket behind the SDK checksum wrapper by @thomtrp in #25207
  • chore(server): add worker memory diagnostics logging by @etiennejouan in #25216
  • Return job handles from enqueueJob(s) and add a getJobs query by @martmull in #25204
  • fix(slack): let a declined link fall through to the member's own email match by @hktitof in #25229
  • Host the main surface's route context store once, above the page transition by @FelixMalfait in #25233
  • Stop remounting every device-session row on each render of the devices section by @FelixMalfait in #25232
  • Scope component instance ids at the provider, not in the resolving primitive by @FelixMalfait in #25225
  • Add the missing im:write scope to the Slack app manifest by @abdulrahmancodes in #25234
  • Align the Slack app docs and metadata with the vetted apps by @abdulrahmancodes in #25235
  • Remove the "Answered in" duration footer from Slack assistant replies by @abdulrahmancodes in #25237
  • Split usage by application and give apps a billing block: usage, recurring fees, and pricing by @FelixMalfait in #24541
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in #25244
  • feat(workflow): honor continueOnFailure in the executor by @thomtrp in #25222
  • chore(slack): bump app version to 0.6.1 by @abdulrahmancodes in #25242
  • Put the navbar tabs and the show page header on one 40px grid by @FelixMalfait in #25236
  • Drop the app-to-settings cross-fade by @FelixMalfait in #25249
  • Delete side-panel and navigation tests that only exercise their mocks by @FelixMalfait in #25250
  • Delete frontend files nothing imports by @FelixMalfait in #25253
  • Add --no-delete to apply, plan and dev for additive application sync by @Weiko in #25245
  • Move settings detail tabs below headers by @Bonapara in #25255
  • Move information banners above page headers by @Bonapara in #25261
  • Share the empty state, containers and drag-drop provider between record list and table by @FelixMalfait in #25258
  • Collapse page-layout twin hooks, widget factories and relation cards by @FelixMalfait in #25259
  • Resolve AI chat references through one table instead of eight link components by @FelixMalfait in #25260
  • Restore the five SSO GraphQL documents and regenerate the metadata client by @FelixMalfait in #25271
  • feat(workflow): browse and restore core workflow versions from the side panel by @thomtrp in #25199
  • Sync Fathom recordings from webhooks by @ehconitin in #25208
  • fix(slack): mark user links from disconnected Slack workspaces by @abdulrahmancodes in #25269
  • feat(slack): render Twenty record links as work object previews by @abdulrahmancodes in #24980
  • Create and delete the enqueue-job spec's logic functions one at a time by @Weiko in #25273
  • Keep the raw junction target id out of a relation field's universal settings by @Weiko in #25264
  • Remove owner-workspace restriction on unlisted tarball app installs by @martmull in #25270
  • Allow development application on top of owned application by @martmull in #25267
  • Fix the flaky front-sb-test storybook shards by @bosiraphael in #24412
  • refactor: standardize SSO, SAML, OIDC, API and URL acronyms to PascalCase in internal identifiers by @FelixMalfait in #25281
  • feat(slack): surface broken connections and failed auto-link sweeps in the settings tab by @abdulrahmancodes in #25240
  • fix(workflow): let create_complete_workflow build iterator loop bodies by @thomtrp in #25283
  • feat(workflow): show workspace workflow versions only while the core index flag is off by @thomtrp in #25280
  • fix(slack): post the assistant failure reply on its own deadline by @abdulrahmancodes in #25285
  • Fix person merge failing on shared message threads and over 200 related records by @neo773 in #25190
  • fix(auth): preserve connected account scopes on SSO login by @ayush-singh-0601 in #25296
  • Keep task and note junction relations consistent by @FelixMalfait in #25200
  • Fix upgrade resume after instance command segment by @FelixMalfait in #25299
  • Support legacy activity target columns during upgrade by @FelixMalfait in #25301
  • fix(server): require ROLES permission to bind a role to an API key by @charlesBochet in #24806
  • i18n - translations by @github-actions[bot] in #25306
  • i18n - translations by @github-actions[bot] in #25308

New Contributors

Full Changelog: sdk/v2.37.0...sdk/v2.38.1

Don't miss a new twenty release

NewReleases is sending notifications on new releases.