SIGN IN SIGN UP

Add Timeline related-record action launcher (#24677)

## Summary

- add a stable `+` action to the Timeline widget that opens a native
side-panel command page
- expose task, note, attachment, email, and calendar-event creation
through shared related-record action bindings
- make every widget-local `+` consume the same visibility, disabled
state, reason, label, and execution behavior as the aggregate launcher
- pass the target record explicitly and preserve it in page-scoped
side-panel state, so actions do not depend on record-layout React
context
- reuse the existing task/note drawers, attachment upload, email
composer, and calendar-event composer; this PR does not create timeline
occurrences directly

## Stack

Base: `codex/calendar-event-composer` (#24667)

This PR is intentionally stacked because the calendar-event action
reuses the composer added and refined in #24667.

## UI

The launcher uses the existing `SidePanelList`, `SidePanelGroup`,
`SelectableListItem`, and `CommandMenuItem` pattern.
Permission-ineligible actions are hidden; recoverable prerequisites
remain visible and disabled with contextual text.

Manual local verification on a company record:

- Timeline `+` opens the five-action launcher without a record-layout
context error
- Compose email opens the existing email composer with the related
person prefilled
- Calendar event action is wired to the existing calendar-event composer
- no task, note, attachment, email, or calendar event was submitted
during manual verification

## Validation

- `yarn nx build twenty-shared --skip-nx-cache` — passed
- `yarn nx build twenty-sdk --skip-nx-cache` — passed
- `./node_modules/.bin/tsgo --noEmit -p
packages/twenty-front/tsconfig.json` — passed
- `npx jest
packages/twenty-front/src/modules/activities/hooks/__tests__/useHasAnyRelatedRecordAction.test.ts
packages/twenty-front/src/modules/page-layout/widgets/components/__tests__/WidgetActionRelatedRecord.test.tsx
packages/twenty-front/src/modules/side-panel/pages/create-related-record/components/__tests__/SidePanelCreateRelatedRecordPage.test.tsx
--config packages/twenty-front/jest.config.mjs --runInBand` — 3 suites /
9 tests passed
- type-aware `oxlint` on 23 changed front-end files — 0 warnings / 0
errors
- type-aware `oxlint` on
`packages/twenty-shared/src/types/SidePanelPages.ts` — 0 warnings / 0
errors
- `npx oxfmt --check` on affected front-end modules and the shared enum
— passed
- `git diff --check` — passed


<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/24677?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>
<!-- End of auto-generated description by cubic. -->
F
Félix Malfait committed
93d31cbdbfbe61b76dc8948f077bbd0c7d953ecd
Parent: 8320a5f
Committed by GitHub <noreply@github.com> on 8/24/2026, 3:15:54 PM