v2.9.0

twentyhq/twentyv2.9.0Jun 5, 2026by prastoin

AI Summary

Major release with significant UI/UX improvements including FILES field capacity increase to 60 values, Table display mode for relations, dark mode OAuth screen, and new Logs settings tab. Introduces WorkspaceScopedRepository for twenty-orm, logic function LIVE/PREBUILT execution modes, and visual regression testing via Argos.

Key Highlights

  • FILES field max increased from 10 to 60 values
  • Table display mode added for relation field widgets
  • Dark mode support for OAuth screen
  • WorkspaceScopedRepository introduced for twenty-orm core/metadata entities
  • New Logs tab in General settings
  • Logic function LIVE / PREBUILT execution modes
  • Partner marketplace UI improvements with Categories (partnerScope)
  • Visual regression testing integrated via Argos/vitest screenshots
  • Many-to-one relations supported as advanced filter leaves
  • AI tools optimized with per-tool schema resolution

New Features

  • FILES field max number of values increased from 10 to 60
  • Table display mode for relation field widgets
  • WorkspaceScopedRepository for twenty-orm workspace-scoped entities
  • Email settings moved to dedicated Email page
  • Dark mode for OAuth screen
  • Support for 'Me' filter in dashboard widgets with multi-select
  • Logic function LIVE / PREBUILT execution modes
  • Allow many-to-one relations as advanced filter leaves
  • Partner marketplace with Categories (partnerScope)
  • Submit-partner-application HTTP logic function
  • Visual regression testing via Argos
  • Logs as dedicated tab in General settings
  • Always show Favorites section with side panel add
  • Front component S3 redirect for performance
  • EncryptedString and PlaintextString branded string types

Full Release Notes

