twenty/v2.43.0

diffusionstudio/coretwenty/v2.43.0Sep 28, 2026by twenty-pr[bot]

Upgrading?

AI Summary

Enhances usage management with storage and email quotas, expands Microsoft Teams integration, and improves core workflow execution and background processing.

Key Highlights

  • Usage limits for workspace file storage and records
  • Microsoft Teams app package scaffolding and Bot Connector
  • Core workflow execution and background processing
  • Usage metering for common API calls

Breaking Changes

  • Record creation form becomes the default path
  • Application file upload changes and CLI multipart fallback
  • Server-side computation of application-scoped core schema
  • Match workflow show page header to workspace
  • Group Card parts under one component

New Features

  • Usage limits for storage and records
  • Microsoft Teams app package and Bot Connector
  • Core workflow and version syncability
  • Auth refusal for suspended workspaces
  • Teams transcript OAuth consolidation
  • Object metadata API updates
  • Usage metering in complexity points
  • Record restores and permanent delete logging

Full Release Notes

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

## ⚠️ Breaking changes

- feat(record-form): make the record creation form the default path ([#25907](https://github.com/twentyhq/twenty/pull/25907)) by @thomtrp
- [2/5 workflows] Improve workflow classifier configuration ([#26291](https://github.com/twentyhq/twenty/pull/26291)) by @Bonapara
- feat(application): deprecate uploadApplicationFile and drop the CLI multipart fallback ([#26379](https://github.com/twentyhq/twenty/pull/26379)) by @martmull
- feat(files): upload workspace logos and profile pictures with direct upload ([#26382](https://github.com/twentyhq/twenty/pull/26382)) by @martmull
- [BREAKING_CHANGE] refactor(server): compute the application-scoped core schema server-side ([#26439](https://github.com/twentyhq/twenty/pull/26439)) by @prastoin
- chore(workflow): match the core workflow show page header to the workspace one ([#26552](https://github.com/twentyhq/twenty/pull/26552)) by @thomtrp
- Group Card parts under one component ([#26654](https://github.com/twentyhq/twenty/pull/26654)) by @bosiraphael

## ✨ New features

- feat(twenty-front): show secondary links in workflow action ([#24486](https://github.com/twentyhq/twenty/pull/24486)) by @Amit91848
- feat(view): land on the initial object view and hide the index view behind the flag ([#25682](https://github.com/twentyhq/twenty/pull/25682)) by @thomtrp
- feat(slack): per-channel rules for the assistant ([#26016](https://github.com/twentyhq/twenty/pull/26016)) by @abdulrahmancodes
- feat(usage-limit): cap workspace file storage with a stock limit kind ([#26042](https://github.com/twentyhq/twenty/pull/26042)) by @etiennejouan
- feat(workflow): core-id native workflow API — reads and writes ([#26068](https://github.com/twentyhq/twenty/pull/26068)) by @thomtrp
- feat: add serviceAccount support to Helm chart ([#26097](https://github.com/twentyhq/twenty/pull/26097)) by @mdminhazulhaque
- feat(workflow): core-only workflow execution and background processing ([#26098](https://github.com/twentyhq/twenty/pull/26098)) by @thomtrp
- feat: migrate workflow editor and actions to core IDs ([#26116](https://github.com/twentyhq/twenty/pull/26116)) by @thomtrp
- feat(auth): refuse API access for suspended workspaces ([#26127](https://github.com/twentyhq/twenty/pull/26127)) by @etiennejouan
- feat(ai): click the chat title in the page header to rename the thread ([#26146](https://github.com/twentyhq/twenty/pull/26146)) by @FelixMalfait
- feat(usage-limit): cap workspace records with a stock limit ([#26147](https://github.com/twentyhq/twenty/pull/26147)) by @etiennejouan
- feat(server): give the message object a standard record page layout ([#26153](https://github.com/twentyhq/twenty/pull/26153)) by @FelixMalfait
- feat: expose queue job progress ([#26157](https://github.com/twentyhq/twenty/pull/26157)) by @Weiko
- feat(workflow): make core workflow and workflow version syncable so definition changes broadcast ([#26158](https://github.com/twentyhq/twenty/pull/26158)) by @thomtrp
- feat(workflow): consume core workflow events on the core workflow surfaces ([#26159](https://github.com/twentyhq/twenty/pull/26159)) by @thomtrp
- feat(apps): run application lifecycle hooks on a dedicated queue ([#26166](https://github.com/twentyhq/twenty/pull/26166)) by @martmull
- feat(teams): scaffold the Microsoft Teams app package ([#26185](https://github.com/twentyhq/twenty/pull/26185)) by @abdulrahmancodes
- feat(teams): add the Bot Connector client and inbound activity verification ([#26186](https://github.com/twentyhq/twenty/pull/26186)) by @abdulrahmancodes
- feat(workflow): migrate MCP tools and bundled app consumers to core workflow IDs ([#26189](https://github.com/twentyhq/twenty/pull/26189)) by @thomtrp
- feat(ai): add evaluation models and a Classify workflow node ([#26225](https://github.com/twentyhq/twenty/pull/26225)) by @FelixMalfait
- feat: private workflows on the core schema ([#26243](https://github.com/twentyhq/twenty/pull/26243)) by @FelixMalfait
- feat(usage-limit): gate workflow node runs and logic function executions ([#26283](https://github.com/twentyhq/twenty/pull/26283)) by @etiennejouan
- feat(client-sdk): upload files straight to storage from uploadFile ([#26305](https://github.com/twentyhq/twenty/pull/26305)) by @martmull
- feat(application): deploy app tarballs straight to file storage ([#26314](https://github.com/twentyhq/twenty/pull/26314)) by @martmull
- feat(teams): add feature settings foundation ([#26345](https://github.com/twentyhq/twenty/pull/26345)) by @ehconitin
- feat(sharing): unify record access and enable multiplayer chats ([#26348](https://github.com/twentyhq/twenty/pull/26348)) by @FelixMalfait
- feat(view): land on the kanban for opportunities and a list for campaigns ([#26360](https://github.com/twentyhq/twenty/pull/26360)) by @thomtrp
- feat(teams): consolidate transcript OAuth into Teams ([#26362](https://github.com/twentyhq/twenty/pull/26362)) by @ehconitin
- feat(ai): execute chat turns as their persisted sender ([#26369](https://github.com/twentyhq/twenty/pull/26369)) by @FelixMalfait
- feat(usage-limit): cap email sends with a quota limit ([#26378](https://github.com/twentyhq/twenty/pull/26378)) by @etiennejouan
- feat(object-metadata): allow updating readability through the metadata API ([#26427](https://github.com/twentyhq/twenty/pull/26427)) by @martmull
- feat(server): require a user session on the calendar timeline ([#26440](https://github.com/twentyhq/twenty/pull/26440)) by @prastoin
- feat(server): require a user session on account-level operations ([#26441](https://github.com/twentyhq/twenty/pull/26441)) by @prastoin
- feat(teams): require a Teams endorsement on the activity signing key ([#26444](https://github.com/twentyhq/twenty/pull/26444)) by @abdulrahmancodes
- feat(workflow): require a core parent on every workflow version (2.43) ([#26451](https://github.com/twentyhq/twenty/pull/26451)) by @thomtrp
- feat(usage-limit): consume quota on app charges ([#26461](https://github.com/twentyhq/twenty/pull/26461)) by @etiennejouan
- feat(usage-limit): let only an operator replace an instance default ([#26476](https://github.com/twentyhq/twenty/pull/26476)) by @etiennejouan
- feat(front-components): share one application token pair per application ([#26525](https://github.com/twentyhq/twenty/pull/26525)) by @prastoin
- feat(last-contact): add a health check and run the backfill synchronously (1.6.0) ([#26526](https://github.com/twentyhq/twenty/pull/26526)) by @martmull
- feat(usage-limit): ship a default daily email quota per workspace ([#26535](https://github.com/twentyhq/twenty/pull/26535)) by @etiennejouan
- feat(event-logs): log record restores and permanent deletes ([#26538](https://github.com/twentyhq/twenty/pull/26538)) by @martmull
- feat(ai): link chat threads to workspace members (expand step) ([#26564](https://github.com/twentyhq/twenty/pull/26564)) by @FelixMalfait
- feat(ai): make chat threads an attachment target ([#26565](https://github.com/twentyhq/twenty/pull/26565)) by @FelixMalfait
- feat(ai): separate chat sharing UI from backend rollout ([#26581](https://github.com/twentyhq/twenty/pull/26581)) by @FelixMalfait
- feat(docker): add ClickHouse to twenty-app-dev image ([#26598](https://github.com/twentyhq/twenty/pull/26598)) by @martmull
- feat(workflow): toggle core workflow visibility from the command menu ([#26651](https://github.com/twentyhq/twenty/pull/26651)) by @thomtrp
- feat(usage): meter common API calls in complexity points ([#26671](https://github.com/twentyhq/twenty/pull/26671)) by @etiennejouan

## 💅 Improvements & UX

- Allow configuring the SMTP EHLO hostname ([#24932](https://github.com/twentyhq/twenty/pull/24932)) by @rollecode
- Fix horizontal bar chart left axis labels always truncated to 10 characters ([#25544](https://github.com/twentyhq/twenty/pull/25544)) by @Thomas4390
- Granola 8/8: Add Granola listing copy and setup documentation ([#25577](https://github.com/twentyhq/twenty/pull/25577)) by @ehconitin
- Settle call recordings whose Recall media expired ([#25795](https://github.com/twentyhq/twenty/pull/25795)) by @ehconitin
- Slide the side panel with transform instead of animating its width ([#25844](https://github.com/twentyhq/twenty/pull/25844)) by @LouisDelbosc
- Enable async CSV export progress behind a workspace flag ([#25968](https://github.com/twentyhq/twenty/pull/25968)) by @Weiko
- Add async CSV export server behind a workspace flag ([#25987](https://github.com/twentyhq/twenty/pull/25987)) by @Weiko
- feat localized legal links ([#25991](https://github.com/twentyhq/twenty/pull/25991)) by @minnibaevB
- Hard-delete row-level permission predicates instead of soft-deleting them ([#25992](https://github.com/twentyhq/twenty/pull/25992)) by @Weiko
- Hard-delete views and their children instead of soft-deleting them ([#26002](https://github.com/twentyhq/twenty/pull/26002)) by @Weiko
- [forms 2/3] Improve record form field presentation ([#26031](https://github.com/twentyhq/twenty/pull/26031)) by @Bonapara
- [2/2 Sidebar] New customization experience ([#26037](https://github.com/twentyhq/twenty/pull/26037)) by @Bonapara
- Bind CSV export downloads to their requesting session ([#26052](https://github.com/twentyhq/twenty/pull/26052)) by @Weiko
- [forms 3/4] Submit record creation forms with Command or Control Enter ([#26064](https://github.com/twentyhq/twenty/pull/26064)) by @Bonapara
- Split installed app detail page into settings tabs ([#26065](https://github.com/twentyhq/twenty/pull/26065)) by @martmull
- Unify Twenty UI icon buttons ([#26071](https://github.com/twentyhq/twenty/pull/26071)) by @bosiraphael
- Unpin creation commands while records are selected ([#26075](https://github.com/twentyhq/twenty/pull/26075)) by @Bonapara
- Make call recorder imports resumable with deterministic jobs ([#26080](https://github.com/twentyhq/twenty/pull/26080)) by @ehconitin
- Migrate Twenty UI headings ([#26085](https://github.com/twentyhq/twenty/pull/26085)) by @bosiraphael
- Replace Twenty UI Modal with Dialog ([#26087](https://github.com/twentyhq/twenty/pull/26087)) by @bosiraphael
- Migrate tooltips to Base UI ([#26088](https://github.com/twentyhq/twenty/pull/26088)) by @bosiraphael
- [forms 4/4] Name the record creation callback arguments ([#26101](https://github.com/twentyhq/twenty/pull/26101)) by @Bonapara
- [3/3 Sidebar] Bulk object metadata updates ([#26105](https://github.com/twentyhq/twenty/pull/26105)) by @Bonapara
- Send Slack files to the assistant agent as attachments ([#26106](https://github.com/twentyhq/twenty/pull/26106)) by @abdulrahmancodes
- Skip missing Microsoft messages instead of resetting the mailbox sync ([#26107](https://github.com/twentyhq/twenty/pull/26107)) by @neo773
- Tidy navigation typing and remove dead drag state ([#26109](https://github.com/twentyhq/twenty/pull/26109)) by @Bonapara
- Follow Graph pagination when discovering Microsoft mail folders ([#26118](https://github.com/twentyhq/twenty/pull/26118)) by @Maharsh17
- Match the floating text editor width to its field on record pages ([#26124](https://github.com/twentyhq/twenty/pull/26124)) by @charlesBochet
- Fail a record export when a page fetch fails instead of truncating it ([#26125](https://github.com/twentyhq/twenty/pull/26125)) by @charlesBochet
- Hide native spinner on number inputs ([#26126](https://github.com/twentyhq/twenty/pull/26126)) by @etiennejouan
- fix(billing) - update billing plan CTAs from the plan and interval grid ([#26129](https://github.com/twentyhq/twenty/pull/26129)) by @etiennejouan
- Group the command menu into sections ([#26130](https://github.com/twentyhq/twenty/pull/26130)) by @Bonapara
- Move the unpin creation commands upgrade command to 2.42 and use the legacy path ([#26132](https://github.com/twentyhq/twenty/pull/26132)) by @prastoin
- Import missing dependency in create-twenty-app ([#26133](https://github.com/twentyhq/twenty/pull/26133)) by @martmull
- Fix UI builds without Monaco ([#26134](https://github.com/twentyhq/twenty/pull/26134)) by @bosiraphael
- Restore banner button colors ([#26135](https://github.com/twentyhq/twenty/pull/26135)) by @bosiraphael
- Treat the current upgrade version directory as previous once its tag exists ([#26137](https://github.com/twentyhq/twenty/pull/26137)) by @prastoin
- Differentiate impromptu Fathom recording titles ([#26138](https://github.com/twentyhq/twenty/pull/26138)) by @ehconitin
- Declare navigation menu items as children of object, view and page layout so their cache follows deletions ([#26141](https://github.com/twentyhq/twenty/pull/26141)) by @prastoin
- Migrate Twenty UI tab navigation ([#26142](https://github.com/twentyhq/twenty/pull/26142)) by @bosiraphael
- v1.8.4 — Partners app: keep the company name out of marketplace brief names ([#26143](https://github.com/twentyhq/twenty/pull/26143)) by @ijreilly
- Migrate light icon buttons and groups ([#26144](https://github.com/twentyhq/twenty/pull/26144)) by @bosiraphael
- Backfill when switching from 1.4.0 to =1.4.0 ([#26149](https://github.com/twentyhq/twenty/pull/26149)) by @martmull
- Call recorder: Pause recording when the workspace has no credits ([#26151](https://github.com/twentyhq/twenty/pull/26151)) by @ehconitin
- Show email thread messages when participants are missing ([#26155](https://github.com/twentyhq/twenty/pull/26155)) by @neo773
- Move twenty-partners app to twentyhq/twenty-eng ([#26161](https://github.com/twentyhq/twenty/pull/26161)) by @ijreilly
- Report PDL enrichment failures and stop batches on rejected keys ([#26168](https://github.com/twentyhq/twenty/pull/26168)) by @bosiraphael
- Align the Granola settings with Twenty's native settings design ([#26172](https://github.com/twentyhq/twenty/pull/26172)) by @ehconitin
- Declare call recorder billing: usage label and marketplace pricing ([#26173](https://github.com/twentyhq/twenty/pull/26173)) by @ehconitin
- Backfill the missing index of app-owned system relation legs ([#26175](https://github.com/twentyhq/twenty/pull/26175)) by @charlesBochet
- Add Base Adresse Nationale as an address autocomplete driver ([#26176](https://github.com/twentyhq/twenty/pull/26176)) by @fcporto-nature
- AI chat: tool calls render as widgets named by the tool ([#26179](https://github.com/twentyhq/twenty/pull/26179)) by @FelixMalfait
- Sync message channels from webhooks without the cron hand-off ([#26180](https://github.com/twentyhq/twenty/pull/26180)) by @neo773
- Load sync cron channels with one query per tick ([#26181](https://github.com/twentyhq/twenty/pull/26181)) by @neo773
- Only write audit log events for workspaces entitled to audit logs ([#26182](https://github.com/twentyhq/twenty/pull/26182)) by @neo773
- Keep ClickHouse stalls from freezing the timeline queue ([#26183](https://github.com/twentyhq/twenty/pull/26183)) by @neo773
- Reduce subscription quantity sync delay from 24h to 6h ([#26190](https://github.com/twentyhq/twenty/pull/26190)) by @etiennejouan
- Restrict front component token pair and renewal to sessions ([#26191](https://github.com/twentyhq/twenty/pull/26191)) by @prastoin
- Scope application variable reads and updates to the calling application and workspace ([#26192](https://github.com/twentyhq/twenty/pull/26192)) by @prastoin
- Add default likelihood settings for PDL enrichment ([#26195](https://github.com/twentyhq/twenty/pull/26195)) by @bosiraphael
- Add last contact backfill button ([#26197](https://github.com/twentyhq/twenty/pull/26197)) by @martmull
- Only fetch visible junction relations on record index queries ([#26198](https://github.com/twentyhq/twenty/pull/26198)) by @charlesBochet
- Add SettingsRow and migrate legacy rows ([#26200](https://github.com/twentyhq/twenty/pull/26200)) by @bosiraphael
- Update doc ([#26204](https://github.com/twentyhq/twenty/pull/26204)) by @martmull
- Separate Twenty UI primitives and components ([#26207](https://github.com/twentyhq/twenty/pull/26207)) by @bosiraphael
- Point Fathom website to fathom.ai and bump to 1.1.0 ([#26209](https://github.com/twentyhq/twenty/pull/26209)) by @ehconitin
- Migrate picker rows to ListItem ([#26211](https://github.com/twentyhq/twenty/pull/26211)) by @bosiraphael
- Unify icon buttons with elevated styling ([#26213](https://github.com/twentyhq/twenty/pull/26213)) by @bosiraphael
- Bind the application claim OAuth state to the browser that started it ([#26214](https://github.com/twentyhq/twenty/pull/26214)) by @martmull
- Defer slow workspace migration actions to a worker job ([#26222](https://github.com/twentyhq/twenty/pull/26222)) by @charlesBochet
- Upgrade react-router to 7.18.4 ([#26232](https://github.com/twentyhq/twenty/pull/26232)) by @charlesBochet
- [1/5] Enforce SYSTEM record visibility for event delivery ([#26244](https://github.com/twentyhq/twenty/pull/26244)) by @FelixMalfait
- [2/5] Register five protected agent history workspace objects ([#26245](https://github.com/twentyhq/twenty/pull/26245)) by @FelixMalfait
- [3/5] Route agent history through workspace-aware persistence ([#26246](https://github.com/twentyhq/twenty/pull/26246)) by @FelixMalfait
- [4/5] Add verified, resumable agent-history migration ([#26247](https://github.com/twentyhq/twenty/pull/26247)) by @FelixMalfait
- [5/5] Activate agent-history workspace storage through versioned upgrades ([#26248](https://github.com/twentyhq/twenty/pull/26248)) by @FelixMalfait
- Fix blank record panels caused by tab stylesheet order ([#26254](https://github.com/twentyhq/twenty/pull/26254)) by @FelixMalfait
- Fix workspace AI history reads and stream coordination ([#26259](https://github.com/twentyhq/twenty/pull/26259)) by @FelixMalfait
- Stop the default domain from bouncing users back to their last workspace ([#26260](https://github.com/twentyhq/twenty/pull/26260)) by @Bonapara
- Scaffold Teams Transcripts app ([#26264](https://github.com/twentyhq/twenty/pull/26264)) by @ehconitin
- Show app url setting only in advanced mode ([#26265](https://github.com/twentyhq/twenty/pull/26265)) by @martmull
- Add Microsoft Teams OAuth connection ([#26266](https://github.com/twentyhq/twenty/pull/26266)) by @ehconitin
- Flag missing required application variables on the app settings page ([#26270](https://github.com/twentyhq/twenty/pull/26270)) by @martmull
- Call recorder: resume bot-less recordings when the event payload carries an empty bot id ([#26272](https://github.com/twentyhq/twenty/pull/26272)) by @ehconitin
- Always show the add step button on the last workflow node ([#26273](https://github.com/twentyhq/twenty/pull/26273)) by @Bonapara
- Add Granola app gallery covers ([#26274](https://github.com/twentyhq/twenty/pull/26274)) by @ehconitin
- Consolidate animated buttons ([#26276](https://github.com/twentyhq/twenty/pull/26276)) by @bosiraphael
- Let apps report their own configuration state with defineHealthCheck ([#26277](https://github.com/twentyhq/twenty/pull/26277)) by @martmull
- Set Granola to 1.0.0 for its first release ([#26278](https://github.com/twentyhq/twenty/pull/26278)) by @ehconitin
- Fix Kanban queries with many fields ([#26279](https://github.com/twentyhq/twenty/pull/26279)) by @bosiraphael
- Build a strict schema for agent structured output ([#26281](https://github.com/twentyhq/twenty/pull/26281)) by @ehconitin
- Print export reasons in the pull report ([#26288](https://github.com/twentyhq/twenty/pull/26288)) by @Weiko
- Export vertical-list widgets without the deprecated position form ([#26290](https://github.com/twentyhq/twenty/pull/26290)) by @Weiko
- Remove unused Twenty UI buttons ([#26293](https://github.com/twentyhq/twenty/pull/26293)) by @bosiraphael
- Migrate dropdown menu rows to ListItem ([#26297](https://github.com/twentyhq/twenty/pull/26297)) by @bosiraphael
- Fix Kanban group-by queries with a record field or long column names ([#26300](https://github.com/twentyhq/twenty/pull/26300)) by @bosiraphael
- Let apps declare several settings menu items with defineSettingsMenuItem ([#26302](https://github.com/twentyhq/twenty/pull/26302)) by @martmull
- Secure front component media capture ([#26303](https://github.com/twentyhq/twenty/pull/26303)) by @bosiraphael
- Keep preferences-page unsubscribes scoped to the unticked topics ([#26308](https://github.com/twentyhq/twenty/pull/26308)) by @neo773
- Keep table rows still on focus ([#26309](https://github.com/twentyhq/twenty/pull/26309)) by @bosiraphael
- Update website app mockup to the current product design ([#26313](https://github.com/twentyhq/twenty/pull/26313)) by @Bonapara
- Mention apps in the credit limit banner ([#26316](https://github.com/twentyhq/twenty/pull/26316)) by @ehconitin
- Rename recording tabs to Transcript ([#26318](https://github.com/twentyhq/twenty/pull/26318)) by @ehconitin
- Fix live-query date filters throwing on DATE_TIME record values ([#26321](https://github.com/twentyhq/twenty/pull/26321)) by @thomtrp
- Hide workflows from side panel search and favorites when the core index flag is on ([#26323](https://github.com/twentyhq/twenty/pull/26323)) by @thomtrp
- [1/4] Register agentChatThreadTarget as a standard workspace object ([#26328](https://github.com/twentyhq/twenty/pull/26328)) by @FelixMalfait
- [2/4] Provision agentChatThreadTarget into existing workspaces ([#26329](https://github.com/twentyhq/twenty/pull/26329)) by @FelixMalfait
- [3/4] Attach and detach conversations on a record ([#26330](https://github.com/twentyhq/twenty/pull/26330)) by @FelixMalfait
- Give message campaigns their own send rate limit counters ([#26331](https://github.com/twentyhq/twenty/pull/26331)) by @neo773
- Price campaign emails at $0.90 per 1,000 ([#26333](https://github.com/twentyhq/twenty/pull/26333)) by @neo773
- Add actor field to any filter ([#26334](https://github.com/twentyhq/twenty/pull/26334)) by @BOHEUS
- Fix permissions issue with search any field ([#26339](https://github.com/twentyhq/twenty/pull/26339)) by @BOHEUS
- Run application upgrades as per-workspace jobs on a dedicated queue ([#26341](https://github.com/twentyhq/twenty/pull/26341)) by @martmull
- Fix dark mode dropdown scrollbars ([#26344](https://github.com/twentyhq/twenty/pull/26344)) by @bosiraphael
- Load limits on view groups ([#26349](https://github.com/twentyhq/twenty/pull/26349)) by @Bonapara
- fix(workspace cleaning) - Enqueue suspended workspace destruction instead of running it inside the cron ([#26354](https://github.com/twentyhq/twenty/pull/26354)) by @etiennejouan
- Add REDIS_QUEUE_PREFIX so BullMQ works on clustered Redis (hash-tagged keys) ([#26357](https://github.com/twentyhq/twenty/pull/26357)) by @thisispr
- Rename workflow AI Agent to Agent and align node presentation ([#26363](https://github.com/twentyhq/twenty/pull/26363)) by @thomtrp
- Recover and retry deferred workspace migration actions ([#26371](https://github.com/twentyhq/twenty/pull/26371)) by @charlesBochet
- perf(clickhouse) - partition objectEvent by month in ClickHouse ([#26372](https://github.com/twentyhq/twenty/pull/26372)) by @etiennejouan
- Standardize `twenty-front` module filename ([#26373](https://github.com/twentyhq/twenty/pull/26373)) by @BOHEUS
- Fix the language switcher on docs.twenty.com ([#26374](https://github.com/twentyhq/twenty/pull/26374)) by @Bonapara
- Standardize `twenty-server` module filename ([#26375](https://github.com/twentyhq/twenty/pull/26375)) by @BOHEUS
- Add standardized rule ([#26376](https://github.com/twentyhq/twenty/pull/26376)) by @BOHEUS
- Add the shared Dropdown foundation ([#26383](https://github.com/twentyhq/twenty/pull/26383)) by @bosiraphael
- Add AI-assisted DNS setup for email group domains ([#26392](https://github.com/twentyhq/twenty/pull/26392)) by @neo773
- Pace call recorder recovery jobs to stay under Recall's rate limit ([#26418](https://github.com/twentyhq/twenty/pull/26418)) by @ehconitin
- [Forms 1/5] Rename record creation from New to Create and keep it pinned ([#26419](https://github.com/twentyhq/twenty/pull/26419)) by @Bonapara
- [Forms 2/5] Keep the record creation form open when creation fails ([#26422](https://github.com/twentyhq/twenty/pull/26422)) by @Bonapara
- [Forms 3/5] Take currency amounts in units in record forms ([#26423](https://github.com/twentyhq/twenty/pull/26423)) by @Bonapara
- [Forms 4/5] Let Tab move through form text inputs ([#26425](https://github.com/twentyhq/twenty/pull/26425)) by @Bonapara
- Migrate independent Dropdown action menus ([#26432](https://github.com/twentyhq/twenty/pull/26432)) by @bosiraphael
- Mark the Marketplace tab as beta in Applications settings ([#26433](https://github.com/twentyhq/twenty/pull/26433)) by @Bonapara
- Trigger backfill when publishing 1.5.0 ([#26434](https://github.com/twentyhq/twenty/pull/26434)) by @martmull
- Fix app-scoped schema generation for relations targeting another application's object ([#26436](https://github.com/twentyhq/twenty/pull/26436)) by @prastoin
- Refuse schema migrations while deferred index builds are in flight ([#26446](https://github.com/twentyhq/twenty/pull/26446)) by @charlesBochet
- Reload the enterprise validity token in the server process ([#26449](https://github.com/twentyhq/twenty/pull/26449)) by @ijreilly
- Skip AI catalog entries the server cannot read instead of serving none ([#26452](https://github.com/twentyhq/twenty/pull/26452)) by @FelixMalfait
- Make email group sends free for paying customers, with rate limits ([#26455](https://github.com/twentyhq/twenty/pull/26455)) by @neo773
- Bump version to 1.1.0 ([#26456](https://github.com/twentyhq/twenty/pull/26456)) by @martmull
- Serve backend HTML with startup config and workspace iframe settings ([#26459](https://github.com/twentyhq/twenty/pull/26459)) by @FelixMalfait
- Fix the useToast import in RecordCreationFormProvider ([#26460](https://github.com/twentyhq/twenty/pull/26460)) by @thomtrp
- Consolidate resize handle interactions ([#26463](https://github.com/twentyhq/twenty/pull/26463)) by @bosiraphael
- Use radio groups for segmented settings ([#26465](https://github.com/twentyhq/twenty/pull/26465)) by @bosiraphael
- Stop provisioning navigation commands for SYSTEM-readable objects ([#26469](https://github.com/twentyhq/twenty/pull/26469)) by @martmull
- Put the record creation form back behind a feature flag ([#26472](https://github.com/twentyhq/twenty/pull/26472)) by @thomtrp
- Remove react-router dependency from twenty-ui ([#26477](https://github.com/twentyhq/twenty/pull/26477)) by @bosiraphael
- Move ObjectMetadata and FieldMetadata onto the workspace-scoped repository ([#26479](https://github.com/twentyhq/twenty/pull/26479)) by @prastoin
- Migrate Select, pickers and filter menus to the shared Dropdown ([#26483](https://github.com/twentyhq/twenty/pull/26483)) by @bosiraphael
- Only let paying customers send or schedule campaigns ([#26486](https://github.com/twentyhq/twenty/pull/26486)) by @neo773
- Command menu sections ([#26488](https://github.com/twentyhq/twenty/pull/26488)) by @Bonapara
- Move campaign deliveries and suppressions into the workspace schema ([#26491](https://github.com/twentyhq/twenty/pull/26491)) by @neo773
- Stop a Slack content-type mismatch claiming a missing files:read scope ([#26509](https://github.com/twentyhq/twenty/pull/26509)) by @abdulrahmancodes
- Make People Data Labs likelihood settings user configurable ([#26512](https://github.com/twentyhq/twenty/pull/26512)) by @bosiraphael
- Add a static cache version query param to the client-config request ([#26513](https://github.com/twentyhq/twenty/pull/26513)) by @prastoin
- Surface the deferred action conflict as a conflict error ([#26521](https://github.com/twentyhq/twenty/pull/26521)) by @charlesBochet
- Allow raw HTML blocks in workflow email bodies ([#26528](https://github.com/twentyhq/twenty/pull/26528)) by @neo773
- Replace responsive hooks with native media queries ([#26532](https://github.com/twentyhq/twenty/pull/26532)) by @bosiraphael
- Defer foreign key validation for join columns ([#26534](https://github.com/twentyhq/twenty/pull/26534)) by @charlesBochet
- Preserve record access before chat metadata is provisioned ([#26536](https://github.com/twentyhq/twenty/pull/26536)) by @FelixMalfait
- Let Escape close the side panel from form fields ([#26540](https://github.com/twentyhq/twenty/pull/26540)) by @thomtrp
- Rename attachment target column to "Attached to" and add an attachment record page with inline preview ([#26549](https://github.com/twentyhq/twenty/pull/26549)) by @FelixMalfait
- Center icon buttons on Kanban and calendar cards ([#26550](https://github.com/twentyhq/twenty/pull/26550)) by @Bonapara
- Retire EmailingDomain and MessageFolder from the workspace-scoped exemption list ([#26563](https://github.com/twentyhq/twenty/pull/26563)) by @prastoin
- Subscribe to created Outlook mail notifications only ([#26569](https://github.com/twentyhq/twenty/pull/26569)) by @neo773
- Remove the deferred workspace migration actions design doc ([#26591](https://github.com/twentyhq/twenty/pull/26591)) by @charlesBochet
- Revert "Slide the side panel with transform instead of animating its width" ([#26592](https://github.com/twentyhq/twenty/pull/26592)) by @charlesBochet
- Move ApplicationEntity onto the workspace-scoped repository ([#26595](https://github.com/twentyhq/twenty/pull/26595)) by @prastoin
- Expose selected object metadata and keep unchanged context values stable ([#26596](https://github.com/twentyhq/twenty/pull/26596)) by @bosiraphael
- Migrate sort and editor toolbar dropdowns ([#26599](https://github.com/twentyhq/twenty/pull/26599)) by @bosiraphael
- Move translations to a settings page with one row per language ([#26605](https://github.com/twentyhq/twenty/pull/26605)) by @Bonapara
- Fix activity targets after initial company assignment ([#26613](https://github.com/twentyhq/twenty/pull/26613)) by @FelixMalfait
- Remove message and calendar target read rollout flag ([#26625](https://github.com/twentyhq/twenty/pull/26625)) by @FelixMalfait
- Repair missing company activity history during the 2.43 upgrade ([#26631](https://github.com/twentyhq/twenty/pull/26631)) by @FelixMalfait
- Fix view permission integration test helper references ([#26633](https://github.com/twentyhq/twenty/pull/26633)) by @FelixMalfait
- Stop hidden advanced settings from adding space between sections ([#26647](https://github.com/twentyhq/twenty/pull/26647)) by @Bonapara
- Document remaining Twenty UI primitives ([#26649](https://github.com/twentyhq/twenty/pull/26649)) by @bosiraphael
- Restore columns when resetting view grouping ([#26656](https://github.com/twentyhq/twenty/pull/26656)) by @bosiraphael
- Use default domain for marketplace app share link ([#26666](https://github.com/twentyhq/twenty/pull/26666)) by @martmull
- Restore tab and menu icon stroke weight ([#26670](https://github.com/twentyhq/twenty/pull/26670)) by @Bonapara
- Keep upgrade command code in its version folder ([#26672](https://github.com/twentyhq/twenty/pull/26672)) by @FelixMalfait
- Remove the per-campaign recipient cap ([#26675](https://github.com/twentyhq/twenty/pull/26675)) by @neo773
- Remove the unused sendEmailViaEmailingDomain mutation ([#26676](https://github.com/twentyhq/twenty/pull/26676)) by @neo773
- Serve agent history from workspace storage only ([#26678](https://github.com/twentyhq/twenty/pull/26678)) by @FelixMalfait
- Scope application tokens to their own application ([#26681](https://github.com/twentyhq/twenty/pull/26681)) by @prastoin
- Require a user session to change application registration ownership ([#26684](https://github.com/twentyhq/twenty/pull/26684)) by @prastoin
- Truncate ClickHouse tables on database reset ([#26687](https://github.com/twentyhq/twenty/pull/26687)) by @martmull
- Fix frontend routing for dotted navigation paths ([#26711](https://github.com/twentyhq/twenty/pull/26711)) by @FelixMalfait
- Fix invitation E2E revoking the shared login session ([#26712](https://github.com/twentyhq/twenty/pull/26712)) by @FelixMalfait

## 🐛 Bug fixes

- fix(server): normalize deprecated IANA timezone aliases before they reach SQL ([#23787](https://github.com/twentyhq/twenty/pull/23787)) by @M3BIONIX
- fix(twenty-server): honor the identity provider's advertised id_token signing algorithm ([#24165](https://github.com/twentyhq/twenty/pull/24165)) by @suparikoli
- fix: respect RLS predicate groups for select options ([#24327](https://github.com/twentyhq/twenty/pull/24327)) by @alamin284
- fix(view-permissions): recognize application principal in view access checks ([#24349](https://github.com/twentyhq/twenty/pull/24349)) by @longshaww
- fix: ignore inherited Object keys when validating locales and normalize the x-locale header ([#24919](https://github.com/twentyhq/twenty/pull/24919)) by @guillaume-flambard
- fix(front): keep legacy null phone subfields from being dropped ([#25420](https://github.com/twentyhq/twenty/pull/25420)) by @abhinavapasok
- fix(view): keep view sorts in creation order in the flat view cache ([#25448](https://github.com/twentyhq/twenty/pull/25448)) by @sagarithm
- fix(twenty-shared): honor underscore wildcard in string like and ilike filters ([#25489](https://github.com/twentyhq/twenty/pull/25489)) by @hktitof
- fix(twenty-shared): honor wildcard parity in rich text ilike filter ([#25505](https://github.com/twentyhq/twenty/pull/25505)) by @hktitof
- fix(twenty-shared): honor SQL percent wildcards in array containsIlike (#25247) ([#25551](https://github.com/twentyhq/twenty/pull/25551)) by @claxman
- fix(security): enforce object-level role permissions on system object writes (#24309) ([#25809](https://github.com/twentyhq/twenty/pull/25809)) by @mini0n-ai
- fix(workflow): match select filter options by exact value, not substring ([#25828](https://github.com/twentyhq/twenty/pull/25828)) by @breken-ai
- fix(tool): make help center search resilient and its failures readable ([#25989](https://github.com/twentyhq/twenty/pull/25989)) by @Atharva0222
- fix(workflow): never freeze a null core workflow link on version mirror ([#26076](https://github.com/twentyhq/twenty/pull/26076)) by @thomtrp
- fix(last-contact): batch API writes so a mailbox sync stays inside the rate limit ([#26110](https://github.com/twentyhq/twenty/pull/26110)) by @martmull
- fix(front): reorder view fields from the rendered list instead of shifted indices ([#26112](https://github.com/twentyhq/twenty/pull/26112)) by @charlesBochet
- fix(billing): wrap modal action buttons in flex slots instead of a child selector ([#26136](https://github.com/twentyhq/twenty/pull/26136)) by @etiennejouan
- fix(call-recording): show terminal empty transcript states ([#26140](https://github.com/twentyhq/twenty/pull/26140)) by @ehconitin
- fix(rich-text): normalize tiptap rich text written by workflow record steps ([#26156](https://github.com/twentyhq/twenty/pull/26156)) by @thomtrp
- fix(ai): degrade unsupported runAgent attachments instead of failing the run ([#26177](https://github.com/twentyhq/twenty/pull/26177)) by @abdulrahmancodes
- fix(server): correct misclassified structural exemptions in prefer-workspace-scoped-repository ([#26202](https://github.com/twentyhq/twenty/pull/26202)) by @prastoin
- fix(docker): copy twenty-oxlint-rules manifest into server-deps stage ([#26231](https://github.com/twentyhq/twenty/pull/26231)) by @charlesBochet
- fix(client-sdk): externalize all Node builtins in Vite lib build ([#26234](https://github.com/twentyhq/twenty/pull/26234)) by @AyeshaWaseemAhmad
- fix(workflow): keep runs alive for if/else and skip edges across the continuation boundary ([#26271](https://github.com/twentyhq/twenty/pull/26271)) by @thomtrp
- fix(usage-limit): key stock counters by their limit value ([#26275](https://github.com/twentyhq/twenty/pull/26275)) by @etiennejouan
- fix(workflow): evict the cron trigger cache when a workflow version is deleted ([#26280](https://github.com/twentyhq/twenty/pull/26280)) by @thomtrp
- fix(workflow): dispatch an iterator loop body listed in the iterator nextStepIds ([#26301](https://github.com/twentyhq/twenty/pull/26301)) by @thomtrp
- fix: filter Firefox iOS YouTube script errors from Sentry ([#26324](https://github.com/twentyhq/twenty/pull/26324)) by @charlesBochet
- fix: wait for workflow version before refreshing content ([#26340](https://github.com/twentyhq/twenty/pull/26340)) by @charlesBochet
- fix(server): stop workspace commands retaining every visited workspace in memory ([#26342](https://github.com/twentyhq/twenty/pull/26342)) by @martmull
- fix: separate connected account disconnect from deletion ([#26347](https://github.com/twentyhq/twenty/pull/26347)) by @neo773
- fix(ai-chat): stop Bedrock cache points from stacking across AI SDK steps ([#26355](https://github.com/twentyhq/twenty/pull/26355)) by @etiennejouan
- fix: classify logic function rate limits as expected errors ([#26365](https://github.com/twentyhq/twenty/pull/26365)) by @charlesBochet
- fix(oauth): provision the Twenty CLI OAuth client on non-seeded servers ([#26389](https://github.com/twentyhq/twenty/pull/26389)) by @martmull
- fix(server): clarify email domain ownership conflict ([#26393](https://github.com/twentyhq/twenty/pull/26393)) by @neo773
- fix(server): allow transactional email without unsubscribe hostname ([#26395](https://github.com/twentyhq/twenty/pull/26395)) by @neo773
- fix(shared): reject scheme-relative backslash urls in isSafeUrl ([#26397](https://github.com/twentyhq/twenty/pull/26397)) by @Belkouche
- fix(shared): escape regex metacharacters in raw json like filters ([#26398](https://github.com/twentyhq/twenty/pull/26398)) by @Belkouche
- fix(front): keep additional phones and country code when importing a phone without calling code ([#26399](https://github.com/twentyhq/twenty/pull/26399)) by @Belkouche
- fix(front): import a single multi-select value that parses as a JSON scalar ([#26400](https://github.com/twentyhq/twenty/pull/26400)) by @Belkouche
- fix(front): strip float noise from percentage draft values ([#26401](https://github.com/twentyhq/twenty/pull/26401)) by @Belkouche
- fix(server): compare gmail sync cursors numerically ([#26402](https://github.com/twentyhq/twenty/pull/26402)) by @Belkouche
- fix(server): match blocklist entries case-insensitively ([#26403](https://github.com/twentyhq/twenty/pull/26403)) by @Belkouche
- fix(server): evaluate workflow number and array filters on empty and JSON-like values ([#26404](https://github.com/twentyhq/twenty/pull/26404)) by @Belkouche
- fix(server): keep a workflow run alive when resuming a leaf step while another branch is pending ([#26405](https://github.com/twentyhq/twenty/pull/26405)) by @Belkouche
- fix(server): merge every readable field regardless of the mutation selection ([#26406](https://github.com/twentyhq/twenty/pull/26406)) by @Belkouche
- fix(front): keep the record currency when a currency cell edit starts by typing ([#26407](https://github.com/twentyhq/twenty/pull/26407)) by @Belkouche
- fix(server): lowercase calendar participant handles on import ([#26408](https://github.com/twentyhq/twenty/pull/26408)) by @Belkouche
- fix(server): mint auto-login tokens with the caller's auth provider ([#26409](https://github.com/twentyhq/twenty/pull/26409)) by @Belkouche
- fix(front): keep the calendar day when importing a date without time ([#26410](https://github.com/twentyhq/twenty/pull/26410)) by @Belkouche
- fix(slack): honour silent channel rules outside the assistant path ([#26417](https://github.com/twentyhq/twenty/pull/26417)) by @abdulrahmancodes
- fix(billing): serialize stripe subscription webhook per customer ([#26431](https://github.com/twentyhq/twenty/pull/26431)) by @etiennejouan
- fix(workflow): unblock 2.42 workflow execution backfill on legacy workspaces ([#26435](https://github.com/twentyhq/twenty/pull/26435)) by @thomtrp
- fix(workflow): delete orphan core workflows left by deleted workflows ([#26437](https://github.com/twentyhq/twenty/pull/26437)) by @thomtrp
- fix(server): resolve server routes by primary key, fall back to the legacy identifier ([#26438](https://github.com/twentyhq/twenty/pull/26438)) by @prastoin
- fix(server): intersect the calling application role in every settings permission check ([#26442](https://github.com/twentyhq/twenty/pull/26442)) by @prastoin
- fix(upgrade): tolerate missing fields when creating message record pages ([#26447](https://github.com/twentyhq/twenty/pull/26447)) by @FelixMalfait
- fix: display app permission flags and reset saved role changes ([#26450](https://github.com/twentyhq/twenty/pull/26450)) by @Weiko
- fix(workflow): skip orphan core workflows in the 2.42 published pointer check ([#26458](https://github.com/twentyhq/twenty/pull/26458)) by @thomtrp
- fix: fill scaffolded app page viewport ([#26464](https://github.com/twentyhq/twenty/pull/26464)) by @Weiko
- fix(workflow): show remote edits on the open workflow canvas ([#26471](https://github.com/twentyhq/twenty/pull/26471)) by @thomtrp
- fix(workflow): fall back to the last published version before the newest one ([#26474](https://github.com/twentyhq/twenty/pull/26474)) by @thomtrp
- fix(usage-limit): register the quota filter on the logic function resolver ([#26478](https://github.com/twentyhq/twenty/pull/26478)) by @etiennejouan
- fix(ai): keep message writes compatible during workspace upgrades ([#26487](https://github.com/twentyhq/twenty/pull/26487)) by @FelixMalfait
- fix(metadata): guard view field group mutations with VIEWS and LAYOUTS permissions ([#26490](https://github.com/twentyhq/twenty/pull/26490)) by @Mateidslx
- fix(workflow): create missing core workflows in the 2.42 execution backfill ([#26511](https://github.com/twentyhq/twenty/pull/26511)) by @thomtrp
- fix(workflow): resolve the workspace version when a core version has no alias yet ([#26515](https://github.com/twentyhq/twenty/pull/26515)) by @thomtrp
- fix(sharing): enforce upgraded metadata before sharing rollout ([#26520](https://github.com/twentyhq/twenty/pull/26520)) by @FelixMalfait
- fix(command-menu-item): require LAYOUTS permission for command menu item mutations ([#26523](https://github.com/twentyhq/twenty/pull/26523)) by @addyCooks
- fix(event-logs): don't skip rows that share a millisecond when paginating ([#26537](https://github.com/twentyhq/twenty/pull/26537)) by @martmull
- fix(application): throttle failed application token renewals by session ([#26544](https://github.com/twentyhq/twenty/pull/26544)) by @prastoin
- fix(ai): stop creating per-workspace foreign keys to core tables for agent history ([#26547](https://github.com/twentyhq/twenty/pull/26547)) by @FelixMalfait
- fix(sdk): write the CLI config file with owner-only permissions ([#26548](https://github.com/twentyhq/twenty/pull/26548)) by @Weiko
- fix(logic-function): backfill missing file rows of logic function files ([#26554](https://github.com/twentyhq/twenty/pull/26554)) by @martmull
- fix(email): keep line breaks when opening a synced draft in the composer ([#26556](https://github.com/twentyhq/twenty/pull/26556)) by @ijreilly
- fix(mcp): make the discovery guidance consistent across every surface ([#26558](https://github.com/twentyhq/twenty/pull/26558)) by @etiennejouan
- fix: download CSV exports on the authenticated API origin ([#26567](https://github.com/twentyhq/twenty/pull/26567)) by @Weiko
- fix: preserve API path prefixes in CSV export downloads ([#26568](https://github.com/twentyhq/twenty/pull/26568)) by @Weiko
- fix(sharing): correct activation upgrade ordering ([#26579](https://github.com/twentyhq/twenty/pull/26579)) by @FelixMalfait
- fix(file-storage): create the missing file row when copying a file by path ([#26582](https://github.com/twentyhq/twenty/pull/26582)) by @martmull
- fix: drain metadata notifications before command shutdown ([#26585](https://github.com/twentyhq/twenty/pull/26585)) by @FelixMalfait
- fix(apps): do not fan out auto upgrades to workspaces behind the app's required server version ([#26608](https://github.com/twentyhq/twenty/pull/26608)) by @charlesBochet
- fix(docker): add AUTH_GOOGLE_ENABLED to docker-compose example ([#26610](https://github.com/twentyhq/twenty/pull/26610)) by @Taldres
- fix(docker): force libexpat 2.8.5-r0 to clear CVE-2026-93990 ([#26615](https://github.com/twentyhq/twenty/pull/26615)) by @charlesBochet
- fix(server): call makeMetadataApiRequest in the application view access test ([#26618](https://github.com/twentyhq/twenty/pull/26618)) by @martmull
- fix(sso): insert SAML identity providers instead of saving on a client-supplied id ([#26623](https://github.com/twentyhq/twenty/pull/26623)) by @prastoin
- fix(server): call makeMetadataApiRequest in the command menu item update test ([#26634](https://github.com/twentyhq/twenty/pull/26634)) by @charlesBochet
- fix(workflow): stop reconciling workflows to core on the created event ([#26648](https://github.com/twentyhq/twenty/pull/26648)) by @thomtrp
- fix(metrics): count directly executed GraphQL operations ([#26653](https://github.com/twentyhq/twenty/pull/26653)) by @charlesBochet
- fix(workflow): repair core version parents and skip runs of deleted versions in the 2.42 execution backfill ([#26661](https://github.com/twentyhq/twenty/pull/26661)) by @thomtrp

## ⚡ Performance

- perf(server): read the OTLP metrics export interval from OTEL_METRIC_EXPORT_INTERVAL, default 30s ([#26443](https://github.com/twentyhq/twenty/pull/26443)) by @etiennejouan
- perf(server): resolve workspace default role from flat entity cache ([#26484](https://github.com/twentyhq/twenty/pull/26484)) by @charlesBochet
- perf(slack): cache the installed Slack team id ([#26494](https://github.com/twentyhq/twenty/pull/26494)) by @abdulrahmancodes
- perf(server): mark per-pod metrics with a pod attribute ([#26542](https://github.com/twentyhq/twenty/pull/26542)) by @etiennejouan
- perf(search): read search results from the replica database ([#26551](https://github.com/twentyhq/twenty/pull/26551)) by @ijreilly
- perf(server): index core foreign keys that cascade from workspace and application deletes ([#26655](https://github.com/twentyhq/twenty/pull/26655)) by @charlesBochet

## 🔧 Developer & API

- Skip webhook and trigger fan-out jobs when nothing listens to the event ([#26184](https://github.com/twentyhq/twenty/pull/26184)) by @neo773
- Report workspace command failures through the CLI exit status ([#26263](https://github.com/twentyhq/twenty/pull/26263)) by @FelixMalfait
- chore(log) - log one line per API request with actor, endpoint and trace ids ([#26269](https://github.com/twentyhq/twenty/pull/26269)) by @etiennejouan
- Fix API ALLCAPS case to Pascal case in server tests ([#26411](https://github.com/twentyhq/twenty/pull/26411)) by @BOHEUS
- Consolidate the public theme API ([#26482](https://github.com/twentyhq/twenty/pull/26482)) by @bosiraphael
- Stop webhook subscriptions when transferring connected account ownership ([#26571](https://github.com/twentyhq/twenty/pull/26571)) by @neo773
- Let disconnect succeed when stopping webhook subscriptions fails ([#26572](https://github.com/twentyhq/twenty/pull/26572)) by @neo773
- Only create missing webhook subscriptions for syncing channels ([#26573](https://github.com/twentyhq/twenty/pull/26573)) by @neo773
- Prefer claude-opus-5-5 for the self-host Extra Smart rung ([#26590](https://github.com/twentyhq/twenty/pull/26590)) by @twenty-pr-author

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

- docs(apps): declare both sides of a relation to a standard object ([#26113](https://github.com/twentyhq/twenty/pull/26113)) by @charlesBochet
- chore(usage-limit): remove the API rate limit v2 feature flag ([#26169](https://github.com/twentyhq/twenty/pull/26169)) by @etiennejouan
- chore(usage-limit): remove the quota engine credit bound feature flag ([#26174](https://github.com/twentyhq/twenty/pull/26174)) by @etiennejouan
- chore: remove IS_APP_CLAIMING_ENABLED feature flag ([#26205](https://github.com/twentyhq/twenty/pull/26205)) by @martmull
- test(apps): cover owner-workspace scope on application registration variables ([#26208](https://github.com/twentyhq/twenty/pull/26208)) by @prastoin
- chore(people-data-labs): remove the workflow seeding that never ran ([#26262](https://github.com/twentyhq/twenty/pull/26262)) by @thomtrp
- docs: correct the AI FAQ on using your own models when self-hosting ([#26306](https://github.com/twentyhq/twenty/pull/26306)) by @ijreilly
- docs(billing): document usage limits ([#26457](https://github.com/twentyhq/twenty/pull/26457)) by @etiennejouan
- docs: correct Delay workflow credit cost ([#26467](https://github.com/twentyhq/twenty/pull/26467)) by @FelixMalfait
- chore: prepare twenty CLI package placeholder ([#26473](https://github.com/twentyhq/twenty/pull/26473)) by @Weiko
- chore(billing): clean up the leftovers of the credit allowance migration ([#26475](https://github.com/twentyhq/twenty/pull/26475)) by @etiennejouan
- refactor(file-storage): make copy private and drop dead copy/folder code ([#26593](https://github.com/twentyhq/twenty/pull/26593)) by @etiennejouan
- refactor: return API-relative paths for CSV export downloads ([#26603](https://github.com/twentyhq/twenty/pull/26603)) by @Weiko

</details>

## 🎉 New contributors

- @Maharsh17 made their first contribution in https://github.com/twentyhq/twenty/pull/26118
- @mdminhazulhaque made their first contribution in https://github.com/twentyhq/twenty/pull/26097
- @Atharva0222 made their first contribution in https://github.com/twentyhq/twenty/pull/25989
- @minnibaevB made their first contribution in https://github.com/twentyhq/twenty/pull/25991
- @alamin284 made their first contribution in https://github.com/twentyhq/twenty/pull/24327
- @longshaww made their first contribution in https://github.com/twentyhq/twenty/pull/24349
- @mini0n-ai made their first contribution in https://github.com/twentyhq/twenty/pull/25809
- @Belkouche made their first contribution in https://github.com/twentyhq/twenty/pull/26397
- @thisispr made their first contribution in https://github.com/twentyhq/twenty/pull/26357
- @rollecode made their first contribution in https://github.com/twentyhq/twenty/pull/24932
- @M3BIONIX made their first contribution in https://github.com/twentyhq/twenty/pull/23787
- @suparikoli made their first contribution in https://github.com/twentyhq/twenty/pull/24165
- @Thomas4390 made their first contribution in https://github.com/twentyhq/twenty/pull/25544
- @sagarithm made their first contribution in https://github.com/twentyhq/twenty/pull/25448
- @LouisDelbosc made their first contribution in https://github.com/twentyhq/twenty/pull/25844
- @fcporto-nature made their first contribution in https://github.com/twentyhq/twenty/pull/26176
- @Mateidslx made their first contribution in https://github.com/twentyhq/twenty/pull/26490
- @Taldres made their first contribution in https://github.com/twentyhq/twenty/pull/26610

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

- fix(server): normalize deprecated IANA timezone aliases before they reach SQL ([#23787](https://github.com/twentyhq/twenty/pull/23787)) by @M3BIONIX
- fix(twenty-server): honor the identity provider's advertised id_token signing algorithm ([#24165](https://github.com/twentyhq/twenty/pull/24165)) by @suparikoli
- fix: respect RLS predicate groups for select options ([#24327](https://github.com/twentyhq/twenty/pull/24327)) by @alamin284
- fix(view-permissions): recognize application principal in view access checks ([#24349](https://github.com/twentyhq/twenty/pull/24349)) by @longshaww
- feat(twenty-front): show secondary links in workflow action ([#24486](https://github.com/twentyhq/twenty/pull/24486)) by @Amit91848
- fix: ignore inherited Object keys when validating locales and normalize the x-locale header ([#24919](https://github.com/twentyhq/twenty/pull/24919)) by @guillaume-flambard
- Allow configuring the SMTP EHLO hostname ([#24932](https://github.com/twentyhq/twenty/pull/24932)) by @rollecode
- fix(front): keep legacy null phone subfields from being dropped ([#25420](https://github.com/twentyhq/twenty/pull/25420)) by @abhinavapasok
- fix(view): keep view sorts in creation order in the flat view cache ([#25448](https://github.com/twentyhq/twenty/pull/25448)) by @sagarithm
- fix(twenty-shared): honor underscore wildcard in string like and ilike filters ([#25489](https://github.com/twentyhq/twenty/pull/25489)) by @hktitof
- fix(twenty-shared): honor wildcard parity in rich text ilike filter ([#25505](https://github.com/twentyhq/twenty/pull/25505)) by @hktitof
- Fix horizontal bar chart left axis labels always truncated to 10 characters ([#25544](https://github.com/twentyhq/twenty/pull/25544)) by @Thomas4390
- fix(twenty-shared): honor SQL percent wildcards in array containsIlike (#25247) ([#25551](https://github.com/twentyhq/twenty/pull/25551)) by @claxman
- Granola 8/8: Add Granola listing copy and setup documentation ([#25577](https://github.com/twentyhq/twenty/pull/25577)) by @ehconitin
- feat(view): land on the initial object view and hide the index view behind the flag ([#25682](https://github.com/twentyhq/twenty/pull/25682)) by @thomtrp
- Settle call recordings whose Recall media expired ([#25795](https://github.com/twentyhq/twenty/pull/25795)) by @ehconitin
- fix(security): enforce object-level role permissions on system object writes (#24309) ([#25809](https://github.com/twentyhq/twenty/pull/25809)) by @mini0n-ai
- fix(workflow): match select filter options by exact value, not substring ([#25828](https://github.com/twentyhq/twenty/pull/25828)) by @breken-ai
- Slide the side panel with transform instead of animating its width ([#25844](https://github.com/twentyhq/twenty/pull/25844)) by @LouisDelbosc
- feat(record-form): make the record creation form the default path ([#25907](https://github.com/twentyhq/twenty/pull/25907)) by @thomtrp
- Enable async CSV export progress behind a workspace flag ([#25968](https://github.com/twentyhq/twenty/pull/25968)) by @Weiko
- Add async CSV export server behind a workspace flag ([#25987](https://github.com/twentyhq/twenty/pull/25987)) by @Weiko
- fix(tool): make help center search resilient and its failures readable ([#25989](https://github.com/twentyhq/twenty/pull/25989)) by @Atharva0222
- feat localized legal links ([#25991](https://github.com/twentyhq/twenty/pull/25991)) by @minnibaevB
- Hard-delete row-level permission predicates instead of soft-deleting them ([#25992](https://github.com/twentyhq/twenty/pull/25992)) by @Weiko
- Hard-delete views and their children instead of soft-deleting them ([#26002](https://github.com/twentyhq/twenty/pull/26002)) by @Weiko
- feat(slack): per-channel rules for the assistant ([#26016](https://github.com/twentyhq/twenty/pull/26016)) by @abdulrahmancodes
- [forms 2/3] Improve record form field presentation ([#26031](https://github.com/twentyhq/twenty/pull/26031)) by @Bonapara
- [2/2 Sidebar] New customization experience ([#26037](https://github.com/twentyhq/twenty/pull/26037)) by @Bonapara
- feat(usage-limit): cap workspace file storage with a stock limit kind ([#26042](https://github.com/twentyhq/twenty/pull/26042)) by @etiennejouan
- Bind CSV export downloads to their requesting session ([#26052](https://github.com/twentyhq/twenty/pull/26052)) by @Weiko
- [forms 3/4] Submit record creation forms with Command or Control Enter ([#26064](https://github.com/twentyhq/twenty/pull/26064)) by @Bonapara
- Split installed app detail page into settings tabs ([#26065](https://github.com/twentyhq/twenty/pull/26065)) by @martmull
- feat(workflow): core-id native workflow API — reads and writes ([#26068](https://github.com/twentyhq/twenty/pull/26068)) by @thomtrp
- Unify Twenty UI icon buttons ([#26071](https://github.com/twentyhq/twenty/pull/26071)) by @bosiraphael
- Unpin creation commands while records are selected ([#26075](https://github.com/twentyhq/twenty/pull/26075)) by @Bonapara
- fix(workflow): never freeze a null core workflow link on version mirror ([#26076](https://github.com/twentyhq/twenty/pull/26076)) by @thomtrp
- Make call recorder imports resumable with deterministic jobs ([#26080](https://github.com/twentyhq/twenty/pull/26080)) by @ehconitin
- Migrate Twenty UI headings ([#26085](https://github.com/twentyhq/twenty/pull/26085)) by @bosiraphael
- Replace Twenty UI Modal with Dialog ([#26087](https://github.com/twentyhq/twenty/pull/26087)) by @bosiraphael
- Migrate tooltips to Base UI ([#26088](https://github.com/twentyhq/twenty/pull/26088)) by @bosiraphael
- feat: add serviceAccount support to Helm chart ([#26097](https://github.com/twentyhq/twenty/pull/26097)) by @mdminhazulhaque
- feat(workflow): core-only workflow execution and background processing ([#26098](https://github.com/twentyhq/twenty/pull/26098)) by @thomtrp
- chore: bump version to 2.42.0 ([#26100](https://github.com/twentyhq/twenty/pull/26100)) by @twenty-pr
- [forms 4/4] Name the record creation callback arguments ([#26101](https://github.com/twentyhq/twenty/pull/26101)) by @Bonapara
- [3/3 Sidebar] Bulk object metadata updates ([#26105](https://github.com/twentyhq/twenty/pull/26105)) by @Bonapara
- Send Slack files to the assistant agent as attachments ([#26106](https://github.com/twentyhq/twenty/pull/26106)) by @abdulrahmancodes
- Skip missing Microsoft messages instead of resetting the mailbox sync ([#26107](https://github.com/twentyhq/twenty/pull/26107)) by @neo773
- Tidy navigation typing and remove dead drag state ([#26109](https://github.com/twentyhq/twenty/pull/26109)) by @Bonapara
- fix(last-contact): batch API writes so a mailbox sync stays inside the rate limit ([#26110](https://github.com/twentyhq/twenty/pull/26110)) by @martmull
- fix(front): reorder view fields from the rendered list instead of shifted indices ([#26112](https://github.com/twentyhq/twenty/pull/26112)) by @charlesBochet
- docs(apps): declare both sides of a relation to a standard object ([#26113](https://github.com/twentyhq/twenty/pull/26113)) by @charlesBochet
- feat: migrate workflow editor and actions to core IDs ([#26116](https://github.com/twentyhq/twenty/pull/26116)) by @thomtrp
- Follow Graph pagination when discovering Microsoft mail folders ([#26118](https://github.com/twentyhq/twenty/pull/26118)) by @Maharsh17
- chore: sync AI model catalog ([#26121](https://github.com/twentyhq/twenty/pull/26121)) by @github-actions
- Match the floating text editor width to its field on record pages ([#26124](https://github.com/twentyhq/twenty/pull/26124)) by @charlesBochet
- Fail a record export when a page fetch fails instead of truncating it ([#26125](https://github.com/twentyhq/twenty/pull/26125)) by @charlesBochet
- Hide native spinner on number inputs ([#26126](https://github.com/twentyhq/twenty/pull/26126)) by @etiennejouan
- feat(auth): refuse API access for suspended workspaces ([#26127](https://github.com/twentyhq/twenty/pull/26127)) by @etiennejouan
- fix(billing) - update billing plan CTAs from the plan and interval grid ([#26129](https://github.com/twentyhq/twenty/pull/26129)) by @etiennejouan
- Group the command menu into sections ([#26130](https://github.com/twentyhq/twenty/pull/26130)) by @Bonapara
- Move the unpin creation commands upgrade command to 2.42 and use the legacy path ([#26132](https://github.com/twentyhq/twenty/pull/26132)) by @prastoin
- Import missing dependency in create-twenty-app ([#26133](https://github.com/twentyhq/twenty/pull/26133)) by @martmull
- Fix UI builds without Monaco ([#26134](https://github.com/twentyhq/twenty/pull/26134)) by @bosiraphael
- Restore banner button colors ([#26135](https://github.com/twentyhq/twenty/pull/26135)) by @bosiraphael
- fix(billing): wrap modal action buttons in flex slots instead of a child selector ([#26136](https://github.com/twentyhq/twenty/pull/26136)) by @etiennejouan
- Treat the current upgrade version directory as previous once its tag exists ([#26137](https://github.com/twentyhq/twenty/pull/26137)) by @prastoin
- Differentiate impromptu Fathom recording titles ([#26138](https://github.com/twentyhq/twenty/pull/26138)) by @ehconitin
- fix(call-recording): show terminal empty transcript states ([#26140](https://github.com/twentyhq/twenty/pull/26140)) by @ehconitin
- Declare navigation menu items as children of object, view and page layout so their cache follows deletions ([#26141](https://github.com/twentyhq/twenty/pull/26141)) by @prastoin
- Migrate Twenty UI tab navigation ([#26142](https://github.com/twentyhq/twenty/pull/26142)) by @bosiraphael
- v1.8.4 — Partners app: keep the company name out of marketplace brief names ([#26143](https://github.com/twentyhq/twenty/pull/26143)) by @ijreilly
- Migrate light icon buttons and groups ([#26144](https://github.com/twentyhq/twenty/pull/26144)) by @bosiraphael
- feat(ai): click the chat title in the page header to rename the thread ([#26146](https://github.com/twentyhq/twenty/pull/26146)) by @FelixMalfait
- feat(usage-limit): cap workspace records with a stock limit ([#26147](https://github.com/twentyhq/twenty/pull/26147)) by @etiennejouan
- Backfill when switching from 1.4.0 to =1.4.0 ([#26149](https://github.com/twentyhq/twenty/pull/26149)) by @martmull
- Call recorder: Pause recording when the workspace has no credits ([#26151](https://github.com/twentyhq/twenty/pull/26151)) by @ehconitin
- feat(server): give the message object a standard record page layout ([#26153](https://github.com/twentyhq/twenty/pull/26153)) by @FelixMalfait
- Show email thread messages when participants are missing ([#26155](https://github.com/twentyhq/twenty/pull/26155)) by @neo773
- fix(rich-text): normalize tiptap rich text written by workflow record steps ([#26156](https://github.com/twentyhq/twenty/pull/26156)) by @thomtrp
- feat: expose queue job progress ([#26157](https://github.com/twentyhq/twenty/pull/26157)) by @Weiko
- feat(workflow): make core workflow and workflow version syncable so definition changes broadcast ([#26158](https://github.com/twentyhq/twenty/pull/26158)) by @thomtrp
- feat(workflow): consume core workflow events on the core workflow surfaces ([#26159](https://github.com/twentyhq/twenty/pull/26159)) by @thomtrp
- Move twenty-partners app to twentyhq/twenty-eng ([#26161](https://github.com/twentyhq/twenty/pull/26161)) by @ijreilly
- feat(apps): run application lifecycle hooks on a dedicated queue ([#26166](https://github.com/twentyhq/twenty/pull/26166)) by @martmull
- Report PDL enrichment failures and stop batches on rejected keys ([#26168](https://github.com/twentyhq/twenty/pull/26168)) by @bosiraphael
- chore(usage-limit): remove the API rate limit v2 feature flag ([#26169](https://github.com/twentyhq/twenty/pull/26169)) by @etiennejouan
- Align the Granola settings with Twenty's native settings design ([#26172](https://github.com/twentyhq/twenty/pull/26172)) by @ehconitin
- Declare call recorder billing: usage label and marketplace pricing ([#26173](https://github.com/twentyhq/twenty/pull/26173)) by @ehconitin
- chore(usage-limit): remove the quota engine credit bound feature flag ([#26174](https://github.com/twentyhq/twenty/pull/26174)) by @etiennejouan
- Backfill the missing index of app-owned system relation legs ([#26175](https://github.com/twentyhq/twenty/pull/26175)) by @charlesBochet
- Add Base Adresse Nationale as an address autocomplete driver ([#26176](https://github.com/twentyhq/twenty/pull/26176)) by @fcporto-nature
- fix(ai): degrade unsupported runAgent attachments instead of failing the run ([#26177](https://github.com/twentyhq/twenty/pull/26177)) by @abdulrahmancodes
- AI chat: tool calls render as widgets named by the tool ([#26179](https://github.com/twentyhq/twenty/pull/26179)) by @FelixMalfait
- Sync message channels from webhooks without the cron hand-off ([#26180](https://github.com/twentyhq/twenty/pull/26180)) by @neo773
- Load sync cron channels with one query per tick ([#26181](https://github.com/twentyhq/twenty/pull/26181)) by @neo773
- Only write audit log events for workspaces entitled to audit logs ([#26182](https://github.com/twentyhq/twenty/pull/26182)) by @neo773
- Keep ClickHouse stalls from freezing the timeline queue ([#26183](https://github.com/twentyhq/twenty/pull/26183)) by @neo773
- Skip webhook and trigger fan-out jobs when nothing listens to the event ([#26184](https://github.com/twentyhq/twenty/pull/26184)) by @neo773
- feat(teams): scaffold the Microsoft Teams app package ([#26185](https://github.com/twentyhq/twenty/pull/26185)) by @abdulrahmancodes
- feat(teams): add the Bot Connector client and inbound activity verification ([#26186](https://github.com/twentyhq/twenty/pull/26186)) by @abdulrahmancodes
- chore: sync AI model catalog ([#26187](https://github.com/twentyhq/twenty/pull/26187)) by @github-actions
- feat(workflow): migrate MCP tools and bundled app consumers to core workflow IDs ([#26189](https://github.com/twentyhq/twenty/pull/26189)) by @thomtrp
- Reduce subscription quantity sync delay from 24h to 6h ([#26190](https://github.com/twentyhq/twenty/pull/26190)) by @etiennejouan
- Restrict front component token pair and renewal to sessions ([#26191](https://github.com/twentyhq/twenty/pull/26191)) by @prastoin
- Scope application variable reads and updates to the calling application and workspace ([#26192](https://github.com/twentyhq/twenty/pull/26192)) by @prastoin
- Add default likelihood settings for PDL enrichment ([#26195](https://github.com/twentyhq/twenty/pull/26195)) by @bosiraphael
- Add last contact backfill button ([#26197](https://github.com/twentyhq/twenty/pull/26197)) by @martmull
- Only fetch visible junction relations on record index queries ([#26198](https://github.com/twentyhq/twenty/pull/26198)) by @charlesBochet
- Add SettingsRow and migrate legacy rows ([#26200](https://github.com/twentyhq/twenty/pull/26200)) by @bosiraphael
- fix(server): correct misclassified structural exemptions in prefer-workspace-scoped-repository ([#26202](https://github.com/twentyhq/twenty/pull/26202)) by @prastoin
- Update doc ([#26204](https://github.com/twentyhq/twenty/pull/26204)) by @martmull
- chore: remove IS_APP_CLAIMING_ENABLED feature flag ([#26205](https://github.com/twentyhq/twenty/pull/26205)) by @martmull
- Separate Twenty UI primitives and components ([#26207](https://github.com/twentyhq/twenty/pull/26207)) by @bosiraphael
- test(apps): cover owner-workspace scope on application registration variables ([#26208](https://github.com/twentyhq/twenty/pull/26208)) by @prastoin
- Point Fathom website to fathom.ai and bump to 1.1.0 ([#26209](https://github.com/twentyhq/twenty/pull/26209)) by @ehconitin
- Migrate picker rows to ListItem ([#26211](https://github.com/twentyhq/twenty/pull/26211)) by @bosiraphael
- Unify icon buttons with elevated styling ([#26213](https://github.com/twentyhq/twenty/pull/26213)) by @bosiraphael
- Bind the application claim OAuth state to the browser that started it ([#26214](https://github.com/twentyhq/twenty/pull/26214)) by @martmull
- chore: sync AI model catalog ([#26221](https://github.com/twentyhq/twenty/pull/26221)) by @github-actions
- Defer slow workspace migration actions to a worker job ([#26222](https://github.com/twentyhq/twenty/pull/26222)) by @charlesBochet
- feat(ai): add evaluation models and a Classify workflow node ([#26225](https://github.com/twentyhq/twenty/pull/26225)) by @FelixMalfait
- fix(docker): copy twenty-oxlint-rules manifest into server-deps stage ([#26231](https://github.com/twentyhq/twenty/pull/26231)) by @charlesBochet
- Upgrade react-router to 7.18.4 ([#26232](https://github.com/twentyhq/twenty/pull/26232)) by @charlesBochet
- fix(client-sdk): externalize all Node builtins in Vite lib build ([#26234](https://github.com/twentyhq/twenty/pull/26234)) by @AyeshaWaseemAhmad
- chore: sync AI model catalog ([#26237](https://github.com/twentyhq/twenty/pull/26237)) by @github-actions
- feat: private workflows on the core schema ([#26243](https://github.com/twentyhq/twenty/pull/26243)) by @FelixMalfait
- [1/5] Enforce SYSTEM record visibility for event delivery ([#26244](https://github.com/twentyhq/twenty/pull/26244)) by @FelixMalfait
- [2/5] Register five protected agent history workspace objects ([#26245](https://github.com/twentyhq/twenty/pull/26245)) by @FelixMalfait
- [3/5] Route agent history through workspace-aware persistence ([#26246](https://github.com/twentyhq/twenty/pull/26246)) by @FelixMalfait
- [4/5] Add verified, resumable agent-history migration ([#26247](https://github.com/twentyhq/twenty/pull/26247)) by @FelixMalfait
- [5/5] Activate agent-history workspace storage through versioned upgrades ([#26248](https://github.com/twentyhq/twenty/pull/26248)) by @FelixMalfait
- Fix blank record panels caused by tab stylesheet order ([#26254](https://github.com/twentyhq/twenty/pull/26254)) by @FelixMalfait
- chore: sync AI model catalog ([#26256](https://github.com/twentyhq/twenty/pull/26256)) by @github-actions
- Fix workspace AI history reads and stream coordination ([#26259](https://github.com/twentyhq/twenty/pull/26259)) by @FelixMalfait
- Stop the default domain from bouncing users back to their last workspace ([#26260](https://github.com/twentyhq/twenty/pull/26260)) by @Bonapara
- chore(people-data-labs): remove the workflow seeding that never ran ([#26262](https://github.com/twentyhq/twenty/pull/26262)) by @thomtrp
- Report workspace command failures through the CLI exit status ([#26263](https://github.com/twentyhq/twenty/pull/26263)) by @FelixMalfait
- Scaffold Teams Transcripts app ([#26264](https://github.com/twentyhq/twenty/pull/26264)) by @ehconitin
- Show app url setting only in advanced mode ([#26265](https://github.com/twentyhq/twenty/pull/26265)) by @martmull
- Add Microsoft Teams OAuth connection ([#26266](https://github.com/twentyhq/twenty/pull/26266)) by @ehconitin
- chore(log) - log one line per API request with actor, endpoint and trace ids ([#26269](https://github.com/twentyhq/twenty/pull/26269)) by @etiennejouan
- Flag missing required application variables on the app settings page ([#26270](https://github.com/twentyhq/twenty/pull/26270)) by @martmull
- fix(workflow): keep runs alive for if/else and skip edges across the continuation boundary ([#26271](https://github.com/twentyhq/twenty/pull/26271)) by @thomtrp
- Call recorder: resume bot-less recordings when the event payload carries an empty bot id ([#26272](https://github.com/twentyhq/twenty/pull/26272)) by @ehconitin
- Always show the add step button on the last workflow node ([#26273](https://github.com/twentyhq/twenty/pull/26273)) by @Bonapara
- Add Granola app gallery covers ([#26274](https://github.com/twentyhq/twenty/pull/26274)) by @ehconitin
- fix(usage-limit): key stock counters by their limit value ([#26275](https://github.com/twentyhq/twenty/pull/26275)) by @etiennejouan
- Consolidate animated buttons ([#26276](https://github.com/twentyhq/twenty/pull/26276)) by @bosiraphael
- Let apps report their own configuration state with defineHealthCheck ([#26277](https://github.com/twentyhq/twenty/pull/26277)) by @martmull
- Set Granola to 1.0.0 for its first release ([#26278](https://github.com/twentyhq/twenty/pull/26278)) by @ehconitin
- Fix Kanban queries with many fields ([#26279](https://github.com/twentyhq/twenty/pull/26279)) by @bosiraphael
- fix(workflow): evict the cron trigger cache when a workflow version is deleted ([#26280](https://github.com/twentyhq/twenty/pull/26280)) by @thomtrp
- Build a strict schema for agent structured output ([#26281](https://github.com/twentyhq/twenty/pull/26281)) by @ehconitin
- feat(usage-limit): gate workflow node runs and logic function executions ([#26283](https://github.com/twentyhq/twenty/pull/26283)) by @etiennejouan
- Print export reasons in the pull report ([#26288](https://github.com/twentyhq/twenty/pull/26288)) by @Weiko
- Export vertical-list widgets without the deprecated position form ([#26290](https://github.com/twentyhq/twenty/pull/26290)) by @Weiko
- [2/5 workflows] Improve workflow classifier configuration ([#26291](https://github.com/twentyhq/twenty/pull/26291)) by @Bonapara
- Remove unused Twenty UI buttons ([#26293](https://github.com/twentyhq/twenty/pull/26293)) by @bosiraphael
- Migrate dropdown menu rows to ListItem ([#26297](https://github.com/twentyhq/twenty/pull/26297)) by @bosiraphael
- Fix Kanban group-by queries with a record field or long column names ([#26300](https://github.com/twentyhq/twenty/pull/26300)) by @bosiraphael
- fix(workflow): dispatch an iterator loop body listed in the iterator nextStepIds ([#26301](https://github.com/twentyhq/twenty/pull/26301)) by @thomtrp
- Let apps declare several settings menu items with defineSettingsMenuItem ([#26302](https://github.com/twentyhq/twenty/pull/26302)) by @martmull
- Secure front component media capture ([#26303](https://github.com/twentyhq/twenty/pull/26303)) by @bosiraphael
- feat(client-sdk): upload files straight to storage from uploadFile ([#26305](https://github.com/twentyhq/twenty/pull/26305)) by @martmull
- docs: correct the AI FAQ on using your own models when self-hosting ([#26306](https://github.com/twentyhq/twenty/pull/26306)) by @ijreilly
- Keep preferences-page unsubscribes scoped to the unticked topics ([#26308](https://github.com/twentyhq/twenty/pull/26308)) by @neo773
- Keep table rows still on focus ([#26309](https://github.com/twentyhq/twenty/pull/26309)) by @bosiraphael
- Update website app mockup to the current product design ([#26313](https://github.com/twentyhq/twenty/pull/26313)) by @Bonapara
- feat(application): deploy app tarballs straight to file storage ([#26314](https://github.com/twentyhq/twenty/pull/26314)) by @martmull
- Mention apps in the credit limit banner ([#26316](https://github.com/twentyhq/twenty/pull/26316)) by @ehconitin
- Rename recording tabs to Transcript ([#26318](https://github.com/twentyhq/twenty/pull/26318)) by @ehconitin
- Fix live-query date filters throwing on DATE_TIME record values ([#26321](https://github.com/twentyhq/twenty/pull/26321)) by @thomtrp
- Hide workflows from side panel search and favorites when the core index flag is on ([#26323](https://github.com/twentyhq/twenty/pull/26323)) by @thomtrp
- fix: filter Firefox iOS YouTube script errors from Sentry ([#26324](https://github.com/twentyhq/twenty/pull/26324)) by @charlesBochet
- [1/4] Register agentChatThreadTarget as a standard workspace object ([#26328](https://github.com/twentyhq/twenty/pull/26328)) by @FelixMalfait
- [2/4] Provision agentChatThreadTarget into existing workspaces ([#26329](https://github.com/twentyhq/twenty/pull/26329)) by @FelixMalfait
- [3/4] Attach and detach conversations on a record ([#26330](https://github.com/twentyhq/twenty/pull/26330)) by @FelixMalfait
- Give message campaigns their own send rate limit counters ([#26331](https://github.com/twentyhq/twenty/pull/26331)) by @neo773
- Price campaign emails at $0.90 per 1,000 ([#26333](https://github.com/twentyhq/twenty/pull/26333)) by @neo773
- Add actor field to any filter ([#26334](https://github.com/twentyhq/twenty/pull/26334)) by @BOHEUS
- chore: sync AI model catalog ([#26335](https://github.com/twentyhq/twenty/pull/26335)) by @github-actions
- Fix permissions issue with search any field ([#26339](https://github.com/twentyhq/twenty/pull/26339)) by @BOHEUS
- fix: wait for workflow version before refreshing content ([#26340](https://github.com/twentyhq/twenty/pull/26340)) by @charlesBochet
- Run application upgrades as per-workspace jobs on a dedicated queue ([#26341](https://github.com/twentyhq/twenty/pull/26341)) by @martmull
- fix(server): stop workspace commands retaining every visited workspace in memory ([#26342](https://github.com/twentyhq/twenty/pull/26342)) by @martmull
- Fix dark mode dropdown scrollbars ([#26344](https://github.com/twentyhq/twenty/pull/26344)) by @bosiraphael
- feat(teams): add feature settings foundation ([#26345](https://github.com/twentyhq/twenty/pull/26345)) by @ehconitin
- fix: separate connected account disconnect from deletion ([#26347](https://github.com/twentyhq/twenty/pull/26347)) by @neo773
- feat(sharing): unify record access and enable multiplayer chats ([#26348](https://github.com/twentyhq/twenty/pull/26348)) by @FelixMalfait
- Load limits on view groups ([#26349](https://github.com/twentyhq/twenty/pull/26349)) by @Bonapara
- fix(workspace cleaning) - Enqueue suspended workspace destruction instead of running it inside the cron ([#26354](https://github.com/twentyhq/twenty/pull/26354)) by @etiennejouan
- fix(ai-chat): stop Bedrock cache points from stacking across AI SDK steps ([#26355](https://github.com/twentyhq/twenty/pull/26355)) by @etiennejouan
- Add REDIS_QUEUE_PREFIX so BullMQ works on clustered Redis (hash-tagged keys) ([#26357](https://github.com/twentyhq/twenty/pull/26357)) by @thisispr
- feat(view): land on the kanban for opportunities and a list for campaigns ([#26360](https://github.com/twentyhq/twenty/pull/26360)) by @thomtrp
- feat(teams): consolidate transcript OAuth into Teams ([#26362](https://github.com/twentyhq/twenty/pull/26362)) by @ehconitin
- Rename workflow AI Agent to Agent and align node presentation ([#26363](https://github.com/twentyhq/twenty/pull/26363)) by @thomtrp
- fix: classify logic function rate limits as expected errors ([#26365](https://github.com/twentyhq/twenty/pull/26365)) by @charlesBochet
- feat(ai): execute chat turns as their persisted sender ([#26369](https://github.com/twentyhq/twenty/pull/26369)) by @FelixMalfait
- Recover and retry deferred workspace migration actions ([#26371](https://github.com/twentyhq/twenty/pull/26371)) by @charlesBochet
- perf(clickhouse) - partition objectEvent by month in ClickHouse ([#26372](https://github.com/twentyhq/twenty/pull/26372)) by @etiennejouan
- Standardize `twenty-front` module filename ([#26373](https://github.com/twentyhq/twenty/pull/26373)) by @BOHEUS
- Fix the language switcher on docs.twenty.com ([#26374](https://github.com/twentyhq/twenty/pull/26374)) by @Bonapara
- Standardize `twenty-server` module filename ([#26375](https://github.com/twentyhq/twenty/pull/26375)) by @BOHEUS
- Add standardized rule ([#26376](https://github.com/twentyhq/twenty/pull/26376)) by @BOHEUS
- feat(usage-limit): cap email sends with a quota limit ([#26378](https://github.com/twentyhq/twenty/pull/26378)) by @etiennejouan
- feat(application): deprecate uploadApplicationFile and drop the CLI multipart fallback ([#26379](https://github.com/twentyhq/twenty/pull/26379)) by @martmull
- feat(files): upload workspace logos and profile pictures with direct upload ([#26382](https://github.com/twentyhq/twenty/pull/26382)) by @martmull
- Add the shared Dropdown foundation ([#26383](https://github.com/twentyhq/twenty/pull/26383)) by @bosiraphael
- fix(oauth): provision the Twenty CLI OAuth client on non-seeded servers ([#26389](https://github.com/twentyhq/twenty/pull/26389)) by @martmull
- Add AI-assisted DNS setup for email group domains ([#26392](https://github.com/twentyhq/twenty/pull/26392)) by @neo773
- fix(server): clarify email domain ownership conflict ([#26393](https://github.com/twentyhq/twenty/pull/26393)) by @neo773
- fix(server): allow transactional email without unsubscribe hostname ([#26395](https://github.com/twentyhq/twenty/pull/26395)) by @neo773
- fix(shared): reject scheme-relative backslash urls in isSafeUrl ([#26397](https://github.com/twentyhq/twenty/pull/26397)) by @Belkouche
- fix(shared): escape regex metacharacters in raw json like filters ([#26398](https://github.com/twentyhq/twenty/pull/26398)) by @Belkouche
- fix(front): keep additional phones and country code when importing a phone without calling code ([#26399](https://github.com/twentyhq/twenty/pull/26399)) by @Belkouche
- fix(front): import a single multi-select value that parses as a JSON scalar ([#26400](https://github.com/twentyhq/twenty/pull/26400)) by @Belkouche
- fix(front): strip float noise from percentage draft values ([#26401](https://github.com/twentyhq/twenty/pull/26401)) by @Belkouche
- fix(server): compare gmail sync cursors numerically ([#26402](https://github.com/twentyhq/twenty/pull/26402)) by @Belkouche
- fix(server): match blocklist entries case-insensitively ([#26403](https://github.com/twentyhq/twenty/pull/26403)) by @Belkouche
- fix(server): evaluate workflow number and array filters on empty and JSON-like values ([#26404](https://github.com/twentyhq/twenty/pull/26404)) by @Belkouche
- fix(server): keep a workflow run alive when resuming a leaf step while another branch is pending ([#26405](https://github.com/twentyhq/twenty/pull/26405)) by @Belkouche
- fix(server): merge every readable field regardless of the mutation selection ([#26406](https://github.com/twentyhq/twenty/pull/26406)) by @Belkouche
- fix(front): keep the record currency when a currency cell edit starts by typing ([#26407](https://github.com/twentyhq/twenty/pull/26407)) by @Belkouche
- fix(server): lowercase calendar participant handles on import ([#26408](https://github.com/twentyhq/twenty/pull/26408)) by @Belkouche
- fix(server): mint auto-login tokens with the caller's auth provider ([#26409](https://github.com/twentyhq/twenty/pull/26409)) by @Belkouche
- fix(front): keep the calendar day when importing a date without time ([#26410](https://github.com/twentyhq/twenty/pull/26410)) by @Belkouche
- Fix API ALLCAPS case to Pascal case in server tests ([#26411](https://github.com/twentyhq/twenty/pull/26411)) by @BOHEUS
- chore: sync AI model catalog ([#26416](https://github.com/twentyhq/twenty/pull/26416)) by @github-actions
- fix(slack): honour silent channel rules outside the assistant path ([#26417](https://github.com/twentyhq/twenty/pull/26417)) by @abdulrahmancodes
- Pace call recorder recovery jobs to stay under Recall's rate limit ([#26418](https://github.com/twentyhq/twenty/pull/26418)) by @ehconitin
- [Forms 1/5] Rename record creation from New to Create and keep it pinned ([#26419](https://github.com/twentyhq/twenty/pull/26419)) by @Bonapara
- [Forms 2/5] Keep the record creation form open when creation fails ([#26422](https://github.com/twentyhq/twenty/pull/26422)) by @Bonapara
- [Forms 3/5] Take currency amounts in units in record forms ([#26423](https://github.com/twentyhq/twenty/pull/26423)) by @Bonapara
- [Forms 4/5] Let Tab move through form text inputs ([#26425](https://github.com/twentyhq/twenty/pull/26425)) by @Bonapara
- feat(object-metadata): allow updating readability through the metadata API ([#26427](https://github.com/twentyhq/twenty/pull/26427)) by @martmull
- fix(billing): serialize stripe subscription webhook per customer ([#26431](https://github.com/twentyhq/twenty/pull/26431)) by @etiennejouan
- Migrate independent Dropdown action menus ([#26432](https://github.com/twentyhq/twenty/pull/26432)) by @bosiraphael
- Mark the Marketplace tab as beta in Applications settings ([#26433](https://github.com/twentyhq/twenty/pull/26433)) by @Bonapara
- Trigger backfill when publishing 1.5.0 ([#26434](https://github.com/twentyhq/twenty/pull/26434)) by @martmull
- fix(workflow): unblock 2.42 workflow execution backfill on legacy workspaces ([#26435](https://github.com/twentyhq/twenty/pull/26435)) by @thomtrp
- Fix app-scoped schema generation for relations targeting another application's object ([#26436](https://github.com/twentyhq/twenty/pull/26436)) by @prastoin
- fix(workflow): delete orphan core workflows left by deleted workflows ([#26437](https://github.com/twentyhq/twenty/pull/26437)) by @thomtrp
- fix(server): resolve server routes by primary key, fall back to the legacy identifier ([#26438](https://github.com/twentyhq/twenty/pull/26438)) by @prastoin
- [BREAKING_CHANGE] refactor(server): compute the application-scoped core schema server-side ([#26439](https://github.com/twentyhq/twenty/pull/26439)) by @prastoin
- feat(server): require a user session on the calendar timeline ([#26440](https://github.com/twentyhq/twenty/pull/26440)) by @prastoin
- feat(server): require a user session on account-level operations ([#26441](https://github.com/twentyhq/twenty/pull/26441)) by @prastoin
- fix(server): intersect the calling application role in every settings permission check ([#26442](https://github.com/twentyhq/twenty/pull/26442)) by @prastoin
- perf(server): read the OTLP metrics export interval from OTEL_METRIC_EXPORT_INTERVAL, default 30s ([#26443](https://github.com/twentyhq/twenty/pull/26443)) by @etiennejouan
- feat(teams): require a Teams endorsement on the activity signing key ([#26444](https://github.com/twentyhq/twenty/pull/26444)) by @abdulrahmancodes
- Refuse schema migrations while deferred index builds are in flight ([#26446](https://github.com/twentyhq/twenty/pull/26446)) by @charlesBochet
- fix(upgrade): tolerate missing fields when creating message record pages ([#26447](https://github.com/twentyhq/twenty/pull/26447)) by @FelixMalfait
- Reload the enterprise validity token in the server process ([#26449](https://github.com/twentyhq/twenty/pull/26449)) by @ijreilly
- fix: display app permission flags and reset saved role changes ([#26450](https://github.com/twentyhq/twenty/pull/26450)) by @Weiko
- feat(workflow): require a core parent on every workflow version (2.43) ([#26451](https://github.com/twentyhq/twenty/pull/26451)) by @thomtrp
- Skip AI catalog entries the server cannot read instead of serving none ([#26452](https://github.com/twentyhq/twenty/pull/26452)) by @FelixMalfait
- Make email group sends free for paying customers, with rate limits ([#26455](https://github.com/twentyhq/twenty/pull/26455)) by @neo773
- Bump version to 1.1.0 ([#26456](https://github.com/twentyhq/twenty/pull/26456)) by @martmull
- docs(billing): document usage limits ([#26457](https://github.com/twentyhq/twenty/pull/26457)) by @etiennejouan
- fix(workflow): skip orphan core workflows in the 2.42 published pointer check ([#26458](https://github.com/twentyhq/twenty/pull/26458)) by @thomtrp
- Serve backend HTML with startup config and workspace iframe settings ([#26459](https://github.com/twentyhq/twenty/pull/26459)) by @FelixMalfait
- Fix the useToast import in RecordCreationFormProvider ([#26460](https://github.com/twentyhq/twenty/pull/26460)) by @thomtrp
- feat(usage-limit): consume quota on app charges ([#26461](https://github.com/twentyhq/twenty/pull/26461)) by @etiennejouan
- Consolidate resize handle interactions ([#26463](https://github.com/twentyhq/twenty/pull/26463)) by @bosiraphael
- fix: fill scaffolded app page viewport ([#26464](https://github.com/twentyhq/twenty/pull/26464)) by @Weiko
- Use radio groups for segmented settings ([#26465](https://github.com/twentyhq/twenty/pull/26465)) by @bosiraphael
- docs: correct Delay workflow credit cost ([#26467](https://github.com/twentyhq/twenty/pull/26467)) by @FelixMalfait
- chore: bump version to 2.43.0 ([#26468](https://github.com/twentyhq/twenty/pull/26468)) by @twenty-pr
- Stop provisioning navigation commands for SYSTEM-readable objects ([#26469](https://github.com/twentyhq/twenty/pull/26469)) by @martmull
- fix(workflow): show remote edits on the open workflow canvas ([#26471](https://github.com/twentyhq/twenty/pull/26471)) by @thomtrp
- Put the record creation form back behind a feature flag ([#26472](https://github.com/twentyhq/twenty/pull/26472)) by @thomtrp
- chore: prepare twenty CLI package placeholder ([#26473](https://github.com/twentyhq/twenty/pull/26473)) by @Weiko
- fix(workflow): fall back to the last published version before the newest one ([#26474](https://github.com/twentyhq/twenty/pull/26474)) by @thomtrp
- chore(billing): clean up the leftovers of the credit allowance migration ([#26475](https://github.com/twentyhq/twenty/pull/26475)) by @etiennejouan
- feat(usage-limit): let only an operator replace an instance default ([#26476](https://github.com/twentyhq/twenty/pull/26476)) by @etiennejouan
- Remove react-router dependency from twenty-ui ([#26477](https://github.com/twentyhq/twenty/pull/26477)) by @bosiraphael
- fix(usage-limit): register the quota filter on the logic function resolver ([#26478](https://github.com/twentyhq/twenty/pull/26478)) by @etiennejouan
- Move ObjectMetadata and FieldMetadata onto the workspace-scoped repository ([#26479](https://github.com/twentyhq/twenty/pull/26479)) by @prastoin
- Consolidate the public theme API ([#26482](https://github.com/twentyhq/twenty/pull/26482)) by @bosiraphael
- Migrate Select, pickers and filter menus to the shared Dropdown ([#26483](https://github.com/twentyhq/twenty/pull/26483)) by @bosiraphael
- perf(server): resolve workspace default role from flat entity cache ([#26484](https://github.com/twentyhq/twenty/pull/26484)) by @charlesBochet
- Only let paying customers send or schedule campaigns ([#26486](https://github.com/twentyhq/twenty/pull/26486)) by @neo773
- fix(ai): keep message writes compatible during workspace upgrades ([#26487](https://github.com/twentyhq/twenty/pull/26487)) by @FelixMalfait
- Command menu sections ([#26488](https://github.com/twentyhq/twenty/pull/26488)) by @Bonapara
- fix(metadata): guard view field group mutations with VIEWS and LAYOUTS permissions ([#26490](https://github.com/twentyhq/twenty/pull/26490)) by @Mateidslx
- Move campaign deliveries and suppressions into the workspace schema ([#26491](https://github.com/twentyhq/twenty/pull/26491)) by @neo773
- perf(slack): cache the installed Slack team id ([#26494](https://github.com/twentyhq/twenty/pull/26494)) by @abdulrahmancodes
- chore: sync AI model catalog ([#26508](https://github.com/twentyhq/twenty/pull/26508)) by @github-actions
- Stop a Slack content-type mismatch claiming a missing files:read scope ([#26509](https://github.com/twentyhq/twenty/pull/26509)) by @abdulrahmancodes
- fix(workflow): create missing core workflows in the 2.42 execution backfill ([#26511](https://github.com/twentyhq/twenty/pull/26511)) by @thomtrp
- Make People Data Labs likelihood settings user configurable ([#26512](https://github.com/twentyhq/twenty/pull/26512)) by @bosiraphael
- Add a static cache version query param to the client-config request ([#26513](https://github.com/twentyhq/twenty/pull/26513)) by @prastoin
- fix(workflow): resolve the workspace version when a core version has no alias yet ([#26515](https://github.com/twentyhq/twenty/pull/26515)) by @thomtrp
- fix(sharing): enforce upgraded metadata before sharing rollout ([#26520](https://github.com/twentyhq/twenty/pull/26520)) by @FelixMalfait
- Surface the deferred action conflict as a conflict error ([#26521](https://github.com/twentyhq/twenty/pull/26521)) by @charlesBochet
- i18n - translations ([#26522](https://github.com/twentyhq/twenty/pull/26522)) by @github-actions
- fix(command-menu-item): require LAYOUTS permission for command menu item mutations ([#26523](https://github.com/twentyhq/twenty/pull/26523)) by @addyCooks
- feat(front-components): share one application token pair per application ([#26525](https://github.com/twentyhq/twenty/pull/26525)) by @prastoin
- feat(last-contact): add a health check and run the backfill synchronously (1.6.0) ([#26526](https://github.com/twentyhq/twenty/pull/26526)) by @martmull
- i18n - translations ([#26527](https://github.com/twentyhq/twenty/pull/26527)) by @github-actions
- Allow raw HTML blocks in workflow email bodies ([#26528](https://github.com/twentyhq/twenty/pull/26528)) by @neo773
- i18n - translations ([#26529](https://github.com/twentyhq/twenty/pull/26529)) by @github-actions
- i18n - translations ([#26531](https://github.com/twentyhq/twenty/pull/26531)) by @github-actions
- Replace responsive hooks with native media queries ([#26532](https://github.com/twentyhq/twenty/pull/26532)) by @bosiraphael
- Defer foreign key validation for join columns ([#26534](https://github.com/twentyhq/twenty/pull/26534)) by @charlesBochet
- feat(usage-limit): ship a default daily email quota per workspace ([#26535](https://github.com/twentyhq/twenty/pull/26535)) by @etiennejouan
- Preserve record access before chat metadata is provisioned ([#26536](https://github.com/twentyhq/twenty/pull/26536)) by @FelixMalfait
- fix(event-logs): don't skip rows that share a millisecond when paginating ([#26537](https://github.com/twentyhq/twenty/pull/26537)) by @martmull
- feat(event-logs): log record restores and permanent deletes ([#26538](https://github.com/twentyhq/twenty/pull/26538)) by @martmull
- Let Escape close the side panel from form fields ([#26540](https://github.com/twentyhq/twenty/pull/26540)) by @thomtrp
- i18n - translations ([#26541](https://github.com/twentyhq/twenty/pull/26541)) by @github-actions
- perf(server): mark per-pod metrics with a pod attribute ([#26542](https://github.com/twentyhq/twenty/pull/26542)) by @etiennejouan
- fix(application): throttle failed application token renewals by session ([#26544](https://github.com/twentyhq/twenty/pull/26544)) by @prastoin
- i18n - translations ([#26545](https://github.com/twentyhq/twenty/pull/26545)) by @github-actions
- fix(ai): stop creating per-workspace foreign keys to core tables for agent history ([#26547](https://github.com/twentyhq/twenty/pull/26547)) by @FelixMalfait
- fix(sdk): write the CLI config file with owner-only permissions ([#26548](https://github.com/twentyhq/twenty/pull/26548)) by @Weiko
- Rename attachment target column to "Attached to" and add an attachment record page with inline preview ([#26549](https://github.com/twentyhq/twenty/pull/26549)) by @FelixMalfait
- Center icon buttons on Kanban and calendar cards ([#26550](https://github.com/twentyhq/twenty/pull/26550)) by @Bonapara
- perf(search): read search results from the replica database ([#26551](https://github.com/twentyhq/twenty/pull/26551)) by @ijreilly
- chore(workflow): match the core workflow show page header to the workspace one ([#26552](https://github.com/twentyhq/twenty/pull/26552)) by @thomtrp
- fix(logic-function): backfill missing file rows of logic function files ([#26554](https://github.com/twentyhq/twenty/pull/26554)) by @martmull
- fix(email): keep line breaks when opening a synced draft in the composer ([#26556](https://github.com/twentyhq/twenty/pull/26556)) by @ijreilly
- i18n - translations ([#26557](https://github.com/twentyhq/twenty/pull/26557)) by @github-actions
- fix(mcp): make the discovery guidance consistent across every surface ([#26558](https://github.com/twentyhq/twenty/pull/26558)) by @etiennejouan
- Retire EmailingDomain and MessageFolder from the workspace-scoped exemption list ([#26563](https://github.com/twentyhq/twenty/pull/26563)) by @prastoin
- feat(ai): link chat threads to workspace members (expand step) ([#26564](https://github.com/twentyhq/twenty/pull/26564)) by @FelixMalfait
- feat(ai): make chat threads an attachment target ([#26565](https://github.com/twentyhq/twenty/pull/26565)) by @FelixMalfait
- fix: download CSV exports on the authenticated API origin ([#26567](https://github.com/twentyhq/twenty/pull/26567)) by @Weiko
- fix: preserve API path prefixes in CSV export downloads ([#26568](https://github.com/twentyhq/twenty/pull/26568)) by @Weiko
- Subscribe to created Outlook mail notifications only ([#26569](https://github.com/twentyhq/twenty/pull/26569)) by @neo773
- Stop webhook subscriptions when transferring connected account ownership ([#26571](https://github.com/twentyhq/twenty/pull/26571)) by @neo773
- Let disconnect succeed when stopping webhook subscriptions fails ([#26572](https://github.com/twentyhq/twenty/pull/26572)) by @neo773
- Only create missing webhook subscriptions for syncing channels ([#26573](https://github.com/twentyhq/twenty/pull/26573)) by @neo773
- fix(sharing): correct activation upgrade ordering ([#26579](https://github.com/twentyhq/twenty/pull/26579)) by @FelixMalfait
- feat(ai): separate chat sharing UI from backend rollout ([#26581](https://github.com/twentyhq/twenty/pull/26581)) by @FelixMalfait
- fix(file-storage): create the missing file row when copying a file by path ([#26582](https://github.com/twentyhq/twenty/pull/26582)) by @martmull
- chore: sync AI model catalog ([#26584](https://github.com/twentyhq/twenty/pull/26584)) by @github-actions
- fix: drain metadata notifications before command shutdown ([#26585](https://github.com/twentyhq/twenty/pull/26585)) by @FelixMalfait
- Prefer claude-opus-5-5 for the self-host Extra Smart rung ([#26590](https://github.com/twentyhq/twenty/pull/26590)) by @twenty-pr-author
- Remove the deferred workspace migration actions design doc ([#26591](https://github.com/twentyhq/twenty/pull/26591)) by @charlesBochet
- Revert "Slide the side panel with transform instead of animating its width" ([#26592](https://github.com/twentyhq/twenty/pull/26592)) by @charlesBochet
- refactor(file-storage): make copy private and drop dead copy/folder code ([#26593](https://github.com/twentyhq/twenty/pull/26593)) by @etiennejouan
- Move ApplicationEntity onto the workspace-scoped repository ([#26595](https://github.com/twentyhq/twenty/pull/26595)) by @prastoin
- Expose selected object metadata and keep unchanged context values stable ([#26596](https://github.com/twentyhq/twenty/pull/26596)) by @bosiraphael
- feat(docker): add ClickHouse to twenty-app-dev image ([#26598](https://github.com/twentyhq/twenty/pull/26598)) by @martmull
- Migrate sort and editor toolbar dropdowns ([#26599](https://github.com/twentyhq/twenty/pull/26599)) by @bosiraphael
- refactor: return API-relative paths for CSV export downloads ([#26603](https://github.com/twentyhq/twenty/pull/26603)) by @Weiko
- Move translations to a settings page with one row per language ([#26605](https://github.com/twentyhq/twenty/pull/26605)) by @Bonapara
- i18n - translations ([#26606](https://github.com/twentyhq/twenty/pull/26606)) by @github-actions
- fix(apps): do not fan out auto upgrades to workspaces behind the app's required server version ([#26608](https://github.com/twentyhq/twenty/pull/26608)) by @charlesBochet
- fix(docker): add AUTH_GOOGLE_ENABLED to docker-compose example ([#26610](https://github.com/twentyhq/twenty/pull/26610)) by @Taldres
- Fix activity targets after initial company assignment ([#26613](https://github.com/twentyhq/twenty/pull/26613)) by @FelixMalfait
- fix(docker): force libexpat 2.8.5-r0 to clear CVE-2026-93990 ([#26615](https://github.com/twentyhq/twenty/pull/26615)) by @charlesBochet
- fix(server): call makeMetadataApiRequest in the application view access test ([#26618](https://github.com/twentyhq/twenty/pull/26618)) by @martmull
- i18n - translations ([#26619](https://github.com/twentyhq/twenty/pull/26619)) by @github-actions
- fix(sso): insert SAML identity providers instead of saving on a client-supplied id ([#26623](https://github.com/twentyhq/twenty/pull/26623)) by @prastoin
- Remove message and calendar target read rollout flag ([#26625](https://github.com/twentyhq/twenty/pull/26625)) by @FelixMalfait
- Repair missing company activity history during the 2.43 upgrade ([#26631](https://github.com/twentyhq/twenty/pull/26631)) by @FelixMalfait
- Fix view permission integration test helper references ([#26633](https://github.com/twentyhq/twenty/pull/26633)) by @FelixMalfait
- fix(server): call makeMetadataApiRequest in the command menu item update test ([#26634](https://github.com/twentyhq/twenty/pull/26634)) by @charlesBochet
- i18n - translations ([#26642](https://github.com/twentyhq/twenty/pull/26642)) by @github-actions
- Stop hidden advanced settings from adding space between sections ([#26647](https://github.com/twentyhq/twenty/pull/26647)) by @Bonapara
- fix(workflow): stop reconciling workflows to core on the created event ([#26648](https://github.com/twentyhq/twenty/pull/26648)) by @thomtrp
- Document remaining Twenty UI primitives ([#26649](https://github.com/twentyhq/twenty/pull/26649)) by @bosiraphael
- feat(workflow): toggle core workflow visibility from the command menu ([#26651](https://github.com/twentyhq/twenty/pull/26651)) by @thomtrp
- i18n - translations ([#26652](https://github.com/twentyhq/twenty/pull/26652)) by @github-actions
- fix(metrics): count directly executed GraphQL operations ([#26653](https://github.com/twentyhq/twenty/pull/26653)) by @charlesBochet
- Group Card parts under one component ([#26654](https://github.com/twentyhq/twenty/pull/26654)) by @bosiraphael
- perf(server): index core foreign keys that cascade from workspace and application deletes ([#26655](https://github.com/twentyhq/twenty/pull/26655)) by @charlesBochet
- Restore columns when resetting view grouping ([#26656](https://github.com/twentyhq/twenty/pull/26656)) by @bosiraphael
- fix(workflow): repair core version parents and skip runs of deleted versions in the 2.42 execution backfill ([#26661](https://github.com/twentyhq/twenty/pull/26661)) by @thomtrp
- i18n - translations ([#26664](https://github.com/twentyhq/twenty/pull/26664)) by @github-actions
- Use default domain for marketplace app share link ([#26666](https://github.com/twentyhq/twenty/pull/26666)) by @martmull
- i18n - translations ([#26669](https://github.com/twentyhq/twenty/pull/26669)) by @github-actions
- Restore tab and menu icon stroke weight ([#26670](https://github.com/twentyhq/twenty/pull/26670)) by @Bonapara
- feat(usage): meter common API calls in complexity points ([#26671](https://github.com/twentyhq/twenty/pull/26671)) by @etiennejouan
- Keep upgrade command code in its version folder ([#26672](https://github.com/twentyhq/twenty/pull/26672)) by @FelixMalfait
- Remove the per-campaign recipient cap ([#26675](https://github.com/twentyhq/twenty/pull/26675)) by @neo773
- Remove the unused sendEmailViaEmailingDomain mutation ([#26676](https://github.com/twentyhq/twenty/pull/26676)) by @neo773
- i18n - translations ([#26677](https://github.com/twentyhq/twenty/pull/26677)) by @github-actions
- Serve agent history from workspace storage only ([#26678](https://github.com/twentyhq/twenty/pull/26678)) by @FelixMalfait
- i18n - translations ([#26679](https://github.com/twentyhq/twenty/pull/26679)) by @github-actions
- i18n - translations ([#26680](https://github.com/twentyhq/twenty/pull/26680)) by @github-actions
- Scope application tokens to their own application ([#26681](https://github.com/twentyhq/twenty/pull/26681)) by @prastoin
- i18n - translations ([#26683](https://github.com/twentyhq/twenty/pull/26683)) by @github-actions
- Require a user session to change application registration ownership ([#26684](https://github.com/twentyhq/twenty/pull/26684)) by @prastoin
- Truncate ClickHouse tables on database reset ([#26687](https://github.com/twentyhq/twenty/pull/26687)) by @martmull
- i18n - translations ([#26692](https://github.com/twentyhq/twenty/pull/26692)) by @github-actions
- i18n - translations ([#26694](https://github.com/twentyhq/twenty/pull/26694)) by @github-actions
- chore: sync AI model catalog ([#26705](https://github.com/twentyhq/twenty/pull/26705)) by @github-actions
- Fix frontend routing for dotted navigation paths ([#26711](https://github.com/twentyhq/twenty/pull/26711)) by @FelixMalfait
- Fix invitation E2E revoking the shared login session ([#26712](https://github.com/twentyhq/twenty/pull/26712)) by @FelixMalfait

</details>

**Full Changelog**: https://github.com/twentyhq/twenty/compare/twenty/v2.41.0...twenty/v2.43.0

Related Repositories