Skip to content

Add support for adding caller Namespace even if it's not in list of allowed Namespace options for Nexus endpoint#3167

Merged
laurakwhit merged 4 commits into
mainfrom
DT-3533-support-caller-NS-as-text
Apr 29, 2026
Merged

Add support for adding caller Namespace even if it's not in list of allowed Namespace options for Nexus endpoint#3167
laurakwhit merged 4 commits into
mainfrom
DT-3533-support-caller-NS-as-text

Conversation

@laurakwhit
Copy link
Copy Markdown
Collaborator

@laurakwhit laurakwhit commented Feb 18, 2026

Description & motivation 💭

  • Updates the /nexus/{endpoint} page so Description isn't pushed to bottom if Allowed Caller Namespaces are defined.
  • Adds allowCustomValue prop to Combobox that lets users type and add values not present in the predefined options list.
  • Enables allowCustomValue on the Allowed Caller Namespaces field in the Nexus endpoint form, so users can specify Namespaces that they don't have access to (and therefore aren't listed).
  • Validates a Namespace exists if it is added as a custom value in the Allowed Caller Namespaces field

Screenshots (if applicable) 📸

Nexus Endpoint Details Page
Screenshot 2026-02-18 at 3 05 06 PM Screenshot 2026-02-18 at 3 04 55 PM
Screenshot 2026-02-18 at 3 07 37 PM Screenshot 2026-02-18 at 3 07 47 PM
Screenshot 2026-02-18 at 3 08 13 PM Screenshot 2026-02-18 at 3 08 03 PM
Allowed Caller Namespaces Input
Screenshot 2026-02-18 at 3 15 05 PM Screenshot 2026-02-18 at 3 49 54 PM
Screenshot 2026-02-18 at 3 50 15 PM Screenshot 2026-02-18 at 3 50 31 PM
Validate Namespace Error
Screenshot 2026-04-23 at 2 08 55 PM Screenshot 2026-04-23 at 2 09 15 PM

Design Considerations 🎨

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

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

On Cloud > Navigate to a Nexus endpoint create/edit form

  • Type a custom Namespace in the Allowed Caller Namespaces field
    • Verify the "Add" option should appear
  • Press Enter or click the "Add" option
    • Verify it should be added and appear as selected in the dropdown
  • Deselect the custom value by clicking it in the list
    • Verify it remains available for re-selection
  • Verify selecting from the dropdown should still work as before
  • Type an exact match of an existing option
    • Verify no "Add" option should appear
  • Submit the form (with a custom Namespace that does not exist)
    • Verify it errors
  • Submit the form (with a custom Namespace that does exist, but that isn't part of the default list and you don't have access to)
    • Verify it is successful

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed

DT-3533

Docs

Any docs updates needed?

@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 18, 2026

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

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview, Comment Apr 23, 2026 7:37pm

Request Review

active = false,
selected,
destructive = false,
disabled = false,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ Type 'null' is not assignable to type 'string'.

@temporal-cicd
Copy link
Copy Markdown
Contributor

temporal-cicd Bot commented Feb 18, 2026

Warnings
⚠️

📊 Strict Mode: 16 errors in 5 files (1.6% of 1001 total)

src/lib/holocene/menu/menu-item.svelte (2)
  • L54:4: Type 'null' is not assignable to type 'string'.
  • L55:4: Type 'null' is not assignable to type 'string'.
src/lib/holocene/combobox/combobox.svelte (10)
  • L152:4: Type 'null' is not assignable to type 'string'.
  • L155:4: Type 'null' is not assignable to type '"action" | "activity" | "add-square" | "add" | "apple" | "archives" | "arrow-down" | "arrow-left" | "arrow-up" | "arrow-right" | "ascending" | "astronaut" | "aws" | "batch-operation" | ... 141 more ... | "xmark-square"'.
  • L157:4: Type 'null' is not assignable to type 'keyof T'.
  • L241:4: 'inputElement' is possibly 'null'.
  • L242:4: 'inputElement' is possibly 'null'.
  • L248:14: Argument of type 'string | T | undefined' is not assignable to parameter of type 'string | T'.
  • L253:14: Argument of type 'string | T | undefined' is not assignable to parameter of type 'string | T'.
  • L297:60: Function lacks ending return statement and return type does not include 'undefined'.
  • L390:10: Type 'HTMLLIElement | null' is not assignable to type 'HTMLLIElement'.
  • L390:43: 'menuElement' is possibly 'null'.
