Skip to content

feat(workers): add release stage badges to compute provider picker - #3773

Merged
rossnelson merged 2 commits into
mainfrom
feat/compute-provider-release-stage-badges
Jul 31, 2026
Merged

feat(workers): add release stage badges to compute provider picker#3773
rossnelson merged 2 commits into
mainfrom
feat/compute-provider-release-stage-badges

Conversation

@rossnelson

Copy link
Copy Markdown
Collaborator

Description & motivation 💭

With AWS Lambda going Public Preview and GCP Cloud Run entering Pre-release, the Compute Provider section gave no indication of either provider's release stage. This differs from features like Standalone Activities, which show a Public Preview label. Since users follow the same worker deployment creation flow for both providers, the missing labels could create confusion about the maturity and availability of each option.

This adds a release stage badge next to each Compute Provider option:

  • AWS LambdaPublic Preview
  • Google Cloud RunPre-release

The badge uses the same secondary Holocene Badge that Nexus and SAA use for their pre-release/preview labels, rendered in the existing labelBadge snippet on RadioCard.

Configurable by the caller

The stage is not hardcoded to the provider — ComputeProviderOption gains an optional releaseStage, so Cloud can drive it through the computeProviders prop it already passes into serverless-worker-create, worker-deployment-version-create, and worker-deployment-version-edit. No new prop to thread.

export type ComputeProviderReleaseStage =
  | 'public-preview'
  | 'pre-release'
  | 'generally-available';
  • Unset → falls back to defaultReleaseStage in shared.ts (the two stages above), so OSS/self-hosted and any caller that doesn't set it still get correct labels, and Cloud picks up stage changes on its next UI bump with no Cloud-side change.
  • 'generally-available' → renders no badge. This is how a provider drops the label once it GAs. Note undefined means "use the default", never "no badge".
  • A disabled option still shows its disabledReason badge ("Coming Soon", "Not supported in AWS namespaces") instead — that's the more relevant maturity signal, and it avoids stacking two badges.

An enum rather than a free-form string keeps the label text and its translation in this repo; Cloud picks a stage, not a string to display. defaultReleaseStage is exported so Cloud can read the defaults if it needs to reason about them.

Screenshots (if applicable) 📸

Design Considerations 🎨

Matches the crude mockup from the thread — badge inline to the right of the provider name. Reused the existing secondary badge type rather than introducing a release-stage-specific style, for consistency with the Pre-release badge already on the Nexus Operations page.

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

Storybook stories in compute-provider-picker.stories.svelte:

  • "Both enabled (cross-cloud)" now asserts both Public Preview and Pre-release render.
  • New "Release stage overridden by caller" story asserts a caller-supplied 'generally-available' on Lambda renders no badge while Cloud Run keeps Pre-release.

pnpm lint clean (0 errors), pnpm test --run 2573 passed / 183 files. pnpm check is unchanged from main — it reports one pre-existing error (Cannot find module './$types' in the history events route) unrelated to these files.

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

  1. Go to Create Worker Deployment and look at the Compute Provider section.
  2. AWS Lambda shows Public Preview; Google Cloud Run shows Pre-release.
  3. In an environment without the serverScaledProviderCloudRun capability, Cloud Run stays disabled and shows Coming Soon rather than a stage badge.
  4. In Storybook: Workers/Compute Provider Picker → the two stories above.

Checklists

Merge Checklist

  • Add screenshot to the PR description

Issue(s) closed

Docs

Any docs updates needed?

None.

Compute Provider options gave no indication of their release stage, unlike
features such as Standalone Activities that surface a Public Preview label.
AWS Lambda now shows Public Preview and Google Cloud Run shows Pre-release.

Callers can override per option with `releaseStage`, so cloud can drive the
stage without a UI release; unset falls back to the defaults above, and
'generally-available' renders no badge. Disabled options keep showing their
disabledReason badge instead.
@rossnelson
rossnelson requested a review from a team as a code owner July 31, 2026 18:04
@vercel

vercel Bot commented Jul 31, 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 Jul 31, 2026 6:27pm

Request Review

Match the badge to its role as a secondary annotation rather than
competing with the provider name beside it.
@rossnelson
rossnelson merged commit d9f9a99 into main Jul 31, 2026
18 checks passed
@rossnelson
rossnelson deleted the feat/compute-provider-release-stage-badges branch July 31, 2026 18:45
laurakwhit added a commit that referenced this pull request Aug 5, 2026
Auto-generated version bump from 2.53.0 to 2.53.1

