⚠️ Breaking changes
- System record page layout (#23651) by @prastoin
- feat(front): expand button and record actions in the side panel footer (#23965) by @FelixMalfait
- Edit metadata translations in the UI: per-entity side panel + translate-or-rename prompt (#24374) by @FelixMalfait
- feat(logic-function): give handlers an execution context, and a choice of whose access each call uses (#24493) by @FelixMalfait
- fix: bump nx 22.7.5 - 22.7.8 (Dependabot) (#24496) by @mabdullahabaid
- refactor(rest): move restore to a suffix path and make restore-one reachable (#24544) by @FelixMalfait
- fix(open-api): make request-body examples deterministic (#24591) by @FelixMalfait
✨ New features
- feat(twenty-slack): pass Slack conversation history to runAgent as messages (#23821) by @abdulrahmancodes
- feat(slack): native agent replies, thinking status everywhere (#23886) by @abdulrahmancodes
- feat(slack): give the assistant a concrete reply anatomy (#23887) by @abdulrahmancodes
- feat(campaign): move the campaign envelope fields above the body (#23959) by @FelixMalfait
- feat(billing): replace the credit balance column with a credit grant ledger (#23973) by @FelixMalfait
- feat(messaging): import recent messages as soon as an account connects (#23983) by @neo773
- feat(slack): act as the workspace member who tagged the bot (#23985) by @abdulrahmancodes
- feat(server): ORM v2, a TypeORM-free workspace read path behind a flag (#23991) by @charlesBochet
- feat(twenty-slack): stop Slack unfurling the record links in assistant replies (#24054) by @abdulrahmancodes
- feat(server): route findOne through the ORM v2 read path (#24077) by @charlesBochet
- feat(server): observe ORM v2 read-path usage with a metric (#24086) by @charlesBochet
- feat(server): route findDuplicates through the ORM v2 read path (#24088) by @charlesBochet
- feat(run-agent): scope run-as to the member's role and keep the application on the context (#24089) by @abdulrahmancodes
- feat(server): route groupBy through the ORM v2 read path (#24092) by @charlesBochet
- feat(twenty-slack): release the Slack team claim when the install is revoked on the Slack side (#24097) by @abdulrahmancodes
- feat(server): route nested relation loading through the ORM v2 read path (#24101) by @charlesBochet
- feat(twenty-slack): interactivity endpoint + native feedback buttons on assistant answers (#24107) by @abdulrahmancodes
- feat(server): load mutation nested relations through the ORM v2 read path (#24113) by @charlesBochet
- feat: support gt/lt comparisons on select and rating filters (#24116) by @thomtrp
- feat(server): add the ORM v2 mutation statement layer (update/delete/soft-delete/restore) (#24118) by @charlesBochet
- feat(server): route delete, destroy and restore through the ORM v2 write path (#24131) by @charlesBochet
- feat(server): route update through the ORM v2 write path (#24140) by @charlesBochet
- feat(server): route create, upsert and merge through the ORM v2 write path (#24145) by @charlesBochet
- feat(server): ORM v2 workspace repository read-family methods (#24170) by @charlesBochet
- feat(front): allow relations to system objects under an Advanced section (#24173) by @FelixMalfait
- feat(server): route module workspace repositories through ORM v2 and drop the EntityMetadata build (Stage B + C) (#24179) by @charlesBochet
- feat(server): eliminate v1 ORM from workspace write transactions on the flag (#24182) by @charlesBochet
- feat(metadata): writability levels on object and field metadata (#24208) by @abdulrahmancodes
- feat(sdk): let apps set writability on objects and fields (#24255) by @abdulrahmancodes
- feat(front): delete a workflow step from the diagram node (#24292) by @thomtrp
- feat(metadata): adopt SYSTEM writability, starting with search vectors (#24335) by @abdulrahmancodes
- feat(workflow): add core-backed workflows index page behind a flag (#24350) by @thomtrp
- feat(server): support cursor pagination with relation-field ordering (#24356) by @FelixMalfait
- feat(call-recorder): cancel open recording requests and upcoming Recall bots on uninstall (#24361) by @ehconitin
💅 Improvements & UX
- Twenty-front: Record Calendar multi drag functionality (#23316) by @git-init-priyanshu
- Implement MutationObserver in the front component worker sandbox (#23489) by @bosiraphael
- Remove the frontend's remaining view.openRecordIn plumbing (#23627) by @FelixMalfait
- Run application uninstall hooks when deleting a workspace (#23633) by @ehconitin
- Rework the twenty-partners Claude skills into a reviewable lead path (#23661) by @rashad
- Fix handle in ConnectionProvider (#23674) by @BOHEUS
- Allow going back to the previous onboarding step (#23716) by @bosiraphael
- Make localStorage and sessionStorage work in app front components (#23761) by @bosiraphael
- Share front component dependencies through a per-app bundle (#23773) by @bosiraphael
- Add a deprecated attribute to app manifest variables (#23868) by @bosiraphael
- Redirect to companies and collapse the chat when workspace setup ends (#23904) by @bosiraphael
- Add native call recording transcript tab to the calendar event record page (#23909) by @ehconitin
- Split metadata loader and filter responsibilities (#23954) by @FelixMalfait
- Handle Microsoft calendar token refresh failures gracefully (#23958) by @neo773
- [Twenty-front][Calendar]: Prevent calendar card cell hover/edit state for multi-day records (#23962) by @git-init-priyanshu
- Enrich the onboarding chat kickoff with person and workspace context (#23970) by @bosiraphael
- Stop retrying the SSE event stream once the client is signed out (#23979) by @FelixMalfait
- Add native call recording summary tab to the calendar event record page (#23992) by @ehconitin
- Disable jest coverage locally and cap twenty-server test workers (#24008) by @bosiraphael
- Ask about CRM migration at the start of the workspace setup chat (#24013) by @bosiraphael
- Send file attachments when answering an AI chat question (#24017) by @bosiraphael
- Fix record-page reconcile self-collision on user-added FIELDS widgets (#24022) by @prastoin
- Align DPA entity roles and signatures (#24026) by @FelixMalfait
- Remove the send Slack message front component (#24031) by @abdulrahmancodes
- Make server-served front same-origin by default and surface CORS misconfig (#24041) by @FelixMalfait
- Remove alpha sufix to npm packages (#24059) by @prastoin
- Modify PG_DATABASE_URL to include PG_DATABASE_NAME (#24091) by @pwntr
- Reorganize twenty-front-component-renderer into feature folders (#24132) by @bosiraphael
- Install changed apps on the preview environment, document app previews for external repos (#24143) by @FelixMalfait
- Persist admin panel chat filters across navigation (#24144) by @bosiraphael
- Skip contact creation when the connected account owner is gone (#24151) by @thomtrp
- Fix duplicate key errors during message import (#24154) by @thomtrp
- Show pinned command menu actions as icons on mobile headers (#24156) by @FelixMalfait
- Refresh the front component limitations doc (#24157) by @bosiraphael
- Make the mobile navigation menu a real home page (#24168) by @FelixMalfait
- Remove selection checkboxes and the aggregate footer on mobile (#24172) by @FelixMalfait
- AI chat: never fail silently on exhausted credits (#24175) by @FelixMalfait
- Give the mobile settings header its page title (#24176) by @FelixMalfait
- Stop the welcome title overflowing on mobile (#24183) by @FelixMalfait
- Scroll the tab row on mobile instead of hiding tabs behind a dropdown (#24184) by @FelixMalfait
- Surface the real ClickHouse error when an insert fails (#24189) by @thomtrp
- Make Other an explicit option in the AI chat question card (#24193) by @bosiraphael
- Polyfill navigator.clipboard.writeText for front components (#24195) by @FelixMalfait
- Point CI dispatches at twentyhq/twenty-factory (#24196) by @FelixMalfait
- Abstract inbound email retrieval behind message sources (#24201) by @FelixMalfait
- Add Resend as a community emailing domain driver (#24202) by @FelixMalfait
- Sample AI traces at 100% in Sentry and attribute AI calls (#24207) by @bosiraphael
- Interface scale preference via root CSS zoom (#24209) by @FelixMalfait
- Ask the onboarding CRM migration question with the ask_questions tool (#24214) by @bosiraphael
- Remove the dedicated media-notes example app workflow (#24216) by @FelixMalfait
- Fix orphaned mirrored field permission blocking relation field updates (#24220) by @FelixMalfait
- Merge language and scale into one Interface settings section (#24222) by @FelixMalfait
- ORM v2: TypeORM parity for joins / andSelect / distinctOn (#24225) by @charlesBochet
- Float the mobile bottom bar over content with a glass style (#24229) by @FelixMalfait
- ORM v2: relation-keyed where clauses (#24230) by @charlesBochet
- Turn the mobile bottom bar into the home page's tab bar (#24232) by @FelixMalfait
- Restore primary pinned actions with footer-owned width measurement (#24235) by @FelixMalfait
- Give the mobile record header a proper title treatment (#24251) by @FelixMalfait
- Make cookie sessions the only web auth path (#24257) by @FelixMalfait
- Make deactivated objects editable from settings (#24258) by @thomtrp
- fix(billing) - void unpaid upgrade invoices so a failed charge cannot be collected later (#24264) by @etiennejouan
- Show exact date on hover for timeline activity dates (#24265) by @FelixMalfait
- Float the mobile bottom bar again and reserve its footprint in page content (#24267) by @FelixMalfait
- Stop fetching unused morph targets in the timeline query (#24269) by @FelixMalfait
- Skip relation queries for unset to-one join columns (#24270) by @FelixMalfait
- Move presentational primitives from twenty-front to twenty-ui (#24277) by @bosiraphael
- Add Text typography primitive with truncate and lineClamp (#24278) by @bosiraphael
- Adopt Base UI compound Field for form fields (#24279) by @bosiraphael
- Fix MCP tool calls reporting structured failures as success (#24280) by @etiennejouan
- Show ask_questions as a readable Q&A card in the admin chat viewer (#24281) by @bosiraphael
- Read property-mapped attributes back from getAttribute on remote elements (#24297) by @bosiraphael
- refactor(i18n) - share the message-id hash and the translatable registry [1/6] (#24300) by @FelixMalfait
- Fix dashboard duplication rejecting relation-traversal chart filters (#24301) by @ehconitin
- refactor(i18n) - resolve page layout and view field group labels through one resolver [2/6] (#24304) by @FelixMalfait
- fix(i18n) - resolve view names through the shared resolver so app catalogs apply [3/6] (#24306) by @FelixMalfait
- fix(i18n) - translate command menu item labels [4/6] (#24310) by @FelixMalfait
- Gate twenty-ui interaction handlers on the element being clickable (#24311) by @bosiraphael
- fix(i18n) - translate navigation menu item names [5/6] (#24312) by @FelixMalfait
- Add retryable logic function failures with queue backoff (#24317) by @ehconitin
- fix(mcp) - hydrate relation fields selected by name in MCP find tools (#24328) by @etiennejouan
- Guide the AI workspace setup with a dedicated system prompt and a next-step question (#24331) by @bosiraphael
- Move in-product explainer videos from feature flagged to GA (#24337) by @Bredo
- Pin timeline activity write path behavior with integration tests (#24339) by @FelixMalfait
- Declare note and task targets as junction relations (#24340) by @FelixMalfait
- Drive timeline activities from rules instead of hardcoded branches (#24341) by @FelixMalfait
- Split onboarding chat spans into their own telemetry functionId (#24353) by @bosiraphael
- Stop reporting contact creation duplicate key conflicts to Sentry (#24355) by @thomtrp
- Generate command menu item mocks instead of hand-maintaining them (#24363) by @FelixMalfait
- Allow prop spreading in twenty-ui and remove the unused VISIBILITY_HIDDEN export (#24370) by @bosiraphael
- fix(billing) - unblock resource credit upgrades rejected by Stripe (#24383) by @etiennejouan
- Tag chat error events with their chat kind (#24387) by @bosiraphael
- Let a server route declare which HTTP methods it answers (#24401) by @emmanuelhb56
- Update docs (#24404) by @BOHEUS
- Render pre-2.33 command menu item labels instead of raw template expressions (#24405) by @FelixMalfait
- Resolve object labels in search results through the shared resolver (#24406) by @FelixMalfait
- Stop a manifest without translations from deleting an application's stored locales (#24408) by @FelixMalfait
- v1.6.3 — Remove the ranking field from the partner model (#24414) by @rashad
- Collapse the 24 view permission guards into three (#24415) by @FelixMalfait
- Fix AI FAQ: self-hosted custom models don't need an Organization license (#24430) by @thomtrp
- Revert AI FAQ wording on self-hosted custom models (#24435) by @thomtrp
- v1.6.4 — feat(partners): expose marketplace ranking metadata on the list endpoint (#24459) by @rashad
- Rank marketplace partners by evidence instead of by name (needs twenty-partners 1.6.4) (#24460) by @rashad
- Give the i18n context helper one home (#24495) by @FelixMalfait
- Read translatable properties without a cast (#24498) by @FelixMalfait
- Reduce non-AI Sentry trace sampling (#24511) by @bosiraphael
- Match participants on the transaction that inserted them (#24525) by @neo773
- Replace timelineActivity.name with a timelineActivityType id (#24568) by @FelixMalfait
- Fix legacy activity junction target backfill (#24598) by @FelixMalfait
- Make timeline activity types a generic application contract (#24620) by @FelixMalfait
- Emit attachment timeline activities through direct relations (#24637) by @FelixMalfait
- Repair activity junction targets for custom-only morphs (#24638) by @FelixMalfait
- Fix composite field update events (#24641) by @FelixMalfait
- Guard attachment activity upgrade on legacy schemas (#24642) by @FelixMalfait
- Remove generated attachment locale catalog changes (#24643) by @FelixMalfait
- Fix update events across ORM write paths (#24644) by @FelixMalfait
- Fix legacy composite update event snapshots (#24648) by @FelixMalfait
🐛 Bug fixes
- fix: add SettingsRolesQueryEffect to invite tab (#23320) by @atharv-sys32
- fix(twenty-server): resolve standardOverrides description in MCP CRUD tool schemas (#23562) (#23606) by @Shinu-Cherian
- fix: unblock AI chat on manually added models (#23695) by @brunobuddy
- fix(server,shared): validate view filter values on app manifest sync (#23848) by @thomtrp
- fix(twenty-server): resolve uninstall hook from application column set at sync time (#23908) by @ehconitin
- fix: preserve morph-related records when merging people (#23945) by @DebadityaHait
- fix(front): prevent stale timeline diff from crashing the Timeline tab (#23972) by @thomtrp
- fix(workflow): honor defaultSettings input for CODE/LOGIC_FUNCTION step creation (#23976) by @unchainedio
- fix(ui): render avatar image as CSS background to fix Safari Kanban repaint (#23978) by @thomtrp
- fix(server): validate row level permission predicate values at write time (#23999) by @thomtrp
- fix(upgrade): skip 2.20 campaign view columns whose field does not exist yet (#24003) by @neo773
- fix(messaging): stop syncing unsubscribe requests (#24007) by @neo773
- fix(front): select first matching option on enter in multi-select input (#24015) by @thomtrp
- fix: validate chart filter operands and values on app manifest sync (#24027) by @thomtrp
- fix(messaging): stop logging deleted-message 404s during Gmail import (#24030) by @neo773
- fix(sync): only mark channels FAILED_INSUFFICIENT_PERMISSIONS on documented permanent account errors (#24035) by @neo773
- fix(front): hide the remove icon on the last invite-team input (#24039) by @FelixMalfait
- fix(front): stop showing No results found while command menu items are displayed (#24040) by @thomtrp
- fix(billing): skip deleted workspaces in the credit balance backfill (#24067) by @FelixMalfait
- fix(billing): skip the rollover for workspaces that no longer exist (#24068) by @FelixMalfait
- fix(calendar): stop CalDAV errors falling to UNKNOWN and retrying forever (#24079) by @neo773
- fix(front): make logout navigate once (unbreaks the invite e2e) (#24128) by @charlesBochet
- fix(messaging): default new channels to METADATA visibility instead of SHARE_EVERYTHING (#24135) by @neo773
- fix(workflow): keep converging steps when an if/else branch is skipped (#24136) by @thomtrp
- fix(front): show Select dropdowns above modals and fix the rollover credits label (#24137) by @FelixMalfait
- fix: handle unavailable IMAP mailboxes (#24141) by @neo773
- fix(billing): map already-subscribed checkout retry to a user error (#24150) by @thomtrp
- fix(postcard): make the app-prod-parity postcard e2e suite pass (#24167) by @charlesBochet
- fix(front): hide record table header when empty on mobile (#24185) by @FelixMalfait
- fix(server): quote the alias in ORM v2 record-identifier where clauses (#24213) by @charlesBochet
- fix(server): fail FIND_RECORDS cleanly on an uncomputable filter (#24215) by @thomtrp
- fix(server): add findAndCount to the ORM v2 workspace repository (#24244) by @charlesBochet
- fix: preserve theme tokens when CSS variables are unresolved (#24250) by @anamikasingh200
- fix(tests): make the gmail mock honour the in:sent search filter (#24259) by @thomtrp
- fix(front): wrap relation card rows in RecordDetailRecordsListContainer (#24261) by @thomtrp
- fix(front): stop sending the dormant token pair on the SSE stream under cookie auth (#24274) by @FelixMalfait
- fix(front): recover from a session cookie the server does not accept (#24275) by @FelixMalfait
- fix(server): report an unauthenticated GraphQL request as UNAUTHENTICATED, not FORBIDDEN (#24276) by @FelixMalfait
- fix(twenty-slack): point the README setup link at an absolute url (#24288) by @abdulrahmancodes
- fix(server): map ORM v2 driver errors to typed exceptions (#24290) by @thomtrp
- fix(user-workspace): stop pretending role targets are soft deleted (#24295) by @FelixMalfait
- fix(server): resolve morph join column when walking relations to person (#24298) by @thomtrp
- fix(server): ORM v2 rollout safety - rollback-proof transactions and a working flag rollback (#24299) by @thomtrp
- fix(i18n): translate page layout names (#24315) by @FelixMalfait
- fix(i18n): resolve metadata subscription events against the subscriber's locale (#24323) by @FelixMalfait
- fix(server): ORM v2 write-path parity - persist workflow step logs, skip undefined values (#24330) by @thomtrp
- fix(server): make cursor pagination exhaustive for any orderBy (#24354) by @FelixMalfait
- fix(front): keep empty values at the bottom for ascending sorts (#24366) by @FelixMalfait
- fix(workflow): flag a trigger filter whose field reference is broken (#24377) by @thomtrp
- fix(filter): enforce conjunctive multi-token matching for composite name filters (#24260) (#24380) by @jihadMo
- fix: repair escaped inline-code tags in Crowdin docs translations (#24397) by @abdulrahmancodes
- fix: always pull app and website translations on schedule (#24400) by @abdulrahmancodes
- fix(server): timeline calendar events denied on the ORM v2 read path (#24403) by @FelixMalfait
- fix: bump undici to 6.28.0 across app lockfiles (Dependabot) (#24482) by @mabdullahabaid
- fix: bump ip-address to 10.5.0 in app lockfiles (Dependabot) (#24487) by @mabdullahabaid
- fix: bump nanoid to 5.1.16 (Dependabot) (#24489) by @mabdullahabaid
- fix: bump fast-uri 3.1.4 - 3.1.5 (Dependabot) (#24491) by @mabdullahabaid
- fix: bump socket.io-parser 4.2.6 - 4.2.7 (Dependabot) (#24492) by @mabdullahabaid
- fix(twenty-orm): let an application write its own records while serving a person (#24494) by @FelixMalfait
- fix(sdk): rerun dev sync when changes arrive during sync (#24514) by @FelixMalfait
- fix(server): prevent cleared PromiseMemoizer work from overwriting newer values (#24515) by @FelixMalfait
- fix(ui): keep Checkbox state controlled (#24516) by @FelixMalfait
- fix(auth): sign up in the resolved workspace in single-workspace mode (#24523) by @caveman99
- fix(ui): let AnimatedPlaceholder asset maps infer their key union (#24531) by @FelixMalfait
- fix(server): honor the statusCode option CustomException declares (#24534) by @FelixMalfait
- fix(front): narrow TableSortValue to the direction the table implements (#24536) by @FelixMalfait
- fix(ci): stop the i18n formatting ping-pong between Crowdin pull and push workflows (#24590) by @abdulrahmancodes
- fix: bump postcss to 8.5.26 across app lockfiles (Dependabot) (#24596) by @mabdullahabaid
- fix: bump brace-expansion to 5.0.9 in app lockfiles (Dependabot) (#24615) by @mabdullahabaid
⚡ Performance
- perf(server): remove the compact-storage flag, slice cache demotion, use a plain LIMIT on find-many (#23980) by @charlesBochet
- perf(server): cut Sentry instrumentation overhead and stop packing the working set (#24019) by @charlesBochet
- perf(server): workspace-cache packing budget + class-validator fast paths (#24083) by @charlesBochet
- perf(server): skip the ORM EntityMetadata build for ORM v2 workspaces at the cache layer (#24219) by @charlesBochet
🔧 Developer & API
- Add GraphQL direct execution cost metrics (#23655) by @Weiko
- Refactor CalDAV event fetching to use davRequest API (#23956) by @neo773
- Migrate call-recorder and fireflies to twenty-sdk 2.31.0-alpha.1 (#24016) by @prastoin
- Fireflies app settings tab with API-key-gated call history backfill (#24152) by @ehconitin
- Extract provider-neutral webhook handlers from SES-specific services (#24200) by @FelixMalfait
- App media recording via standard web API polyfills (compare with #24053) (#24203) by @FelixMalfait
- Give the REST metadata API one label-resolution path (#24410) by @FelixMalfait
🏗️ Internal changes (31)
- chore(slack): bump app version to 0.3.0 (#23996) by @abdulrahmancodes
- chore: set npm packages to 2.31.0-alpha.1 (#24011) by @prastoin
- test(server): delete service unit specs (#24094) by @charlesBochet
- refactor(server): extract pure service logic into utils (#24100) by @charlesBochet
- test(server): integration coverage for messaging and calendar sync (#24104) by @neo773
- test(server): IMAP and CalDAV integration tests against real servers (#24105) by @neo773
- chore: remove low-value comments (#24114) by @charlesBochet
- ci: unbreak CI E2E Main (same-origin front + fix the specs behind the login gate) (#24115) by @charlesBochet
- chore: remove low-value short comments (#24117) by @charlesBochet
- chore: remove low-value long comments (#24125) by @charlesBochet
- refactor(server): name workspace-cache transforms compact/serialize/pack (#24129) by @charlesBochet
- chore: replace JSDoc blocks on internal utils with short comments (#24130) by @charlesBochet
- ci: serialize the i18n workflows per branch (#24148) by @charlesBochet
- docs: keep JSX tags out of translatable prose so Crowdin can rebuild (#24158) by @charlesBochet
- test(server): cover outbound messaging and calendar providers (#24164) by @neo773
- test(server): cover workflow email and calendar actions across providers (#24181) by @neo773
- test(twenty-slack): cover the app end to end against a mocked Slack workspace (#24192) by @abdulrahmancodes
- refactor(front): support multiple widget header actions (#24204) by @ehconitin
- refactor(twenty-orm): replace scoped repository save() with insert/update (#24294) by @FelixMalfait
- refactor(i18n): own catalog resolution in one service so REST reaches app catalogs (#24321) by @FelixMalfait
- refactor(i18n): one runtime key space for translation catalogs (#24325) by @FelixMalfait
- refactor(i18n): one placeholder syntax for every derived label (#24326) by @FelixMalfait
- refactor(i18n): key metadata catalog entries per role with message context (#24360) by @FelixMalfait
- docs: rightsize CLAUDE.md to gotchas, add AGENTS.md symlink (#24362) by @FelixMalfait
- test(server): cover cursor pagination ordered by a morph relation leg (#24364) by @FelixMalfait
- refactor(server): compile SQL order clauses from the resolved orderBy leaves (#24382) by @FelixMalfait
- docs(codex-plugin): use apply and plan commands (#24512) by @FelixMalfait
- chore(front): remove unused application data table (#24513) by @FelixMalfait
- chore(sdk): delete the dead twenty-client-template copy (#24532) by @FelixMalfait
- refactor(server): drop unused flat-metadata params from OpenAPI path builders (#24533) by @FelixMalfait
- refactor(oxlint-rules): de-duplicate the two guarded-endpoint rules (#24535) by @FelixMalfait
🎉 New contributors
- @DebadityaHait made their first contribution in #23945
- @unchainedio made their first contribution in #23976
- @atharv-sys32 made their first contribution in #23320
- @brunobuddy made their first contribution in #23695
- @pwntr made their first contribution in #24091
- @anamikasingh200 made their first contribution in #24250
- @jihadMo made their first contribution in #24380
- @caveman99 made their first contribution in #24523
Full changelog (424 PRs)
- Twenty-front: Record Calendar multi drag functionality (#23316) by @git-init-priyanshu
- fix: add SettingsRolesQueryEffect to invite tab (#23320) by @atharv-sys32
- Implement MutationObserver in the front component worker sandbox (#23489) by @bosiraphael
- fix(twenty-server): resolve standardOverrides description in MCP CRUD tool schemas (#23562) (#23606) by @Shinu-Cherian
- Remove the frontend's remaining view.openRecordIn plumbing (#23627) by @FelixMalfait
- Run application uninstall hooks when deleting a workspace (#23633) by @ehconitin
- System record page layout (#23651) by @prastoin
- Add GraphQL direct execution cost metrics (#23655) by @Weiko
- Rework the twenty-partners Claude skills into a reviewable lead path (#23661) by @rashad
- Fix handle in ConnectionProvider (#23674) by @BOHEUS
- fix: unblock AI chat on manually added models (#23695) by @brunobuddy
- Allow going back to the previous onboarding step (#23716) by @bosiraphael
- Make localStorage and sessionStorage work in app front components (#23761) by @bosiraphael
- Share front component dependencies through a per-app bundle (#23773) by @bosiraphael
- feat(twenty-slack): pass Slack conversation history to runAgent as messages (#23821) by @abdulrahmancodes
- fix(server,shared): validate view filter values on app manifest sync (#23848) by @thomtrp
- Add a deprecated attribute to app manifest variables (#23868) by @bosiraphael
- feat(slack): native agent replies, thinking status everywhere (#23886) by @abdulrahmancodes
- feat(slack): give the assistant a concrete reply anatomy (#23887) by @abdulrahmancodes
- Redirect to companies and collapse the chat when workspace setup ends (#23904) by @bosiraphael
- fix(twenty-server): resolve uninstall hook from application column set at sync time (#23908) by @ehconitin
- Add native call recording transcript tab to the calendar event record page (#23909) by @ehconitin
- fix: preserve morph-related records when merging people (#23945) by @DebadityaHait
- Split metadata loader and filter responsibilities (#23954) by @FelixMalfait
- Refactor CalDAV event fetching to use davRequest API (#23956) by @neo773
- Handle Microsoft calendar token refresh failures gracefully (#23958) by @neo773
- feat(campaign): move the campaign envelope fields above the body (#23959) by @FelixMalfait
- [Twenty-front][Calendar]: Prevent calendar card cell hover/edit state for multi-day records (#23962) by @git-init-priyanshu
- feat(front): expand button and record actions in the side panel footer (#23965) by @FelixMalfait
- i18n - translations (#23966) by @github-actions
- chore: bump version to 2.31.0 (#23967) by @twenty-pr
- Enrich the onboarding chat kickoff with person and workspace context (#23970) by @bosiraphael
- fix(front): prevent stale timeline diff from crashing the Timeline tab (#23972) by @thomtrp
- feat(billing): replace the credit balance column with a credit grant ledger (#23973) by @FelixMalfait
- i18n - translations (#23974) by @github-actions
- fix(workflow): honor defaultSettings input for CODE/LOGIC_FUNCTION step creation (#23976) by @unchainedio
- fix(ui): render avatar image as CSS background to fix Safari Kanban repaint (#23978) by @thomtrp
- Stop retrying the SSE event stream once the client is signed out (#23979) by @FelixMalfait
- perf(server): remove the compact-storage flag, slice cache demotion, use a plain LIMIT on find-many (#23980) by @charlesBochet
- feat(messaging): import recent messages as soon as an account connects (#23983) by @neo773
- feat(slack): act as the workspace member who tagged the bot (#23985) by @abdulrahmancodes
- chore: sync AI model catalog from models.dev (#23988) by @github-actions
- feat(server): ORM v2, a TypeORM-free workspace read path behind a flag (#23991) by @charlesBochet
- Add native call recording summary tab to the calendar event record page (#23992) by @ehconitin
- i18n - translations (#23993) by @github-actions
- i18n - translations (#23995) by @github-actions
- chore(slack): bump app version to 0.3.0 (#23996) by @abdulrahmancodes
- fix(server): validate row level permission predicate values at write time (#23999) by @thomtrp
- fix(upgrade): skip 2.20 campaign view columns whose field does not exist yet (#24003) by @neo773
- i18n - translations (#24006) by @github-actions
- fix(messaging): stop syncing unsubscribe requests (#24007) by @neo773
- Disable jest coverage locally and cap twenty-server test workers (#24008) by @bosiraphael
- i18n - translations (#24010) by @github-actions
- chore: set npm packages to 2.31.0-alpha.1 (#24011) by @prastoin
- Ask about CRM migration at the start of the workspace setup chat (#24013) by @bosiraphael
- i18n - translations (#24014) by @github-actions
- fix(front): select first matching option on enter in multi-select input (#24015) by @thomtrp
- Migrate call-recorder and fireflies to twenty-sdk 2.31.0-alpha.1 (#24016) by @prastoin
- Send file attachments when answering an AI chat question (#24017) by @bosiraphael
- i18n - docs translations (#24018) by @github-actions
- perf(server): cut Sentry instrumentation overhead and stop packing the working set (#24019) by @charlesBochet
- Fix record-page reconcile self-collision on user-added FIELDS widgets (#24022) by @prastoin
- Align DPA entity roles and signatures (#24026) by @FelixMalfait
- fix: validate chart filter operands and values on app manifest sync (#24027) by @thomtrp
- fix(messaging): stop logging deleted-message 404s during Gmail import (#24030) by @neo773
- Remove the send Slack message front component (#24031) by @abdulrahmancodes
- fix(sync): only mark channels FAILED_INSUFFICIENT_PERMISSIONS on documented permanent account errors (#24035) by @neo773
- fix(front): hide the remove icon on the last invite-team input (#24039) by @FelixMalfait
- fix(front): stop showing No results found while command menu items are displayed (#24040) by @thomtrp
- Make server-served front same-origin by default and surface CORS misconfig (#24041) by @FelixMalfait
- feat(twenty-slack): stop Slack unfurling the record links in assistant replies (#24054) by @abdulrahmancodes
- i18n - docs translations (#24055) by @github-actions
- i18n - translations (#24057) by @github-actions
- i18n - translations (#24058) by @github-actions
- Remove alpha sufix to npm packages (#24059) by @prastoin
- chore: bump version to 2.32.0 (#24061) by @twenty-pr
- i18n - translations (#24062) by @github-actions
- i18n - docs translations (#24064) by @github-actions
- fix(billing): skip deleted workspaces in the credit balance backfill (#24067) by @FelixMalfait
- fix(billing): skip the rollover for workspaces that no longer exist (#24068) by @FelixMalfait
- i18n - translations (#24073) by @github-actions
- feat(server): route findOne through the ORM v2 read path (#24077) by @charlesBochet
- fix(calendar): stop CalDAV errors falling to UNKNOWN and retrying forever (#24079) by @neo773
- i18n - docs translations (#24080) by @github-actions
- perf(server): workspace-cache packing budget + class-validator fast paths (#24083) by @charlesBochet
- feat(server): observe ORM v2 read-path usage with a metric (#24086) by @charlesBochet
- feat(server): route findDuplicates through the ORM v2 read path (#24088) by @charlesBochet
- feat(run-agent): scope run-as to the member's role and keep the application on the context (#24089) by @abdulrahmancodes
- Modify PG_DATABASE_URL to include PG_DATABASE_NAME (#24091) by @pwntr
- feat(server): route groupBy through the ORM v2 read path (#24092) by @charlesBochet
- test(server): delete service unit specs (#24094) by @charlesBochet
- feat(twenty-slack): release the Slack team claim when the install is revoked on the Slack side (#24097) by @abdulrahmancodes
- i18n - translations (#24099) by @github-actions
- refactor(server): extract pure service logic into utils (#24100) by @charlesBochet
- feat(server): route nested relation loading through the ORM v2 read path (#24101) by @charlesBochet
- i18n - translations (#24102) by @github-actions
- test(server): integration coverage for messaging and calendar sync (#24104) by @neo773
- test(server): IMAP and CalDAV integration tests against real servers (#24105) by @neo773
- feat(twenty-slack): interactivity endpoint + native feedback buttons on assistant answers (#24107) by @abdulrahmancodes
- chore: sync AI model catalog from models.dev (#24110) by @github-actions
- feat(server): load mutation nested relations through the ORM v2 read path (#24113) by @charlesBochet
- chore: remove low-value comments (#24114) by @charlesBochet
- ci: unbreak CI E2E Main (same-origin front + fix the specs behind the login gate) (#24115) by @charlesBochet
- feat: support gt/lt comparisons on select and rating filters (#24116) by @thomtrp
- chore: remove low-value short comments (#24117) by @charlesBochet
- feat(server): add the ORM v2 mutation statement layer (update/delete/soft-delete/restore) (#24118) by @charlesBochet
- chore: remove low-value long comments (#24125) by @charlesBochet
- i18n - translations (#24126) by @github-actions
- fix(front): make logout navigate once (unbreaks the invite e2e) (#24128) by @charlesBochet
- refactor(server): name workspace-cache transforms compact/serialize/pack (#24129) by @charlesBochet
- chore: replace JSDoc blocks on internal utils with short comments (#24130) by @charlesBochet
- feat(server): route delete, destroy and restore through the ORM v2 write path (#24131) by @charlesBochet
- Reorganize twenty-front-component-renderer into feature folders (#24132) by @bosiraphael
- i18n - translations (#24133) by @github-actions
- fix(messaging): default new channels to METADATA visibility instead of SHARE_EVERYTHING (#24135) by @neo773
- fix(workflow): keep converging steps when an if/else branch is skipped (#24136) by @thomtrp
- fix(front): show Select dropdowns above modals and fix the rollover credits label (#24137) by @FelixMalfait
- i18n - docs translations (#24139) by @github-actions
- feat(server): route update through the ORM v2 write path (#24140) by @charlesBochet
- fix: handle unavailable IMAP mailboxes (#24141) by @neo773
- i18n - translations (#24142) by @github-actions
- Install changed apps on the preview environment, document app previews for external repos (#24143) by @FelixMalfait
- Persist admin panel chat filters across navigation (#24144) by @bosiraphael
- feat(server): route create, upsert and merge through the ORM v2 write path (#24145) by @charlesBochet
- i18n - translations (#24146) by @github-actions
- i18n - translations (#24147) by @github-actions
- ci: serialize the i18n workflows per branch (#24148) by @charlesBochet
- fix(billing): map already-subscribed checkout retry to a user error (#24150) by @thomtrp
- Skip contact creation when the connected account owner is gone (#24151) by @thomtrp
- Fireflies app settings tab with API-key-gated call history backfill (#24152) by @ehconitin
- Fix duplicate key errors during message import (#24154) by @thomtrp
- i18n - docs translations (#24155) by @github-actions
- Show pinned command menu actions as icons on mobile headers (#24156) by @FelixMalfait
- Refresh the front component limitations doc (#24157) by @bosiraphael
- docs: keep JSX tags out of translatable prose so Crowdin can rebuild (#24158) by @charlesBochet
- i18n - translations (#24161) by @github-actions
- i18n - translations (#24162) by @github-actions
- test(server): cover outbound messaging and calendar providers (#24164) by @neo773
- i18n - docs translations (#24166) by @github-actions
- fix(postcard): make the app-prod-parity postcard e2e suite pass (#24167) by @charlesBochet
- Make the mobile navigation menu a real home page (#24168) by @FelixMalfait
- feat(server): ORM v2 workspace repository read-family methods (#24170) by @charlesBochet
- Remove selection checkboxes and the aggregate footer on mobile (#24172) by @FelixMalfait
- feat(front): allow relations to system objects under an Advanced section (#24173) by @FelixMalfait
- i18n - translations (#24174) by @github-actions
- AI chat: never fail silently on exhausted credits (#24175) by @FelixMalfait
- Give the mobile settings header its page title (#24176) by @FelixMalfait
- feat(server): route module workspace repositories through ORM v2 and drop the EntityMetadata build (Stage B + C) (#24179) by @charlesBochet
- test(server): cover workflow email and calendar actions across providers (#24181) by @neo773
- feat(server): eliminate v1 ORM from workspace write transactions on the flag (#24182) by @charlesBochet
- Stop the welcome title overflowing on mobile (#24183) by @FelixMalfait
- Scroll the tab row on mobile instead of hiding tabs behind a dropdown (#24184) by @FelixMalfait
- fix(front): hide record table header when empty on mobile (#24185) by @FelixMalfait
- chore: sync AI model catalog from models.dev (#24186) by @github-actions
- i18n - translations (#24187) by @github-actions
- Surface the real ClickHouse error when an insert fails (#24189) by @thomtrp
- test(twenty-slack): cover the app end to end against a mocked Slack workspace (#24192) by @abdulrahmancodes
- Make Other an explicit option in the AI chat question card (#24193) by @bosiraphael
- Polyfill navigator.clipboard.writeText for front components (#24195) by @FelixMalfait
- Point CI dispatches at twentyhq/twenty-factory (#24196) by @FelixMalfait
- Extract provider-neutral webhook handlers from SES-specific services (#24200) by @FelixMalfait
- Abstract inbound email retrieval behind message sources (#24201) by @FelixMalfait
- Add Resend as a community emailing domain driver (#24202) by @FelixMalfait
- App media recording via standard web API polyfills (compare with #24053) (#24203) by @FelixMalfait
- refactor(front): support multiple widget header actions (#24204) by @ehconitin
- Sample AI traces at 100% in Sentry and attribute AI calls (#24207) by @bosiraphael
- feat(metadata): writability levels on object and field metadata (#24208) by @abdulrahmancodes
- Interface scale preference via root CSS zoom (#24209) by @FelixMalfait
- i18n - docs translations (#24210) by @github-actions
- i18n - translations (#24212) by @github-actions
- fix(server): quote the alias in ORM v2 record-identifier where clauses (#24213) by @charlesBochet
- Ask the onboarding CRM migration question with the ask_questions tool (#24214) by @bosiraphael
- fix(server): fail FIND_RECORDS cleanly on an uncomputable filter (#24215) by @thomtrp
- Remove the dedicated media-notes example app workflow (#24216) by @FelixMalfait
- i18n - translations (#24217) by @github-actions
- perf(server): skip the ORM EntityMetadata build for ORM v2 workspaces at the cache layer (#24219) by @charlesBochet
- Fix orphaned mirrored field permission blocking relation field updates (#24220) by @FelixMalfait
- Merge language and scale into one Interface settings section (#24222) by @FelixMalfait
- i18n - docs translations (#24224) by @github-actions
- ORM v2: TypeORM parity for joins / andSelect / distinctOn (#24225) by @charlesBochet
- chore: sync AI model catalog from models.dev (#24228) by @github-actions
- Float the mobile bottom bar over content with a glass style (#24229) by @FelixMalfait
- ORM v2: relation-keyed where clauses (#24230) by @charlesBochet
- Turn the mobile bottom bar into the home page's tab bar (#24232) by @FelixMalfait
- i18n - translations (#24233) by @github-actions
- Restore primary pinned actions with footer-owned width measurement (#24235) by @FelixMalfait
- i18n - translations (#24237) by @github-actions
- fix(server): add findAndCount to the ORM v2 workspace repository (#24244) by @charlesBochet
- fix: preserve theme tokens when CSS variables are unresolved (#24250) by @anamikasingh200
- Give the mobile record header a proper title treatment (#24251) by @FelixMalfait
- feat(sdk): let apps set writability on objects and fields (#24255) by @abdulrahmancodes
- Make cookie sessions the only web auth path (#24257) by @FelixMalfait
- Make deactivated objects editable from settings (#24258) by @thomtrp
- fix(tests): make the gmail mock honour the in:sent search filter (#24259) by @thomtrp
- fix(front): wrap relation card rows in RecordDetailRecordsListContainer (#24261) by @thomtrp
- fix(billing) - void unpaid upgrade invoices so a failed charge cannot be collected later (#24264) by @etiennejouan
- Show exact date on hover for timeline activity dates (#24265) by @FelixMalfait
- i18n - translations (#24266) by @github-actions
- Float the mobile bottom bar again and reserve its footprint in page content (#24267) by @FelixMalfait
- i18n - translations (#24268) by @github-actions
- Stop fetching unused morph targets in the timeline query (#24269) by @FelixMalfait
- Skip relation queries for unset to-one join columns (#24270) by @FelixMalfait
- i18n - translations (#24272) by @github-actions
- fix(front): stop sending the dormant token pair on the SSE stream under cookie auth (#24274) by @FelixMalfait
- fix(front): recover from a session cookie the server does not accept (#24275) by @FelixMalfait
- fix(server): report an unauthenticated GraphQL request as UNAUTHENTICATED, not FORBIDDEN (#24276) by @FelixMalfait
- Move presentational primitives from twenty-front to twenty-ui (#24277) by @bosiraphael
- Add Text typography primitive with truncate and lineClamp (#24278) by @bosiraphael
- Adopt Base UI compound Field for form fields (#24279) by @bosiraphael
- Fix MCP tool calls reporting structured failures as success (#24280) by @etiennejouan
- Show ask_questions as a readable Q&A card in the admin chat viewer (#24281) by @bosiraphael
- i18n - docs translations (#24287) by @github-actions
- fix(twenty-slack): point the README setup link at an absolute url (#24288) by @abdulrahmancodes
- fix(server): map ORM v2 driver errors to typed exceptions (#24290) by @thomtrp
- feat(front): delete a workflow step from the diagram node (#24292) by @thomtrp
- i18n - translations (#24293) by @github-actions
- refactor(twenty-orm): replace scoped repository save() with insert/update (#24294) by @FelixMalfait
- fix(user-workspace): stop pretending role targets are soft deleted (#24295) by @FelixMalfait
- Read property-mapped attributes back from getAttribute on remote elements (#24297) by @bosiraphael
- fix(server): resolve morph join column when walking relations to person (#24298) by @thomtrp
- fix(server): ORM v2 rollout safety - rollback-proof transactions and a working flag rollback (#24299) by @thomtrp
- refactor(i18n) - share the message-id hash and the translatable registry [1/6] (#24300) by @FelixMalfait
- Fix dashboard duplication rejecting relation-traversal chart filters (#24301) by @ehconitin
- i18n - translations (#24302) by @github-actions
- refactor(i18n) - resolve page layout and view field group labels through one resolver [2/6] (#24304) by @FelixMalfait
- fix(i18n) - resolve view names through the shared resolver so app catalogs apply [3/6] (#24306) by @FelixMalfait
- fix(i18n) - translate command menu item labels [4/6] (#24310) by @FelixMalfait
- Gate twenty-ui interaction handlers on the element being clickable (#24311) by @bosiraphael
- fix(i18n) - translate navigation menu item names [5/6] (#24312) by @FelixMalfait
- i18n - translations (#24313) by @github-actions
- fix(i18n): translate page layout names (#24315) by @FelixMalfait
- i18n - translations (#24316) by @github-actions
- Add retryable logic function failures with queue backoff (#24317) by @ehconitin
- i18n - translations (#24318) by @github-actions
- chore: bump version to 2.33.0 (#24319) by @thomtrp
- i18n - translations (#24320) by @github-actions
- refactor(i18n): own catalog resolution in one service so REST reaches app catalogs (#24321) by @FelixMalfait
- fix(i18n): resolve metadata subscription events against the subscriber's locale (#24323) by @FelixMalfait
- refactor(i18n): one runtime key space for translation catalogs (#24325) by @FelixMalfait
- refactor(i18n): one placeholder syntax for every derived label (#24326) by @FelixMalfait
- fix(mcp) - hydrate relation fields selected by name in MCP find tools (#24328) by @etiennejouan
- fix(server): ORM v2 write-path parity - persist workflow step logs, skip undefined values (#24330) by @thomtrp
- Guide the AI workspace setup with a dedicated system prompt and a next-step question (#24331) by @bosiraphael
- feat(metadata): adopt SYSTEM writability, starting with search vectors (#24335) by @abdulrahmancodes
- Move in-product explainer videos from feature flagged to GA (#24337) by @Bredo
- Pin timeline activity write path behavior with integration tests (#24339) by @FelixMalfait
- Declare note and task targets as junction relations (#24340) by @FelixMalfait
- Drive timeline activities from rules instead of hardcoded branches (#24341) by @FelixMalfait
- feat(workflow): add core-backed workflows index page behind a flag (#24350) by @thomtrp
- Split onboarding chat spans into their own telemetry functionId (#24353) by @bosiraphael
- fix(server): make cursor pagination exhaustive for any orderBy (#24354) by @FelixMalfait
- Stop reporting contact creation duplicate key conflicts to Sentry (#24355) by @thomtrp
- feat(server): support cursor pagination with relation-field ordering (#24356) by @FelixMalfait
- i18n - translations (#24357) by @github-actions
- refactor(i18n): key metadata catalog entries per role with message context (#24360) by @FelixMalfait
- feat(call-recorder): cancel open recording requests and upcoming Recall bots on uninstall (#24361) by @ehconitin
- docs: rightsize CLAUDE.md to gotchas, add AGENTS.md symlink (#24362) by @FelixMalfait
- Generate command menu item mocks instead of hand-maintaining them (#24363) by @FelixMalfait
- test(server): cover cursor pagination ordered by a morph relation leg (#24364) by @FelixMalfait
- fix(front): keep empty values at the bottom for ascending sorts (#24366) by @FelixMalfait
- i18n - docs translations (#24368) by @github-actions
- Allow prop spreading in twenty-ui and remove the unused VISIBILITY_HIDDEN export (#24370) by @bosiraphael
- Edit metadata translations in the UI: per-entity side panel + translate-or-rename prompt (#24374) by @FelixMalfait
- fix(workflow): flag a trigger filter whose field reference is broken (#24377) by @thomtrp
- i18n - docs translations (#24379) by @github-actions
- fix(filter): enforce conjunctive multi-token matching for composite name filters (#24260) (#24380) by @jihadMo
- refactor(server): compile SQL order clauses from the resolved orderBy leaves (#24382) by @FelixMalfait
- fix(billing) - unblock resource credit upgrades rejected by Stripe (#24383) by @etiennejouan
- Tag chat error events with their chat kind (#24387) by @bosiraphael
- i18n - docs translations (#24390) by @github-actions
- fix: repair escaped inline-code tags in Crowdin docs translations (#24397) by @abdulrahmancodes
- fix: always pull app and website translations on schedule (#24400) by @abdulrahmancodes
- Let a server route declare which HTTP methods it answers (#24401) by @emmanuelhb56
- fix(server): timeline calendar events denied on the ORM v2 read path (#24403) by @FelixMalfait
- Update docs (#24404) by @BOHEUS
- Render pre-2.33 command menu item labels instead of raw template expressions (#24405) by @FelixMalfait
- Resolve object labels in search results through the shared resolver (#24406) by @FelixMalfait
- Stop a manifest without translations from deleting an application's stored locales (#24408) by @FelixMalfait
- Give the REST metadata API one label-resolution path (#24410) by @FelixMalfait
- i18n - docs translations (#24413) by @github-actions
- v1.6.3 — Remove the ranking field from the partner model (#24414) by @rashad
- Collapse the 24 view permission guards into three (#24415) by @FelixMalfait
- i18n - translations (#24417) by @github-actions
- i18n - website translations (#24418) by @github-actions
- i18n - translations (#24419) by @github-actions
- i18n - translations (#24423) by @github-actions
- i18n - translations (#24424) by @github-actions
- i18n - translations (#24426) by @github-actions
- Fix AI FAQ: self-hosted custom models don't need an Organization license (#24430) by @thomtrp
- Revert AI FAQ wording on self-hosted custom models (#24435) by @thomtrp
- i18n - translations (#24436) by @github-actions
- i18n - docs translations (#24438) by @github-actions
- i18n - translations (#24439) by @github-actions
- i18n - website translations (#24440) by @github-actions
- i18n - translations (#24442) by @github-actions
- i18n - translations (#24443) by @github-actions
- i18n - translations (#24448) by @github-actions
- i18n - website translations (#24449) by @github-actions
- i18n - docs translations (#24450) by @github-actions
- i18n - translations (#24455) by @github-actions
- i18n - translations (#24457) by @github-actions
- v1.6.4 — feat(partners): expose marketplace ranking metadata on the list endpoint (#24459) by @rashad
- Rank marketplace partners by evidence instead of by name (needs twenty-partners 1.6.4) (#24460) by @rashad
- i18n - translations (#24462) by @github-actions
- i18n - translations (#24464) by @github-actions
- i18n - translations (#24467) by @github-actions
- i18n - translations (#24468) by @github-actions
- i18n - translations (#24469) by @github-actions
- i18n - translations (#24470) by @github-actions
- i18n - translations (#24476) by @github-actions
- i18n - translations (#24477) by @github-actions
- i18n - translations (#24479) by @github-actions
- i18n - translations (#24480) by @github-actions
- fix: bump undici to 6.28.0 across app lockfiles (Dependabot) (#24482) by @mabdullahabaid
- i18n - translations (#24484) by @github-actions
- i18n - translations (#24485) by @github-actions
- fix: bump ip-address to 10.5.0 in app lockfiles (Dependabot) (#24487) by @mabdullahabaid
- fix: bump nanoid to 5.1.16 (Dependabot) (#24489) by @mabdullahabaid
- fix: bump fast-uri 3.1.4 - 3.1.5 (Dependabot) (#24491) by @mabdullahabaid
- fix: bump socket.io-parser 4.2.6 - 4.2.7 (Dependabot) (#24492) by @mabdullahabaid
- feat(logic-function): give handlers an execution context, and a choice of whose access each call uses (#24493) by @FelixMalfait
- fix(twenty-orm): let an application write its own records while serving a person (#24494) by @FelixMalfait
- Give the i18n context helper one home (#24495) by @FelixMalfait
- fix: bump nx 22.7.5 - 22.7.8 (Dependabot) (#24496) by @mabdullahabaid
- i18n - translations (#24497) by @github-actions
- Read translatable properties without a cast (#24498) by @FelixMalfait
- i18n - docs translations (#24500) by @github-actions
- i18n - translations (#24506) by @github-actions
- i18n - translations (#24507) by @github-actions
- i18n - translations (#24509) by @github-actions
- Reduce non-AI Sentry trace sampling (#24511) by @bosiraphael
- docs(codex-plugin): use apply and plan commands (#24512) by @FelixMalfait
- chore(front): remove unused application data table (#24513) by @FelixMalfait
- fix(sdk): rerun dev sync when changes arrive during sync (#24514) by @FelixMalfait
- fix(server): prevent cleared PromiseMemoizer work from overwriting newer values (#24515) by @FelixMalfait
- fix(ui): keep Checkbox state controlled (#24516) by @FelixMalfait
- i18n - translations (#24522) by @github-actions
- fix(auth): sign up in the resolved workspace in single-workspace mode (#24523) by @caveman99
- Match participants on the transaction that inserted them (#24525) by @neo773
- i18n - translations (#24527) by @github-actions
- i18n - translations (#24528) by @github-actions
- i18n - docs translations (#24529) by @github-actions
- i18n - translations (#24530) by @github-actions
- fix(ui): let AnimatedPlaceholder asset maps infer their key union (#24531) by @FelixMalfait
- chore(sdk): delete the dead twenty-client-template copy (#24532) by @FelixMalfait
- refactor(server): drop unused flat-metadata params from OpenAPI path builders (#24533) by @FelixMalfait
- fix(server): honor the statusCode option CustomException declares (#24534) by @FelixMalfait
- refactor(oxlint-rules): de-duplicate the two guarded-endpoint rules (#24535) by @FelixMalfait
- fix(front): narrow TableSortValue to the direction the table implements (#24536) by @FelixMalfait
- i18n - translations (#24539) by @github-actions
- i18n - translations (#24543) by @github-actions
- refactor(rest): move restore to a suffix path and make restore-one reachable (#24544) by @FelixMalfait
- i18n - translations (#24545) by @github-actions
- i18n - website translations (#24546) by @github-actions
- i18n - translations (#24547) by @github-actions
- i18n - website translations (#24549) by @github-actions
- i18n - translations (#24553) by @github-actions
- i18n - website translations (#24554) by @github-actions
- i18n - translations (#24555) by @github-actions
- i18n - website translations (#24556) by @github-actions
- i18n - website translations (#24557) by @github-actions
- i18n - translations (#24558) by @github-actions
- i18n - translations (#24564) by @github-actions
- i18n - website translations (#24565) by @github-actions
- i18n - website translations (#24566) by @github-actions
- i18n - translations (#24567) by @github-actions
- Replace timelineActivity.name with a timelineActivityType id (#24568) by @FelixMalfait
- i18n - translations (#24569) by @github-actions
- i18n - translations (#24570) by @github-actions
- i18n - website translations (#24571) by @github-actions
- i18n - website translations (#24572) by @github-actions
- i18n - translations (#24574) by @github-actions
- i18n - website translations (#24575) by @github-actions
- i18n - website translations (#24576) by @github-actions
- i18n - translations (#24577) by @github-actions
- i18n - translations (#24578) by @github-actions
- i18n - website translations (#24579) by @github-actions
- i18n - website translations (#24580) by @github-actions
- i18n - translations (#24581) by @github-actions
- chore: sync AI model catalog from models.dev (#24584) by @github-actions
- i18n - translations (#24585) by @github-actions
- i18n - website translations (#24586) by @github-actions
- i18n - website translations (#24587) by @github-actions
- i18n - translations (#24588) by @github-actions
- fix(ci): stop the i18n formatting ping-pong between Crowdin pull and push workflows (#24590) by @abdulrahmancodes
- fix(open-api): make request-body examples deterministic (#24591) by @FelixMalfait
- i18n - translations (#24592) by @github-actions
- i18n - website translations (#24593) by @github-actions
- i18n - website translations (#24594) by @github-actions
- i18n - translations (#24595) by @github-actions
- fix: bump postcss to 8.5.26 across app lockfiles (Dependabot) (#24596) by @mabdullahabaid
- Fix legacy activity junction target backfill (#24598) by @FelixMalfait
- i18n - translations (#24600) by @github-actions
- i18n - translations (#24602) by @github-actions
- i18n - website translations (#24603) by @github-actions
- i18n - website translations (#24604) by @github-actions
- i18n - translations (#24606) by @github-actions
- chore: bump version to 2.34.0 (#24609) by @twenty-pr
- fix: bump brace-expansion to 5.0.9 in app lockfiles (Dependabot) (#24615) by @mabdullahabaid
- i18n - translations (#24616) by @github-actions
- i18n - website translations (#24617) by @github-actions
- i18n - website translations (#24618) by @github-actions
- i18n - translations (#24619) by @github-actions
- Make timeline activity types a generic application contract (#24620) by @FelixMalfait
- i18n - translations (#24622) by @github-actions
- i18n - website translations (#24623) by @github-actions
- i18n - website translations (#24624) by @github-actions
- i18n - translations (#24625) by @github-actions
- i18n - translations (#24627) by @github-actions
- i18n - website translations (#24628) by @github-actions
- i18n - translations (#24629) by @github-actions
- i18n - website translations (#24630) by @github-actions
- i18n - translations (#24631) by @github-actions
- i18n - website translations (#24632) by @github-actions
- i18n - website translations (#24633) by @github-actions
- i18n - translations (#24634) by @github-actions
- Emit attachment timeline activities through direct relations (#24637) by @FelixMalfait
- Repair activity junction targets for custom-only morphs (#24638) by @FelixMalfait
- i18n - docs translations (#24640) by @github-actions
- Fix composite field update events (#24641) by @FelixMalfait
- Guard attachment activity upgrade on legacy schemas (#24642) by @FelixMalfait
- Remove generated attachment locale catalog changes (#24643) by @FelixMalfait
- Fix update events across ORM write paths (#24644) by @FelixMalfait
- Fix legacy composite update event snapshots (#24648) by @FelixMalfait
Full Changelog: twenty/v2.30.0...twenty/v2.34.0