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