Skip to content

fix(nexus-operations): make start standalone nexus operation timeouts optional#3656

Merged
rossedfort merged 5 commits into
mainfrom
fix-sano-timeout-validation
Jul 13, 2026
Merged

fix(nexus-operations): make start standalone nexus operation timeouts optional#3656
rossedfort merged 5 commits into
mainfrom
fix-sano-timeout-validation

Conversation

@rossedfort

Copy link
Copy Markdown
Contributor

Description & motivation 💭

The Start Standalone Nexus Operation form previously required that at least one of Start to Close or Schedule to Close timeout be set before the form could be submitted. This validation was too restrictive — all three timeout fields (Start to Close, Schedule to Close, Schedule to Start) should be optional, as the server can apply defaults.

Removed the Zod superRefine validation block that enforced the timeout requirement, the corresponding error display in the form, and the now-unused form-timeout-required i18n key.

Screenshots (if applicable) 📸

N/A

Design Considerations 🎨

None.

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

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

  1. Navigate to the Start Standalone Nexus Operation form
  2. Fill in the required fields (Endpoint, Service, Operation Name)
  3. Leave all timeout fields empty
  4. Submit the form — it should succeed without any timeout validation errors

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed

Docs

Any docs updates needed?

No docs updates needed.

@rossedfort rossedfort requested a review from a team as a code owner July 10, 2026 16:52
@vercel

vercel Bot commented Jul 10, 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, Comment Jul 13, 2026 6:11pm

Request Review

@temporal-cicd

temporal-cicd Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor
Warnings
⚠️

📊 Strict Mode: 10 errors in 2 files (1.1% of 895 total)

src/lib/components/standalone-nexus-operations/start-standalone-nexus-operation-form/operation-policies-modal.svelte (3)
  • L164:19: Type 'string | undefined' is not assignable to type 'string'.
  • L178:19: Type 'string | undefined' is not assignable to type 'string'.
  • L192:19: Type 'string | undefined' is not assignable to type 'string'.
src/lib/components/standalone-nexus-operations/start-standalone-nexus-operation-form/form.svelte (7)
  • L56:4: Type 'string | undefined' is not assignable to type 'string'.
  • L193:6: Type 'ClientValidationAdapter<{ encoding: "json/plain" | "json/protobuf"; namespace: string; endpoint: string; service: string; operation: string; identity: string; nexusHeader: { key: string; value: string; }[]; summary?: string | undefined; ... 8 more ...; idConflictPolicy?: string | undefined; }, { ...; }>' is not assignable to type 'ClientValidationAdapter<Partial<{ input: string; messageType: string; scheduleToStartTimeout: string; summary: string; details: string; idReusePolicy: string; idConflictPolicy: string; nexusHeader: never[]; encoding: "json/plain" | "json/protobuf"; ... 7 more ...; scheduleToCloseTimeout: string | undefined; }>, Reco...'.
  • L235:14: Type 'string | null | undefined' is not assignable to type 'string'.
  • L322:25: Type '{ key: string; value: string; }' is not assignable to type 'never'.
  • L322:47: Type '{ key: string; value: string; }' is not assignable to type 'never'.
  • L575:51: Property 'key' does not exist on type 'never'.
  • L584:51: Property 'value' does not exist on type 'never'.

Generated by 🚫 dangerJS against 57389fd

@rossedfort rossedfort requested a review from Alex-Tideman July 10, 2026 17:01
…egration tests

Timeouts are now optional on the Start Standalone Nexus Operation form,
so the tests expecting timeout validation errors are no longer valid.
Comment thread tests/integration/start-standalone-nexus-operation.desktop.spec.ts
})
.superRefine((data, context) => {
if (
!isPositiveDuration(data.startToCloseTimeout) &&

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.

If we're no longer using isPositiveDuration does that mean 0s is a valid duration for these inputs?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Based on the protobuf doc comments, yes, 0s is treated the same as unset (which defaults to no timeout).

…SANO form

Cleans up isPositiveDuration, hasTimeout, and timeoutError that were
only used by the now-removed superRefine timeout validation.
@rossedfort rossedfort merged commit 17fd591 into main Jul 13, 2026
20 checks passed
@rossedfort rossedfort deleted the fix-sano-timeout-validation branch July 13, 2026 21:40
rossedfort added a commit that referenced this pull request Jul 13, 2026
Auto-generated version bump from 2.52.0 to 2.52.1

Bump type: patch

Changes included:
- [`3be0df00`](3be0df0) fix(schedules): default absent second/minute/hour to 0 when editing (#3653)
- [`508b65b7`](508b65b) fix(schedules): default emptied second/minute/hour to 0 on submit (#3655)
- [`1f0e149c`](1f0e149) fix(workers): reject $LATEST qualifier in Lambda ARN validation (#3657)
- [`b42b0776`](b42b077) a11y(2.4.3): inert-based focus containment + restore; drop trap from native dialogs (#3598)
- [`cc491a29`](cc491a2) a11y(2.4.3): keep toast live region announcing during a focus trap [DT-4252] (#3654)
- [`ddc7f8e2`](ddc7f8e) a11y(2.4.11): add scroll-padding so sticky overlays don't obscure focused elements (#3532)
- [`b7e3a472`](b7e3a47) FilterBar icon update (#3660)
- [`09318ec6`](09318ec) Add danger PR comment for api version bump (#3662)
- [`273cc4be`](273cc4b) a11y(4.1.2): add label prop to Button primitive and enforce accessible names (#3556)
- [`4507115f`](4507115) Use an editable combobox for the Cloud Run region field (DT-4232) (#3636)
- [`694a7471`](694a747) a11y(1.4.13): migrate saved-query nav tooltips to Tooltip primitive (#3607)
- [`8b384a40`](8b384a4) a11y(4.1.2): fix nested interactive elements in Copyable component (#3558)
- [`1bfd2750`](1bfd275) fix describe SANO API requests to include runId parameter (#3661)
- [`ba18b43e`](ba18b43) a11y(4.1.2): require label on CodeBlock primitive; add aria-readonly for read-only mode (#3557)
- [`6e2290f1`](6e2290f) feat(deployments): make compute provider picker configurable (#3659)
- [`4470b76a`](4470b76) fix(workers): persist WDV compute-config edits via update mask; revert $LATEST validation (#3658)
- [`17fd591b`](17fd591) fix(nexus-operations): make start standalone nexus operation timeouts optional (#3656)

Co-authored-by: rossedfort <11775628+rossedfort@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