Skip to content

Show and filter by event group markers - #3986

Draft
laurakwhit wants to merge 3 commits into
mainfrom
laura/fe-211-group-events-by-event-group-markers
Draft

laurakwhit wants to merge 3 commits into
mainfrom
laura/fe-211-group-events-by-event-group-markers

Conversation

@laurakwhit

Copy link
Copy Markdown
Collaborator

Description & motivation 💭

This PR surfaces event group markers in event details and adds a filter for them on Workflow /history and /timeline.

Event details

  • Events with markers get an Event Groups row in the event card (a comma-separated list of the groups the event belongs to).
  • Explicit labels (createEventGroup) are decoded through the configured codec. When there's no label payload the marker ID is shown instead.
  • Implicit markers use the source event: <signal name> (<event id>) from WorkflowExecutionSignaled, and <update name> (<update id>) from the update's Admitted or Accepted event. Without a name they fall back to the event type, and before the source event loads they fall back to the ID.

Event Groups filter

  • A new Event Groups button next to Filter on /history and /timeline. It only is shown when the history has markers.
  • Searchable checkbox list with event counts. Rows show up to 100 matches plus anything selected, with a "Showing N of M" note when more exist.
  • Filters whole lifecycle rows containing a marked event. Selected groups combine with OR among themselves and with AND against the existing category filter. The JSON view filters individual events the same way.
  • The selection is stored in ?groups= (URL-encoded marker keys) and carries over between History and Timeline. Keys not in the current run are ignored, so stale links never empty the view.
How it works
  • A per-run registry (event-group-markers.ts) resolves markers into shared entries as events are converted. It handles events arriving out of order from the two-direction history fetch.
  • Decoded labels are cached by payload object in a WeakMap, so each label is decoded once per loaded history.
  • The grouped event buffer indexes groups as events arrive (event count, first event, lifecycle groups touched). Filtering is one set lookup per row.
A note on dependency updates
  • @temporalio/* 1.22 → 1.24 – the first versions with the event-group API.
  • nexus-rpc 0.0.2 → 0.0.3 – in devDependencies and peerDependencies since SDK 1.24 requires it.
  • The protobufjs override is split by major version – <8 stays pinned to >=7.6.5 <7.7.0 for @grpc/proto-loader and >=8 <9 pins >=8.8.0 <8.9.0 for the SDK.
  • Type fixes for proto 1.24 – HistoryEvent omits proto's new attributes field (which names the set attributes field), and the system Nexus demo caller workflow uses a type-only proto import.

Screenshots (if applicable) 📸

Event details Event Group filter Event Group filter w/ 100+ groups
Screenshot 2026-10-06 at 6 02 01 PM Screenshot 2026-10-06 at 6 01 00 PM Screenshot 2026-10-06 at 6 08 15 PM

Design Considerations 🎨

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

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

  1. pnpm catalog dev, then run Event marker groups from the catalog.
  2. Open the run's /history. Expand an event and check the Event Groups row.
  3. Open Event Groups in the filter bar. Search, select one or more groups, and confirm /history, /timeline and the JSON view narrow. Reload, and switch between /history and /timeline`, to confirm the selection persists.
  4. Open a run with no markers and confirm the button doesn't appear.

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed

FE-211

Docs

Any docs updates needed?

@vercel

vercel Bot commented Oct 7, 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 Oct 7, 2026 3:04am UTC

Request Review

This branch was successfully deployed

1 active deployment
Preview — a7a5e2c6 Deployed Oct 7, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant