Skip to content

Codefreeze 05.01.26 to main#3384

Merged
ardiewen merged 19 commits into
mainfrom
codefreeze-05.01.26
May 11, 2026
Merged

Codefreeze 05.01.26 to main#3384
ardiewen merged 19 commits into
mainfrom
codefreeze-05.01.26

Conversation

@ardiewen
Copy link
Copy Markdown

@ardiewen ardiewen commented May 11, 2026

Description & motivation 💭

Merges the codefreeze-05.01.26 release branch back into main. Includes the following PRs (in branch order, newest at the top):

Screenshots (if applicable) 📸

N/A — no new UI; see the individual PRs for any per-feature screenshots.

Design Considerations 🎨

N/A — no design changes; this is a release-branch roll-up.

Testing 🧪

How was this tested 👻

  • Manual testing (per-PR before merge into the codefreeze branch)
  • E2E tests added (where applicable, in the individual PRs)
  • Unit tests added (where applicable, in the individual PRs)

Each included PR was reviewed and tested individually before being merged into codefreeze-05.01.26. CI on the codefreeze branch has been green.

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

Smoke-test the app end-to-end after merging, with extra attention to:

  • Workflow list / table interactions (shift-click bulk selection, tooltip rendering)
  • Schedules view
  • Workflow client-action modals (terminate, cancel, reset, signal, etc.)
  • Filters and inputs across the app

These areas saw the most Svelte 5 rune migration churn.

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed

See the individual PRs linked above for any issue references.

Docs

Any docs updates needed?

No — covered by the individual PRs where applicable.

tegan-temporal and others added 18 commits May 1, 2026 10:06
* Update translate to svelte 5 syntax

* Update PageTitle to Svelte 5 syntax

* Update Panel to Svelte 5 syntax

* Update PayloadInput

* Update WorkflowStatus to svelte 5 syntax

* Update BatchOperations Table to Svelte 5 syntax

* Update Icon and Svg components to Svelte 5 syntax

* Update Error to Svelte 5 syntax

* Update Keyboard Short components to Svelte 5 syntax

* Update Label component Svelte 5 syntax

* Update TabPanel to Svelte 5 syntax

* Update Combobox async-test to Svelte 5 syntax

* Update Logo to Svelte 5 syntax

* Update Batch Operations Page to Svelte 5 syntax

* Update (app) +page to Svelte 5 syntax

* Update NameSpace page to Svelte 5 syntax

* update UserMenuMobile to Svelte 5 syntax

* Update Lines and Dots components to Svelte 5 syntax

* Use worse type to not introduce more errors

* Migrate forgotten lines and dots component to Svelte 5 syntax

