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.applicationIdcolumn 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
targetIdoutput 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_CONNECTIONSinstead 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) by @ehconitin
- The inline 'create option' prompt in multiselect fields now works from record detail pages, not only the record index. (#23420) by @thomtrp
- Numeric input values in front components now display correctly; they were previously ignored. (#23421) by @bosiraphael
- Changing the object in a Search Records workflow step no longer silently resets the Limit and Offset values you had set. (#23423) by @thomtrp
- Expected AI chat interruptions (user abort, stream disconnected) no longer appear as errors in Sentry. (#23426) by @etiennejouan
- A 1-pixel gap visible between the view bar and the table header row on scaled displays is fixed. (#23441) by @FelixMalfait
ā” Performance
- PostgreSQL connection pool pressure (total, idle, waiting, and maximum connections) is now instrumented with metrics. (#23251) by @Weiko
- Concurrent database queries for nested relations are now capped, reducing peak database load on wide selections. (#23252) by @Weiko
- Pageview event writes to ClickHouse are now fire-and-forget, reducing tail latency on the metadata API. (#23274) by @Weiko
- Calendar and messaging stale-sync jobs now only queue recovery work for workspaces with stale channels, not every workspace. (#23321) by @Weiko
- Live stream count metrics now use a Redis sorted set instead of scanning the entire Redis keyspace. (#23326) by @Weiko
- Field metadata is cached during API result post-processing, cutting repeated lookups on large nested result sets. (#23353) by @Weiko
- The Google webhook OAuth client is reused across requests instead of re-downloading signing certificates each time. (#23361) by @Weiko
- API result handlers for fields of the same type are now deduplicated, preventing the same field from being processed multiple times. (#23364) by @Weiko
- Tool permission role checks now use the workspace cache instead of querying PostgreSQL on each catalog build. (#23366) by @Weiko
- Webhook reads (REST, GraphQL, webhook listing tool) now use the workspace cache, eliminating per-request database queries. (#23382) by @Weiko
- Role validation during user invite and role assignment now uses the workspace cache instead of querying PostgreSQL. (#23383) by @Weiko
- View entity lookups in mutation guards now use the workspace cache instead of querying PostgreSQL. (#23384) by @Weiko
- Partial B-tree indexes added on webhook subscription external IDs for messaging and calendar channels, removing sequential scans per notification. (#23386) by @Weiko
š§ Developer & API
- Agents can declare
roleUniversalIdentifierin their manifest to automatically receive a role on install, without post-install hooks. (#23206) by @abdulrahmancodes - New
updateWorkflowVersionTriggerGraphQL mutation for saving workflow triggers; generic CRUD paths that bypassed draft validation are now closed. (#23207) by @thomtrp - Apps can declare
defineUninstallLogicFunctionto run cleanup logic (such as deleting provider-side resources) before the app is removed. (#23227) by @martmull - Server route resolvers can now return a synchronous response to the caller, enabling webhook verification handshakes like Slack's url_verification. (#23233) by @abdulrahmancodes
- The
typefield onPageLayoutManifestis now typed asPageLayoutTypeinstead ofstring, catching invalid values at compile time. (#23375) by @prastoin - Workspace migration delete payloads now expose universal identifiers only, making migration snapshots portable across workspaces. (#23377) by @prastoin
- New
application:installCLI command installs an app on all workspaces where it is not yet installed. (#23430) by @martmull
šļø Internal changes (47)
- feat(website): live community stats, drop hard-coded fallback (#23047) by @mabdullahabaid
- message list member backfill (#23176) by @neo773
- TDD: twenty-ui render coverage in the front-component sandbox ā golden tests cataloging every sandbox gap (fully green) (#23203) by @prastoin
- Converge drag and drop on shared dnd-kit primitives, remove @hello-pangea/dnd (#23211) by @FelixMalfait
- ci: run upgrade mutation guard in the merge queue against main (#23216) by @prastoin
- feat(partners): require Twenty experience on apply, drop Cal success (#23223) by @rashad
- v1.4.0 ā Raise partner bar: Twenty experience fields + triage (#23224) by @rashad
- Consolidate per-queue worker tuning in one explicit config file (#23229) by @martmull
- fix: bump fast-uri to 3.1.4 (Dependabot) (#23234) by @mabdullahabaid
- fix: bump immutable to 5.1.8 (Dependabot) (#23235) by @mabdullahabaid
- fix: bump linkify-it to 5.0.2 (Dependabot) (#23236) by @mabdullahabaid
- fix: bump dompurify to 3.4.12 (Dependabot) (#23237) by @mabdullahabaid
- fix: bump svgo to 3.3.4 (Dependabot) (#23238) by @mabdullahabaid
- fix: bump body-parser to 1.20.6 / 2.3.0 (Dependabot) (#23239) by @mabdullahabaid
- fix: bump brace-expansion 1.x/2.x lines (Dependabot) (#23240) by @mabdullahabaid
- feat(workflow): mirror all workflowVersion writes to core in-transaction, drop async create/update dual-write (#23243) by @thomtrp
- test: cover uninstall logic function hook execution (#23249) by @martmull
- Extract front component host wrapper into hooks (#23262) by @bosiraphael
- Unify remote element style declarations (#23263) by @bosiraphael
- Documentation update ( Legal FAQ and more ) (#23266) by @BOHEUS
- fix: lift axios/tar/brace-expansion/body-parser across app lockfiles (Dependabot) (#23267) by @mabdullahabaid
- ci: report required status checks on merge_group so the queue isn't blocked (#23275) by @prastoin
- ci: report ci-shared-status-check on merge_group (#23276) by @prastoin
- fix(ci): diff upgrade mutation guard against the merged base, not stale PR base (#23278) by @prastoin
- chore(self-hosting): upgrade to latest twenty CLI tooling (#23279) by @martmull
- fix: lift axios/tar/brace-expansion/body-parser in server fixture lockfiles (Dependabot) (#23291) by @mabdullahabaid
- v1.4.0 ā partners: auto-link partner user on workspaceMember.created (#23295) by @rashad
- docs: set correct credit cost for workflow steps and app logic functions (#23297) by @martmull
- chore: remove twenty-companion dead code (#23310) by @prastoin
- fix: bump tar 7.5.20 - 7.5.21 in the root lockfile (Dependabot) (#23330) by @mabdullahabaid
- fix: bump shell-quote 1.8.4 - 1.10.0 (Dependabot) (#23331) by @mabdullahabaid
- fix: bump tar to 7.5.21 across app lockfiles (Dependabot) (#23332) by @mabdullahabaid
- fix: bump tar and brace-expansion in seed-dependencies (Dependabot) (#23333) by @mabdullahabaid
- fix: bump postcss to 8.5.22 across app lockfiles (Dependabot) (#23340) by @mabdullahabaid
- v1.5.1 ā partners: Discord notification for client briefs + referring-partner attribution (#23344) by @rashad
- fix: bump brace-expansion to 5.0.8 in app lockfiles (Dependabot) (#23346) by @mabdullahabaid
- Fireflies: upgrade to twenty-sdk 2.23 (#23349) by @ehconitin
- feat(website): send the referring partner with a client brief (#23351) by @rashad
- feat(workflow): mirror version delete/restore/destroy to core transactionally (#23356) by @thomtrp
- feat(workflow): remove async workflowVersion core dual-write listener (#23374) by @thomtrp
- Organize public apps properly (#23376) by @martmull
- update exa twenty cli tools (#23379) by @martmull
- fix: lift root postcss to 8.5.23 (Dependabot) (#23396) by @mabdullahabaid
- ci(pr-review): single PR review dispatcher (#23418) by @charlesBochet
- use legacy validate build and run for standard metadatas (#23419) by @prastoin
- Message campaign backfill search field metadata (#23428) by @prastoin
- Message campaign backfill method sort view field (#23433) by @prastoin
š New contributors
- @Rehansanjay made their first contribution in #22885
- @djadji-gueye made their first contribution in #23287
- @eeshsaxena made their first contribution in #23293
- @guillaume-flambard made their first contribution in #23325
- @Shinu-Cherian made their first contribution in #23343
Full changelog (156 PRs)
- fix(admin): prevent fallback to 'latest' string when dockerhub tags c⦠(#22885) by @Rehansanjay
- feat(website): live community stats, drop hard-coded fallback (#23047) by @mabdullahabaid
- fix(call-recorder): leave call when only recording bots remain (#23053) by @martmull
- Stop leaking the refresh token in the social SSO redirect URL (#23061) by @bosiraphael
- Make solo tabs first-class: derived presentation, native editing, unified widget header (#23109) by @FelixMalfait
- feat: kanban, calendar and grouped-table layouts for relation field widgets (#23112) by @FelixMalfait
- Show relation record labels instead of UUIDs in dashboard charts (#23163) by @bosiraphael
- message list member backfill (#23176) by @neo773
- Feat/email settings v2 (#23180) by @neo773
- fix(front): duplicate junction chip after Add New in relation picker (#23185) by @neo773
- Feat/email composer improvements (#23188) by @neo773
- i18n - website translations (#23196) by @github-actions
- Enrich workspace company via People Data Labs during onboarding (#23199) by @bosiraphael
- TDD: twenty-ui render coverage in the front-component sandbox ā golden tests cataloging every sandbox gap (fully green) (#23203) by @prastoin
- feat: agent roleUniversalIdentifier for manifest-driven role assignment (#23206) by @abdulrahmancodes
- feat(workflow): dedicated updateWorkflowVersionTrigger mutation + close version CRUD holes (#23207) by @thomtrp
- Converge drag and drop on shared dnd-kit primitives, remove @hello-pangea/dnd (#23211) by @FelixMalfait
- Replace admin app rollout buttons with upgrade-application CLI command (#23212) by @martmull
- Fix front components rendering a blank panel in Firefox (#23213) by @bosiraphael
- ci: run upgrade mutation guard in the merge queue against main (#23216) by @prastoin
- chore: bump version to 2.25.0 (#23221) by @twenty-pr
- Only suggest vetted apps in onboarding install step (#23222) by @martmull
- feat(partners): require Twenty experience on apply, drop Cal success (#23223) by @rashad
- v1.4.0 ā Raise partner bar: Twenty experience fields + triage (#23224) by @rashad
- i18n - translations (#23226) by @github-actions
- Add defineUninstallLogicFunction hook for applications (#23227) by @martmull
- Consolidate per-queue worker tuning in one explicit config file (#23229) by @martmull
- i18n - translations (#23230) by @github-actions
- Let server route resolvers answer the caller synchronously (#23233) by @abdulrahmancodes
- fix: bump fast-uri to 3.1.4 (Dependabot) (#23234) by @mabdullahabaid
- fix: bump immutable to 5.1.8 (Dependabot) (#23235) by @mabdullahabaid
- fix: bump linkify-it to 5.0.2 (Dependabot) (#23236) by @mabdullahabaid
- fix: bump dompurify to 3.4.12 (Dependabot) (#23237) by @mabdullahabaid
- fix: bump svgo to 3.3.4 (Dependabot) (#23238) by @mabdullahabaid
- fix: bump body-parser to 1.20.6 / 2.3.0 (Dependabot) (#23239) by @mabdullahabaid
- fix: bump brace-expansion 1.x/2.x lines (Dependabot) (#23240) by @mabdullahabaid
- chore: sync AI model catalog from models.dev (#23242) by @github-actions
- feat(workflow): mirror all workflowVersion writes to core in-transaction, drop async create/update dual-write (#23243) by @thomtrp
- i18n - docs translations (#23244) by @github-actions
- Fix application logos resolving to null on install and sync (#23245) by @martmull
- i18n - translations (#23246) by @github-actions
- i18n - translations (#23247) by @github-actions
- fix: honor agent rolePermissionConfig in record CRUD (#23248) by @abdulrahmancodes
- test: cover uninstall logic function hook execution (#23249) by @martmull
- i18n - docs translations (#23250) by @github-actions
- Add PostgreSQL connection pool pressure metrics (#23251) by @Weiko
- Cap nested relation query concurrency (#23252) by @Weiko
- i18n - translations (#23253) by @github-actions
- feat(billing): make logic function executions free for exempt apps (#23255) by @martmull
- feat(applications): restore the application custom settings tab (#23256) by @martmull
- i18n - docs translations (#23258) by @github-actions
- Add front component skeleton loader (#23261) by @bosiraphael
- Extract front component host wrapper into hooks (#23262) by @bosiraphael
- Unify remote element style declarations (#23263) by @bosiraphael
- Documentation update ( Legal FAQ and more ) (#23266) by @BOHEUS
- fix: lift axios/tar/brace-expansion/body-parser across app lockfiles (Dependabot) (#23267) by @mabdullahabaid
- i18n - translations (#23268) by @github-actions
- i18n - translations (#23269) by @github-actions
- Warn users before front components navigate to an external site (#23270) by @bosiraphael
- fix: move message list member backfill command to 2.25 (#23271) by @prastoin
- fix(server): repair missing keyValuePair.applicationId on 2.23 upgrades (#23272) by @prastoin
- Configure async ClickHouse inserts for pageview events (#23274) by @Weiko
- ci: report required status checks on merge_group so the queue isn't blocked (#23275) by @prastoin
- ci: report ci-shared-status-check on merge_group (#23276) by @prastoin
- fix(ai-chat): stop duplicate tool_use ids from bricking threads (#23277) by @etiennejouan
- fix(ci): diff upgrade mutation guard against the merged base, not stale PR base (#23278) by @prastoin
- chore(self-hosting): upgrade to latest twenty CLI tooling (#23279) by @martmull
- Fix system objects bypassing role object permission overrides (#23280) by @thomtrp
- i18n - translations (#23281) by @github-actions
- Support workspace member Me filter for relation fields in dashboards (#23282) by @bosiraphael
- i18n - translations (#23283) by @github-actions
- i18n - translations (#23284) by @github-actions
- fix: move add-agent-foreign-key-to-role-target instance command to 2.25 (#23285) by @prastoin
- fix(ai-chat) fix AI chat tool-output spill leaks: spill learn_tools, cap navigation tools, truncate on spill failure (#23286) by @etiennejouan
- fix(a11y): add aria-label to navigation drawer collapse button (WCAG ⦠(#23287) by @djadji-gueye
- i18n - translations (#23288) by @github-actions
- fix(server): index page-layout FKs to fix workspace cleanup timeout (#23289) by @etiennejouan
- Fix phantom targetId field in workflow triggers for morph relations (#23290) by @thomtrp
- fix: lift axios/tar/brace-expansion/body-parser in server fixture lockfiles (Dependabot) (#23291) by @mabdullahabaid
- i18n - docs translations (#23292) by @github-actions
- fix(workspace): open edit panel for PAGE_LAYOUT sidebar items (#23293) by @eeshsaxena
- v1.4.0 ā partners: auto-link partner user on workspaceMember.created (#23295) by @rashad
- docs: set correct credit cost for workflow steps and app logic functions (#23297) by @martmull
- chore: sync AI model catalog from models.dev (#23298) by @github-actions
- chore: remove twenty-companion dead code (#23310) by @prastoin
- i18n - translations (#23313) by @github-actions
- i18n - translations (#23315) by @github-actions
- Filter stale sync workspaces by active channels (#23321) by @Weiko
- fix: apply configured pool size to core database (#23322) by @Weiko
- fix(emails): bump @react-email/render to ^2.0.6 to fix empty transactional email bodies (#23323) by @guillaume-flambard
- i18n - docs translations (#23324) by @github-actions
- fix(front): add accessible labels to icon-only options dropdown triggers (#23325) by @guillaume-flambard
- Replace Redis key scanning with sorted-set event stream tracking (#23326) by @Weiko
- i18n - translations (#23328) by @github-actions
- fix: bump tar 7.5.20 - 7.5.21 in the root lockfile (Dependabot) (#23330) by @mabdullahabaid
- fix: bump shell-quote 1.8.4 - 1.10.0 (Dependabot) (#23331) by @mabdullahabaid
- fix: bump tar to 7.5.21 across app lockfiles (Dependabot) (#23332) by @mabdullahabaid
- fix: bump tar and brace-expansion in seed-dependencies (Dependabot) (#23333) by @mabdullahabaid
- Fix: password reset link returns FORBIDDEN for logged-in users (#21248) (#23335) by @thomtrp
- i18n - translations (#23336) by @github-actions
- i18n - docs translations (#23338) by @github-actions
- fix: bump postcss to 8.5.22 across app lockfiles (Dependabot) (#23340) by @mabdullahabaid
- fix(twenty-front): hide layout editor UI when SystemPermissionFlag.LAYOUTS is missing (#23303) (#23343) by @Shinu-Cherian
- v1.5.1 ā partners: Discord notification for client briefs + referring-partner attribution (#23344) by @rashad
- fix: bump brace-expansion to 5.0.8 in app lockfiles (Dependabot) (#23346) by @mabdullahabaid
- fix: block route triggers for suspended workspaces (#23347) by @Weiko
- i18n - website translations (#23348) by @github-actions
- Fireflies: upgrade to twenty-sdk 2.23 (#23349) by @ehconitin
- feat(website): send the referring partner with a client brief (#23351) by @rashad
- i18n - translations (#23352) by @github-actions
- Cache field metadata while processing common query results (#23353) by @Weiko
- feat(workflow): mirror version delete/restore/destroy to core transactionally (#23356) by @thomtrp
- fix(sse): resync records on reconnect and recover from silent query listener errors (#23357) by @thomtrp
- Fix stuck onboarding route on failed chunk preload (#23359) by @bosiraphael
- i18n - translations (#23360) by @github-actions
- perf: reuse Google webhook OAuth client (#23361) by @Weiko
- Guard stale chunk auto-reload against loops (#23362) by @bosiraphael
- Dedupe common result handlers (#23364) by @Weiko
- perf: deduplicate tool permission role loads (#23366) by @Weiko
- i18n - translations (#23367) by @github-actions
- feat(workflow): remove async workflowVersion core dual-write listener (#23374) by @thomtrp
- Type PageLayout manifest type prop with PageLayoutType (#23375) by @prastoin
- Organize public apps properly (#23376) by @martmull
- fix(workspace-migration): stop leaking workspace ids in delete action payloads (#23377) by @prastoin
- update exa twenty cli tools (#23379) by @martmull
- i18n - docs translations (#23381) by @github-actions
- perf: use cache for webhook reads (#23382) by @Weiko
- perf: use cache for role validation (#23383) by @Weiko
- perf: use cache for view entity lookups (#23384) by @Weiko
- Add indexes for channel webhook subscription external IDs (#23386) by @Weiko
- i18n - docs translations (#23389) by @github-actions
- fix(ai-agent): use a non-workflow base system prompt for programmatic agent runs (#23394) by @abdulrahmancodes
- fix: lift root postcss to 8.5.23 (Dependabot) (#23396) by @mabdullahabaid
- fix(ai-node) - scope AI agent node database tools to explicitly granted objects (#23400) by @etiennejouan
- Redesign the external link popup for front components (#23404) by @bosiraphael
- fix(ai): stop double-counting cache-creation tokens in reported token totals (#23405) by @etiennejouan
- i18n - translations (#23409) by @github-actions
- fix: hide add-select-option prompt for users without data model permission (#23410) by @thomtrp
- fix(applications): display the installed application icon (#23411) by @martmull
- fix(page-layout): let the column surface win over the solo presentation (#23412) by @FelixMalfait
- Remove ugly page card top-left rounded corner on mobile (#23414) by @FelixMalfait
- Fix call-recorder REC badge rendering as empty boxes (#23415) by @ehconitin
- i18n - translations (#23417) by @github-actions
- ci(pr-review): single PR review dispatcher (#23418) by @charlesBochet
- use legacy validate build and run for standard metadatas (#23419) by @prastoin
- fix: make add-select-option work on record detail pages (#23420) by @thomtrp
- Fix numeric controlled input values in front components (#23421) by @bosiraphael
- fix(workflow): keep Limit and Offset when changing the Search Records object (#23423) by @thomtrp
- Remove grey corners around navigation menu items on mobile (#23425) by @FelixMalfait
- fix(ai-chat): enrich zero-output stream captures and keep client-error exceptions out of Sentry (#23426) by @etiennejouan
- Message campaign backfill search field metadata (#23428) by @prastoin
- feat(server): add application:install command (#23430) by @martmull
- i18n - translations (#23432) by @github-actions
- Message campaign backfill method sort view field (#23433) by @prastoin
- Replace the onboarding AI chat feature flag with an environment variable (#23439) by @bosiraphael
- Fix 1px gap above the record table header (#23441) by @FelixMalfait
Full Changelog: twenty/v2.24.0...twenty/v2.25.0