⚠️ Breaking changes
- chore: lift wrangler to 4.125.0 and drop the miniflare/undici resolution (#24794) by @mabdullahabaid
- feat(workflow): read and dispatch workflow versions from core everywhere (#24830) by @thomtrp
- chore: lift next to 16.3.2 and drop the next/sharp and next/postcss resolutions (#24832) by @mabdullahabaid
- Remove legacy grid position from page layout widgets (#24876) by @Weiko
✨ New features
- feat(apps): upload application files through batched direct upload (#23526) by @martmull
- feat(server): log in-flight jobs when the worker event loop stalls (#24767) by @charlesBochet
- feat(settings): edit the object default layout from the data model page (#24829) by @thomtrp
- feat(workflow): add core workflow ids on workflow runs (#24842) by @thomtrp
- feat: add user-friendly labels to application variables (#24870) by @martmull
💅 Improvements & UX
- Let the AI chat attach uploaded files to records (#24138) by @thomtrp
- Add workspaceMemberId in connectionProvider (#24392) by @BOHEUS
- prevent shortcuts in other response input (#24562) by @Quadratic12345
- feat(usage-limit) - create usageLimit entity (#24708) by @etiennejouan
- Refactor activity targets onto generic junction relations (#24766) by @FelixMalfait
- Remove call-recorder recording and summary tab front components (#24770) by @ehconitin
- Add message thread and calendar event target junction objects (#24776) by @FelixMalfait
- Reconcile message and calendar targets in participant transactions (#24778) by @FelixMalfait
- Add source, listed and configured filters to admin app list (#24779) by @martmull
- Provision and backfill message and calendar targets (#24780) by @FelixMalfait
- Rename the workspace ORM manager and module (#24781) by @charlesBochet
- Read Calendar and Email timelines from target junctions (#24782) by @FelixMalfait
- Thread the partner slug through the client-brief modal (#24783) by @rashad
- Partners app: list-form reads and shared-module dedup (#24784) by @rashad
- Partners app: application state model, auto-listing, and views (#24785) by @rashad
- Partners app: apply-to-brief flow (#24786) by @rashad
- Partners app: listed-brief Discord ping and digest runbook (1.7.0) (#24787) by @rashad
- Rename the internal V2 leftovers in the workspace ORM (#24792) by @charlesBochet
- Fix campaign page scrolling (#24796) by @FelixMalfait
- Consolidate the two workspace ORM exception types (#24798) by @charlesBochet
- Remove the object-metadata-repository injection layer (#24801) by @charlesBochet
- Make getRepository synchronous (#24803) by @charlesBochet
- Deflake the upsert suite teardown against in-flight background jobs (#24804) by @charlesBochet
- One entry point for workspace data and fewer migration-era seams (#24805) by @charlesBochet
- Add call recording summary and transcript tabs on call recording object page layout (#24810) by @ehconitin
- Remove fireflies recording and summary tab front components (#24812) by @ehconitin
- Migrate call-recorder fan-out to platform jobs (#24818) by @ehconitin
- Refuse sign ups that have nowhere to land (#24824) by @FelixMalfait
- Paginate npm registry search to fetch all twenty-app packages (#24827) by @martmull
- Update Fireflies gallery illustrations (#24833) by @ehconitin
- Add message campaign dev seeds and include in dev-seeder batches (#24838) by @FelixMalfait
- Delete self-hosting internal app (#24839) by @charlesBochet
- Fix defaultTabToFocusOnMobileAndSidePanel resolution when the tab is created in the same sync (#24840) by @martmull
- Store user email as citext so SSO sign-in matches any casing (#24844) by @neo773
- Fix timeline activity search vector deletion + support ts_vector creation through create field actions handler (#24846) by @prastoin
- Resolve pageLayout default tab via generic id preallocation (#24854) by @FelixMalfait
- Skip timeline activity payloads targeting destroyed records (#24855) by @thomtrp
- Add QA Scout: post-merge browser QA agent on main (#24856) by @FelixMalfait
- Move call recording widget types to type files and dedupe target lookup (#24861) by @martmull
- Rebuild timelineActivity searchVector column when dropped at pg level (#24862) by @prastoin
- Fix view picker create button width (#24864) by @Bonapara
- Rework the /partners hero away from the match pitch (#24866) by @rashad
- Simplify calendar week day views (#24868) by @Weiko
- Remove the calendar week-day feature flag (#24873) by @Weiko
- messaging: fix IMAP rare edge case for non RFC compliant servers (#24888) by @neo773
- [DO NOT REVIEW] Revert "chore: bump version to 2.37.0" (#24896) by @prastoin
- Audit runner egress on the QA Scout job (#24908) by @FelixMalfait
- Type applyManuallyAssignedDefault generically to keep hook payload types (#24921) by @FelixMalfait
- Only upgrade applications on provisioned workspaces (#24923) by @prastoin
- Fix spacing between profile name fields (#24928) by @Bonapara
- Restore settings navigation command menu item labels corrupted by 2-33 upgrade (#24930) by @prastoin
- Seed message thread and calendar event targets in dev workspaces (#24933) by @FelixMalfait
- Fix QA Scout turn exhaustion found by the first live audit (#24934) by @FelixMalfait
- Remove the legacy command-menu-item label template shim (#24942) by @FelixMalfait
- Fix side panel email reply crashing with Invalid Configuration (#24944) by @neo773
🐛 Bug fixes
- fix(front): enable Save when a select option is added programmatically (#24649) by @Karthikram319
- fix: include iss parameter in OAuth authorization redirect per RFC 9207 (#24153) (#24663) by @wsvdesign
- fix(server): only honor approved access domains when email verification is required (#24789) by @charlesBochet
- fix(server): migrate legacy IS_NOT_NULL workflow filter operand to IS_NOT_EMPTY (#24808) by @charlesBochet
- fix(last-contact): scope app record permissions (#24823) by @FelixMalfait
- fix: prevent concurrent twenty-sdk output writes (#24850) by @FelixMalfait
- fix(front): share the scroll overlay button between AI chat and transcript (#24914) by @ehconitin
⚡ Performance
- perf(server): hold an ORM field-metadata projection on the record query path (#24831) by @charlesBochet
🔧 Developer & API
- feat(usage-limit) - rate-limit API requests from configured usage limits (#24709) by @etiennejouan
- Type twenty-sdk manifest enums with the real server enums (#24848) by @martmull
- Fix the post-merge QA Scout (direct CLI invocation) and tune its allowlist (#24907) by @FelixMalfait
🏗️ Internal changes (7)
- chore: drop four resolutions their parents no longer need (#24739) by @mabdullahabaid
- chore: lift @e2b/code-interpreter to 2.7.1 and drop the e2b/undici8 resolution (#24821) by @mabdullahabaid
- chore: lift @nestjs/graphql to 13.4.5 and drop the @nestjs/graphql/ws resolution (#24867) by @mabdullahabaid
- docs(partners): drop the Mark as Winner runbook (#24877) by @rashad
- docs(slack): correct the run-as permission model in the app README (#24882) by @abdulrahmancodes
- chore(docker): bump server base to node 24.19.0-alpine + openssl 3.5.8-r0 (#24897) by @charlesBochet
- revert: "feat(settings): edit the object default layout from the data model page (#24829)" (#24916) by @thomtrp
🎉 New contributors
- @Karthikram319 made their first contribution in #24649
- @Quadratic12345 made their first contribution in #24562
- @wsvdesign made their first contribution in #24663
Full changelog (106 PRs)
- feat(apps): upload application files through batched direct upload (#23526) by @martmull
- Let the AI chat attach uploaded files to records (#24138) by @thomtrp
- Add workspaceMemberId in connectionProvider (#24392) by @BOHEUS
- prevent shortcuts in other response input (#24562) by @Quadratic12345
- fix(front): enable Save when a select option is added programmatically (#24649) by @Karthikram319
- fix: include iss parameter in OAuth authorization redirect per RFC 9207 (#24153) (#24663) by @wsvdesign
- feat(usage-limit) - create usageLimit entity (#24708) by @etiennejouan
- feat(usage-limit) - rate-limit API requests from configured usage limits (#24709) by @etiennejouan
- chore: drop four resolutions their parents no longer need (#24739) by @mabdullahabaid
- Refactor activity targets onto generic junction relations (#24766) by @FelixMalfait
- feat(server): log in-flight jobs when the worker event loop stalls (#24767) by @charlesBochet
- Remove call-recorder recording and summary tab front components (#24770) by @ehconitin
- Add message thread and calendar event target junction objects (#24776) by @FelixMalfait
- Reconcile message and calendar targets in participant transactions (#24778) by @FelixMalfait
- Add source, listed and configured filters to admin app list (#24779) by @martmull
- Provision and backfill message and calendar targets (#24780) by @FelixMalfait
- Rename the workspace ORM manager and module (#24781) by @charlesBochet
- Read Calendar and Email timelines from target junctions (#24782) by @FelixMalfait
- Thread the partner slug through the client-brief modal (#24783) by @rashad
- Partners app: list-form reads and shared-module dedup (#24784) by @rashad
- Partners app: application state model, auto-listing, and views (#24785) by @rashad
- Partners app: apply-to-brief flow (#24786) by @rashad
- Partners app: listed-brief Discord ping and digest runbook (1.7.0) (#24787) by @rashad
- fix(server): only honor approved access domains when email verification is required (#24789) by @charlesBochet
- chore: bump version to 2.36.0 (#24790) by @twenty-pr
- Rename the internal V2 leftovers in the workspace ORM (#24792) by @charlesBochet
- chore: lift wrangler to 4.125.0 and drop the miniflare/undici resolution (#24794) by @mabdullahabaid
- Fix campaign page scrolling (#24796) by @FelixMalfait
- i18n - translations (#24797) by @github-actions
- Consolidate the two workspace ORM exception types (#24798) by @charlesBochet
- i18n - translations (#24800) by @github-actions
- Remove the object-metadata-repository injection layer (#24801) by @charlesBochet
- i18n - translations (#24802) by @github-actions
- Make getRepository synchronous (#24803) by @charlesBochet
- Deflake the upsert suite teardown against in-flight background jobs (#24804) by @charlesBochet
- One entry point for workspace data and fewer migration-era seams (#24805) by @charlesBochet
- fix(server): migrate legacy IS_NOT_NULL workflow filter operand to IS_NOT_EMPTY (#24808) by @charlesBochet
- Add call recording summary and transcript tabs on call recording object page layout (#24810) by @ehconitin
- Remove fireflies recording and summary tab front components (#24812) by @ehconitin
- i18n - translations (#24817) by @github-actions
- Migrate call-recorder fan-out to platform jobs (#24818) by @ehconitin
- i18n - translations (#24819) by @github-actions
- chore: lift @e2b/code-interpreter to 2.7.1 and drop the e2b/undici8 resolution (#24821) by @mabdullahabaid
- fix(last-contact): scope app record permissions (#24823) by @FelixMalfait
- Refuse sign ups that have nowhere to land (#24824) by @FelixMalfait
- Paginate npm registry search to fetch all twenty-app packages (#24827) by @martmull
- feat(settings): edit the object default layout from the data model page (#24829) by @thomtrp
- feat(workflow): read and dispatch workflow versions from core everywhere (#24830) by @thomtrp
- perf(server): hold an ORM field-metadata projection on the record query path (#24831) by @charlesBochet
- chore: lift next to 16.3.2 and drop the next/sharp and next/postcss resolutions (#24832) by @mabdullahabaid
- Update Fireflies gallery illustrations (#24833) by @ehconitin
- i18n - translations (#24835) by @github-actions
- i18n - translations (#24836) by @github-actions
- i18n - translations (#24837) by @github-actions
- Add message campaign dev seeds and include in dev-seeder batches (#24838) by @FelixMalfait
- Delete self-hosting internal app (#24839) by @charlesBochet
- Fix defaultTabToFocusOnMobileAndSidePanel resolution when the tab is created in the same sync (#24840) by @martmull
- i18n - translations (#24841) by @github-actions
- feat(workflow): add core workflow ids on workflow runs (#24842) by @thomtrp
- Store user email as citext so SSO sign-in matches any casing (#24844) by @neo773
- Fix timeline activity search vector deletion + support ts_vector creation through create field actions handler (#24846) by @prastoin
- Type twenty-sdk manifest enums with the real server enums (#24848) by @martmull
- fix: prevent concurrent twenty-sdk output writes (#24850) by @FelixMalfait
- i18n - translations (#24852) by @github-actions
- Resolve pageLayout default tab via generic id preallocation (#24854) by @FelixMalfait
- Skip timeline activity payloads targeting destroyed records (#24855) by @thomtrp
- Add QA Scout: post-merge browser QA agent on main (#24856) by @FelixMalfait
- i18n - translations (#24859) by @github-actions
- Move call recording widget types to type files and dedupe target lookup (#24861) by @martmull
- Rebuild timelineActivity searchVector column when dropped at pg level (#24862) by @prastoin
- Fix view picker create button width (#24864) by @Bonapara
- Rework the /partners hero away from the match pitch (#24866) by @rashad
- chore: lift @nestjs/graphql to 13.4.5 and drop the @nestjs/graphql/ws resolution (#24867) by @mabdullahabaid
- Simplify calendar week day views (#24868) by @Weiko
- feat: add user-friendly labels to application variables (#24870) by @martmull
- i18n - website translations (#24871) by @github-actions
- i18n - translations (#24872) by @github-actions
- Remove the calendar week-day feature flag (#24873) by @Weiko
- i18n - translations (#24875) by @github-actions
- Remove legacy grid position from page layout widgets (#24876) by @Weiko
- docs(partners): drop the Mark as Winner runbook (#24877) by @rashad
- i18n - translations (#24878) by @github-actions
- i18n - website translations (#24879) by @github-actions
- docs(slack): correct the run-as permission model in the app README (#24882) by @abdulrahmancodes
- messaging: fix IMAP rare edge case for non RFC compliant servers (#24888) by @neo773
- i18n - translations (#24893) by @github-actions
- chore: bump version to 2.37.0 (#24894) by @charlesBochet
- i18n - translations (#24895) by @github-actions
- [DO NOT REVIEW] Revert "chore: bump version to 2.37.0" (#24896) by @prastoin
- chore(docker): bump server base to node 24.19.0-alpine + openssl 3.5.8-r0 (#24897) by @charlesBochet
- i18n - website translations (#24899) by @github-actions
- Fix the post-merge QA Scout (direct CLI invocation) and tune its allowlist (#24907) by @FelixMalfait
- Audit runner egress on the QA Scout job (#24908) by @FelixMalfait
- chore: bump version to 2.37.0 (#24909) by @twenty-pr
- fix(front): share the scroll overlay button between AI chat and transcript (#24914) by @ehconitin
- i18n - translations (#24915) by @github-actions
- revert: "feat(settings): edit the object default layout from the data model page (#24829)" (#24916) by @thomtrp
- i18n - website translations (#24918) by @github-actions
- Type applyManuallyAssignedDefault generically to keep hook payload types (#24921) by @FelixMalfait
- Only upgrade applications on provisioned workspaces (#24923) by @prastoin
- Fix spacing between profile name fields (#24928) by @Bonapara
- Restore settings navigation command menu item labels corrupted by 2-33 upgrade (#24930) by @prastoin
- Seed message thread and calendar event targets in dev workspaces (#24933) by @FelixMalfait
- Fix QA Scout turn exhaustion found by the first live audit (#24934) by @FelixMalfait
- Remove the legacy command-menu-item label template shim (#24942) by @FelixMalfait
- Fix side panel email reply crashing with Invalid Configuration (#24944) by @neo773
Full Changelog: twenty/v2.35.0...twenty/v2.37.0