## What's Changed
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20893
* Add definePermissionFlag for app-defined permission flags by @Weiko in https://github.com/twentyhq/twenty/pull/20887
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20895
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20898
* chore(server): remove unused REST→GraphQL HTTP bridge by @Weiko in https://github.com/twentyhq/twenty/pull/20897
* Publish new cli tool version by @martmull in https://github.com/twentyhq/twenty/pull/20903
* perf(website): cache prerendered pages in CF Cache API (withRegionalCache) by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20905
* File service uniformize not found behavior and stream management by @prastoin in https://github.com/twentyhq/twenty/pull/20891
* Edit actor chip icon style & read-only behavior by @Bonapara in https://github.com/twentyhq/twenty/pull/18552
* Add application installation validation modale by @martmull in https://github.com/twentyhq/twenty/pull/20907
* chore(security): bump esbuild to ^0.28.0 to clear CVE-2025-68121 (CVSS 10.0) by @charlesBochet in https://github.com/twentyhq/twenty/pull/20902
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20910
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20911
* feat(twenty-partners): partnerContent catalog + TFT import improvements by @rashad in https://github.com/twentyhq/twenty/pull/20904
* [Website] Generate release notes manifest at build time by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20913
* Various fixes - some AI findings by @Weiko in https://github.com/twentyhq/twenty/pull/20921
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20924
* Fix/restore channel association scalar field metadata by @neo773 in https://github.com/twentyhq/twenty/pull/20920
* chore: bump version to 2.9.0 by @twenty-pr[bot] in https://github.com/twentyhq/twenty/pull/20925
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20926
* Refactor and centralize file mimeType integrity check and sanitization by @prastoin in https://github.com/twentyhq/twenty/pull/20889
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20930
* Fix workflow step output schema not reflecting user-renamed step name by @thomtrp in https://github.com/twentyhq/twenty/pull/20922
* Fix cross version upgrade for 2.8 by @prastoin in https://github.com/twentyhq/twenty/pull/20927
* fix(billing) - fix orphaned stripe subs 2/2 by @etiennejouan in https://github.com/twentyhq/twenty/pull/20916
* Fix index cache computation by @prastoin in https://github.com/twentyhq/twenty/pull/20933
* [Website] Restore shared build dependency for typecheck by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20936
* remove ai-model-preferences var env and config by @etiennejouan in https://github.com/twentyhq/twenty/pull/20859
* chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20948
* Basic app logo fixes by @martmull in https://github.com/twentyhq/twenty/pull/20919
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20951
* feat: raise FILES field max number of values from 10 to 60 by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20950
* fix(role): rebind API keys + agents before deleting their role by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20935
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20952
* fix(website) - fix getPartners by @etiennejouan in https://github.com/twentyhq/twenty/pull/20947
* Add a Table display mode to relation field widgets by @Weiko in https://github.com/twentyhq/twenty/pull/20929
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20959
* Deprecate dummy enterprise key 1/2 by @ijreilly in https://github.com/twentyhq/twenty/pull/20890
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20963
* fix(website): use Stripe fetch client on Cloudflare Workers by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20966
* fix(front): ignore IME composition Enter in input hotkeys by @fyujiwara in https://github.com/twentyhq/twenty/pull/20958
* fix: separate initial timeline loading from fetchMore loading state by @DeviSriSaiCharan in https://github.com/twentyhq/twenty/pull/20896
* refactor(website): replace axios with native fetch by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20967
* tt-fix-logic-function-error-handling by @thomtrp in https://github.com/twentyhq/twenty/pull/20928
* revert(navigation-drawer): unwanted desktop design changes from #20634 by @ehconitin in https://github.com/twentyhq/twenty/pull/20955
* Display which remote is used when twenty-sdk runs command by @martmull in https://github.com/twentyhq/twenty/pull/20969
* Fix page layout widget tab moves by @ehconitin in https://github.com/twentyhq/twenty/pull/20915
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20975
* fix(contact-creation): handle common email display-name shapes when auto-creating People by @clivemeister in https://github.com/twentyhq/twenty/pull/20639
* Fix error when token invalid by @martmull in https://github.com/twentyhq/twenty/pull/20972
* Fix focus in front components inputs by @bosiraphael in https://github.com/twentyhq/twenty/pull/20961
* feat(twenty-orm): introduce WorkspaceScopedRepository for core/metadata workspace-scoped entities by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20953
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20978
* Display application info in workflow side panel by @martmull in https://github.com/twentyhq/twenty/pull/20976
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20979
* Ses outbound followup by @neo773 in https://github.com/twentyhq/twenty/pull/20610
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20982
* fix: exclude system objects and workflow/dashboard from AI/MCP write tool descriptors by @mvanhorn in https://github.com/twentyhq/twenty/pull/20973
* Fix lambda timeout diagnostics by @thomtrp in https://github.com/twentyhq/twenty/pull/21002
* fix: refresh admin panel feature flags after toggling by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21007
* feat(settings): move email handles and emailing domains to dedicated Email page by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21008
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21013
* fix(ai): expose MORPH_RELATION join columns in AI/MCP tool schemas by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21012
* Export STANDARD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIERS by @martmull in https://github.com/twentyhq/twenty/pull/21010
* chore(deps): bump @apollo/client from 4.1.6 to 4.2.0 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20993
* Fix twenty sdk billing exports by @bosiraphael in https://github.com/twentyhq/twenty/pull/21016
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21019
* Support the "Me" filter for workspace members in dashboard widgets and add multi select by @bosiraphael in https://github.com/twentyhq/twenty/pull/20971
* Add darkmode for oAuth screen by @martmull in https://github.com/twentyhq/twenty/pull/21005
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21021
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21022
* Fix playwright CI by @Weiko in https://github.com/twentyhq/twenty/pull/21024
* `EncryptedString` `PlaintextString` branded string types by @prastoin in https://github.com/twentyhq/twenty/pull/21001
* Fix AI permission gating: use Ask AI for chat UI, AI Settings for admin endpoints by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21030
* refactor(twenty-orm): migrate 23 grandfathered entities to WorkspaceScopedRepository by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20987
* fix(contact-creation): enrich missing names on auto-created contacts by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21018
* chore(deps): bump js-cookie from 3.0.5 to 3.0.7 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20992
* Fix: focus stack overwritten when auto-opening title cell on new record by @bosiraphael in https://github.com/twentyhq/twenty/pull/21029
* refactor(agents): split tool resolution into native and action rails by @ehconitin in https://github.com/twentyhq/twenty/pull/20331
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21032
* fix: correct typo occurence -> occurrence in metadata-event-emitter.ts by @ltianyi992 in https://github.com/twentyhq/twenty/pull/21036
* fix(dashboards): isolate pie chart slice labels per widget by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21034
* fix(address): show saved address in record detail when street1 is null by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21033
* chore(deps): bump typescript from 5.9.2 to 5.9.3 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/20991
* chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21041
* Fix workflow creation on view filtered by status by @ijreilly in https://github.com/twentyhq/twenty/pull/21027
* Fix latency spike on application lookup by @martmull in https://github.com/twentyhq/twenty/pull/21042
* [Dashboards] Remove gauge chart types and code by @ehconitin in https://github.com/twentyhq/twenty/pull/20410
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21045
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21047
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21048
* Fix admin pannel server variable config tab by @martmull in https://github.com/twentyhq/twenty/pull/21017
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21050
* fix: harden email-group SES provisioning, cleanup, and inbound replay by @neo773 in https://github.com/twentyhq/twenty/pull/21046
* 2439 improve command menu item display in right panel by @martmull in https://github.com/twentyhq/twenty/pull/21020
* fix(sso): accept HTTP-POST binding and surface descriptive parser errors by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21051
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21055
* Docs update: Calling a logic function from a front component by @bosiraphael in https://github.com/twentyhq/twenty/pull/21057
* fix: resolve workflow form step auto-open race condition by @thomtrp in https://github.com/twentyhq/twenty/pull/21053
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21062
* Docs: clarify numberOfSelectedRecords usage for RECORD_SELECTION items by @bosiraphael in https://github.com/twentyhq/twenty/pull/21059
* feat(server): opt-in FRONT_AUTO_BASE_URL for hostname-relative API URL by @LazyBouy in https://github.com/twentyhq/twenty/pull/20504
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21064
* [Website] i18n module, page-local sections, translatable copy by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21082
* fix(ai): route xAI search through Responses API as native tools by @ehconitin in https://github.com/twentyhq/twenty/pull/21037
* fix: SSE event stream reconnection after idle connection death by @thomtrp in https://github.com/twentyhq/twenty/pull/21061
* fix(front): scroll long content in rich text editor by @Nik1125 in https://github.com/twentyhq/twenty/pull/20319
* fix(twenty-sdk): minify front-component bundles & set NODE_ENV=production in deploy build by @8Maverik8 in https://github.com/twentyhq/twenty/pull/20937
* fix(front): keep app variable cache in sync after update by @nicolas-besnard in https://github.com/twentyhq/twenty/pull/20861
* Twenty server:Fix REST pagination issues by @git-init-priyanshu in https://github.com/twentyhq/twenty/pull/20980
* fix(kanban): contain checkbox hover reveal within card bounds by @ehconitin in https://github.com/twentyhq/twenty/pull/21100
* feat(settings): discovery hero rollout + ephemeral playground token by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21072
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21103
* Fix array-typed parameters in code/logic-function action forms by @ijreilly in https://github.com/twentyhq/twenty/pull/21102
* fix navigation item tree breadcrumb active state by @ehconitin in https://github.com/twentyhq/twenty/pull/21101
* Billing - Fix credit upgrade invoice error by @etiennejouan in https://github.com/twentyhq/twenty/pull/21097
* fix: broadcast timeline activities to live SSE subscriptions by @Weiko in https://github.com/twentyhq/twenty/pull/21104
* Fix else branches not properly skipped in nested if/else workflows by @thomtrp in https://github.com/twentyhq/twenty/pull/20938
* fix: show relation field changes in the timeline by @parshipcy in https://github.com/twentyhq/twenty/pull/21052
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21112
* Bump playwright by @prastoin in https://github.com/twentyhq/twenty/pull/21113
* fix: return proper FORBIDDEN GraphQL errors from ApiKeyResolver by @Weiko in https://github.com/twentyhq/twenty/pull/21107
* Strictly type encryption rotation key site maps constants through entity type derivation by @prastoin in https://github.com/twentyhq/twenty/pull/21085
* Public assets server s3 redirection by @prastoin in https://github.com/twentyhq/twenty/pull/21108
* chore(settings): address review comments from PR 21072 by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21121
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21128
* fix: REST cursor encoding for nested order_by composite fields by @mvanhorn in https://github.com/twentyhq/twenty/pull/20974
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21088
* docs: remove the self-host cloud providers page by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21134
* fix: lowercase OAuth handle to prevent duplicate connected accounts by @neo773 in https://github.com/twentyhq/twenty/pull/21120
* feat: expose CURRENCY field settings (format/decimals) in shared types by @josephj in https://github.com/twentyhq/twenty/pull/21090
* Front component s3 redirect by @prastoin in https://github.com/twentyhq/twenty/pull/21116
* [Website] Partner application wizard + logic-function handover by @rashad in https://github.com/twentyhq/twenty/pull/21039
* feat(twenty-partners): expose partnerScope on list + by-slug endpoints by @rashad in https://github.com/twentyhq/twenty/pull/21126
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21135
* feat(twenty-partners): submit-partner-application HTTP logic function by @rashad in https://github.com/twentyhq/twenty/pull/21040
* feat(website): surface partner Categories (partnerScope) in marketplace, drop deploymentExpertise facet by @rashad in https://github.com/twentyhq/twenty/pull/21127
* fix(twenty-front): enable text selection for display-mode fields by @dev-kp-eloper in https://github.com/twentyhq/twenty/pull/21068
* fix(ai): correct find-records tool description (top-level filter fields) by @richroberts-prog in https://github.com/twentyhq/twenty/pull/21109
* feat(logic-function): add LIVE / PREBUILT execution modes by @charlesBochet in https://github.com/twentyhq/twenty/pull/20873
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21141
* fix(record-table): keep column header dropdown open after Move Left/Right by @prakhartripath0001 in https://github.com/twentyhq/twenty/pull/21015
* Prevent conditional availability variables from being used at runtime by @bosiraphael in https://github.com/twentyhq/twenty/pull/21110
* chore(twenty-partners): bump app version to 0.3.3 by @rashad in https://github.com/twentyhq/twenty/pull/21140
* feat(settings): move settings chrome into a single rounded card by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21131
* Always show Favorites section and add favorites via the side panel by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21087
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21148
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21149
* chore(twenty-partners): refine design-doc skill doctrine by @rashad in https://github.com/twentyhq/twenty/pull/21151
* Allow functional iframes in front components while blocking sandbox escapes by @bosiraphael in https://github.com/twentyhq/twenty/pull/21145
* fix: block self-impersonation in admin panel by @parshipcy in https://github.com/twentyhq/twenty/pull/21130
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21154
* feat: allow many-to-one relations as advanced filter leaves by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21147
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21137
* refactor(server): merge duplicate `TypeOrmModule.forFeature` calls in `MessagingMessageCleanerModule` by @Rpaudel379 in https://github.com/twentyhq/twenty/pull/21150
* refactor(twenty-server): collapse workspace migration build orchestrator by @charlesBochet in https://github.com/twentyhq/twenty/pull/21144
* Bonapara/twenty codex plugin by @Bonapara in https://github.com/twentyhq/twenty/pull/20857
* Fix front component pointer/mouse event coordinates by @bosiraphael in https://github.com/twentyhq/twenty/pull/21117
* refactor(server): split LambdaDriver and LocalDriver into focused sub-services by @charlesBochet in https://github.com/twentyhq/twenty/pull/21153
* fix(twenty-server): fix AI tools description for SELECT view filter values by @thomtrp in https://github.com/twentyhq/twenty/pull/21156
* feat(partners): remove Project Budget Typical field, rework partner views & nav order by @rashad in https://github.com/twentyhq/twenty/pull/21162
* feat(website): partner marketplace UI fixes & CTA improvements by @rashad in https://github.com/twentyhq/twenty/pull/21163
* chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21170
* (partners): bump app version 0.3.3 -> 0.3.4 by @rashad in https://github.com/twentyhq/twenty/pull/21167
* Fix Unzipped size must be smaller than 250Mb error by @martmull in https://github.com/twentyhq/twenty/pull/21172
* i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21165
* fix: update yarn.lock after removing dotenv and zod from twenty-sdk by @rashad in https://github.com/twentyhq/twenty/pull/21174
* Refactor email composer by @prastoin in https://github.com/twentyhq/twenty/pull/21177
* fix(ai-chat): refresh JWT token on SSE reconnect to prevent login red… by @b3nito404 in https://github.com/twentyhq/twenty/pull/20176
* Fix fields widget new field visibility by @Weiko in https://github.com/twentyhq/twenty/pull/21111
* fix: eliminate workflow editing flicker on active-to-draft transitions by @thomtrp in https://github.com/twentyhq/twenty/pull/21176
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21189
* perf(ai) - per-tool schema resolution in resolveSchemas by @etiennejouan in https://github.com/twentyhq/twenty/pull/21188
* Fix lambda error by @martmull in https://github.com/twentyhq/twenty/pull/21179
* Provide additional logsobservability  to workflow runs (per node) by @ijreilly in https://github.com/twentyhq/twenty/pull/21142
* feat(mcp) - optimize instruction prompt and hide get_tool_catalog by @etiennejouan in https://github.com/twentyhq/twenty/pull/21183
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21191
* Fix: Not able to add multiple handles to Blocklist in settings/accounts by @git-init-priyanshu in https://github.com/twentyhq/twenty/pull/21049
* i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21192
* Update axios in package.json of seed-dependencies by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21190
* fix(ai) - optimize crud tools by @etiennejouan in https://github.com/twentyhq/twenty/pull/21133
* i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21195
* Fix axios related dependabot alerts generated against root yarn.lock by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/21187
* feat(ci): integrate Argos visual regression via vitest screenshots by @charlesBochet in https://github.com/twentyhq/twenty/pull/21210
* feat(settings): add Logs as a dedicated tab in General settings by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21180
* chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/21212
* fix(front): settings skeleton, app-detail header & empty favorites by @FelixMalfait in https://github.com/twentyhq/twenty/pull/21209
* chore(deps): bump @mantine/hooks from 8.3.15 to 8.3.18 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/21203
* chore(deps-dev): bump @types/passport-microsoft from 2.1.0 to 2.1.1 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/21204
* chore(deps-dev): bump prettier from 3.4.2 to 3.8.3 by @dependabot[bot] in https://github.com/twentyhq/twenty/pull/21205
* fix(upgrade): resequence workflow step logs command by @ehconitin in https://github.com/twentyhq/twenty/pull/21213
* Set 200 code for post requests by @martmull in https://github.com/twentyhq/twenty/pull/21214
* `[AUDIT]` Run knip over twenty-server by @prastoin in https://github.com/twentyhq/twenty/pull/21159
* feat(ci): simplify visual regression dispatch to twenty-ui only by @charlesBochet in https://github.com/twentyhq/twenty/pull/21215

