github twentyhq/twenty twenty/v2.20.0

2 hours ago

What's Changed

  • chore: bump version to 2.20.0 by @twenty-pr[bot] in #22639
  • Unify featured/vetted app terminology to featured by @martmull in #22648
  • 2.20 fieldMetadata and objectMetadata standardOverrides deprecation by @prastoin in #22650
  • Fix root domain /authorize rendering workspace-scoped consent page by @ehconitin in #22641
  • Fireflies: port app to the CallRecording standard object by @ehconitin in #22642
  • Suppress Claude session URL in generated PR bodies and commits by @martmull in #22651
  • feat(server): support server-scoped files via nullable workspaceId on file table by @martmull in #22587
  • fix(rls): prefill RLS predicate fields when creating related records by @Aressand in #22620
  • fix: corrected grammar in approved domain message by @brahmlower in #22646
  • fix(workflow): handle IS/IS_NOT operand in text and array filters by @thomtrp in #22640
  • fix(workflow): batch staled run reset to avoid Postgres param limit by @thomtrp in #22654
  • fix: add workspace command to backfill missing AGENT source enum values by @etiennejouan in #22593
  • fix: dropping favorites to the last position in a open folder by @parshipcy in #22360
  • feat(workflow): scaffold core workflowVersion entity + trigger cache (phase 0) by @thomtrp in #21674
  • fix(call-recorder): stream Recall media to storage to fix OOM by @ehconitin in #22652
  • Make onboarding steps responsive on mobile by @bosiraphael in #22659
  • feat(sdk): validate graph page-layout widgets at build time by @charlesBochet in #22559
  • Merge app Public URL and Public Domains settings into one App URL section by @FelixMalfait in #22666
  • fix(messaging): add sender name to IMAP/SMTP From headers by @PratikMahajan in #22603
  • Fix email validation for over-length inline edits by @deep231w in #22426
  • fix(docker): pin node base back to 24.16.0 to stop premature-close fetch failures by @charlesBochet in #22673
  • i18n - docs translations by @github-actions[bot] in #22676
  • feat(server): add public marketplace resolver for vetted app catalog by @martmull in #22647
  • fix(docker): bump node base to 24.18.0 (all 24.17.0 CVE fixes + http.Agent premature-close fix) by @charlesBochet in #22677
  • [Billing for self hosts] Add info in description by @ijreilly in #22660
  • feat(messaging): message campaign delivery stats + views by @neo773 in #22661
  • Chore/remove messaging mock specs by @neo773 in #22665
  • Validate range version app dev sync by @prastoin in #22625
  • refactor(app-marketplace): rename featured to vetted by @martmull in #22674
  • feat(workflow): backfill workspace workflowVersion into core (phase A) by @thomtrp in #22663
  • fix(front): page header title overlap, Cmd+K on page layout pages & stable tooltip id by @ijreilly in #22678
  • feat(website): add public apps marketplace with one-click install by @martmull in #22611
  • [Twenty Fireflies] Add calendar event summary and transcript UI components by @ehconitin in #22667
  • feat(call-recorder): type application and server variables, make summary prompt rich text by @ehconitin in #22685
  • feat(ai): optionally preselect fast or smart model when opening Ask AI by @Weiko in #22679
  • chore: remove IS_MESSAGING_CALENDAR_WEBHOOK_ENABLED flag by @neo773 in #22680
  • feat(ai-chat): inject current date & per-message timestamps into agent context by @etiennejouan in #22632
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in #22710
  • fix(billing) - skip paying upgrade invoices already settled at finalization by @FelixMalfait in #22705
  • i18n - website translations by @github-actions[bot] in #22683
  • fix(billing): only reactivate suspended workspaces when subscription is in good standing by @etiennejouan in #22687
  • feat(ai) - add light AI chat turn instrumentation (metrics + Sentry correlation) by @etiennejouan in #22692
  • fix(sdk): report the connected server's real version in dev version check by @ijreilly in #22670
  • docs(apps): fix stale CLI commands in getting-started and operations pages by @martmull in #22688
  • docs(apps): fix nonexistent SDK import paths and unsupported config in layout pages by @martmull in #22689
  • docs(apps): align project structure and testing pages with the actual scaffold by @martmull in #22690
  • docs(apps): document missing enum values and complete entity references by @martmull in #22691
  • docs(apps): rewrite install hooks page — real client API, one explanation per concept by @martmull in #22694
  • fix(create-twenty-app): working docs URL in final message, complete dev:add table in AGENTS.md by @martmull in #22695
  • docs(apps): make the workspace functions URL the primary route-serving story by @martmull in #22693
  • Welcome animation when a workspace is set up by @bosiraphael in #22622
  • Fix flaky webhook delivery integration test (fixed sleep -> poll) by @martmull in #22699
  • Fix flaky e2e tests: CI-realistic timeouts + retry-safe kanban field label by @martmull in #22701
  • Fix flaky "read EINVAL" in integration tests: bump msw to 2.12.14 by @martmull in #22702
  • ci: add app-docs drift check agent by @martmull in #22696
  • i18n - translations by @github-actions[bot] in #22714
  • i18n - docs translations by @github-actions[bot] in #22715
  • i18n - translations by @github-actions[bot] in #22716
  • feat(billing): collect credit card in-app when starting subscription from billing page by @FelixMalfait in #22706
  • Rebuild email composer recipient fields as a structured chip input with person resolution and autocomplete by @FelixMalfait in #22668
  • i18n - docs translations by @github-actions[bot] in #22723
  • i18n - translations by @github-actions[bot] in #22725
  • i18n - translations by @github-actions[bot] in #22726
  • i18n - translations by @github-actions[bot] in #22728
  • i18n - translations by @github-actions[bot] in #22729
  • i18n - translations by @github-actions[bot] in #22730
  • i18n - translations by @github-actions[bot] in #22731
  • i18n - translations by @github-actions[bot] in #22732
  • i18n - translations by @github-actions[bot] in #22733
  • i18n - translations by @github-actions[bot] in #22735
  • i18n - translations by @github-actions[bot] in #22738
  • i18n - translations by @github-actions[bot] in #22741
  • i18n - translations by @github-actions[bot] in #22743
  • Fix onboarding entry animations not triggering on first load by @bosiraphael in #22724
  • Fail App docs drift check ci if doc drift detected by @martmull in #22713
  • i18n - translations by @github-actions[bot] in #22744
  • perf(upsert) - tighten createMany upsert candidate lookup to avoid broad OR scans by @etiennejouan in #22721
  • fix: prevent duplicate junction rows from double-fired checkbox clicks in multi-select menu items by @thomtrp in #22737
  • Fix onboarding locale reverting to English after signup by @bosiraphael in #22675
  • docs: surface the self-serve partner marketplace on high-intent pages by @rashad in #22719
  • Centralize system field side effects + search field metadata by @prastoin in #22594
  • fix(server): allow relabelling onto a field introduced in the same manifest sync by @prastoin in #22727
  • i18n - docs translations by @github-actions[bot] in #22752
  • Only propose configured apps during onboarding install step by @bosiraphael in #22712
  • feat(workflow): add core workflow entity (syncable) + create-table by @thomtrp in #22746
  • Add Last contact on Companies and Opportunities to last-contact app by @martmull in #22720
  • i18n - docs translations by @github-actions[bot] in #22759
  • i18n - docs translations by @github-actions[bot] in #22762
  • i18n - docs translations by @github-actions[bot] in #22764
  • chore: sync AI model catalog from models.dev by @github-actions[bot] in #22770
  • Fix shard 12 integration test failure: regenerate stale object metadata snapshot from #22594 by @martmull in #22768
  • fix(twenty-sdk): restore require/__filename/__dirname in rolldown ESM CLI bundle by @martmull in #22711
  • Seed CHANGELOG.md and SETUP.md in create-twenty-app scaffold by @martmull in #22769
  • feat(workflow): add universalIdentifier + applicationId to core workflowVersion by @thomtrp in #22747
  • Fix integration test hang on unmocked requests + de-flake object metadata suite by @neo773 in #22758
  • Improve application asset management by @martmull in #22564
  • migrate 10 modules off NestjsQueryTypeOrmModule wiring by @abdulrahmancodes in #22763
  • Gate connected-account webhook subscriptions behind config by @neo773 in #22761
  • i18n - docs translations by @github-actions[bot] in #22777
  • i18n - translations by @github-actions[bot] in #22745
  • i18n - translations by @github-actions[bot] in #22779
  • Allow CLI dev mode on catalog-synced apps without mutating the shared registration by @martmull in #22756
  • i18n - translations by @github-actions[bot] in #22781
  • Fix front-component serving on Safari, kill stale presigned caching, and cache built bundles client-side by @prastoin in #22672
  • remove nestjs-query from app-token and drop unused createOneAppToken mutation by @abdulrahmancodes in #22765
  • Fix front-component cache read rejection bypassing network fallback by @prastoin in #22785
  • i18n - translations by @github-actions[bot] in #22784
  • i18n - translations by @github-actions[bot] in #22787
  • i18n - translations by @github-actions[bot] in #22788
  • i18n - translations by @github-actions[bot] in #22789
  • fix(front): render +N button for right-edge-clipped chips in expandable list by @thomtrp in #22748
  • i18n - translations by @github-actions[bot] in #22793
  • i18n - docs translations by @github-actions[bot] in #22794
  • fix(twenty-partners): align createdAt view field with 2.19 deterministic ids and bump to 1.2.10 by @prastoin in #22782
  • remove nestjs-query from user and workspace resolvers by @abdulrahmancodes in #22766
  • i18n - translations by @github-actions[bot] in #22796
  • Catch Cursor's "Made with" attribution footer in blocked contributors check by @prastoin in #22791
  • i18n - translations by @github-actions[bot] in #22798
  • remove nestjs-query auto-resolver from index-metadata by @abdulrahmancodes in #22775
  • i18n - translations by @github-actions[bot] in #22799
  • i18n - translations by @github-actions[bot] in #22802
  • i18n - translations by @github-actions[bot] in #22804
  • i18n - translations by @github-actions[bot] in #22806
  • i18n - translations by @github-actions[bot] in #22807
  • i18n - translations by @github-actions[bot] in #22809
  • docs: partner CTAs on high-traffic pages (workflows, data-model, docker-compose) by @rashad in #22808
  • i18n - translations by @github-actions[bot] in #22810
  • fix(workflow): scope one-active-per-workflow index to workspace by @thomtrp in #22795
  • i18n - translations by @github-actions[bot] in #22812
  • fix(front): clean stale morph relations from metadata store on object deletion by @ijreilly in #22681
  • i18n - translations by @github-actions[bot] in #22813
  • i18n - translations by @github-actions[bot] in #22814
  • Run front components in a sandboxed opaque-origin iframe by @bosiraphael in #22588
  • Fix SDK plan on non installed apps by @Weiko in #22805
  • accepts any valid expression, not just an identifier by @martmull in #22778
  • fix(emails): deterministic i18n catalog order to stop recurring i18n PR conflicts by @charlesBochet in #22803
  • i18n - docs translations by @github-actions[bot] in #22816
  • i18n - translations by @github-actions[bot] in #22815
  • Fix Cloudflare rate limiting during last-contact backfill by @martmull in #22811

New Contributors

Full Changelog: twenty/v2.19.0...twenty/v2.20.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.