Skip to content

Event Group Markers support (experimental) - #3899

Draft
laurakwhit wants to merge 13 commits into
mainfrom
laura/fe-212-timeline-shows-event-groups
Draft

laurakwhit wants to merge 13 commits into
mainfrom
laura/fe-212-timeline-shows-event-groups

Conversation

@laurakwhit

@laurakwhit laurakwhit commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Description & motivation 💭

Adds Event Group support to the workflow Timeline and History views. Event Group Markers are displayed as grouped ranges on the timeline and available as a separate filter on both the timelines and history pages. This supports explicitly labeled markers as well as implicit signal and update markers.

Screenshots (if applicable) 📸

Screenshot 2026-09-10 at 9 31 13 PM Screenshot 2026-09-10 at 9 30 32 PM

Design Considerations 🎨

UI and Behavior
Area Behavior
Timeline overview Event Groups appear as purple range rows spanning their first through last attributed lifecycle event. Each row shows the decoded label and event count.
Availability A Show/Hide Event Groups control toggles the rows and is disabled when the workflow has no Event Group Markers.
Pending groups Groups containing pending work use an animated dashed range that extends to the timeline’s current endpoint.
Expansion Selecting an Event Group keeps its range row visible and expands the group directly beneath it without changing the existing timeline or x-axis.
Group contents The expanded region displays only lifecycle groups attributed to the selected Event Group. Events may appear in multiple Event Groups.
Expanded header Shows the group label, duration, total event count, and applicable failure, timeout, retry, cancellation, termination, or paused-state badges.
Event details Selecting an event uses the timeline’s existing event-details experience. Event details also display badges for every Event Group attributed to that event.
Closing The expanded group can be closed from its header, returning focus to its Event Group row.
Existing controls Event-type filtering applies to expanded lifecycle events, while idle-time collapsing continues to work across the timeline.
Marker labels
Marker type Behavior
Explicit label The user-provided label is decoded through the configured payload codec and displayed when decoding succeeds.
Inbound signal Uses the associated signal name when available. Otherwise, it uses the corresponding history event type.
Inbound update Uses the associated update name when available. Otherwise, it uses the corresponding history event type.
Before decoding Uses the marker’s opaque identifier so attribution can be displayed immediately without waiting for payload decoding.
Decode failure Displays the existing decode-failed presentation rather than exposing encoded payload data.
Shared markers Events carrying the same opaque marker ID receive the same presentation throughout the history.
Multiple markers An event can display multiple Event Group badges when it belongs to more than one group.
Filtering
Area Behavior
Availability A separate Event Groups filter appears beside the event-type filter on both /timeline and /history.
Selection Users can select one or more Event Groups. Events matching any selected group remain visible.
Persistence Selected marker keys are stored in URL parameters, allowing filtered views to be bookmarked and shared.
Workflow navigation Filter-local search and decoded-label state are reset when navigating to another workflow execution.
Stale filters Marker selections that do not exist in the current workflow are removed so they cannot leave the view empty with no way to clear it.
Search Users can search using the displayed Event Group label.
Payload decoding Labels are decoded lazily while the filter menu is open, with at most four decoding operations running concurrently.
Large histories The menu renders at most 100 matching options at once. Selected groups remain visible, and users are prompted to refine their search for additional results.
Long labels The menu has a responsive maximum width, and long Event Group names wrap inside it.
Existing filters Event Group filtering composes with the existing event-type filter rather than replacing it.

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

Steps for others to test: 🚶🏽‍♂️🚶🏽‍♀️

Run temporal server from a local build

  1. Ensure you have cloned the temporal repo
  2. Run make bins and make start
  3. Running temporal server from a local build does not create the namespace, run temporal operator namespace create --namespace default

Run the UI against a local build of temporal server

  1. Checkout the laura/fe-212-timeline-shows-event-groups branch in the UI repo
  2. cd server/ && make build
  3. cd .. && pnpm dev:local-temporal
  4. pnpm catalog worker and go to http://localhost:3000/namespaces/default/catalog

  1. Run the Event Groups example from the catalog and go to the Workflow details page timeline view.
  2. Use Hide Event Groups and Show Event Groups.
  3. Expand each Event Group and the lifecycle event groups within each Event Group.
  4. Apply the Event Type filter on both the /timeline and /history pages.

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed

FE-211
FE-212
FE-213

Docs

Any docs updates needed?

@vercel

vercel Bot commented Sep 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
holocene Ready Ready Preview Sep 11, 2026 4:34am UTC

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant