Add the developer Workflow Catalog - #3785
Open
rossnelson wants to merge 53 commits into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
rossnelson
force-pushed
the
move-shared-workflows-into-ui
branch
from
August 6, 2026 20:55
eb49d4f to
aac5a2e
Compare
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
marked this pull request as ready for review
August 12, 2026 15:27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-catalogprovides 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: 🚶🏽♂️🚶🏽♀️
pnpm workflow-catalog dev./namespaces/default/workflow-catalog.Checklists
Draft Checklist
Merge Checklist
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