* Change derived state to reactive state in async combobox test
…le (#3344)

* Fix eslint warning

* Migrate to Svelte 5 syntax

* Add multiselect via shift key

* Clear prev index after page selected or all selected trigger

* Make onClickBatchSelect optional, disable checkbox if child

* Do not set child disabled

* Support shift+click select within child workflows

* Update shift+click logic. Instead of multiple scopes, treat all visible items as one scope.

* Remove console log

* Fixup type

* Add tests

* Account for prevClickedRow being nullish

* Fix type

* Fix some warnings

* Fix type

* Fix type for onClickBatchSelect

* Fix type check

* Use early return

* More warning fixes

* Undo prop type change

* Fix warning

* Default query to empty string

* Move comment to inside handler :\

* Move isChecked higher

* Fix race condition

* Fix the fix :P

* Use runId as key

* use runId for check

* Show root rows as checked if allSelected

* Use map instead of set so we rely on runId for equality

* Fix header checkmark status

* Address PR comments

* Apply suggestions from code review

Co-authored-by: Laura Whitaker <laura.k.whitaker@gmail.com>

---------

Co-authored-by: Laura Whitaker <laura.k.whitaker@gmail.com>
* Enable Svelte 5 runes on files not using legacy features

* Migrate components to Svelte 5 runes syntax

* Trivial migrations

* More simple migrations

* feat(DT-3657): Support shift click for bulk selection in workflow table (#3344)

* Fix eslint warning

* Migrate to Svelte 5 syntax

* Add multiselect via shift key

* Clear prev index after page selected or all selected trigger

* Make onClickBatchSelect optional, disable checkbox if child

* Do not set child disabled

* Support shift+click select within child workflows

* Update shift+click logic. Instead of multiple scopes, treat all visible items as one scope.

* Remove console log

* Fixup type

* Add tests

* Account for prevClickedRow being nullish

* Fix type

* Fix some warnings

* Fix type

* Fix type for onClickBatchSelect

* Fix type check

* Use early return

* More warning fixes

* Undo prop type change

* Fix warning

* Default query to empty string

* Move comment to inside handler :\

* Move isChecked higher

* Fix race condition

* Fix the fix :P

* Use runId as key

* use runId for check

* Show root rows as checked if allSelected

* Use map instead of set so we rely on runId for equality

* Fix header checkmark status

* Address PR comments

* Apply suggestions from code review

Co-authored-by: Laura Whitaker <laura.k.whitaker@gmail.com>

---------

Co-authored-by: Laura Whitaker <laura.k.whitaker@gmail.com>

* Delete unused file

---------

Co-authored-by: Laura Whitaker <laura.k.whitaker@gmail.com>
* Export MultiSelectionOptions type

* Migrate components/event components

* Fix type error
* chore: upgrade TypeScript to v6.0.3

- Bump typescript from ^5.2.2 to 6.0.3
- Add explicit `strict: false` to tsconfig to preserve existing behavior
  (TS 6 now defaults strict to true)
- Fix two event handler type errors caused by TS 6 DOM lib typing
  on:input as InputEvent instead of Event

* chore: add @typescript/native-preview for tsgo support

Enables `svelte-check --tsgo` and `svelte-check --tsgo --incremental`
for faster type checking using the Go-based TypeScript compiler.

* chore: enable --tsgo --incremental for svelte-check

Faster type checking via Go-based TS compiler with disk-cached
svelte2tsx transpilation. Will report errors in 4 unmigrated Svelte 4
components until they are converted to Svelte 5 runes.

* ts-upgrade: Migrate chip-input to fix tsgo error (#3380)

* Fix tsgo union too complex error (#3381)

* fix: replace redundant comma operator reactive statements

$: (dep, fn()) is unnecessary when fn() already reads dep internally.
Replaced with $: fn() which Svelte tracks as a dependency automatically.

* fix: preserve reactive dependencies using block instead of comma operator

Replaces $: (dep, fn()) with $: { dep; fn(); } to keep the explicit
dependency declaration while avoiding the tsgo comma operator error.

---------

Co-authored-by: Tegan Churchill <tegan.churchill@temporal.io>
…rved from #3370 - Part 4) (#3375)

Co-authored-by: Tegan Churchill <tegan.churchill@temporal.io>
…from #3370 - Part 2) (#3373)

Co-authored-by: Laura Whitaker <laura.k.whitaker@gmail.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 11, 2026

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

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview, Comment May 11, 2026 5:53pm

Request Review

? options.filter((o) => $eventClassificationFilter.includes(o.value))
: [],
);

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.

  • ⚠️ Parameter '_options' implicitly has an 'any' type.

<div class="cursor-pointer overflow-auto {$$restProps.class}">
<div class="cursor-pointer overflow-auto {className}">
<TimelineGraph
{viewportHeight}
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 'WorkflowExecution | undefined' is not assignable to type 'WorkflowExecution'.

<div class="cursor-pointer overflow-auto {className}">
<TimelineGraph
{viewportHeight}
{workflow}
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.

  • ⚠️ Argument of type 'WorkflowExecution | undefined' is not assignable to parameter of type 'WorkflowExecution'.

}
});

