What's Changed
- Fix/sanitize chart filters on save by @ijreilly in #21958
- chore: bump version to 2.16.0 by @twenty-pr[bot] in #21973
- Decouple twenty-ui Avatar from app server-URL config by @bosiraphael in #21968
- Add twenty meeting bot to internal application ci by @martmull in #21974
- Set OpenAI Responses store false for AI chat and agents by @mfamularopsyc in #20888
- Add twenty-partners on internal ci apps by @martmull in #21975
- Deploy website only when twenty-website changes by @rashad in #21977
- fix(deps): remediate HIGH image vulns (multer, ws, nodemailer) by @charlesBochet in #21984
- Logic function handler name hardened validation by @prastoin in #21956
- fix(emails): stop reply composer infinite re-render by @neo773 in #21935
- feat(twenty-partners): marketplace v2 — Application-driven matching workspace by @rashad in #21816
- fix(front): unblock email verification on the central domain (blank modal) by @FelixMalfait in #21980
- [Twenty-front]: Record table Header drag and drop functionality by @git-init-priyanshu in #21304
- feat(twenty-partners): import an opportunity from TFT via manual workflow by @rashad in #21979
- Rework website PipelineVisual to match twenty-front kanban by @mabdullahabaid in #21989
- fix(deps): bump http-proxy-middleware to 2.0.10 by @mabdullahabaid in #21992
- Route Recall webhooks by workspace metadata by @ehconitin in #21991
- fix(deps): dedupe esbuild to 0.28.1 by @mabdullahabaid in #21993
- feat(messaging): webhook push sync for Gmail, Calendar and Microsoft by @neo773 in #21970
- fix(workflow): stop trigger/action filter Conditions from flashing on edit by @FelixMalfait in #21952
- fix(front): include isUIEditable/isRemote in CreateOneObjectMetadataItem so new objects aren't read-only until refresh by @avonian in #21796
- feat(ai): add AI tools to list and inspect workflow runs by @etiennejouan in #21983
- fix(twenty-partners): update Partner view in place on upgrade instead of deleting by @rashad in #21995
- feat(meeting-bot): configure Recall recording retention hours by @emmanuelhb56 in #21978
- fix: month and year dropdowns in settings logs date picker by @parshipcy in #21529
- feat(ai): large tool output handling + navigation tools by @etiennejouan in #21982
- Organize twenty-website product-feature into folder structure by @mabdullahabaid in #21999
- i18n - website translations by @github-actions[bot] in #22001
- Use minimal babel presets for wyw to fix the website Cloudflare build by @bosiraphael in #21994
- Make twenty-ui theming a consumer-facing API by @bosiraphael in #22007
- fix(deps): bump opentelemetry suite to core 2.8.0 (+ sentry 10.59) by @mabdullahabaid in #22010
- fix(deps): pin undici under @module-federation/dts-plugin to ^7.28.0 by @mabdullahabaid in #22014
- Source app About description from README and improve internal app READMEs by @bosiraphael in #22012
- fix(twenty-partners): coerce null fields in TFT opportunity import by @rashad in #22017
- Auto-generate app cover images from the app logo by @bosiraphael in #22011
- Improve meeting bot recording tab layout and transcript speakers ui by @ehconitin in #22016
- Wire up search field metadata by @prastoin in #21964
- bump sdk and app version for call recording bot app by @ehconitin in #22019
- fix(calendar): ID-first chunked import for Google and CalDAV by @neo773 in #22015
- fix(deps): bump vitest to 4 in twenty-meeting-bot (drops vulnerable esbuild) by @mabdullahabaid in #22025
- fix(deps): pin form-data under nx and zapier-platform-core to 4.0.6 by @mabdullahabaid in #22023
- fix(twenty-partners): restore partner side panel field visibility by @rashad in #22024
- Simplify Recall webhook logic function config by @ehconitin in #22026
- feat(timeline): activity kind registry (Layer A) by @FelixMalfait in #21950
- Rename CI New UI workflow to CI UI by @bosiraphael in #22030
- feat(front): render Instagram URLs as @Handles in link fields by @ptcrash in #21642
- Remove framer-motion from twenty-ui by @bosiraphael in #22021
- fix(deps): bump @module-federation/node to drop the koa-pinning 0.21.4 stack by @mabdullahabaid in #22032
- fix: keep AI chat open when opening a record full-page (e.g. workflows) by @FelixMalfait in #22036
- fix(domains): show custom domain DNS records and activation status without a page reload by @FelixMalfait in #22037
- Update location of settings by @signalwerk in #22033
- Bump twenty-ui to 1.0.0-alpha.0 for first npm pre-release by @bosiraphael in #22040
- Add a real README for the twenty-ui package by @bosiraphael in #22038
- Fix main ci: generate client-sdk by @prastoin in #22042
- Fix 2.16 search field metadata cross version upgrade by @prastoin in #22039
- fix(deps): bump engine.io + socket.io-adapter to drop vulnerable ws 8.17.1 by @mabdullahabaid in #22044
- i18n - docs translations by @github-actions[bot] in #22047
- fix(ai-tool): make search_output a raw-text occurrence search by @etiennejouan in #22034
- add meeting bot app cover by @ehconitin in #22049
- fix(deps): resolve qs to 6.15.2 (dedupe caret group + scope body-parser) by @mabdullahabaid in #22050
- fix(filter): guard isMatchingDateFilter against empty date values by @charlesBochet in #22029
- Remove custom widget from calendarEvent page layout by @martmull in #22046
- ci: remove redundant twenty-meeting-bot per-app workflow by @martmull in #22057
- Introduce search field metadata in 2 16 by @prastoin in #22055
- feat(front): allow advanced relation fields in FieldWidget selector by @martmull in #22005
- Map TFT useCase to partners need on opportunity import by @rashad in #22054
- docs(apps): add key-value store guide for logic functions by @martmull in #22061
- feat(metadata): deterministic universalIdentifiers for server-generated side-effects by @Weiko in #21949
- fix(twenty-partners): opportunity stages, Partners per Stage grouped table (v1.1.12) by @rashad in #22052
- Fix Opportunity email timeline relation traversal by @Bonapara in #22064
- Factorize from entity to flat entity utils by @prastoin in #21972
- feat(ui): additional social providers to link components by @rubixvi in #21716
- feat(ai): humanize tool-call by @etiennejouan in #21976
- i18n - docs translations by @github-actions[bot] in #22068
- Add search to new sidebar item picker by @Bonapara in #22041
- Add new onboarding login screen at /welcome-v2 by @bosiraphael in #22027
- ci(server): cross-version upgrade check on PRs (v1.22 → from source) by @prastoin in #22065
- fix: normalize date-time field input on backend to prevent timeline crash by @charlesBochet in #22035
- Twenty standard backfill non searchable object search field metadata by @prastoin in #22063
- fix(front): restore loading state on third-party app command menu actions by @charlesBochet in #22073
- [BREAKING CHANGE] harden call recording failure handling by @ehconitin in #22062
- Update data model object settings labels by @Bonapara in #22070
- Add logo to twenty-ui README by @bosiraphael in #22077
- fix(front): prevent lingui extract crash in buildCrudToolStatusMessage by @prastoin in #22080
- fix(deps): scope js-yaml to 4.2.0 under the mintlify/verdaccio pinners by @mabdullahabaid in #22078
- feat(server): run server-exposed logic functions in the owner workspace by @martmull in #22002
- Revert 21949 by @Weiko in #22081
- Allow workflows listing in MCP by @Souheyl7Gouadria in #22013
- ci(front): run lingui extract & compile on PRs to gate i18n breakage by @prastoin in #22084
- ci(server,emails): run lingui extract & compile on PRs to gate i18n breakage by @prastoin in #22086
- feat: serve HTTP logic functions on isolated *.withtwenty.com domain by @FelixMalfait in #22045
New Contributors
- @mfamularopsyc made their first contribution in #20888
- @avonian made their first contribution in #21796
- @ptcrash made their first contribution in #21642
- @signalwerk made their first contribution in #22033
- @rubixvi made their first contribution in #21716
- @Souheyl7Gouadria made their first contribution in #22013
Full Changelog: twenty/v2.15.0...twenty/v2.16.0