Skip to content

feat: serverless worker deployment CRUD#3236

Open
rossnelson wants to merge 16 commits intomainfrom
serverless-workers-crud
Open

feat: serverless worker deployment CRUD#3236
rossnelson wants to merge 16 commits intomainfrom
serverless-workers-crud

Conversation

@rossnelson
Copy link
Copy Markdown
Collaborator

@rossnelson rossnelson commented Mar 19, 2026

Summary

Implements full CRUD UI for serverless worker deployments under `/workers/deployments/`:

serverless-ui-walkthrough.mov

Also see worker code at: https://github.com/rossnelson/temporal-serverless-worker/blob/main/SETUP.md

Deployments

  • Deployment list page with empty state and capability guard
  • Deployment detail page with compute badge, version table, and actions menu
  • Create deployment form: name + compute provider picker (AWS Lambda / GCP Cloud Run), Lambda ARN, IAM Role ARN, scaling and limits (min/max instances)
  • Delete deployment (available when no versions exist)
  • Three-call orchestration on create: validate compute config → create deployment → create initial version, with rollback on failure

Versions

  • Version table rows with lazy-loaded detail expansion, compute details, and actions menu
  • Create version form wired to `CreateWorkerDeploymentVersion` API
  • Edit/update version compute config
  • Version actions menu rendered via portal to avoid table overflow clipping
  • Filter version instances by deployment

Compute Provider

  • Compute provider picker UI with AWS Lambda and GCP Cloud Run options
  • AWS/GCP provider icons added to Holocene icon library
  • Compute badge component for list/detail views
  • Setup guide toggle for AWS Lambda setup instructions

Infrastructure

  • `deployments-service.ts` with typed API calls for all CRUD operations
  • `serverless-worker-service.ts` for legacy serverless worker calls
  • `CapabilityGuard` component for feature-flagging UI sections
  • Deployment sub-components extracted for reuse
  • Deployments service unit tests
  • Route helpers for deployment/version paths with test coverage
  • Bump `go.temporal.io/api` to `v1.62.8`

Test plan

  • Deployment list renders with empty state when no deployments exist
  • Create form validates ARN format on submit; errors appear inline
  • Successful create calls API with correct payload (region extracted from Lambda ARN)
  • Delete button appears only when deployment has zero versions
  • Version table expands row to show compute details
  • Create version form validates and submits correctly
  • Actions menu in version table renders above table overflow boundary
  • Capability guard hides sections when feature is disabled
  • All deployments service unit tests pass

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 19, 2026

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

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview, Comment Apr 17, 2026 8:18pm

Request Review

@rossnelson rossnelson changed the base branch from main to worker-insights March 19, 2026 20:19
@rossnelson rossnelson force-pushed the serverless-workers-crud branch from 9c01c45 to 751339c Compare April 1, 2026 16:30
@rossnelson rossnelson force-pushed the serverless-workers-crud branch from 751339c to 44488b5 Compare April 2, 2026 03:13
@rossnelson rossnelson force-pushed the serverless-workers-crud branch from 44488b5 to d7f777f Compare April 2, 2026 03:22
@rossnelson rossnelson force-pushed the serverless-workers-crud branch from 69ae808 to 750e13f Compare April 7, 2026 15:06
@rossnelson rossnelson marked this pull request as ready for review April 10, 2026 22:44
@rossnelson rossnelson requested a review from a team as a code owner April 10, 2026 22:44
@rossnelson rossnelson requested a review from laurakwhit April 10, 2026 23:18
@rossnelson rossnelson force-pushed the serverless-workers-crud branch from 740ee5c to 8b91694 Compare April 13, 2026 13:50
@rossnelson rossnelson changed the title feat: serverless worker create form wired to CreateWorkerDeployment API feat: serverless worker deployment CRUD Apr 13, 2026
Copy link
Copy Markdown
Contributor

@andrewzamojc andrewzamojc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need a little more time with it, but so far so good. 👍

Comment thread .claude/skills/local-temporal/SKILL.md
Comment thread src/lib/pages/serverless-worker-create.svelte Outdated
…d Vercel

- Add optional cfnTemplate prop to ServerlessWorkerSetupGuide with fallback to default
- Thread cfnTemplate through SetupGuideToggle, ServerlessWorkerCreateForm, ServerlessWorkerCreate
- Remove Terraform tab from setup guide
- Remove Vercel option from compute provider picker
@bilal-karim
Copy link
Copy Markdown
Member

Looking and working great!

Some UI-specific feedback based on the preview URL. Mostly nits. 🙈

Create Worker Deployment + Create Worker Deployment Version pages

[1] Page heading should be a simple h1 to align with other Create pages. Let's remove text-2xl font-semibold classes.

