Skip to content

Releases: twentyhq/twenty

twenty/v2.30.0

Choose a tag to compare

@twenty-pr twenty-pr released this 11 Aug 10:31
531361c

⚠️ Breaking changes

  • The GraphQL metadata API no longer uses nestjs-query cursor types. Remove ObjectConnection, FieldConnection, CursorPaging, and related cursor inputs from metadata queries and switch to the new resolver-based shape. (#23925) by @abdulrahmancodes
  • Server image security update: undici bumped from v6/v7 to v8 (potentially breaking for direct callers), plus js-yaml, sharp, brace-expansion, ip-address, and dompurify patched for critical and high CVEs. Self-hosters should update. (#23963) by @charlesBochet

🌟 Highlights

  • Hidden records no longer surface as chart labels through unfiltered relation joins. (#23369)
  • A new /chat mode keeps the conversation front and center with records opening as side-panel artifacts. (#23929)
  • Campaign email bodies now have a canvas editor with sections, columns, buttons, and image blocks. (#23657)
  • Views can now be displayed as a List, alongside table, board, and calendar. (#23829)
  • Records that no longer match an active filter disappear from the open table in real time. (#23858)
  • Opening and closing a currency field editor without typing no longer corrupts the stored amount. (#23874)

✨ New features

  • The runAgent API now accepts a messages array for multi-turn bot conversations alongside the existing single-prompt form. (#23395) by @abdulrahmancodes
  • Apps can now run an agent on behalf of a specific workspace member, scoping the run to that person's permissions. (#23470) by @abdulrahmancodes
  • Large-company signups now see an optional Cal.com call-booking step during onboarding, between the team invite and plan selection. (#23521) by @bosiraphael
  • The Slack bot now includes direct links to records it creates or surfaces, so you can open them from the reply. (#23539) by @abdulrahmancodes
  • Fireflies calls missed by webhooks can be backfilled via POST /fireflies/backfill; the work fans out as batched background jobs. (#23622) by @ehconitin
  • Campaign email bodies now open in a canvas editor with sections, columns, buttons, dividers, and image blocks that render to email-safe HTML per recipient. (#23657) by @ijreilly
  • Navigating away from the workspace setup chat now carries the conversation into the Ask AI side panel instead of losing it. (#23744) by @bosiraphael
  • The transcript provider for call recordings is now a workspace-admin setting. The default is Recall.ai; Gladia remains available for mixed-language calls. (#23789) by @ehconitin
  • Record pages can now show a field widget listing records two relation hops away — e.g. a Client page listing Transactions of the Client's Wallets. (#23815) by @FelixMalfait
  • A sending domain waiting on DKIM record propagation now shows as Pending instead of Failed in email domain settings. (#23818) by @ijreilly
  • Views can now be displayed as a List, alongside the existing Table, Board, and Calendar layouts. (#23829) by @neo773
  • The Slack bot now answers empty mentions and DMs with example prompts, and notifies lapsed threads rather than dropping them silently. (#23835) by @abdulrahmancodes
  • The bot's own mention is stripped wherever it appears in a Slack message, not just at the very start. (#23837) by @abdulrahmancodes
  • The Slack bot now uses Slack's native agent surface, gaining a built-in thinking indicator, suggested prompts, and thread titles. (#23838) by @abdulrahmancodes
  • A new /chat mode keeps the AI conversation in the main pane; records and views the agent surfaces open as side-panel artifacts next to the thread. (#23929) by @FelixMalfait
  • List-layout views now render as a proper list widget instead of silently falling through to a table renderer. (#23940) by @FelixMalfait
  • Recipient chips in the email composer can be dragged to reorder, moved across To/Cc/Bcc, range-selected with shift or cmd/ctrl, and deleted as a group. (#23947) by @FelixMalfait
  • The email composer header is restyled with flush rows, inline labels, and a clean divider — closer to a mail client than a settings form. (#23948) by @FelixMalfait

💅 Improvements & UX

  • A failed page chunk load no longer shows a raw browser error string in a snackbar. (#23571) by @bosiraphael
  • Microsoft Graph webhook lifecycle events now route correctly: subscriptionRemoved recreates the subscription, reauthorizationRequired renews it in place. (#23707) by @neo773
  • Onboarding no longer shows free-credit tags or reward prompts when billing is disabled on the instance. (#23717) by @bosiraphael
  • The Slack bot no longer calls the Slack API to identify itself on every channel-join event; the bot user id is cached at connect time. (#23726) by @abdulrahmancodes
  • Expired invitations are no longer treated as active and no longer count toward the onboarding invitation limit. (#23749) by @prastoin
  • Drag-and-drop across the app now uses a single consistent drop-position algorithm; table rows, Kanban cards, and tabs drop where you aim them. (#23752) by @git-init-priyanshu
  • Disconnecting a Slack workspace now releases the team claim so another Twenty workspace can connect to the same Slack team. (#23753) by @abdulrahmancodes
  • A new cross-workspace chat list in the admin panel (AI tab) shows all AI conversations, filterable by onboarding status, errors, and workspace. (#23757) by @bosiraphael
  • Dragged table rows and Kanban cards now share a consistent background and opacity treatment. (#23772) by @Bonapara
  • During workspace setup, only display name, subdomain, and logo can be changed; all other fields are locked until the workspace is activated. (#23781) by @prastoin
  • A stray ] that sometimes appeared after AI chat record chips is fixed. (#23798) by @bosiraphael
  • Recall call recordings that end due to bot-detection timeout are now processed normally instead of being marked as not recorded. (#23812) by @ehconitin
  • Streaming AI chat messages now render at constant cost per chunk instead of slowing down as the message grows. (#23831) by @FelixMalfait
  • The button that opens the credit package picker is renamed from 'Increase' to 'Manage'. (#23840) by @FelixMalfait
  • The active session list and 'Log out all devices' in Settings → Devices now apply only to the current workspace. (#23843) by @FelixMalfait
  • The bottom border of the last row in a record table is no longer missing. (#23846) by @FelixMalfait
  • Opening the Ask AI panel with a fast-model preselection no longer silently falls back to the smart model. (#23854) by @charlesBochet
  • Opening Monaco-backed editors (code logic, MCP settings, workflow code) no longer causes worker method errors from having two Monaco instances loaded. (#23855) by @FelixMalfait
  • Fonts are now served from Twenty's own servers; no browsing data is shared with Google Fonts when loading any Twenty page. (#23859) by @FelixMalfait
  • JSON-LD structured data in page heads is now properly escaped, closing a potential XSS path from crafted string values in page titles or names. (#23865) by @FelixMalfait
  • The HTML block preview sanitizer now removes template, slot, and portal elements to close a parser-differential gap. (#23866) by @FelixMalfait
  • Workspace subdomains can now be as short as one character (previously the minimum was three). (#23871) by @ijreilly
  • Invitees who complete onboarding are no longer routed to a dead-end workspace setup page. (#23881) by @bosiraphael
  • On mobile, the record page header shows only the record title; the object type and pagination count are hidden where there is not enough room. ([#23902](https://github.com/twentyhq/twenty/p...
Read more

sdk/v2.30.0

Choose a tag to compare

@twenty-pr twenty-pr released this 11 Aug 10:32
531361c

⚠️ Breaking changes

  • Remove any reference to clientConfig.subdomainMinLength — the field is deleted from ClientConfig in twenty-client-sdk. (#23915) by @ijreilly
  • Cursor-pagination types from the metadata API (FieldEdge, FieldFilter, CursorPaging, PageInfo, ConnectionCursor, and comparison inputs) are removed; switch to the offset-based equivalents in the updated schema. (#23925) by @abdulrahmancodes

🌟 Highlights

  • BREAKING: subdomainMinLength is removed from ClientConfig in twenty-client-sdk — drop any reference to clientConfig.subdomainMinLength. (#23915)
  • BREAKING: Cursor-pagination types from the metadata API (FieldEdge, FieldFilter, CursorPaging, PageInfo, ConnectionCursor) are removed following the nestjs-query migration. (#23925)
  • runAgent now accepts a messages array (alternating user/assistant turns) for multi-turn bot conversations; existing prompt-only calls are unchanged. (#23395)
  • runAgent can now execute on behalf of a specific workspace member, scoping the agent to that user's permissions. (#23470)
  • CALL_RECORDING_SUMMARY and CALL_RECORDING_TRANSCRIPT are registered as new widget types and appear in twenty-client-sdk generated types. (#23864)

✨ New features

  • Pass a messages array (alternating user/assistant turns) to runAgent for multi-turn bot conversations; the existing prompt field continues to work for one-shot calls. (#23395) by @abdulrahmancodes
  • New option on runAgent lets your app execute an agent as a specific workspace member, capping the agent's permissions to that user's role. (#23470) by @abdulrahmancodes
  • CALL_RECORDING_SUMMARY and CALL_RECORDING_TRANSCRIPT are now registered widget types; they appear in twenty-client-sdk generated type definitions. (#23864) by @ehconitin
  • User.isWorkspaceCreator is now a resolved GraphQL field, accessible through twenty-client-sdk generated types. (#23881) by @bosiraphael

💅 Improvements & UX

  • Minimum allowed subdomain length is now 1 character instead of 3; update any client-side subdomain validation that assumed the old floor. (#23871) by @ijreilly

🐛 Bug fixes

  • Logic function layer builds no longer die with out-of-memory errors when an app bundles large packages such as twenty-ui. (#23805) by @charlesBochet

⚡ Performance

  • Workspace metadata cache now uses compact storage behind a server flag, reducing GC pressure on heavy traffic; no API changes. (#23880) by @charlesBochet
🏗️ Internal changes (11)

🎉 New contributors

Full changelog (23 PRs)

Full Changelog: sdk/v2.27.0...sdk/v2.30.0

sdk/v2.29.0

Choose a tag to compare

@twenty-pr twenty-pr released this 11 Aug 10:32
7f0bae5

🌟 Highlights

  • runAgent now accepts a messages array for multi-turn conversations; pass either messages or prompt, not both — existing prompt-only callers are unchanged. (#23395)
  • Metadata client schemas regenerated with new CALL_RECORDING_SUMMARY and CALL_RECORDING_TRANSCRIPT widget-type enum values; update your generated client to pick them up. (#23864)
  • isWorkspaceCreator is now a resolvable field on the User type in the GraphQL schema. (#23881)

✨ New features

  • runAgent now accepts a messages array (user/assistant turns) alongside the existing prompt field — pass exactly one of the two; bot integrations can send thread history directly without wrapping it in a prompt string. (#23395) by @abdulrahmancodes

💅 Improvements & UX

  • Metadata client schemas now include CALL_RECORDING_SUMMARY and CALL_RECORDING_TRANSCRIPT in the widget-type and configuration-type enums; regenerate your metadata client to consume the new values. (#23864) by @ehconitin
  • isWorkspaceCreator is now exposed as a resolved field on User in the GraphQL schema; query it to gate creator-only flows in your integration without an extra round-trip. (#23881) by @bosiraphael
🏗️ Internal changes (9)

🎉 New contributors

Full changelog (14 PRs)

Full Changelog: sdk/v2.27.0...sdk/v2.29.0

twenty/v2.29.0

Choose a tag to compare

@twenty-pr twenty-pr released this 11 Aug 10:30
7f0bae5

✨ New features

💅 Improvements & UX

🐛 Bug fixes

  • fix: allow app-manifest RECORD_TABLE widgets to reference a view by universal identifier (#23634) by @thomtrp
  • fix(twenty-front): expand HTML preview viewport in DocumentViewer (#23668) (#23676) by @Shinu-Cherian
  • fix(front): show relation value chip (Me / record names) in advanced filters (#23718) by @charlesBochet
  • fix(settings): unbreak the AI tools table and validate page-level graphql documents (#23731) by @FelixMalfait
  • fix(front): only show Discard Draft when workflow has a published version (#23756) by @thomtrp
  • fix(workflow): reject if-else branches with a dangling filterGroupId (#23758) by @blockgroot
  • fix(twenty-front): stop field widget layout dropdown from crashing th… (#23784) by @FelixMalfait
  • fix(twenty-server): compose email from the caller's own connected account (#23793) by @charlesBochet
  • fix(twenty-server): stop the yarn-install Lambda from running out of memory (#23805) by @charlesBochet
  • fix(workflow): make core-consistency drift check trustworthy for rollout (#23807) by @thomtrp
  • fix(front): apply advanced filter value and operand edits after a fresh page load (#23819) by @charlesBochet
  • fix(twenty-front): keep auto-select model preselection instead of discarding it (#23854) by @charlesBochet
  • fix(front): run a single Monaco instance across the app (#23855) by @FelixMalfait
  • fix(twenty-server): notify SSE subscribers when an update leaves their filtered view (#23858) by @charlesBochet
  • fix(front): preserve currency decimals when opening the field editor (#23874) by @thomtrp

🔧 Developer & API

  • webhook subscriptions error h...
Read more

twenty/v2.28.0

Choose a tag to compare

@twenty-pr twenty-pr released this 11 Aug 10:30
829ef9d

✨ New features

  • feat(twenty-slack): link records and format the assistant reply footer (#23539) by @abdulrahmancodes
  • feat(slack): cache the Slack bot user id at connect time (#23726) by @abdulrahmancodes
  • feat(workflow): repair orphan core workflow versions via upgrade command (#23739) by @thomtrp
  • feat(server): export event-loop delay and workspace-cache recompute metrics (#23751) by @charlesBochet
  • feat(workflow): dispatch automated triggers from core behind a flag (#23775) by @thomtrp
  • feat(server): instrument the local metadata cache and cap heavy providers by entry count (#23778) by @charlesBochet

💅 Improvements & UX

🐛 Bug fixes

  • fix: allow app-manifest RECORD_TABLE widgets to reference a view by universal identifier (#23634) by @thomtrp
  • fix(twenty-front): expand HTML preview viewport in DocumentViewer (#23668) (#23676) by @Shinu-Cherian
  • fix(front): show relation value chip (Me / record names) in advanced filters (#23718) by @charlesBochet
  • fix(settings): unbreak the AI tools table and validate page-level graphql documents (#23731) by @FelixMalfait
  • fix(front): only show Discard Draft when workflow has a published version (#23756) by @thomtrp
  • fix(workflow): reject if-else branches with a dangling filterGroupId (#23758) by @blockgroot
  • fix(twenty-front): stop field widget layout dropdown from crashing th… (#23784) by @FelixMalfait
  • fix(twenty-server): compose email from the caller's own connected account (#23793) by @charlesBochet
  • fix(workflow): make core-consistency drift check trustworthy for rollout (#23807) by @thomtrp
  • fix(front): apply advanced filter value and operand edits after a fresh page load (#23819) by @charlesBochet

🔧 Developer & API

  • webhook subscriptions error handling (#23707) by @neo773
  • Accept a singleton or filter in the GraphQL filter walker (#23738) by @bosiraphael
  • Proxy API routes through the vite dev server to keep local dev same-origin (#23779) by @prastoin
🏗️ Internal changes (3)
  • chore(codeowners): guard .claude, .mcp.json and CLAUDE.md (#23734) by @prastoin
  • refactor(front): move workflow run step logs into workflow-actions (#23841) by @thomtrp
  • ci(pr-review): stop a skipped label dispatch from cancelling the open dispatch (#23856) by @charlesBochet

🎉 New contributors

Full changelog (76 PRs)
Read more

twenty/v2.27.0

Choose a tag to compare

@twenty-pr twenty-pr released this 04 Aug 11:29
66e0f62

✨ New features

  • feat(connections): add an onDisconnect lifecycle hook to connection providers (#23538) by @abdulrahmancodes
  • feat(workflow): route all version content readers through the flag-aware sources (#23583) by @thomtrp
  • feat(server): add role management tools for AI chat (#23613) by @FelixMalfait
  • feat(workflow): variable pickers for Search Records limit, offset and date filters (#23696) by @thomtrp
  • feat(slack): implement channel welcome message functionality (#23699) by @abdulrahmancodes

💅 Improvements & UX

  • Add captcha and throttling to the password reset link (#23372) by @bosiraphael
  • Keep leading + when filtering phones by calling code (#23546) by @thomtrp
  • Fix record title cell reopening on every page refresh (#23551) by @avonian
  • Messaging archived account fix (#23553) by @BOHEUS
  • Replace last-contact backfill with cursor-paginated per-record backfills (#23582) by @martmull
  • Use the fast model for the onboarding setup chat (#23586) by @bosiraphael
  • Improve the workspace setup kickoff prompt (#23594) by @bosiraphael
  • Fix calendar field picker state handling (#23595) by @Weiko
  • Make page layout tab layoutMode diffable and default standalone pages to vertical list (#23596) by @bosiraphael
  • v1.6.1 — fix(partners): scope Application RLS to the partner's own partnerUser (#23597) by @rashad
  • v1.6.0 — Partners: let partners set the regions they serve on My Profile (#23605) by @rashad
  • Harden Fireflies call synchronization lifecycle (#23610) by @ehconitin
  • Unwrap settings front components in the front component build (#23631) by @ehconitin
  • Fix TOTP validation ignoring the configured tolerance window (#23632) by @FelixMalfait
  • Add a roles standard skill for the AI chat agent (#23636) by @bosiraphael
  • Keep chart palette colors stable when series order changes (#23638) by @ehconitin
  • Remove shouldRunOnVersionUpgrade (#23641) by @martmull
  • Migrate web auth from localStorage token pairs to httpOnly cookie sessions (#23642) by @FelixMalfait
  • Fix ReconcileIndexViewUniversalIdentifier failing on occupied derived identifiers (#23647) by @prastoin
  • Remove noisy actor context injection logs (#23649) by @Weiko
  • Update slack app naming (#23650) by @martmull
  • Update record page layout card (#23654) by @Bonapara
  • Remove outdated index view pitfall from app agent docs (#23667) by @prastoin
  • Docs update - Microsoft integration (#23671) by @BOHEUS
  • Record and enforce per-user OAuth application authorizations (#23678) by @FelixMalfait
  • Bound an application by its own role as well as the user's (#23680) by @FelixMalfait
  • Classify Recall no-capture sub codes as NOT_RECORDED in call-recorder app (#23693) by @ehconitin
  • Classify OAuth refresh errors by reason instead of status code (#23705) by @neo773
  • Default workspaceMember openRecordIn when the workspace is not upgraded yet (#23723) by @FelixMalfait

🐛 Bug fixes

  • fix(ai-chat): show streaming activity during and between steps (#23581) by @etiennejouan
  • fix(front): reload record board groups when view groups change (#23637) by @thomtrp
  • fix(server): preserve null values in record update util (#23639) by @thomtrp
  • fix(server): stop FIND_RECORDS from silently ignoring its filter (#23640) by @thomtrp
  • fix: provision INDEX view fields for relations created in the same batch as their object (#23665) by @prastoin
  • fix(twenty-front): Scrolling and Dragging conflict on mobile devices (#23677) by @git-init-priyanshu
  • fix(server): catch application job enqueue throttle instead of failing the batch job (#23684) by @thomtrp
  • fix(server): scope personal favorite SSE events to their owner (#23712) by @thomtrp
  • fix(workflow): clear nextStepIds when converting a step to If/Else (#23714) by @thomtrp

🔧 Developer & API

  • Filter connected account webhook renewal to exclude accounts with failed authentication errors (#23694) by @neo773
  • Track connected account webhook subscription lifecycle metrics (#23710) by @neo773
🏗️ Internal changes (5)
Full changelog (77 PRs)
  • Add captcha and throttling to the password reset link (#23372) by @bosiraphael
  • feat(connections): add an onDisconnect lifecycle hook to connection providers (#23538) by @abdulrahmancodes
  • Keep leading + when filtering phones by calling code (#23546) by @thomtrp
  • Fix record title cell reopening on every page refresh (#23551) by @avonian
  • Messaging archived account fix (#23553) by @BOHEUS
  • refactor(navigation-menu-item): validate universal properties instead of ids (#23566) by @prastoin
  • fix(ai-chat): show streaming activity during and between steps (#23581) by @etiennejouan
  • Replace last-contact backfill with cursor-paginated per-record backfills (#23582) by @martmull
  • feat(workflow): route all version content readers through the flag-aware sources (#23583) by @thomtrp
  • Use the fast model for the onboarding setup chat (#23586) by @bosiraphael
  • Improve the workspace setup kickoff prompt (#23594) by @bosiraphael
  • Fix calendar field picker state handling (#23595) by @Weiko
  • Make page layout tab layoutMode diffable and default standalone pages to vertical list (#23596) by @bosiraphael
  • v1.6.1 — fix(partners): scope Application RLS to the partner's own partnerUser (#23597) by @rashad
  • i18n - translations (#23600) by @github-actions
  • i18n - docs translations (#23602) by @github-actions
  • i18n - translations (#23603) by @github-actions
  • chore: bump version to 2.27.0 (#23604) by @twenty-pr
  • v1.6.0 — Partners: let partners set the regions they serve on My Profile (#23605) by @rashad
  • i18n - docs translations (#23608) by @github-actions
  • Harden Fireflies call synchronization lifecycle (#23610) by @ehconitin
  • feat(server): add role management tools for AI chat (#23613) by @FelixMalfait
  • Move open-record-in to object metadata and member preference ([#23614](htt...
Read more

sdk/v2.27.0

Choose a tag to compare

@twenty-pr twenty-pr released this 04 Aug 11:30
66e0f62

✨ New features

💅 Improvements & UX

  • Add captcha and throttling to the password reset link (#23372) by @bosiraphael
  • Make page layout tab layoutMode diffable and default standalone pages to vertical list (#23596) by @bosiraphael
  • Unwrap settings front components in the front component build (#23631) by @ehconitin
  • Migrate web auth from localStorage token pairs to httpOnly cookie sessions (#23642) by @FelixMalfait
  • Remove outdated index view pitfall from app agent docs (#23667) by @prastoin
  • Record and enforce per-user OAuth application authorizations (#23678) by @FelixMalfait
Full changelog (9 PRs)
  • Add captcha and throttling to the password reset link (#23372) by @bosiraphael
  • feat(connections): add an onDisconnect lifecycle hook to connection providers (#23538) by @abdulrahmancodes
  • Make page layout tab layoutMode diffable and default standalone pages to vertical list (#23596) by @bosiraphael
  • chore: bump version to 2.27.0 (#23604) by @twenty-pr
  • Move open-record-in to object metadata and member preference (#23614) by @FelixMalfait
  • Unwrap settings front components in the front component build (#23631) by @ehconitin
  • Migrate web auth from localStorage token pairs to httpOnly cookie sessions (#23642) by @FelixMalfait
  • Remove outdated index view pitfall from app agent docs (#23667) by @prastoin
  • Record and enforce per-user OAuth application authorizations (#23678) by @FelixMalfait

Full Changelog: sdk/v2.26.0...sdk/v2.27.0

twenty/v2.26.0

Choose a tag to compare

@twenty-pr twenty-pr released this 31 Jul 12:05
b410294

⚠️ Breaking changes

  • [BREAKING-CHANGE] Centralize system View viewField side effect (#23081) by @prastoin
  • [breaking-change] fix(server): return runAgent execution failures as result errors (#23390) by @abdulrahmancodes

✨ New features

  • feat: Slack conversational assistant (#22984) by @abdulrahmancodes
  • feat(workflow): read workflow version content from core in the engine, behind a flag (#23403) by @thomtrp
  • feat(front): preview highlighted record in the search command bar (#23413) by @FelixMalfait
  • feat(workflow): pin concrete model on AI agent node creation and exclude interactive tools from workflow runs (#23447) by @etiennejouan
  • feat(ai-agent): lazy tool loading for the open-ended runAgent path (#23454) by @abdulrahmancodes
  • feat(ai-tool): resolve and default icons in AI metadata tools (#23480) by @etiennejouan
  • feat(workflow): make the flow atom authoritative for version content, read core behind a flag (#23499) by @thomtrp
  • feat(server): attach app attributes to application rate-limited metric (#23500) by @prastoin
  • feat(dashboard): extend number format option to bar, line and pie charts (#23505) by @ehconitin
  • feat(apps): add enqueueJob to run a logic function on the workers (#23527) by @martmull

💅 Improvements & UX

🐛 Bug fixes

  • fix(page-layout): render standalone rich text widget on record pages (#23435) by @thomtrp
  • fix(workflow): rename the trigger step through the dedicated mutation (#23450) by @thomtrp
  • fix: Decrypt encrypted front component variables (#23494) by @remihuigen
  • fix(server): stop the global catch-all filter from shadowing typed GraphQL exception filters (#23508) by @thomtrp
  • fix(workflow): use as draft with an existing draft and cross-object record page filters (#23524) by @thomtrp

🔧 Developer & API

  • Use client SDK /s dispatch for call-recorder own-route posts (#23558) by @ehconitin
🏗️ Internal changes (3)
  • test(workflow): cover the workflow core mirror end to end (#23434) by @thomtrp
  • ci(pr-review): label-only manual trigger, thin dispatcher (#23449) by @charlesBochet
  • docs: state v1.23 as prerequisite for cross-version upgrades (#23575) by @prastoin

🎉 New contributors

Full changelog (93 PRs)
Read more

sdk/v2.26.0

Choose a tag to compare

@twenty-pr twenty-pr released this 31 Jul 12:05
b410294

⚠️ Breaking changes

  • [BREAKING-CHANGE] Centralize system View viewField side effect (#23081) by @prastoin

✨ New features

  • feat(dashboard): extend number format option to bar, line and pie charts (#23505) by @ehconitin
  • feat(apps): add enqueueJob to run a logic function on the workers (#23527) by @martmull

💅 Improvements & UX

🎉 New contributors

Full changelog (8 PRs)
  • [BREAKING-CHANGE] Centralize system View viewField side effect (#23081) by @prastoin
  • Auto-start the workspace setup chat with a data model proposal (#23437) by @bosiraphael
  • chore: bump version to 2.26.0 (#23451) by @twenty-pr
  • feat(dashboard): extend number format option to bar, line and pie charts (#23505) by @ehconitin
  • System view tooling explicit params key naming (#23506) by @prastoin
  • feat(apps): add enqueueJob to run a logic function on the workers (#23527) by @martmull
  • Refresh billing state after ending trial period (#23534) by @FelixMalfait
  • Clarify application licensing and add trademark policy (#23564) by @FelixMalfait

Full Changelog: sdk/v2.25.0...sdk/v2.26.0

twenty/v2.25.0

Choose a tag to compare

@prastoin prastoin released this 29 Jul 08:19
f5da810

Release notes preview

🌟 Highlights

  • Relation field widgets on record pages can now display related records as a kanban board, calendar, or grouped table. (#23112)
  • Dashboard charts grouped by a relation field now show the related record's name instead of a raw database ID. (#23163)
  • Records that changed while disconnected now re-appear automatically on reconnect, without needing a page refresh. (#23357)

✨ New features

  • Full-page record tabs (Timeline, Tasks, Notes, Files, Emails, Calendar) now support drag-and-drop widget editing and behave consistently with the rest of the layout editor. (#23109) by @FelixMalfait
  • Relation field widgets on a record page can now render as a kanban board, calendar, or grouped table, scoped to that record's related data. (#23112) by @FelixMalfait
  • Dashboard charts grouped by a relation field now show the related record's display name instead of the raw database ID. (#23163) by @bosiraphael
  • Email settings now let you configure a display name for outgoing emails and manage your unsubscriber list. (#23180) by @neo773
  • The email composer moves to its own page, auto-saves drafts you can return to later, and adds a send-test-email option. (#23188) by @neo773
  • During workspace setup, the company is automatically enriched from People Data Labs so the AI assistant knows your company from its first reply. (#23199) by @bosiraphael
  • Logic function executions triggered by Call Recorder and Last Contact app events no longer consume workspace credits. (#23255) by @martmull
  • Applications can again expose a custom settings tab in their settings detail page. (#23256) by @martmull
  • Front components (dashboard widgets, side panel items, settings previews) now show a shimmering skeleton placeholder while loading instead of blank space. (#23261) by @bosiraphael
  • 'Me' filters now work for relation fields pointing to a workspace member (such as an account-owner field) in dashboard widget filters. (#23282) by @bosiraphael

💅 Improvements & UX

  • The onboarding 'Install your first apps' step only shows marketplace apps that have been vetted. (#23222) by @martmull
  • Clicking a link in a front component that leads to a different domain now shows a confirmation dialog before navigating away. (#23270) by @bosiraphael
  • The external-link confirmation dialog for front components has a new design with clearer copy and the destination URL shown as a pill. (#23404) by @bosiraphael
  • The record page card on mobile no longer has a rounded top-left corner and hairline border carried over from the desktop layout. (#23414) by @FelixMalfait
  • Folder items in the mobile navigation drawer no longer show grey corners around them. (#23425) by @FelixMalfait

🐛 Bug fixes

  • The admin panel no longer displays 'latest' as the latest version when DockerHub tag fetching fails; it now shows no version found. (#22885) by @Rehansanjay
  • The call recording bot now leaves a meeting when only other recording bots remain, rather than staying for up to 30 minutes. (#23053) by @martmull
  • Google and Microsoft sign-in no longer puts a long-lived refresh token in the redirect URL, browser history, or server access logs. (#23061) by @bosiraphael
  • Creating a record in a junction relation picker no longer shows the new record twice until the page is reloaded. (#23185) by @neo773
  • Front components no longer render a blank panel in Firefox; the structured-clone error that blocked rendering is now handled correctly. (#23213) by @bosiraphael
  • Application icons now display correctly after install and sync instead of falling back to initials avatars. (#23245) by @martmull
  • Agent tools now use the agent's assigned role permissions when reading or writing records, rather than the app's default role. (#23248) by @abdulrahmancodes
  • The message list member backfill upgrade command now runs correctly during a 2.25 upgrade. (#23271) by @prastoin
  • Upgrading a self-hosted instance from 2.23 to 2.24 no longer fails on startup with a missing keyValuePair.applicationId column error. (#23272) by @prastoin
  • AI chat threads that became permanently broken due to duplicate tool call IDs now work again on the next turn. (#23277) by @etiennejouan
  • Roles that explicitly deny access to system objects (messages, calendar events) now enforce that restriction; it was previously silently bypassed. (#23280) by @thomtrp
  • The agent role foreign-key migration now runs correctly during a 2.25 upgrade. (#23285) by @prastoin
  • AI chat no longer allows oversized tool outputs into conversation history; they are now capped or spilled to files. (#23286) by @etiennejouan
  • The navigation drawer collapse/expand button now has an accessible label for screen readers. (#23287) by @djadji-gueye
  • Workspace cleanup no longer times out; missing database indexes on page-layout foreign keys that caused sequential scans are now added. (#23289) by @etiennejouan
  • Workflow record-change triggers on morph relations no longer offer a phantom targetId output variable that doesn't exist. (#23290) by @thomtrp
  • Custom sidebar links of type PAGE_LAYOUT now open an edit panel when clicked in edit mode. (#23293) by @eeshsaxena
  • The core database now respects PG_POOL_MAX_CONNECTIONS instead of being capped at the node-postgres default of 10 connections. (#23322) by @Weiko
  • Transactional emails (workspace invites, password resets, email verifications) now have content again; they were being delivered with an empty body. (#23323) by @guillaume-flambard
  • Icon-only 'more options' buttons across settings pages now have accessible labels for screen readers. (#23325) by @guillaume-flambard
  • Opening a password reset link while already logged in no longer returns a FORBIDDEN error. (#23335) by @thomtrp
  • The layout editor and its entry points are now hidden for users whose role lacks the LAYOUTS permission. (#23343) by @Shinu-Cherian
  • App HTTP route triggers are now blocked for suspended workspaces instead of continuing to serve traffic. (#23347) by @Weiko
  • Records that changed while the SSE connection was down are re-fetched on reconnect, so live updates no longer go silent until a page refresh. (#23357) by @thomtrp
  • The onboarding flow no longer hangs indefinitely when a CSS chunk fails to preload, a regression that affected Mobile Safari. (#23359) by @bosiraphael
  • Stale-chunk auto-reload is now limited to once per 60 seconds, preventing infinite reload loops after a bad deploy. (#23362) by @bosiraphael
  • Apps using the runAgent API (such as call recorder) no longer receive a 'you are executing in a workflow' system prompt. (#23394) by @abdulrahmancodes
  • AI agent nodes scoped to a specific object no longer load CRUD tools for every object in the workspace, cutting prompt size dramatically. (#23400) by @etiennejouan
  • Token usage reported for AI runs no longer double-counts cache-creation tokens. (#23405) by @etiennejouan
  • The 'Add option' prompt in multiselect fields is now hidden from users who lack the data-model permission. (#23410) by @thomtrp
  • Installed application icons now display correctly across the UI instead of falling back to initials. (#23411) by @martmull
  • Single-widget tabs in the side panel and on mobile now render with correct padding instead of sitting flush against the edge. (#23412) by @FelixMalfait
  • The call recording bot's REC badge now renders as text in production instead of showing empty placeholder boxes. ([#23415](https...
Read more