Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
3d0ec56
refactor(DT-3906): Simple Svelte 5 migrations (#3359)
tegan-temporal May 1, 2026
b458e11
feat(DT-3657): Support shift click for bulk selection in workflow tab…
tegan-temporal May 2, 2026
64d3a1d
Enable Svelte 5 runes on files not using legacy features (#3363)
tegan-temporal May 4, 2026
1ad1d49
Update components/workflow to Svelte 5 syntax (#3361)
tegan-temporal May 4, 2026
23d7cfb
refactor(DT-3906): More Svelte 5 Migrations (trivial ones) (#3364)
tegan-temporal May 4, 2026
843af0c
refactor(DT-3906): UI svelte 5 migrate components/events (#3365)
tegan-temporal May 4, 2026
a7277bc
refactor(DT-3906): Migrate stories to Svelte 5 syntax (#3366)
tegan-temporal May 6, 2026
41242ca
Scope group hover to tooltip component only (#3379)
laurakwhit May 6, 2026
d6892c0
chore: upgrade TypeScript to v6.0.3 (#3371)
rossnelson May 7, 2026
eb94805
refactor(DT-3906): More trivial migrations (#3367)
tegan-temporal May 7, 2026
fb45c06
refactor(DT-3906): migrate holocene primitives + layout components to…
tegan-temporal May 7, 2026
184c14d
refactor(DT-3906): UI Svelte 5 Migrations medium (#3368)
tegan-temporal May 7, 2026
c0b0f27
refactor(DT-3906): Delete unused Svelte 4 scaffolding (carved from #3…
tegan-temporal May 7, 2026
77a0238
refactor(DT-3906): Migrate workflow client-action modals to runes (ca…
tegan-temporal May 7, 2026
322c598
refactor(DT-3906): Migrate schedule view components to runes (carved …
tegan-temporal May 7, 2026
07443d1
refactor(DT-3906): Migrate filter and input components to runes (carv…
tegan-temporal May 7, 2026
be0c213
refactor(DT-3906): Migrate workflows-summary table + relationships to…
tegan-temporal May 7, 2026
e23f2a0
fix(DT-3968): Make Workflow Table Tooltips render in portal (#3383)
tegan-temporal May 7, 2026
2154483
fix(DT-3967): Visibly toggle the view children button even with a par…
tegan-temporal May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@
"lint": "pnpm prettier; pnpm eslint; pnpm stylelint",
"lint:ci": "pnpm prettier && pnpm eslint && pnpm stylelint",
"format": "pnpm prettier:fix; pnpm eslint:fix; pnpm stylelint:fix",
"check": "VITE_TEMPORAL_UI_BUILD_TARGET=local svelte-check --tsconfig ./tsconfig.json",
"check:watch": "VITE_TEMPORAL_UI_BUILD_TARGET=local svelte-check --tsconfig ./tsconfig.json --watch",
"check": "VITE_TEMPORAL_UI_BUILD_TARGET=local svelte-check --tsconfig ./tsconfig.json --tsgo --incremental",
"check:watch": "VITE_TEMPORAL_UI_BUILD_TARGET=local svelte-check --tsconfig ./tsconfig.json --tsgo --incremental --watch",
"prettier": "prettier --check --plugin prettier-plugin-svelte --plugin prettier-plugin-tailwindcss .",
"prettier:fix": "prettier --write --plugin prettier-plugin-svelte --plugin prettier-plugin-tailwindcss .",
"preview:local": "VITE_TEMPORAL_UI_BUILD_TARGET=local vite preview",
Expand Down Expand Up @@ -152,6 +152,7 @@
"@types/node": "^18.15.3",
"@types/tar-fs": "^2.0.4",
"@types/yargs": "^17.0.24",
"@typescript/native-preview": "7.0.0-dev.20260506.1",
"@vitest/coverage-v8": "^4.1.5",
"@vitest/ui": "^3.1.1",
"autoprefixer": "^10.4.13",
Expand Down Expand Up @@ -203,7 +204,7 @@
"svelte2tsx": "^0.7.35",
"tailwindcss": "^3.4.1",
"tar-fs": "^3.1.2",
"typescript": "^5.2.2",
"typescript": "6.0.3",
"typescript-eslint": "^8.54.0",
"unist-util-visit": "^5.0.0",
"vite": "^6.4.2",
Expand Down
309 changes: 202 additions & 107 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

9 changes: 0 additions & 9 deletions src/lib/components/advanced-visibility-guard.svelte

This file was deleted.

4 changes: 2 additions & 2 deletions src/lib/components/auto-refresh-workflow.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import { translate } from '$lib/i18n/translate';
import { autoRefreshWorkflow } from '$lib/stores/event-view';

export let onChange: () => void;
let { onChange }: { onChange: () => void } = $props();

$: checked = $autoRefreshWorkflow === 'on';
const checked = $derived($autoRefreshWorkflow === 'on');
</script>

<Tooltip
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/batch-operations/details.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { translate } from '$lib/i18n/translate';
import type { BatchOperation } from '$lib/types/batch';

export let operation: BatchOperation;
let { operation }: { operation: BatchOperation } = $props();
</script>

<div class="flex flex-col gap-2">
Expand Down
6 changes: 5 additions & 1 deletion src/lib/components/batch-operations/header.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
import { autoRefresh } from '$lib/stores/batch-operations';
import type { BatchOperation, BatchOperationState } from '$lib/types/batch';

export let operation: BatchOperation;
interface Props {
operation: BatchOperation;
}

let { operation }: Props = $props();

const dispatch = createEventDispatcher<{
toggleAutoRefresh: { checked: boolean };
Expand Down
8 changes: 6 additions & 2 deletions src/lib/components/batch-operations/table.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@
} from '$lib/types/batch';
import { routeForBatchOperation } from '$lib/utilities/route-for';

export let namespace: string;
export let operations: BatchOperationInfo[];
interface Props {
namespace: string;
operations: BatchOperationInfo[];
}

let { namespace, operations }: Props = $props();

const jobStateToBadgeType: Record<BatchOperationState, BadgeType> = {
Completed: 'success',
Expand All @@ -34,7 +38,7 @@
<th class="max-sm:hidden lg:w-56">{translate('common.start-time')}</th>
<th class="max-sm:hidden lg:w-56">{translate('common.close-time')}</th>
</TableHeaderRow>
{#each operations as { state, jobId, startTime, closeTime }}

Check warning on line 41 in src/lib/components/batch-operations/table.svelte

View workflow job for this annotation

GitHub Actions / lint

Each block should have a key
<TableRow>
<td>
<Badge type={jobStateToBadgeType[state]}>
Expand Down
28 changes: 19 additions & 9 deletions src/lib/components/bottom-nav-namespaces.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,22 @@
import type { NamespaceListItem } from '$lib/types/global';
import { sortAlphabetically } from '$lib/utilities/sort-alphabetically';

export let open = false;
export let namespaceList: NamespaceListItem[] = [];
interface Props {
open?: boolean;
namespaceList?: NamespaceListItem[];
}

let { open = false, namespaceList = [] }: Props = $props();

let search = '';
let search = $state('');

$: namespaces = sortAlphabetically(
search
? namespaceList.filter(({ namespace }) => namespace.includes(search))
: namespaceList,
(ns) => ns.namespace,
const namespaces = $derived(
sortAlphabetically(
search
? namespaceList.filter(({ namespace }) => namespace.includes(search))
: namespaceList,
(ns) => ns.namespace,
),
);
</script>

Expand All @@ -35,7 +41,11 @@
<button
class="namespace"
class:selected={namespace === $lastUsedNamespace}
on:click|preventDefault|stopPropagation={() => onClick(namespace)}
onclick={(e) => {
e.preventDefault();
e.stopPropagation();
onClick(namespace);
}}
>
{namespace}
</button>
Expand Down
10 changes: 6 additions & 4 deletions src/lib/components/codec-server-error-banner.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import { translate } from '$lib/i18n/translate';
import { dataEncoder } from '$lib/stores/data-encoder';

$: message =
const message = $derived(
$dataEncoder.customErrorMessage ||
translate('data-encoder.codec-server-error');
$: linkUrl =
translate('data-encoder.codec-server-error'),
);
const linkUrl = $derived(
$dataEncoder.customErrorLink ||
'https://docs.temporal.io/production-deployment/data-encryption#set-your-codec-server-endpoints-with-web-ui-and-cli';
'https://docs.temporal.io/production-deployment/data-encryption#set-your-codec-server-endpoints-with-web-ui-and-cli',
);
</script>

{#if $dataEncoder.hasError}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<script lang="ts" context="module">
<svelte:options runes />

<script lang="ts" module>
import { action } from '@storybook/addon-actions';
import { Story, Template } from '@storybook/addon-svelte-csf';
import type { Meta } from '@storybook/svelte';
Expand Down
10 changes: 3 additions & 7 deletions src/lib/components/data-encoder-status.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,9 @@
}
};

let variant: 'primary' | 'ghost' = 'ghost';

const updateVariant = (open: boolean) => {
variant = open ? 'primary' : 'ghost';
};

$: updateVariant($viewDataEncoderSettings);
const variant = $derived<'primary' | 'ghost'>(
$viewDataEncoderSettings ? 'primary' : 'ghost',
);
</script>

<div class="mx-1 flex items-center">
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/deployments/version-details.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import WorkflowDetail from '../lines-and-dots/workflow-detail.svelte';

export let version: WorkerDeploymentVersionInfo;
let { version }: { version: WorkerDeploymentVersionInfo } = $props();
</script>

<div class="flex w-full flex-col gap-2 lg:flex-row lg:gap-8 xl:gap-16">
Expand Down
10 changes: 4 additions & 6 deletions src/lib/components/event/event-card.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@
{/snippet}

{#snippet eventLinks(links: ELink[])}
{#each links as link}

Check warning on line 160 in src/lib/components/event/event-card.svelte

View workflow job for this annotation

GitHub Actions / lint

Each block should have a key
{@render eventLink(link)}
{@render eventNamespaceLink(link)}
{/each}
Expand All @@ -167,12 +167,10 @@
<div class="flex items-start gap-4">
<p class="min-w-56 text-sm text-secondary/80">Summary</p>
<p class="whitespace-pre-line">
<MetadataDecoder
{value}
let:decodedValue
fallback={translate('events.decode-failed')}
>
{decodedValue}
<MetadataDecoder {value} fallback={translate('events.decode-failed')}>
{#snippet children(decodedValue)}
{decodedValue}
{/snippet}
</MetadataDecoder>
</p>
</div>
Expand Down
49 changes: 27 additions & 22 deletions src/lib/components/event/event-category-multiselect-filter.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<script lang="ts">
import { page } from '$app/stores';
import { page } from '$app/state';

import MultiSelect from '$lib/holocene/select/multi-select.svelte';
import MultiSelect, {
type MultiSelectOptions,
} from '$lib/holocene/select/multi-select.svelte';
import { translate } from '$lib/i18n/translate';
import {
allEventTypeOptions,
Expand All @@ -12,39 +14,42 @@
import { updateQueryParameters } from '$lib/utilities/update-query-parameters';
import { isVersionNewer } from '$lib/utilities/version-check';

export let compact = false;
let { compact = false }: { compact?: boolean } = $props();

$: label = compact
? translate('events.event-type')
: translate('events.workflow-events');
const label = $derived(
compact
? translate('events.event-type')
: translate('events.workflow-events'),
);

let parameter = 'category';
let options = (compact ? compactEventTypeOptions : allEventTypeOptions).map(
(o) => ({
const parameter = 'category';
const baseOptions = $derived(
(compact ? compactEventTypeOptions : allEventTypeOptions).map((o) => ({
...o,
label: translate(o.label),
}),
})),
);
const options = $derived(
isVersionNewer('1.21', $temporalVersion)
? baseOptions.filter(({ value }) => value !== 'update')
: baseOptions,
);
const initialSelected = $derived(
$eventCategoryFilter
? options.filter((o) => $eventCategoryFilter.includes(o.value))
: [],
);

$: {
if (isVersionNewer('1.21', $temporalVersion)) {
options = options.filter(({ value }) => value !== 'update');
}
}
$: initialSelected = $eventCategoryFilter
? options.filter((o) => $eventCategoryFilter.includes(o.value))
: [];

const onOptionClick = (_options) => {
const onOptionClick = (_options: MultiSelectOptions) => {
if (_options.length === options.length) {
_options = [];
}

const value = _options.map((o) => o.value).join(',');
updateQueryParameters({
parameter: parameter,
parameter,
value,
url: $page.url,
url: page.url,
});
};
</script>
Expand Down
22 changes: 12 additions & 10 deletions src/lib/components/event/event-date-filter.svelte
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<script context="module">
<script module>
export const dateParameter = 'time-format';
</script>

<script lang="ts">
import { page } from '$app/stores';
import { page } from '$app/state';

import Icon from '$lib/holocene/icon/icon.svelte';
import {
Expand All @@ -22,9 +22,9 @@
import { getDateFilterValue } from '$lib/utilities/event-formatting';
import { updateQueryParameters } from '$lib/utilities/update-query-parameters';

export let compact: boolean;
let { compact }: { compact: boolean } = $props();

let sortOptions: EventSortOrderOptions = [
const sortOptions: EventSortOrderOptions = [
{ label: translate('events.sort-ascending'), option: 'ascending' },
{ label: translate('events.sort-descending'), option: 'descending' },
];
Expand All @@ -34,7 +34,7 @@
updateQueryParameters({
parameter: 'sort',
value: option,
url: $page.url,
url: page.url,
});
};

Expand All @@ -46,11 +46,13 @@
}
};

$: value = getDateFilterValue({
compact,
sortOrder: $eventFilterSort,
showElapsed: $eventShowElapsed,
});
const value = $derived(
getDateFilterValue({
compact,
sortOrder: $eventFilterSort,
showElapsed: $eventShowElapsed,
}),
);
</script>

<MenuContainer>
Expand Down
12 changes: 9 additions & 3 deletions src/lib/components/event/event-empty-row.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@
import { translate } from '$lib/i18n/translate';
import { isCloud } from '$lib/stores/advanced-visibility';

export let loading = false;
export let title = translate('events.empty-state-title');
export let content = translate('events.empty-state-description');
let {
loading = false,
title = translate('events.empty-state-title'),
content = translate('events.empty-state-description'),
}: {
loading?: boolean;
title?: string;
content?: string;
} = $props();
</script>

<tr class="bg-primary">
Expand Down
16 changes: 7 additions & 9 deletions src/lib/components/event/event-metadata-expanded.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,16 @@

import MetadataDecoder from './metadata-decoder.svelte';

export let value: Payload;
let { value }: { value: Payload } = $props();
</script>

<div class="block w-full select-all px-2 py-1 text-left">
<p class="text-sm">Summary</p>
<MetadataDecoder
{value}
let:decodedValue
fallback={translate('events.decode-failed')}
>
<Badge type="secondary" class="inline-block whitespace-pre-wrap">
{decodedValue}
</Badge>
<MetadataDecoder {value} fallback={translate('events.decode-failed')}>
{#snippet children(decodedValue)}
<Badge type="secondary" class="inline-block whitespace-pre-wrap">
{decodedValue}
</Badge>
{/snippet}
</MetadataDecoder>
</div>
10 changes: 7 additions & 3 deletions src/lib/components/event/event-shortcut-keys.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@
import Shortcut from '$lib/holocene/keyboard-shortcut/shortcut.svelte';
import { translate } from '$lib/i18n/translate';

export let open = false;
export let onOpen: () => void;
export let onClose: () => void;
type Props = {
open?: boolean;
onOpen: () => void;
onClose: () => void;
};

let { open = false, onOpen, onClose }: Props = $props();
</script>

<div class="shortcut-key-button">
Expand Down
Loading
Loading