function handleNullFilter() {
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'.

taskFailure = false,
'test-id': testId,
}: Props = $props();

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 | null' does not satisfy the constraint 'string | number | symbol'.

const workflowEvents = $derived(
getWorkflowStartedCompletedAndTaskFailedEvents($fullEventHistory),
);
const isPending = $derived(
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.

  • ⚠️ '$workflowRun.workflow' is possibly 'null'.
  • ⚠️ '$workflowRun.workflow' is possibly 'null'.


$: canceled = ['Terminated', 'TimedOut', 'Canceled'].includes(
workflow?.status,
const canceled = $derived(
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.

  • ⚠️ Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.

['Terminated', 'TimedOut', 'Canceled'].includes(workflow?.status),
);
</script>

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.

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

const handlePaste = (e: ClipboardEvent) => {
e.preventDefault();
if (maxLength && $values.length >= maxLength) return;
if (maxLength && chips.length >= maxLength) return;
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.

  • ⚠️ 'e.clipboardData' is possibly 'null'.

replace = undefined,
children,
}: Props = $props();

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.

  • ⚠️ Argument of type '{ count: number | undefined; }' is not assignable to parameter of type 'I18nReplace'.

@temporal-cicd
Copy link
Copy Markdown
Contributor

temporal-cicd Bot commented May 11, 2026

Warnings
⚠️

📊 Strict Mode: 124 errors in 42 files (13.2% of 938 total)

src/lib/holocene/tooltip.svelte (1)
  • L56:13: Type 'null' is not assignable to type '"search" | "link" | "success" | "error" | "action" | "activity" | "add-square" | "add" | "apple" | "archives" | "arrow-down" | "arrow-left" | "arrow-up" | "arrow-right" | "ascending" | ... 139 more ... | "xmark-square"'.
src/lib/holocene/checkbox.svelte (3)
  • L33:13: Type 'undefined' is not assignable to type 'T'.
  • L34:13: Type 'undefined' is not assignable to type 'T[]'.
  • L13:12: Argument of type '$$Props' is not assignable to parameter of type '{ id?: string | undefined; checked?: boolean | undefined; label?: string | undefined; labelHidden?: boolean | undefined; indeterminate?: boolean | undefined; disabled?: boolean | undefined; ... 5 more ...; class?: string | undefined; }'.
src/lib/components/workflow/client-actions/reset-confirmation-modal.svelte (1)
  • L72:6: Type 'string | undefined' is not assignable to type 'string'.
src/lib/components/workflow-status.svelte (4)
  • L47:22: Type 'string | null' does not satisfy the constraint 'string | number | symbol'.
  • L133:16: 'count' is possibly 'undefined'.
  • L134:9: 'count' is possibly 'undefined'.
  • L137:13: Type 'null' cannot be used as an index type.
src/lib/components/batch-operations/details.svelte (1)
  • L39:41: No overload matches this call.
src/lib/components/batch-operations/header.svelte (1)
  • L60:19: Argument of type '(event: Event & { target: EventTarget & HTMLInputElement; }) => void' is not assignable to parameter of type '(e: Event) => void'.
src/lib/components/event/event-card.svelte (11)
  • L141:37: Type 'string | null | undefined' is not assignable to type 'string'.
  • L141:48: 'link.workflowEvent' is possibly 'null' or 'undefined'.
  • L149:6: Type 'string | null | undefined' is not assignable to type 'string'.
  • L149:15: 'link.workflowEvent' is possibly 'null' or 'undefined'.
  • L152:10: 'link.workflowEvent' is possibly 'null' or 'undefined'.
  • L178:19: Parameter 'key' implicitly has an 'any' type.
  • L178:24: Parameter 'value' implicitly has an 'any' type.
  • L239:15: Parameter 'key' implicitly has an 'any' type.
  • L239:20: Parameter 'value' implicitly has an 'any' type.
  • L259:18: Parameter 'key' implicitly has an 'any' type.
  • L259:23: Parameter 'value' implicitly has an 'any' type.
src/lib/components/event/event-summary-row.svelte (5)
  • L134:6: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  • L171:23: Parameter 'event' implicitly has an 'any' type.
  • L183:30: Parameter 'group' implicitly has an 'any' type.
  • L183:37: Parameter 'hoveredEventId' implicitly has an 'any' type.
  • L311:16: Type 'ITimestamp | null | undefined' is not assignable to type 'ITimestamp'.
src/lib/components/lines-and-dots/svg/history-graph.svelte (1)
  • L73:11: Type 'EventGroup | undefined' is not assignable to type 'EventGroup'.
src/lib/components/import/event-history-file-import.svelte (1)
  • L44:8: Argument of type 'HistoryEvent[] | undefined' is not assignable to parameter of type 'HistoryEvent[]'.
src/lib/components/lines-and-dots/event-classification-filter.svelte (2)
  • L23:25: Parameter '_options' implicitly has an 'any' type.
  • L28:32: Parameter 'o' implicitly has an 'any' type.
src/lib/components/lines-and-dots/workflow-pending-task.svelte (5)
  • L18:14: 'pendingTask' is possibly 'undefined'.
  • L22:14: 'pendingTask' is possibly 'undefined'.
  • L26:25: 'pendingTask' is possibly 'undefined'.
  • L30:25: 'pendingTask' is possibly 'undefined'.
  • L34:25: 'pendingTask' is possibly 'undefined'.
src/lib/components/lines-and-dots/svg/timeline-graph-row.svelte (5)
  • L95:20: 'distance' is possibly 'null'.
  • L95:31: 'workflowDistance' is possibly 'null'.
  • L106:20: 'distance' is possibly 'null'.
  • L106:31: 'workflowDistance' is possibly 'null'.
  • L241:12: 'pendingActivity.attempt' is possibly 'null' or 'undefined'.
src/lib/components/lines-and-dots/svg/workflow-row.svelte (2)
  • L33:26: Type 'WorkflowStatus' is not assignable to type 'string | undefined'.
  • L43:24: Type 'WorkflowStatus' is not assignable to type 'string | undefined'.
src/lib/components/lines-and-dots/svg/graph-widget.svelte (2)
  • L49:7: Type 'WorkflowExecution | undefined' is not assignable to type 'WorkflowExecution'.
  • L50:27: Argument of type 'WorkflowExecution | undefined' is not assignable to parameter of type 'WorkflowExecution'.
src/lib/components/schedule/schedule-recent-runs.svelte (11)
  • L42:6: Type 'string | undefined' is not assignable to type 'string'.
  • L52:81: 'run.startWorkflowResult' is possibly 'null' or 'undefined'.
  • L52:81: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
  • L52:118: Type 'string | null | undefined' is not assignable to type 'string | undefined'.
  • L52:125: 'run.startWorkflowResult' is possibly 'null' or 'undefined'.
  • L60:14: Type 'string | null | undefined' is not assignable to type 'string'.
  • L60:24: 'run.startWorkflowResult' is possibly 'null' or 'undefined'.
  • L61:14: Type 'string | null | undefined' is not assignable to type 'string'.
  • L61:19: 'run.startWorkflowResult' is possibly 'null' or 'undefined'.
  • L65:13: 'run.startWorkflowResult' is possibly 'null' or 'undefined'.
  • L76:11: 'run.startWorkflowResult' is possibly 'null' or 'undefined'.
src/lib/holocene/input/chip-input.svelte (1)
  • L69:30: 'e.clipboardData' is possibly 'null'.
src/lib/components/search-attribute-filter/conditional-menu.svelte (1)
  • L68:4: Type 'null' is not assignable to type 'string'.
src/lib/components/search-attribute-filter/filter-list.svelte (1)
  • L48:6: Type 'null' is not assignable to type 'number'.
src/lib/components/search-attribute-filter/number-filter.svelte (1)
  • L32:9: Type 'number | null' is not assignable to type 'number'.
src/lib/i18n/translate.svelte (1)
  • L20:43: Argument of type '{ count: number | undefined; }' is not assignable to parameter of type 'I18nReplace'.
src/lib/components/search-attribute-filter/status-filter.svelte (3)
  • L109:24: Argument of type 'string | null' is not assignable to parameter of type 'string'.
  • L116:12: Type '"All" | WorkflowStatus' is not assignable to type 'string | undefined'.
  • L114:42: Argument of type 'string | null' is not assignable to parameter of type 'string'.
src/lib/components/search-attribute-filter/boolean-filter.svelte (1)
  • L44:12: Type 'null' is not assignable to type 'string'.
src/lib/components/workflow/child-workflows-table.svelte (6)
  • L36:15: 'c.attributes.workflowExecution' is possibly 'null' or 'undefined'.
  • L37:20: 'c.attributes.workflowExecution' is possibly 'null' or 'undefined'.
  • L79:14: Type 'string | null | undefined' is not assignable to type 'string'.
  • L80:14: Type 'string | null | undefined' is not assignable to type 'string'.
  • L90:14: Type 'string | null | undefined' is not assignable to type 'string'.
  • L91:14: Type 'string | null | undefined' is not assignable to type 'string'.
src/lib/components/workflow/input-and-results.svelte (2)
  • L12:4: '$workflowRun.workflow' is possibly 'null'.
  • L12:39: '$workflowRun.workflow' is possibly 'null'.
src/lib/components/workflow/parent-workflow-table.svelte (6)
  • L32:10: Type 'string | null | undefined' is not assignable to type 'string'.
  • L33:10: Type 'string | null | undefined' is not assignable to type 'string'.
  • L39:10: Type 'string | null | undefined' is not assignable to type 'string'.
  • L48:10: Type 'string | null | undefined' is not assignable to type 'string'.
  • L49:10: Type 'string | null | undefined' is not assignable to type 'string'.
  • L55:10: Type 'string | null | undefined' is not assignable to type 'string'.
src/lib/components/workflow/pending-activities.svelte (7)
  • L33:52: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
  • L37:5: 'pendingActivities' is possibly 'undefined'.
  • L44:29: 'pendingActivities' is possibly 'undefined'.
  • L56:27: 'pendingActivity.attempt' is possibly 'null' or 'undefined'.
  • L95:24: Argument of type 'number | null | undefined' is not assignable to parameter of type 'number | null'.
  • L121:22: Argument of type 'number | null | undefined' is not assignable to parameter of type 'number'.
  • L123:24: Argument of type 'Duration | null' is not assignable to parameter of type 'string | Duration'.
src/lib/components/workflow/workflow-relationships-old.svelte (4)
  • L45:9: Type 'string | undefined' is not assignable to type 'string'.
  • L46:9: Type 'string | undefined' is not assignable to type 'string'.
  • L47:9: Type 'string | undefined' is not assignable to type 'string'.
  • L59:25: '$workflowRun.workflow' is possibly 'null'.
src/lib/components/workflow/relationships/workflow-family-tree.svelte (2)
  • L52:8: Type 'string | null | undefined' is not assignable to type 'string'.
  • L53:8: Type 'string | null | undefined' is not assignable to type 'string | undefined'.
src/lib/components/workflow/workflows-summary-configurable-table/table-body-cell.svelte (1)
  • L190:8: Type 'string | undefined' is not assignable to type 'string'.
src/lib/components/workflow/dropdown-filter/workflow-status.svelte (3)
  • L101:45: Argument of type 'string | null' is not assignable to parameter of type 'string'.
  • L104:12: Type '"All" | WorkflowStatus' is not assignable to type 'string | undefined'.
  • L107:42: Argument of type 'string | null' is not assignable to parameter of type 'string'.
src/lib/holocene/badge.stories.svelte (1)
  • L36:40: 'type' is possibly 'null' or 'undefined'.
src/lib/holocene/date-picker.stories.svelte (1)
  • L52:25: Binding element 'canvasElement' implicitly has an 'any' type.
src/lib/holocene/toaster.svelte (2)
  • L44:40: Type 'ToastVariant | undefined' is not assignable to type 'ToastVariant'.
  • L44:50: Type 'string | undefined' is not assignable to type 'string'.
src/lib/holocene/user-menu-mobile.svelte (1)
  • L16:4: Type 'string | undefined' is not assignable to type 'string'.
src/lib/holocene/combobox/combobox.stories.svelte (1)
  • L277:6: Element implicitly has an 'any' type because expression of type '"action"' can't be used to index type '{}'.
src/lib/holocene/markdown-editor/markdown-editor.stories.svelte (2)
  • L23:39: Binding element 'canvasElement' implicitly has an 'any' type.
  • L23:54: Binding element 'step' implicitly has an 'any' type.
src/lib/holocene/tab-buttons/tab-button.stories.svelte (2)
  • L37:39: Binding element 'canvasElement' implicitly has an 'any' type.
  • L37:54: Binding element 'step' implicitly has an 'any' type.
src/lib/holocene/toggle-button/toggle-button.stories.svelte (2)
  • L34:39: Binding element 'canvasElement' implicitly has an 'any' type.
  • L34:54: Binding element 'step' implicitly has an 'any' type.
src/lib/pages/schedules-create.svelte (11)
  • L46:6: Type 'string | undefined' is not assignable to type 'string'.
  • L47:6: Type 'string | undefined' is not assignable to type 'string'.
  • L48:6: Type 'string | undefined' is not assignable to type 'string'.
  • L49:6: Type 'string | undefined' is not assignable to type 'string'.
  • L50:6: Type 'string | undefined' is not assignable to type 'string'.
  • L51:6: Type '"json/plain" | "json/protobuf" | undefined' is not assignable to type '"json/plain" | "json/protobuf"'.
  • L53:6: Type '{ type: "Unspecified" | "Keyword" | "Text" | "Int" | "Double" | "Bool" | "KeywordList" | "Datetime"; label: string; value?: any; }[] | undefined' is not assignable to type '{ type: "Unspecified" | "Keyword" | "Text" | "Int" | "Double" | "Bool" | "KeywordList" | "Datetime"; label: string; value?: any; }[]'.
  • L65:6: Type 'string[] | undefined' is not assignable to type 'string[]'.
  • L66:6: Type 'number[] | undefined' is not assignable to type 'number[]'.
  • L67:6: Type 'string[] | undefined' is not assignable to type 'string[]'.
  • L68:6: Type 'string | undefined' is not assignable to type 'string'.
src/lib/pages/standalone-activity-metadata.svelte (1)
  • L36:23: Argument of type 'IUserMetadata | undefined' is not assignable to parameter of type 'IUserMetadata'.
src/routes/(app)/namespaces/+page.svelte (4)
  • L37:40: 'namespace.namespaceInfo' is possibly 'null' or 'undefined'.
  • L42:16: Type 'string | null | undefined' is not assignable to type 'string'.
  • L42:27: 'namespace.namespaceInfo' is possibly 'null' or 'undefined'.
  • L43:19: 'namespace.namespaceInfo' is possibly 'null' or 'undefined'.

Generated by 🚫 dangerJS against 2154483

@ardiewen ardiewen marked this pull request as ready for review May 11, 2026 15:24
@ardiewen ardiewen requested a review from a team as a code owner May 11, 2026 15:24
@ardiewen ardiewen merged commit 5e02642 into main May 11, 2026
16 checks passed
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