twenty/v2.45.0

HumanAIGC/Cloth2Textwenty/v2.45.0Oct 5, 2026by twenty-pr[bot]

Upgrading?

AI Summary

Server update implementing record-level sharing, validation rules, and systemic application security guards.

Key Highlights

  • Record-level sharing implementation (5 parts)
  • Validation rule form UI
  • Systemic application ownership guard
  • UI migration (breadcrumbs, number steppers)

Breaking Changes

  • Remove the compatibility code kept for the 2.44 rollout

New Features

  • Logic function logging improvements
  • Verify front component checksums
  • 3D background for onboarding
  • Advanced filter row controls migration
  • Workflow and import pickers migration
  • Build find tool orderBy schema from object fields
  • Record-level sharing restrictions and permissions
  • Validation rule form (1/5) render field chips
  • Validation rule form (2/5) MenuItem suggestions

Full Release Notes

<!-- generated-release-notes v1 -->

## ⚠️ Breaking changes

- [BREAKING_CHANGE] chore: remove the compatibility code kept for the 2.44 rollout ([#27021](https://github.com/twentyhq/twenty/pull/27021)) by @FelixMalfait

## ✨ New features

- feat(logic-function): identify the function in live logic function logs ([#27079](https://github.com/twentyhq/twenty/pull/27079)) by @Weiko

## 💅 Improvements & UX

- Verify front component checksums before execution ([#26454](https://github.com/twentyhq/twenty/pull/26454)) by @bosiraphael
- [Onboarding 9/10] Add 3D background ([#26784](https://github.com/twentyhq/twenty/pull/26784)) by @Bonapara
- improve the limits organization plan display ([#26915](https://github.com/twentyhq/twenty/pull/26915)) by @Bonapara
- Migrate advanced filter row controls ([#26961](https://github.com/twentyhq/twenty/pull/26961)) by @bosiraphael
- Share one billing entitlement check across settings and logs ([#26972](https://github.com/twentyhq/twenty/pull/26972)) by @Bonapara
- Unify shortcut formatting and presentation ([#26973](https://github.com/twentyhq/twenty/pull/26973)) by @bosiraphael
- Move mobile navigation into its frontend owner ([#26992](https://github.com/twentyhq/twenty/pull/26992)) by @bosiraphael
- Migrate workflow and import pickers ([#26999](https://github.com/twentyhq/twenty/pull/26999)) by @bosiraphael
- Share Breadcrumb navigation in Twenty UI ([#27001](https://github.com/twentyhq/twenty/pull/27001)) by @bosiraphael
- Build the find tool orderBy schema from the object's fields ([#27010](https://github.com/twentyhq/twenty/pull/27010)) by @FelixMalfait
- Only offer Export records on index pages ([#27017](https://github.com/twentyhq/twenty/pull/27017)) by @FelixMalfait
- Keep the Last Contact app's fields off the record timeline ([#27019](https://github.com/twentyhq/twenty/pull/27019)) by @FelixMalfait
- [Onboarding 9/10 follow-up] Keep the 3D background off the onboarding critical path ([#27023](https://github.com/twentyhq/twenty/pull/27023)) by @etiennejouan
- Drop legacy core campaignDelivery and messageSuppression tables ([#27025](https://github.com/twentyhq/twenty/pull/27025)) by @FelixMalfait
- Share NumberStepper across settings ([#27028](https://github.com/twentyhq/twenty/pull/27028)) by @bosiraphael
- Share progress rings and metric rows ([#27031](https://github.com/twentyhq/twenty/pull/27031)) by @bosiraphael
- Move ImageInput into Twenty UI ([#27039](https://github.com/twentyhq/twenty/pull/27039)) by @bosiraphael
- Move ExpandableList into Twenty UI as OverflowingList ([#27040](https://github.com/twentyhq/twenty/pull/27040)) by @bosiraphael
- Record-level sharing 1/5: restrict records of objects open by default ([#27045](https://github.com/twentyhq/twenty/pull/27045)) by @FelixMalfait
- Prevent stale credentials in IMAP input ([#27048](https://github.com/twentyhq/twenty/pull/27048)) by @BOHEUS
- Let applications and workflows start conversations in a member's chats ([#27049](https://github.com/twentyhq/twenty/pull/27049)) by @FelixMalfait
- Restore appearance card design ([#27051](https://github.com/twentyhq/twenty/pull/27051)) by @bosiraphael
- Ship junction relations and remove IS_JUNCTION_RELATIONS_ENABLED ([#27053](https://github.com/twentyhq/twenty/pull/27053)) by @FelixMalfait
- Record-level sharing 2/5: share records beyond the recipient's role ([#27054](https://github.com/twentyhq/twenty/pull/27054)) by @FelixMalfait
- Run application workflows with the owning application's permissions ([#27055](https://github.com/twentyhq/twenty/pull/27055)) by @thomtrp
- Record-level sharing 3/5: Share on every object, panel and object settings ([#27057](https://github.com/twentyhq/twenty/pull/27057)) by @FelixMalfait
- Record-level sharing 4/5: All records permission and ownership transfer ([#27058](https://github.com/twentyhq/twenty/pull/27058)) by @FelixMalfait
- Render core workflow versions as command menu items ([#27062](https://github.com/twentyhq/twenty/pull/27062)) by @thomtrp
- Remove the See Version command menu item from workflow runs ([#27063](https://github.com/twentyhq/twenty/pull/27063)) by @thomtrp
- Deprecate `authContext` in favor of `RawAuthContext` ( currently type proxy ) ([#27067](https://github.com/twentyhq/twenty/pull/27067)) by @BOHEUS
- Record-level sharing 5: one row access policy for queries, events and writes ([#27068](https://github.com/twentyhq/twenty/pull/27068)) by @FelixMalfait
- Keep email and calendar steps out of application workflows ([#27072](https://github.com/twentyhq/twenty/pull/27072)) by @thomtrp
- Make app scaffolding reusable and fix template typechecking ([#27073](https://github.com/twentyhq/twenty/pull/27073)) by @Weiko
- Systemic application registration ownership guard ([#27074](https://github.com/twentyhq/twenty/pull/27074)) by @prastoin
- Validation rule form (1/5): render field chips with the shared Chip ([#27090](https://github.com/twentyhq/twenty/pull/27090)) by @thomtrp
- Validation rule form (2/5): MenuItem suggestion rows ([#27091](https://github.com/twentyhq/twenty/pull/27091)) by @thomtrp
- Validation rule form (3/5): suggestion details like the design ([#27092](https://github.com/twentyhq/twenty/pull/27092)) by @thomtrp
- Validation rule form (4/5): condition in one preview card ([#27093](https://github.com/twentyhq/twenty/pull/27093)) by @thomtrp

## 🐛 Bug fixes

- fix: harden two-factor authentication against impersonation and OTP guessing ([#26583](https://github.com/twentyhq/twenty/pull/26583)) by @abdulrahmancodes
- fix(apps): pin the media-notes example to published SDK versions ([#27011](https://github.com/twentyhq/twenty/pull/27011)) by @Weiko
- fix(front): keep disabled sortable widgets accessible ([#27015](https://github.com/twentyhq/twenty/pull/27015)) by @FelixMalfait
- fix(workflow): show the selected count on the core workflows index ([#27016](https://github.com/twentyhq/twenty/pull/27016)) by @thomtrp
- fix(front): See Workflow from the workflow runs table and hide See Version with core workflows ([#27022](https://github.com/twentyhq/twenty/pull/27022)) by @thomtrp
- fix(server): release the migration runner connection before failure cleanup ([#27024](https://github.com/twentyhq/twenty/pull/27024)) by @charlesBochet
- fix(workflow): polish the core workflows index and its command menu ([#27066](https://github.com/twentyhq/twenty/pull/27066)) by @thomtrp
- fix(ai-chat): strip NUL bytes from message parts before persisting ([#27101](https://github.com/twentyhq/twenty/pull/27101)) by @etiennejouan
- fix(settings): role save onSuccess, saving state and permissions fallback ([#27103](https://github.com/twentyhq/twenty/pull/27103)) by @FelixMalfait
- fix(permissions): keep row access conditions outside user WHERE expressions ([#27105](https://github.com/twentyhq/twenty/pull/27105)) by @FelixMalfait

## ⚡ Performance

- perf: reduce relation assignment and ORM hydration overhead ([#27060](https://github.com/twentyhq/twenty/pull/27060)) by @FelixMalfait

## 🔧 Developer & API

- POC: define application workflows through the SDK ([#26662](https://github.com/twentyhq/twenty/pull/26662)) by @thomtrp

<details>
<summary>🏗️ Internal changes (13)</summary>

- chore(server): bump @nestjs packages to 11.2.6, drop multer resolution ([#27013](https://github.com/twentyhq/twenty/pull/27013)) by @mabdullahabaid
- chore(server): remove service unit specs ([#27020](https://github.com/twentyhq/twenty/pull/27020)) by @charlesBochet
- chore: remove useless and stale comments ([#27026](https://github.com/twentyhq/twenty/pull/27026)) by @charlesBochet
- chore: strict comment pass on recently touched files ([#27027](https://github.com/twentyhq/twenty/pull/27027)) by @charlesBochet
- refactor(usage-limit): group quota consumption rows by unit ([#27037](https://github.com/twentyhq/twenty/pull/27037)) by @etiennejouan
- chore: remove IS_UNIQUE_INDEXES_ENABLED feature flag ([#27052](https://github.com/twentyhq/twenty/pull/27052)) by @FelixMalfait
- chore(server): drop the v2 suffix from the workspace pool metric names ([#27056](https://github.com/twentyhq/twenty/pull/27056)) by @charlesBochet
- chore(security): bump axios to 1.20.0 everywhere for the September advisory batch ([#27077](https://github.com/twentyhq/twenty/pull/27077)) by @mabdullahabaid
- chore(security): bump brace-expansion to fixed versions everywhere ([#27086](https://github.com/twentyhq/twenty/pull/27086)) by @mabdullahabaid
- chore(security): bump ip-address to 10.7.2 everywhere ([#27095](https://github.com/twentyhq/twenty/pull/27095)) by @mabdullahabaid
- chore(security): bump piscina to 4.9.4 ([#27098](https://github.com/twentyhq/twenty/pull/27098)) by @mabdullahabaid
- chore(security): bump @xhmikosr/decompress to 11.1.4 ([#27100](https://github.com/twentyhq/twenty/pull/27100)) by @mabdullahabaid
- chore(permissions): remove dead and duplicated server permission code ([#27106](https://github.com/twentyhq/twenty/pull/27106)) by @FelixMalfait

</details>

<details>
<summary>Full changelog (68 PRs)</summary>

- Verify front component checksums before execution ([#26454](https://github.com/twentyhq/twenty/pull/26454)) by @bosiraphael
- fix: harden two-factor authentication against impersonation and OTP guessing ([#26583](https://github.com/twentyhq/twenty/pull/26583)) by @abdulrahmancodes
- POC: define application workflows through the SDK ([#26662](https://github.com/twentyhq/twenty/pull/26662)) by @thomtrp
- [Onboarding 9/10] Add 3D background ([#26784](https://github.com/twentyhq/twenty/pull/26784)) by @Bonapara
- improve the limits organization plan display ([#26915](https://github.com/twentyhq/twenty/pull/26915)) by @Bonapara
- Migrate advanced filter row controls ([#26961](https://github.com/twentyhq/twenty/pull/26961)) by @bosiraphael
- Share one billing entitlement check across settings and logs ([#26972](https://github.com/twentyhq/twenty/pull/26972)) by @Bonapara
- Unify shortcut formatting and presentation ([#26973](https://github.com/twentyhq/twenty/pull/26973)) by @bosiraphael
- Move mobile navigation into its frontend owner ([#26992](https://github.com/twentyhq/twenty/pull/26992)) by @bosiraphael
- Migrate workflow and import pickers ([#26999](https://github.com/twentyhq/twenty/pull/26999)) by @bosiraphael
- Share Breadcrumb navigation in Twenty UI ([#27001](https://github.com/twentyhq/twenty/pull/27001)) by @bosiraphael
- chore: bump version to 2.45.0 ([#27009](https://github.com/twentyhq/twenty/pull/27009)) by @twenty-pr
- Build the find tool orderBy schema from the object's fields ([#27010](https://github.com/twentyhq/twenty/pull/27010)) by @FelixMalfait
- fix(apps): pin the media-notes example to published SDK versions ([#27011](https://github.com/twentyhq/twenty/pull/27011)) by @Weiko
- chore(server): bump @nestjs packages to 11.2.6, drop multer resolution ([#27013](https://github.com/twentyhq/twenty/pull/27013)) by @mabdullahabaid
- chore: sync AI model catalog ([#27014](https://github.com/twentyhq/twenty/pull/27014)) by @github-actions
- fix(front): keep disabled sortable widgets accessible ([#27015](https://github.com/twentyhq/twenty/pull/27015)) by @FelixMalfait
- fix(workflow): show the selected count on the core workflows index ([#27016](https://github.com/twentyhq/twenty/pull/27016)) by @thomtrp
- Only offer Export records on index pages ([#27017](https://github.com/twentyhq/twenty/pull/27017)) by @FelixMalfait
- Keep the Last Contact app's fields off the record timeline ([#27019](https://github.com/twentyhq/twenty/pull/27019)) by @FelixMalfait
- chore(server): remove service unit specs ([#27020](https://github.com/twentyhq/twenty/pull/27020)) by @charlesBochet
- [BREAKING_CHANGE] chore: remove the compatibility code kept for the 2.44 rollout ([#27021](https://github.com/twentyhq/twenty/pull/27021)) by @FelixMalfait
- fix(front): See Workflow from the workflow runs table and hide See Version with core workflows ([#27022](https://github.com/twentyhq/twenty/pull/27022)) by @thomtrp
- [Onboarding 9/10 follow-up] Keep the 3D background off the onboarding critical path ([#27023](https://github.com/twentyhq/twenty/pull/27023)) by @etiennejouan
- fix(server): release the migration runner connection before failure cleanup ([#27024](https://github.com/twentyhq/twenty/pull/27024)) by @charlesBochet
- Drop legacy core campaignDelivery and messageSuppression tables ([#27025](https://github.com/twentyhq/twenty/pull/27025)) by @FelixMalfait
- chore: remove useless and stale comments ([#27026](https://github.com/twentyhq/twenty/pull/27026)) by @charlesBochet
- chore: strict comment pass on recently touched files ([#27027](https://github.com/twentyhq/twenty/pull/27027)) by @charlesBochet
- Share NumberStepper across settings ([#27028](https://github.com/twentyhq/twenty/pull/27028)) by @bosiraphael
- Share progress rings and metric rows ([#27031](https://github.com/twentyhq/twenty/pull/27031)) by @bosiraphael
- refactor(usage-limit): group quota consumption rows by unit ([#27037](https://github.com/twentyhq/twenty/pull/27037)) by @etiennejouan
- Move ImageInput into Twenty UI ([#27039](https://github.com/twentyhq/twenty/pull/27039)) by @bosiraphael
- Move ExpandableList into Twenty UI as OverflowingList ([#27040](https://github.com/twentyhq/twenty/pull/27040)) by @bosiraphael
- Record-level sharing 1/5: restrict records of objects open by default ([#27045](https://github.com/twentyhq/twenty/pull/27045)) by @FelixMalfait
- Prevent stale credentials in IMAP input ([#27048](https://github.com/twentyhq/twenty/pull/27048)) by @BOHEUS
- Let applications and workflows start conversations in a member's chats ([#27049](https://github.com/twentyhq/twenty/pull/27049)) by @FelixMalfait
- Restore appearance card design ([#27051](https://github.com/twentyhq/twenty/pull/27051)) by @bosiraphael
- chore: remove IS_UNIQUE_INDEXES_ENABLED feature flag ([#27052](https://github.com/twentyhq/twenty/pull/27052)) by @FelixMalfait
- Ship junction relations and remove IS_JUNCTION_RELATIONS_ENABLED ([#27053](https://github.com/twentyhq/twenty/pull/27053)) by @FelixMalfait
- Record-level sharing 2/5: share records beyond the recipient's role ([#27054](https://github.com/twentyhq/twenty/pull/27054)) by @FelixMalfait
- Run application workflows with the owning application's permissions ([#27055](https://github.com/twentyhq/twenty/pull/27055)) by @thomtrp
- chore(server): drop the v2 suffix from the workspace pool metric names ([#27056](https://github.com/twentyhq/twenty/pull/27056)) by @charlesBochet
- Record-level sharing 3/5: Share on every object, panel and object settings ([#27057](https://github.com/twentyhq/twenty/pull/27057)) by @FelixMalfait
- Record-level sharing 4/5: All records permission and ownership transfer ([#27058](https://github.com/twentyhq/twenty/pull/27058)) by @FelixMalfait
- perf: reduce relation assignment and ORM hydration overhead ([#27060](https://github.com/twentyhq/twenty/pull/27060)) by @FelixMalfait
- Render core workflow versions as command menu items ([#27062](https://github.com/twentyhq/twenty/pull/27062)) by @thomtrp
- Remove the See Version command menu item from workflow runs ([#27063](https://github.com/twentyhq/twenty/pull/27063)) by @thomtrp
- fix(workflow): polish the core workflows index and its command menu ([#27066](https://github.com/twentyhq/twenty/pull/27066)) by @thomtrp
- Deprecate `authContext` in favor of `RawAuthContext` ( currently type proxy ) ([#27067](https://github.com/twentyhq/twenty/pull/27067)) by @BOHEUS
- Record-level sharing 5: one row access policy for queries, events and writes ([#27068](https://github.com/twentyhq/twenty/pull/27068)) by @FelixMalfait
- Keep email and calendar steps out of application workflows ([#27072](https://github.com/twentyhq/twenty/pull/27072)) by @thomtrp
- Make app scaffolding reusable and fix template typechecking ([#27073](https://github.com/twentyhq/twenty/pull/27073)) by @Weiko
- Systemic application registration ownership guard ([#27074](https://github.com/twentyhq/twenty/pull/27074)) by @prastoin
- chore(security): bump axios to 1.20.0 everywhere for the September advisory batch ([#27077](https://github.com/twentyhq/twenty/pull/27077)) by @mabdullahabaid
- feat(logic-function): identify the function in live logic function logs ([#27079](https://github.com/twentyhq/twenty/pull/27079)) by @Weiko
- chore(security): bump brace-expansion to fixed versions everywhere ([#27086](https://github.com/twentyhq/twenty/pull/27086)) by @mabdullahabaid
- Validation rule form (1/5): render field chips with the shared Chip ([#27090](https://github.com/twentyhq/twenty/pull/27090)) by @thomtrp
- Validation rule form (2/5): MenuItem suggestion rows ([#27091](https://github.com/twentyhq/twenty/pull/27091)) by @thomtrp
- Validation rule form (3/5): suggestion details like the design ([#27092](https://github.com/twentyhq/twenty/pull/27092)) by @thomtrp
- Validation rule form (4/5): condition in one preview card ([#27093](https://github.com/twentyhq/twenty/pull/27093)) by @thomtrp
- chore(security): bump ip-address to 10.7.2 everywhere ([#27095](https://github.com/twentyhq/twenty/pull/27095)) by @mabdullahabaid
- chore(security): bump piscina to 4.9.4 ([#27098](https://github.com/twentyhq/twenty/pull/27098)) by @mabdullahabaid
- chore: sync AI model catalog ([#27099](https://github.com/twentyhq/twenty/pull/27099)) by @github-actions
- chore(security): bump @xhmikosr/decompress to 11.1.4 ([#27100](https://github.com/twentyhq/twenty/pull/27100)) by @mabdullahabaid
- fix(ai-chat): strip NUL bytes from message parts before persisting ([#27101](https://github.com/twentyhq/twenty/pull/27101)) by @etiennejouan
- fix(settings): role save onSuccess, saving state and permissions fallback ([#27103](https://github.com/twentyhq/twenty/pull/27103)) by @FelixMalfait
- fix(permissions): keep row access conditions outside user WHERE expressions ([#27105](https://github.com/twentyhq/twenty/pull/27105)) by @FelixMalfait
- chore(permissions): remove dead and duplicated server permission code ([#27106](https://github.com/twentyhq/twenty/pull/27106)) by @FelixMalfait

</details>

**Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.44.0...twenty/v2.45.0

Related Repositories