[2] p-5 card padding, text-base font-medium for card title with no bottom margin on the titles.

[3] We can probably remove the hint on the "Name" field. What do you think? I feel it's self-explanatory.

[4] Is Build ID required? I thought this was going to be optional. Let's capitalize the W in Worker.

[5] The tooltips are being cutoff. Do we feel both tooltips AND helper texts are necessary? Maybe we should only keep one of them?

Screenshot 2026-04-16 at 9 45 10 AM

[6] Can rename the confirmation button to simply "Create" instead of Create Worker Deployment.

[7] Use rounded-none on computer provider logo containers.

[8] Use size sm for Show Scaling and Limits button.

[9] For compute provider inputs container, the background should be surface-background and the border for selected compute provider should be border-subtle

[10] The vertical steppers should match the style in Audit Log Integration setup. They are also used in Export. We should probably componentize them now that this is the 3rd area to utilize them.

[11] Btw love what you did with the AWS Setup Guide on smaller screens. The row for X button appears to have a different background than the rest of the modal.

[12] Let's use bg-blue-50 for the AWS Setup Guide background for text-base font-medium for Setup and Templates headings.

[13] The links in the setup guide don't have a hover state. Should we simply use our Link component here?

Deployments table

[1] Let's add rounded-sm on the compute provider badges since our badges in the app still use a subtle border radius, and increase the font size & color to text-sm font-primary. Can you also play around with the padding to make sure both build status and compute provider badges have the same height?

[2] I realize this is probably happening because of the deployment name length, but is it possible to align the build status badges across rows so they start at the same position? It would be much easier to scan the list that way.

Deployments detail page

[1] Use h1 page title without text-2xl font-semibold

[2] Update gap between View Workflows and Create New Version buttons to gap-4

[3] Use destructive ghost button for Delete in the row action menu.

[4] Love Validate Connection modal.

[5] When the version row is expanded, we can add the ability to copy Lambda ARN and IAM Role?

- Remove tooltips from compute form fields, rely on hint text only
- Swap AWS console links in setup guide to Link component
- Card padding p-4→p-5, section headings font-semibold→font-medium
- Scaling toggle button size sm, remove static name hint text
- Add bg-blue-50 to setup guide sidebar card
- Delete MenuItem uses destructive prop
- Copyable wrapper on lambda/IAM ARN in version compute details
- radio-card selected state always border-subtle, slot bg surface-background
- timeline-step heading text-base font-medium
- Extract handleCreate + rollback helpers in serverless-worker-create
- Add error handling for setCurrentDeploymentVersion with full rollback
- Use surface-information (theme-aware indigo tint) instead of bg-blue-50
- Apply surface-information to drawer as well as sidebar card
- Remove IAM console link from setup guide
- Update setup guide copy to reference CloudFormation template specifically
Copy link
Copy Markdown
Collaborator

@laurakwhit laurakwhit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome stuff 🎉

Comment thread src/lib/components/deployments/deployments-empty-state.svelte Outdated
Comment thread src/lib/components/deployments/deployments-empty-state.svelte Outdated
Comment thread src/lib/components/deployments/version-table-row.svelte
Comment thread src/lib/pages/serverless-worker-create.svelte Outdated
Comment thread src/lib/components/deployments/delete-deployment-modal.svelte
- Empty state: use workers icon with text-blue-200, flex-wrap buttons
- version-row-details: $derived.by with retryCount for $derived suggestion
- version-table-row: validateLoading=false in onError callback
- deployment.svelte: reset deleteError before retry
- deployments.ts: narrow isVersionSummaryNew to include non-null deploymentVersion
- version-table-row: remove ! non-null assertions (now covered by type guard)
- scaling toggle: add chevron-up/down trailingIcon in both create forms
- create-version-form: add try/catch in onUpdate
All three forms (create deployment, create version, edit version) shared
identical compute field markup. Extracted into ComputeFields with
$bindable props. Also removes leftover Tooltip/Icon wrappers from
edit-version-form that were inconsistent with the other forms.
- Extract DeleteConfirmModal with shared state, template, and logic;
  DeleteDeploymentModal and DeleteVersionModal become thin wrappers
- Show Create Worker Deployment button on instances tab (mirrors deployments tab)
Copy link
Copy Markdown
Collaborator

@laurakwhit laurakwhit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One small comment below, but otherwise 🚀

});
</script>

<Modal
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like src/lib/components/deployments/delete-confirm-modal.svelte in addition to src/lib/components/deployments/delete-deployment-modal.svelte is redundant.

With this comment I was thinking a more reusable component (e.g. src/lib/components/delete-confirmation-modal.svelte) that we could use here, but in other places as well (similar to _delete-modal.svelte in Cloud).

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.

4 participants