Skip to content

Add the developer Workflow Catalog - #3785

Open
rossnelson wants to merge 53 commits into
mainfrom
move-shared-workflows-into-ui
Open

Add the developer Workflow Catalog#3785
rossnelson wants to merge 53 commits into
mainfrom
move-shared-workflows-into-ui

Conversation

@rossnelson

@rossnelson rossnelson commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Description & motivation 💭

This PR adds a developer-only Workflow Catalog, so workflow examples can be authored once in temporalio/ui, exercised locally, and reused by packaged consumers.

The namespace-scoped catalog includes 17 shared OSS examples covering workflows, activities, signals, child workflows, priority and fairness, standalone activities, and Nexus. Developers can search shared and local examples, quick-run defaults, edit JSON inputs and start options, check readiness, and follow run history into canonical workflow and activity views. Drafts and run history persist for the current page lifetime.

The package exposes provider-neutral browser, host, worker, and authoring surfaces. Cloud can supply its own route, policy, connection, and provisioning behavior without duplicating the catalog.

pnpm workflow-catalog provides one CLI for development, workers, scaffolding, generation, verification, and rollback-safe promotion or demotion between shared and Git-ignored local examples. The worker supports plaintext, mTLS, and API-key connections. Nexus prerequisites are provisioned locally when possible or shown as explicit setup in credentialed environments.

The repository also includes an installable Claude and Codex agent skill with marketplace metadata. Generated artifacts, package exports, local overlays, credentials, and production route exposure are kept behind explicit boundaries.

Screenshots (if applicable) 📸

None.

Design Considerations 🎨

The OSS route remains outside the main navigation, is available only during local development, and returns 404 in production builds. Generated browser artifacts exclude worker and credential data, while consumers retain control over mounting and execution policy.

Testing 🧪

How was this tested 👻

  • Manual testing

  • E2E tests added

  • Unit tests added

  • Full suite: 231 test files passed; 3,012 tests passed and 2 skipped.

  • pnpm check: 0 errors.

  • pnpm build:local: passed.

  • pnpm workflow-catalog verify: passed.

  • Live browser testing validated the local authoring and execution loop.

  • No formal E2E suite was added.

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

  1. Run pnpm workflow-catalog dev.
  2. Open /namespaces/default/workflow-catalog.
  3. Search for an example, quick-run it, then edit its JSON input or start options and inspect its readiness, status, and evidence.
  4. Scaffold a local example and confirm the watched catalog regenerates and reloads.

Checklists

Draft Checklist

  • Test the final UI package in the Cloud consumer.

Merge Checklist

  • Confirm the final UI package and Cloud consumer are aligned.

Issue(s) closed

Tracks DT-4332; this PR does not close the epic.

Docs

Any docs updates needed?

The in-repository README, configuration scenarios, agent skill, and marketplace metadata are updated. No external documentation is required for this developer-only release.

What to look at first

  • The registration-to-generated-metadata boundary.
  • The provider-neutral browser, host, worker, and authoring surfaces.
  • The promotion, demotion, and rollback transaction model.
  • The development-only route and credential boundaries.

@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview Aug 12, 2026 3:20pm

Request Review

@rossnelson rossnelson changed the title Add developer workflow catalog Add the developer Workflow Catalog and reusable authoring toolkit Aug 11, 2026
@rossnelson rossnelson changed the title Add the developer Workflow Catalog and reusable authoring toolkit Add the developer Workflow Catalog Aug 11, 2026
The worker loaded its bindings once at startup, so scaffolding an example
while it ran left it registering only the targets that existed when it
started. Run the worker entry under Node's watch mode, which both dev and
worker reach, and move the artifact preflight into the command so stale
artifacts still fail fast instead of waiting for a file change.
The fixed-layout table gave the workflow column almost no width once the
source, latest run, and actions columns took their share, so names were
truncated to nothing on a phone. Collapse the source and latest run
columns below the sm breakpoint, repeat them as a compact badge row under
the name, and let the name wrap. The latest run badge now links to that
run's workflow details page through the host evidence link whenever the
launch was accepted.
The configure page used plain textareas for its two JSON editors while the
start workflow page has a purpose-built payload editor. Reuse PayloadInput
so the catalog gets JSON syntax highlighting, inline validity feedback that
now gates Run, and JSON file upload.

PayloadInput clears its bound value when destroyed, so the start options
section stays mounted and hides instead of unmounting; a test covers the
collapse and reopen path that would otherwise discard the options.
The catalog fixes an example's task queue and workflow type, and either pins
an execution id in its start options or generates one per run. Show all of
them the way the start workflow page shows them, populated and disabled,
and drop the task queue from the side panel now that it has a field.

The generated id is no longer invisible until after a run: the page
generates it up front, shows it, pins it for the run it starts, and rolls
to the next one, so the id on screen is always the id that will be used.

The run actions also stop shifting. The observation controls became icon
buttons ahead of the run link in that right-aligned row, so the link keeps
the same position whether or not a run is still being watched.
Adds the start page's advanced controls to the configure page: custom search
attributes, workflow start delay, and user metadata summary and details,
each in its own bordered card rather than a tinted block.

Examples do not declare these. A shared schema is merged into every workflow
example when the catalog is generated, so authors describe only what is
specific to their example and the page still knows the options are accepted.
Standalone activity and Nexus examples are left alone, since their start
requests cannot carry them.

Search attributes and user metadata reach the wire as encoded payloads, so
the mapping lives in the shared start path both hosts feed rather than in
either host. The run action is now Start, matching the start workflow page,
and the runs table shows the workflow id instead of an attempt id that never
left the browser.
The harnesses start an isolated Vite server in beforeAll. Pulling CodeMirror
and the search attribute inputs into the catalog components meant that server
also had to process tailwindcss/colors and date-fns-tz, both CommonJS, and
the extra work pushed setup past the default ten second hook timeout whenever
the suite ran under load. It failed locally and in CI without saying anything
about the code under test.

Both are reached for almost nothing: one hex colour for the editor theme, and
three timezone helpers no catalog assertion depends on. Test doubles stand in
for them, so neither harness pre-bundles anything heavy, and the setup hooks
carry a timeout sized for a loaded CI machine rather than the default.
@rossnelson
rossnelson marked this pull request as ready for review August 12, 2026 15:27
@rossnelson
rossnelson requested a review from a team as a code owner August 12, 2026 15:27
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