src/lib/pages/nexus-form.svelte (1)
  • L159:8: Type '{}' is not assignable to type 'string'.
src/lib/holocene/combobox/combobox.stories.svelte (1)
  • L275:6: Element implicitly has an 'any' type because expression of type '"action"' can't be used to index type '{}'.
src/lib/pages/nexus-endpoint.svelte (2)
  • L97:27: 'allowedCallerNamespaces' is possibly 'undefined'.
  • L108:8: Type 'string[] | undefined' is not assignable to type 'string[]'.

Generated by 🚫 dangerJS against 57725b1

{#snippet allowedCallerNamespacesTable()}
<Card class="flex flex-col gap-4">
<div class="flex items-center gap-2">
<h5>{translate('nexus.allowed-caller-namespaces')}</h5>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ 'allowedCallerNamespaces' is possibly 'undefined'.

previousPageButtonLabel={translate('common.previous-page')}
nextPageButtonLabel={translate('common.next-page')}
pageButtonLabel={(page) => translate('common.go-to-page', { page })}
variant="primary"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ Type 'string[] | undefined' is not assignable to type 'string[]'.

@laurakwhit laurakwhit force-pushed the DT-3533-support-caller-NS-as-text branch from a4bb429 to 57725b1 Compare April 23, 2026 19:36
@laurakwhit laurakwhit marked this pull request as ready for review April 23, 2026 20:41
@laurakwhit laurakwhit requested a review from a team as a code owner April 23, 2026 20:42
@laurakwhit laurakwhit merged commit 08bd2f0 into main Apr 29, 2026
19 checks passed
@laurakwhit laurakwhit deleted the DT-3533-support-caller-NS-as-text branch April 29, 2026 17:11
laurakwhit added a commit that referenced this pull request May 21, 2026
Auto-generated version bump from 2.49.1 to 2.50.0

Bump type: minor

Changes included:
- [`29832bec`](29832be) Use initiatedEvent for startChildFailed event grouping (#3342)
- [`91a01560`](91a0156) rm slash (#3343)
- [`2e7b88d0`](2e7b88d) feat: Set Current Version action for worker deployment versions (#3319)
- [`b2685f3b`](b2685f3) Add relative path prefix support to routeFor utilities (#3292)
- [`9c888c0c`](9c888c0) fix: validate connection modal status, retry button, and copy nits (#3347)
- [`38989c48`](38989c4) revert: restore original create worker deployment copy (#3348)
- [`90e1fe58`](90e1fe5) Common Errors for Event History (#3306)
- [`f479e4e2`](f479e4e) Show current duration for pending timeline events (#3346)
- [`65a7ff0d`](65a7ff0) Add refresh button to workers list view (#3349)
- [`219cfee4`](219cfee) Fix null conditionals in search attribute filter (#3351)
- [`08bd2f01`](08bd2f0) Add support for adding caller Namespace even if it's not in list of allowed Namespace options for Nexus endpoint (#3167)
- [`d424a78a`](d424a78) refactor(DT-3906): Add knip (#3350)
- [`e828b14f`](e828b14) Remove icon (#3357)
- [`252a755c`](252a755) Add Java to list of support versions for worker heartbeats (#3362)
- [`0f446c7a`](0f446c7) refactor(DT-3906): Simple Svelte 5 migrations (#3359)
- [`63db5b72`](63db5b7) feat(DT-3657): Support shift click for bulk selection in workflow table (#3344)
- [`389d57bf`](389d57b) Enable Svelte 5 runes on files not using legacy features (#3363)
- [`f4b87e1d`](f4b87e1) Update components/workflow to Svelte 5 syntax (#3361)
- [`3e2cce43`](3e2cce4) refactor(DT-3906): More Svelte 5 Migrations (trivial ones) (#3364)
- [`15adcd73`](15adcd7) refactor(DT-3906): UI svelte 5 migrate components/events (#3365)
- [`031fb867`](031fb86) refactor(DT-3906): Migrate stories to Svelte 5 syntax (#3366)
- [`4eac9d2a`](4eac9d2) Scope group hover to tooltip component only (#3379)
- [`eeace5c3`](eeace5c) chore: upgrade TypeScript to v6.0.3 (#3371)
- [`cb80efdd`](cb80efd) refactor(DT-3906): More trivial migrations (#3367)
- [`6cc395bf`](6cc395b) refactor(DT-3906): migrate holocene primitives + layout components to Svelte 5 runes (#3377)
- [`40a029ea`](40a029e) refactor(DT-3906): UI Svelte 5 Migrations medium (#3368)
- [`7dc29ba6`](7dc29ba) refactor(DT-3906): Delete unused Svelte 4 scaffolding (carved from #3370 - Part 1) (#3372)
- [`34a8547e`](34a8547) refactor(DT-3906): Migrate workflow client-action modals to runes (carved from #3370 - Part 4) (#3375)
- [`61090d7e`](61090d7) refactor(DT-3906): Migrate schedule view components to runes (carved from #3370 - Part 2) (#3373)
- [`988e0479`](988e047) refactor(DT-3906): Migrate filter and input components to runes (carved from #3370 - Part 3) (#3374)
- [`d8b78496`](d8b7849) refactor(DT-3906): Migrate workflows-summary table + relationships to runes (carved from #3370 - Part 5) (#3376)
- [`ff86c004`](ff86c00) fix(DT-3968): Make Workflow Table Tooltips render in portal (#3383)
- [`5e02642a`](5e02642) fix(DT-3967): Visibly toggle the view children button even with a parent has 0 (#3382)
- [`1f2b1031`](1f2b103) Remove capability guard from Set Current Version menu item (#3386)
- [`0d54dcb4`](0d54dcb) fix: portal maximizable to body to escape stacking context (#3385)
- [`abf45438`](abf4543) chore(security): patch Dependabot alerts for axios, protobufjs, fast-uri, uuid, postcss, gomarkdown (#3388)
- [`4500f5ea`](4500f5e) Upgrade GitHub actions (#3389)
- [`4a8c0c5b`](4a8c0c5) fix(timeline): stabilize child workflow timeline width with scrollbar-gutter (#3329)
- [`ead14c61`](ead14c6) Move Create Schedule button to header row (#3390)
- [`e8638a2b`](e8638a2) Add top margin (#3392)
- [`ef03dfce`](ef03dfc) refactor: replace PayloadDecoder and MetadataDecoder with unified Payload component (#3299)
- [`89b9eafa`](89b9eaf) add loading state to payload code block (#3397)
- [`ee3ae138`](ee3ae13) Update Schedules search attributes filter (#3396)
- [`41fd4f1f`](41fd4f1) DT-3751 - download external payloads (#3345)
- [`e4fee0b6`](e4fee0b) Fix codec server request URL (#3400)
- [`966b3d0a`](966b3d0) Make input from schedule result actually a string and update tests (#3403)
- [`48a014db`](48a014d) feat(history): show Nexus operation name in compact view  (#3394)
- [`9127c768`](9127c76) Refactor status counts and refresh button (#3402)
- [`747ec109`](747ec10) Fix double loader button (#3407)
- [`6ae961fc`](6ae961f) Payload rendering and error optimizations (#3401)
- [`32c74a48`](32c74a4) add codec server error banner back to workflow layout (#3408)
- [`f73c7ec9`](f73c7ec) Nxs operation/kt (#3406)
- [`672bb04a`](672bb04) Bump Go 1.26.2→1.26.3, x/net v0.54.0, remove curl from runtime image (#3409)
- [`1ee09fe3`](1ee09fe) chore(deps-dev): bump svelte from 5.55.1 to 5.55.7 (#3395)
- [`565bb071`](565bb07) VLN-1352: remediate missing-dependency-cooldown (#3398)
- [`25794ed8`](25794ed) Bump devalue to 5.8.1 (#3410)
- [`b18d0060`](b18d006) Set color-scheme explicitly (#3358)
- [`e7995b81`](e7995b8) chore: ensure the empty app.html respects the user's ligh/dark settings (#3353)
- [`01d64038`](01d6403) fix: enable external payload download button with namespace level codec endpoint (#3420)
- [`4cc44311`](4cc4431) Fix publicPath URL duplication when prefix appears as substring (#3393)

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