⚠️ Breaking changes
- feat(workflow): record each agent step execution as a conversation (#26765) by @FelixMalfait
- feat(workflow): let an agent step pause on a question until someone answers (#26766) by @FelixMalfait
- [BREAKING_CHANGE] Declare application registration variables through the manifest only (#26856) by @prastoin
- Start a record's conversation from the record, and show a conversation's records in its header (#26873) by @FelixMalfait
- Move product URLs out of twenty-ui (#26908) by @bosiraphael
✨ New features
- feat: knip (#26351) by @BOHEUS
- feat(slack): report a broken connection through the app health check (#26414) by @abdulrahmancodes
- feat(ui): no unchecked indexed access twenty UI (#26493) by @BOHEUS
- feat(shared): no unchecked indexed access twenty-shared (#26495) by @BOHEUS
- feat(ai): add the Ask object for work waiting on a person (#26767) by @FelixMalfait
- feat(workflow): a form step opens an Ask that its submission answers (#26768) by @FelixMalfait
- feat(server): make the OTLP metrics temporality configurable (#26857) by @etiennejouan
- feat(sdk): expose programmatic application client generation (#26889) by @Weiko
- feat(mcp): add opt-in direct tool mode (?mode=direct) (#26892) by @UditSinghChauhan
- feat(ai): let chat conversations be managed through the record API (#26894) by @FelixMalfait
- feat(ai): answer every Ask through answerAsk, let agents propose emails and wait on several Asks at once (#26930) by @FelixMalfait
💅 Improvements & UX
- Support matchMedia in front components (#24160) by @bosiraphael
- Add List My Teams Transcripts action backed by a Microsoft Graph client (#26315) by @ehconitin
- Migrate existing recording tab defaults to Transcript (#26319) by @ehconitin
- [4/5] Show a record's AI conversations in a Conversations tab behind IS_CONVERSATIONS_TAB_ENABLED (#26332) by @FelixMalfait
- Standardize twenty-shared page-layout type filenames (#26370) by @BOHEUS
- Require the application role to cover every agent role (#26413) by @abdulrahmancodes
- [rich-text] Keep formatting in rich text written by workflows (#26445) by @Bonapara
- Polyfill matches, closest and querySelector in the front component worker (#26516) by @bosiraphael
- Reflect remote element properties in getAttribute (#26517) by @bosiraphael
- Polyfill Node.contains, compareDocumentPosition and getRootNode in the front component worker (#26518) by @bosiraphael
- Support form state and focus in front components (#26519) by @bosiraphael
- Respect account sync permissions in onboarding (#26594) by @bosiraphael
- Run the call recorder calendar event reconcile in batch mode (#26609) by @ehconitin
- Reconcile call recorder meetings from batched reads (#26621) by @ehconitin
- Add email campaign guides (#26629) by @neo773
- Add the schema for campaign click tracking (#26636) by @neo773
- Rewrite campaign links through Twenty and serve the redirect (#26637) by @neo773
- Record campaign clicks (#26638) by @neo773
- Let recipients opt out of click tracking (#26639) by @neo773
- Delete indexes on deleted fields and clean up field-less index metadata (#26714) by @FelixMalfait
- Fix e2e tests hidden behind the revoked shared session (#26719) by @FelixMalfait
- Type the e2e window env and assert on workflow creation errors (#26730) by @FelixMalfait
- Skip workspaces deleted during long-running upgrades (#26741) by @FelixMalfait
- Remove legacy record sharing rollout policy (#26756) by @FelixMalfait
- Use native workspace records throughout chat history (#26760) by @FelixMalfait
- Use workspace members for live chat ownership (#26763) by @FelixMalfait
- [Onboarding 1/10] Track credit rewards (#26778) by @Bonapara
- [Onboarding 2/10] Raise trial credits (#26779) by @Bonapara
- [Onboarding 3/10] Add credits pill (#26780) by @Bonapara
- [Onboarding 6/10] Add skip dialogs (#26781) by @Bonapara
- [Onboarding 7/10] Count credits live (#26782) by @Bonapara
- [Onboarding 8/10] Redesign plan step (#26783) by @Bonapara
- [Onboarding 8/8] Stabilize avatar colors (#26785) by @Bonapara
- Serve the core workflow show page at /workflow/:id (#26788) by @thomtrp
- Let workflows update custom fields on email and calendar records (#26789) by @Bonapara
- Complete UI documentation and presentational previews (#26791) by @bosiraphael
- Size auto-width Select dropdowns to the trigger (#26792) by @bosiraphael
- Docs update (#26793) by @BOHEUS
- Migrate settings filters, menus and pickers (#26794) by @bosiraphael
- Add files, records and skills from the AI chat + menu (#26797) by @Bonapara
- Anonymize workspace names and IDs in upgrade:status output by default (#26799) by @prastoin
- Make UI utilities safe without browser globals (#26802) by @bosiraphael
- Make retained UI strings overridable (#26804) by @bosiraphael
- Complete RTL behavior in retained UI components (#26805) by @bosiraphael
- Migrate anchored command and widget menus (#26806) by @bosiraphael
- Fix CI Knip on main: delete unused agent history storage state re-exports (#26807) by @FelixMalfait
- Add status check to ci-knip (#26810) by @prastoin
- Drag and drop blocks in the campaign editor (#26812) by @neo773
- Call recorder: cancel the bot of a meeting whose calendar event was destroyed (#26815) by @vladbisceanu
- Call recorder: reschedule a re-requested bot at once after a confirmed cancel (#26818) by @vladbisceanu
- Fix core workflow QA feedback on actions, versions, runs and index (#26820) by @thomtrp
- Allow duplicating application-owned core workflows (#26828) by @thomtrp
- Fetch the latest S3 frontend HTML for each document request (#26835) by @FelixMalfait
- Show Untitled, plain visibility and a page skeleton on core workflow pages (#26836) by @thomtrp
- merge queue ci knip (#26837) by @prastoin
- [rich-text] Compact record creation rich-text input, keeping BlockNote (#26842) by @thomtrp
- Stop enabling IMAP4rev2 on IMAP connections (#26843) by @neo773
- Fix call recorder integration test token after generateApplicationToken removal (#26855) by @ehconitin
- Align on-demand logic function runs with the workflow action rule (#26860) by @prastoin
- [5/5] Let the AI chat attach its conversation to the records it is about (#26862) by @FelixMalfait
- [Onboarding 4/10] Add credits popover (#26871) by @Bonapara
- [Onboarding 5/10] Fit credits pill on phones (#26872) by @Bonapara
- Animate the first AI chat message out of the composer (#26890) by @Bonapara
- Restrict forwarded request headers on logic function route triggers (#26891) by @prastoin
- Refresh twenty-ui README (#26896) by @bosiraphael
- Migrate date pickers and field overlays (#26897) by @bosiraphael
- Serve unsubscribe links from the server host when Cloudflare is not configured (#26898) by @neo773
- Rename AI Chat and AI Workflow usage to Chats and Agents (#26899) by @Bonapara
- Keep UI implementation exports private (#26900) by @bosiraphael
- Validation rules (1/2): define and store rules (#26902) by @thomtrp
- Validation rules (2/2): enforce rules on record writes (#26903) by @thomtrp
- Animate the sidebar when switching between Home, AI and Settings (#26905) by @Bonapara
- Rename expandable container to Collapsible (#26906) by @bosiraphael
- Call recorder: stop recovery from creating twin Recall bots (#26909) by @ehconitin
- Deny settings access to applications without a default role instead of throwing a 500 (#26910) by @thomtrp
- Keep notification countdowns in Toast (#26912) by @bosiraphael
- Replace CircularProgressBar with Loader (#26916) by @bosiraphael
- Keep where objects built in another realm, and refuse a where condition the builder cannot read (#26919) by @FelixMalfait
- Replace ClickToActionLink with link-style Button (#26921) by @bosiraphael
- Require registration ownership when exporting applications (#26928) by @Weiko
- Clean up the conversations, Ask and 2.44 chat-thread code (#26931) by @FelixMalfait
- Replace the principal-type auth guards with AuthPrincipalGuard (#26936) by @prastoin
- Move coming-soon labels out of Button (#26951) by @bosiraphael
- Move the chat page onto the record model (#26956) by @FelixMalfait
- Stop the core workflow index from swapping its empty state for a bare table (#26959) by @thomtrp
- Render the chat page as the chat record page (#26960) by @FelixMalfait
- Consolidate card choices in Radio (#26966) by @bosiraphael
- Replace Info with InlineBanner (#26967) by @bosiraphael
- Enforce intentional Twenty UI exports (#26971) by @bosiraphael
- Stop global shortcuts firing while typing a campaign subject (#26975) by @neo773
- Page running workflow runs in the 2.44 open-asks-for-pending-input command (#26984) by @FelixMalfait
- Compose SearchInput with input primitives (#26986) by @bosiraphael
- Move appearance choices into profile settings (#26987) by @bosiraphael
- Replace inputAsk with pending tool calls on the conversation (#26988) by @FelixMalfait
- Remap step variable references when duplicating a workflow (#26990) by @thomtrp
- Move RoundedLink to the frontend (#26991) by @bosiraphael
- Remove twenty-ui changelog (#26993) by @bosiraphael
- Open record sharing in the side panel (#26995) by @FelixMalfait
- Use native buttons for JSON and avatar actions (#26997) by @bosiraphael
- Keep notes and tasks attached to nothing readable by every member (#27002) by @FelixMalfait
🐛 Bug fixes
- fix(front): record page pagination on views sorted by a boolean field (#26500) by @BOHEUS
- fix(twenty-orm): capture all deleted records in batch delete event payload (#26502) by @Mateidslx
- fix(billing): identify subscription items by product key, not by quantity (#26635) by @etiennejouan
- fix: limit record export concurrency across workers (#26665) by @Weiko
- fix(ai-chat): show workspace-scoped AI limits and warn before the composer (#26674) by @etiennejouan
- fix(upgrade): stop dry runs from executing instance commands (#26693) by @Weiko
- fix(twenty-ui): keep IconButton tooltips on hover after loading or disabled changes (#26710) by @martmull
- fix(ci): gate the secure integration suite with nx affected (#26717) by @FelixMalfait
- fix(workflow): ignore empty-name normalization in drift checks (#26724) by @FelixMalfait
- fix(workflow): make a private workflow's runs private too (#26761) by @FelixMalfait
- fix(mcp): support per-option grouping for multi-select fields (#26787) by @waelantar
- fix: fall back to unconditional copy when S3 backend rejects CopySourceIfMatch (#26830) by @FelixMalfait
- fix(ai): price multi-step turns step by step (#26882) by @etiennejouan
- fix(billing): hide all operations option when a usage has a single operation (#26888) by @etiennejouan
- fix(billing): skip the Stripe update when prices and seats are unchanged (#26907) by @etiennejouan
- fix(workspace-cleaner): serialize workspace destruction on a dedicated queue (#26911) by @etiennejouan
- fix(search): restrict ILIKE fallback to CJK input (#26926) by @Weiko
- fix(ai): pass the thread record event service in the pending-question spec (#26927) by @FelixMalfait
- fix(upgrade): reapply the usageLimit period reshape skipped by 2.38.x instances (#26958) by @etiennejouan
- fix(ai-chat): stop failing replies on recovered tool errors and group AI SDK errors in Sentry (#26989) by @etiennejouan
- fix(usage-limit): key quota counters on their limit value (#26996) by @etiennejouan
- fix: keep chats and forms usable during workspace upgrades (#27005) by @FelixMalfait
- fix(front): keep the timeline group bar behind the icons in RTL (#27007) by @almoghazaz-cell
🔧 Developer & API
- Expose programmatic SDK build and typecheck APIs (#26824) by @Weiko
- Load the chat list through the record API (#26957) by @FelixMalfait
🏗️ Internal changes (6)
- refactor(ai): isolate agent history migration state from runtime (#26752) by @FelixMalfait
- refactor(ai): remove transitional sender insert preparation (#26753) by @FelixMalfait
- refactor(ai): retire runtime history routing and lifecycle state (#26754) by @FelixMalfait
- test(ai): replay the archivedAt writability upgrade after the agent history spec rebuilds the chat objects (#26934) by @FelixMalfait
- chore(front): remove Effect component tests (#26963) by @charlesBochet
- test(apps): remove the unsupported icon from the function-execute fixture (#27008) by @Weiko
🎉 New contributors
- @vladbisceanu made their first contribution in #26818
- @waelantar made their first contribution in #26787
- @UditSinghChauhan made their first contribution in #26892
- @almoghazaz-cell made their first contribution in #27007
Full changelog (165 PRs)
- Support matchMedia in front components (#24160) by @bosiraphael
- Add List My Teams Transcripts action backed by a Microsoft Graph client (#26315) by @ehconitin
- Migrate existing recording tab defaults to Transcript (#26319) by @ehconitin
- [4/5] Show a record's AI conversations in a Conversations tab behind IS_CONVERSATIONS_TAB_ENABLED (#26332) by @FelixMalfait
- feat: knip (#26351) by @BOHEUS
- Standardize twenty-shared page-layout type filenames (#26370) by @BOHEUS
- Require the application role to cover every agent role (#26413) by @abdulrahmancodes
- feat(slack): report a broken connection through the app health check (#26414) by @abdulrahmancodes
- [rich-text] Keep formatting in rich text written by workflows (#26445) by @Bonapara
- feat(ui): no unchecked indexed access twenty UI (#26493) by @BOHEUS
- feat(shared): no unchecked indexed access twenty-shared (#26495) by @BOHEUS
- fix(front): record page pagination on views sorted by a boolean field (#26500) by @BOHEUS
- fix(twenty-orm): capture all deleted records in batch delete event payload (#26502) by @Mateidslx
- Polyfill matches, closest and querySelector in the front component worker (#26516) by @bosiraphael
- Reflect remote element properties in getAttribute (#26517) by @bosiraphael
- Polyfill Node.contains, compareDocumentPosition and getRootNode in the front component worker (#26518) by @bosiraphael
- Support form state and focus in front components (#26519) by @bosiraphael
- Respect account sync permissions in onboarding (#26594) by @bosiraphael
- Run the call recorder calendar event reconcile in batch mode (#26609) by @ehconitin
- Reconcile call recorder meetings from batched reads (#26621) by @ehconitin
- Add email campaign guides (#26629) by @neo773
- fix(billing): identify subscription items by product key, not by quantity (#26635) by @etiennejouan
- Add the schema for campaign click tracking (#26636) by @neo773
- Rewrite campaign links through Twenty and serve the redirect (#26637) by @neo773
- Record campaign clicks (#26638) by @neo773
- Let recipients opt out of click tracking (#26639) by @neo773
- fix: limit record export concurrency across workers (#26665) by @Weiko
- fix(ai-chat): show workspace-scoped AI limits and warn before the composer (#26674) by @etiennejouan
- fix(upgrade): stop dry runs from executing instance commands (#26693) by @Weiko
- fix(twenty-ui): keep IconButton tooltips on hover after loading or disabled changes (#26710) by @martmull
- i18n - translations (#26713) by @github-actions
- Delete indexes on deleted fields and clean up field-less index metadata (#26714) by @FelixMalfait
- fix(ci): gate the secure integration suite with nx affected (#26717) by @FelixMalfait
- Fix e2e tests hidden behind the revoked shared session (#26719) by @FelixMalfait
- chore: bump version to 2.44.0 (#26720) by @twenty-pr
- fix(workflow): ignore empty-name normalization in drift checks (#26724) by @FelixMalfait
- Type the e2e window env and assert on workflow creation errors (#26730) by @FelixMalfait
- chore: sync AI model catalog (#26739) by @github-actions
- Skip workspaces deleted during long-running upgrades (#26741) by @FelixMalfait
- i18n - docs translations (#26747) by @github-actions
- refactor(ai): isolate agent history migration state from runtime (#26752) by @FelixMalfait
- refactor(ai): remove transitional sender insert preparation (#26753) by @FelixMalfait
- refactor(ai): retire runtime history routing and lifecycle state (#26754) by @FelixMalfait
- Remove legacy record sharing rollout policy (#26756) by @FelixMalfait
- Use native workspace records throughout chat history (#26760) by @FelixMalfait
- fix(workflow): make a private workflow's runs private too (#26761) by @FelixMalfait
- Use workspace members for live chat ownership (#26763) by @FelixMalfait
- feat(workflow): record each agent step execution as a conversation (#26765) by @FelixMalfait
- feat(workflow): let an agent step pause on a question until someone answers (#26766) by @FelixMalfait
- feat(ai): add the Ask object for work waiting on a person (#26767) by @FelixMalfait
- feat(workflow): a form step opens an Ask that its submission answers (#26768) by @FelixMalfait
- chore: sync AI model catalog (#26771) by @github-actions
- [Onboarding 1/10] Track credit rewards (#26778) by @Bonapara
- [Onboarding 2/10] Raise trial credits (#26779) by @Bonapara
- [Onboarding 3/10] Add credits pill (#26780) by @Bonapara
- [Onboarding 6/10] Add skip dialogs (#26781) by @Bonapara
- [Onboarding 7/10] Count credits live (#26782) by @Bonapara
- [Onboarding 8/10] Redesign plan step (#26783) by @Bonapara
- [Onboarding 8/8] Stabilize avatar colors (#26785) by @Bonapara
- fix(mcp): support per-option grouping for multi-select fields (#26787) by @waelantar
- Serve the core workflow show page at /workflow/:id (#26788) by @thomtrp
- Let workflows update custom fields on email and calendar records (#26789) by @Bonapara
- i18n - translations (#26790) by @github-actions
- Complete UI documentation and presentational previews (#26791) by @bosiraphael
- Size auto-width Select dropdowns to the trigger (#26792) by @bosiraphael
- Docs update (#26793) by @BOHEUS
- Migrate settings filters, menus and pickers (#26794) by @bosiraphael
- Add files, records and skills from the AI chat + menu (#26797) by @Bonapara
- Anonymize workspace names and IDs in upgrade:status output by default (#26799) by @prastoin
- i18n - translations (#26801) by @github-actions
- Make UI utilities safe without browser globals (#26802) by @bosiraphael
- Make retained UI strings overridable (#26804) by @bosiraphael
- Complete RTL behavior in retained UI components (#26805) by @bosiraphael
- Migrate anchored command and widget menus (#26806) by @bosiraphael
- Fix CI Knip on main: delete unused agent history storage state re-exports (#26807) by @FelixMalfait
- Add status check to ci-knip (#26810) by @prastoin
- Drag and drop blocks in the campaign editor (#26812) by @neo773
- Call recorder: cancel the bot of a meeting whose calendar event was destroyed (#26815) by @vladbisceanu
- Call recorder: reschedule a re-requested bot at once after a confirmed cancel (#26818) by @vladbisceanu
- Fix core workflow QA feedback on actions, versions, runs and index (#26820) by @thomtrp
- Expose programmatic SDK build and typecheck APIs (#26824) by @Weiko
- i18n - translations (#26825) by @github-actions
- i18n - translations (#26826) by @github-actions
- Allow duplicating application-owned core workflows (#26828) by @thomtrp
- fix: fall back to unconditional copy when S3 backend rejects CopySourceIfMatch (#26830) by @FelixMalfait
- i18n - translations (#26833) by @github-actions
- Fetch the latest S3 frontend HTML for each document request (#26835) by @FelixMalfait
- Show Untitled, plain visibility and a page skeleton on core workflow pages (#26836) by @thomtrp
- merge queue ci knip (#26837) by @prastoin
- i18n - translations (#26839) by @github-actions
- i18n - translations (#26840) by @github-actions
- i18n - translations (#26841) by @github-actions
- [rich-text] Compact record creation rich-text input, keeping BlockNote (#26842) by @thomtrp
- Stop enabling IMAP4rev2 on IMAP connections (#26843) by @neo773
- Fix call recorder integration test token after generateApplicationToken removal (#26855) by @ehconitin
- [BREAKING_CHANGE] Declare application registration variables through the manifest only (#26856) by @prastoin
- feat(server): make the OTLP metrics temporality configurable (#26857) by @etiennejouan
- i18n - translations (#26858) by @github-actions
- Align on-demand logic function runs with the workflow action rule (#26860) by @prastoin
- i18n - translations (#26861) by @github-actions
- [5/5] Let the AI chat attach its conversation to the records it is about (#26862) by @FelixMalfait
- i18n - translations (#26863) by @github-actions
- [Onboarding 4/10] Add credits popover (#26871) by @Bonapara
- [Onboarding 5/10] Fit credits pill on phones (#26872) by @Bonapara
- Start a record's conversation from the record, and show a conversation's records in its header (#26873) by @FelixMalfait
- chore: sync AI model catalog (#26878) by @github-actions
- fix(ai): price multi-step turns step by step (#26882) by @etiennejouan
- fix(billing): hide all operations option when a usage has a single operation (#26888) by @etiennejouan
- feat(sdk): expose programmatic application client generation (#26889) by @Weiko
- Animate the first AI chat message out of the composer (#26890) by @Bonapara
- Restrict forwarded request headers on logic function route triggers (#26891) by @prastoin
- feat(mcp): add opt-in direct tool mode (?mode=direct) (#26892) by @UditSinghChauhan
- feat(ai): let chat conversations be managed through the record API (#26894) by @FelixMalfait
- Refresh twenty-ui README (#26896) by @bosiraphael
- Migrate date pickers and field overlays (#26897) by @bosiraphael
- Serve unsubscribe links from the server host when Cloudflare is not configured (#26898) by @neo773
- Rename AI Chat and AI Workflow usage to Chats and Agents (#26899) by @Bonapara
- Keep UI implementation exports private (#26900) by @bosiraphael
- Validation rules (1/2): define and store rules (#26902) by @thomtrp
- Validation rules (2/2): enforce rules on record writes (#26903) by @thomtrp
- Animate the sidebar when switching between Home, AI and Settings (#26905) by @Bonapara
- Rename expandable container to Collapsible (#26906) by @bosiraphael
- fix(billing): skip the Stripe update when prices and seats are unchanged (#26907) by @etiennejouan
- Move product URLs out of twenty-ui (#26908) by @bosiraphael
- Call recorder: stop recovery from creating twin Recall bots (#26909) by @ehconitin
- Deny settings access to applications without a default role instead of throwing a 500 (#26910) by @thomtrp
- fix(workspace-cleaner): serialize workspace destruction on a dedicated queue (#26911) by @etiennejouan
- Keep notification countdowns in Toast (#26912) by @bosiraphael
- Replace CircularProgressBar with Loader (#26916) by @bosiraphael
- Keep where objects built in another realm, and refuse a where condition the builder cannot read (#26919) by @FelixMalfait
- Replace ClickToActionLink with link-style Button (#26921) by @bosiraphael
- fix(search): restrict ILIKE fallback to CJK input (#26926) by @Weiko
- fix(ai): pass the thread record event service in the pending-question spec (#26927) by @FelixMalfait
- Require registration ownership when exporting applications (#26928) by @Weiko
- feat(ai): answer every Ask through answerAsk, let agents propose emails and wait on several Asks at once (#26930) by @FelixMalfait
- Clean up the conversations, Ask and 2.44 chat-thread code (#26931) by @FelixMalfait
- test(ai): replay the archivedAt writability upgrade after the agent history spec rebuilds the chat objects (#26934) by @FelixMalfait
- Replace the principal-type auth guards with AuthPrincipalGuard (#26936) by @prastoin
- chore: sync AI model catalog (#26950) by @github-actions
- Move coming-soon labels out of Button (#26951) by @bosiraphael
- Move the chat page onto the record model (#26956) by @FelixMalfait
- Load the chat list through the record API (#26957) by @FelixMalfait
- fix(upgrade): reapply the usageLimit period reshape skipped by 2.38.x instances (#26958) by @etiennejouan
- Stop the core workflow index from swapping its empty state for a bare table (#26959) by @thomtrp
- Render the chat page as the chat record page (#26960) by @FelixMalfait
- chore(front): remove Effect component tests (#26963) by @charlesBochet
- Consolidate card choices in Radio (#26966) by @bosiraphael
- Replace Info with InlineBanner (#26967) by @bosiraphael
- Enforce intentional Twenty UI exports (#26971) by @bosiraphael
- Stop global shortcuts firing while typing a campaign subject (#26975) by @neo773
- Page running workflow runs in the 2.44 open-asks-for-pending-input command (#26984) by @FelixMalfait
- Compose SearchInput with input primitives (#26986) by @bosiraphael
- Move appearance choices into profile settings (#26987) by @bosiraphael
- Replace inputAsk with pending tool calls on the conversation (#26988) by @FelixMalfait
- fix(ai-chat): stop failing replies on recovered tool errors and group AI SDK errors in Sentry (#26989) by @etiennejouan
- Remap step variable references when duplicating a workflow (#26990) by @thomtrp
- Move RoundedLink to the frontend (#26991) by @bosiraphael
- Remove twenty-ui changelog (#26993) by @bosiraphael
- Open record sharing in the side panel (#26995) by @FelixMalfait
- fix(usage-limit): key quota counters on their limit value (#26996) by @etiennejouan
- Use native buttons for JSON and avatar actions (#26997) by @bosiraphael
- Keep notes and tasks attached to nothing readable by every member (#27002) by @FelixMalfait
- fix: keep chats and forms usable during workspace upgrades (#27005) by @FelixMalfait
- fix(front): keep the timeline group bar behind the icons in RTL (#27007) by @almoghazaz-cell
- test(apps): remove the unsupported icon from the function-execute fixture (#27008) by @Weiko
Full Changelog: twenty/v2.43.0...twenty/v2.44.0