## New Contributors
* @fyujiwara made their first contribution in https://github.com/twentyhq/twenty/pull/20958
* @DeviSriSaiCharan made their first contribution in https://github.com/twentyhq/twenty/pull/20896
* @clivemeister made their first contribution in https://github.com/twentyhq/twenty/pull/20639
* @mvanhorn made their first contribution in https://github.com/twentyhq/twenty/pull/20973
* @ltianyi992 made their first contribution in https://github.com/twentyhq/twenty/pull/21036
* @LazyBouy made their first contribution in https://github.com/twentyhq/twenty/pull/20504
* @Nik1125 made their first contribution in https://github.com/twentyhq/twenty/pull/20319
* @8Maverik8 made their first contribution in https://github.com/twentyhq/twenty/pull/20937
* @nicolas-besnard made their first contribution in https://github.com/twentyhq/twenty/pull/20861
* @parshipcy made their first contribution in https://github.com/twentyhq/twenty/pull/21052
* @dev-kp-eloper made their first contribution in https://github.com/twentyhq/twenty/pull/21068
* @richroberts-prog made their first contribution in https://github.com/twentyhq/twenty/pull/21109
* @prakhartripath0001 made their first contribution in https://github.com/twentyhq/twenty/pull/21015
* @b3nito404 made their first contribution in https://github.com/twentyhq/twenty/pull/20176

**Full Changelog**: https://github.com/twentyhq/twenty/compare/v2.8.0...v2.9.0