Specific version: 2.53.1

Changes included:
- [`e3f08379`](e3f0837) Update holocene accordion-light to runes syntax (#3714)
- [`2cfa9b43`](2cfa9b4) Update holocene toggle-switch to runes syntax (#3715) (#3719)
- [`e884c326`](e884c32) Update holocene textarea to runes syntax (#3724)
- [`bda6e133`](bda6e13) Update holocene checkbox to runes syntax (#3725)
- [`11fe6ff3`](11fe6ff) Remove unused collapsible-divider component (#3726)
- [`bdc0fa77`](bdc0fa7) Update holocene skeleton table to runes syntax (#3734)
- [`56a34a69`](56a34a6) Update holocene accordion to runes syntax (#3736)
- [`1a0b0422`](1a0b042) Remove unused banner component (#3712)
- [`11da928d`](11da928) Update holocene range-input to runes syntax (#3713)
- [`d73bbde9`](d73bbde) Remove deprecated api-pagination component (#3739)
- [`9cb5e28a`](9cb5e28) Update holocene number-input to runes syntax (#3735)
- [`e4cec29c`](e4cec29) Update holocene tabs and tab-button to runes syntax (#3737)
- [`6f6f7139`](6f6f713) Update holocene drawer-content to runes syntax (#3740)
- [`4f2cef58`](4f2cef5) Update holocene tooltip to runes syntax (#3743)
- [`6e01537e`](6e01537) Update holocene link to runes syntax (#3741)
- [`b6775092`](b677509) Update holocene orderable-list to runes syntax (#3742)
- [`447fad67`](447fad6) Update holocene pagination to runes syntax (#3738)
- [`359c80ba`](359c80b) fix(schedules): tolerate duplicate schedule IDs (#3751)
- [`8e81a4f0`](8e81a4f) fix(workers): use default Cloud Run runner identity (#3748)
- [`3b37bbe6`](3b37bbe) Enable server-scaled deployments by default (#3672)
- [`d9f9a99c`](d9f9a99) feat(workers): add release stage badges to compute provider picker (#3773)
- [`7e8f2830`](7e8f283) Update holocene time-picker to runes syntax (#3754)
- [`053f060a`](053f060) Update holocene drawer to runes syntax (#3755)
- [`9dff9c9f`](9dff9c9) fix(workers): gate deployment actions by compute config (#3779)
- [`bd9b3f60`](bd9b3f6) Update holocene copyable to runes syntax (#3756)
- [`46afcfff`](46afcff) Update holocene toast to runes syntax (#3753)
- [`17f64bcc`](17f64bc) Update holocene orderable-list-item to runes syntax (#3758)
- [`d9ab4aa7`](d9ab4aa) Migrate event-link and event-details-link to runes syntax (#3760)
- [`c09f94ac`](c09f94a) Migrate start-workflow-button and workflow-detail to runes syntax (#3761)
- [`7bce9c5d`](7bce9c5) Remove dead workflow-filters component (#3762)
- [`30255dba`](30255db) Sweep remaining on: directives to runes event syntax (#3771)
- [`ad696bcf`](ad696bc) Migrate batch-operations header to runes syntax (#3764)
- [`64f7302c`](64f7302) Migrate workflow-family-node-tree to runes syntax (#3765)
- [`dc56c890`](dc56c89) Migrate start-workflow and workflow-query pages to runes syntax (#3768)
- [`f989d43a`](f989d43) Migrate payload-input-with-encoding to runes syntax (#3763)
- [`b19c43a0`](b19c43a) Migrate paginated-table cluster to runes syntax (#3750)
- [`84414160`](8441416) Update holocene zoom-svg to runes syntax (#3757)
- [`8c245928`](8c24592) Migrate holocene modal to runes syntax (#3759)
- [`ef33b255`](ef33b25) Upgrade to Storybook 10 and migrate stories to defineMeta (#3772)
- [`d8af57d8`](d8af57d) Enable runes mode by default (#3770)
- [`1923c928`](1923c92) Use WorkflowTaskFailedCause enum (#3775)
- [`b4a272ee`](b4a272e) Track pointerDown and ignore subsequent click (#3776)
- [`96a06250`](96a0625) Pluralize batch operation execution type (#3784)
- [`ee4652ac`](ee4652a) Resolve deployment compute config from routed version summaries (#3789)
- [`7b614625`](7b61462) Standalone Activity fixes (#3788)

Co-authored-by: laurakwhit <15069288+laurakwhit@users.noreply.github.com>
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.

2 participants