fix: show schedule handlers once their defaults load, draft suffix on static chips

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Diego Imbert
2026-09-30 13:48:56 +02:00
co-authored by Claude Opus 5.5
parent 4ad59a2822
commit e71b2b0a07
3 changed files with 41 additions and 28 deletions
@@ -293,7 +293,7 @@
{#if 'none' in upstream}
External source
{:else if trigger}
{trigger.label}
{trigger.label}{trigger.draft ? ' · draft' : ''}
{:else}
Multiple upstream nodes
{/if}
@@ -71,7 +71,7 @@
scheduleAdvancedCfg
} from '$lib/components/triggers/schedules/ScheduleAdvancedOptions.svelte'
import { workspaceStore } from '$lib/stores'
import { ArrowLeft, ChevronDown, CornerDownLeft, Sparkles } from 'lucide-svelte'
import { ArrowLeft, ChevronDown, CornerDownLeft, Loader2, Sparkles } from 'lucide-svelte'
import { tick } from 'svelte'
import { arrowTabNav } from '$lib/attachments/arrowTabNav'
import { selectAndAdvanceTo } from '$lib/attachments/selectAndAdvanceTo'
@@ -357,7 +357,10 @@
<Button
variant="subtle"
btnClasses={'text-left'}
onClick={() => (selected.triggerId = k.id)}
onClick={() => {
selected.triggerId = k.id
if (k.id === 'schedule') loadAdvancedDefaults()
}}
selected={isSelected}
>
{#if k.icon}
@@ -607,30 +610,39 @@
<DateTimeInput bind:value={config.pausedUntil} />
{/if}
</div>
<ScheduleAdvancedOptions
wsId={$workspaceStore}
itemKind="script"
canWrite
bind:errorHandlerSelected={config.advanced.errorHandlerSelected}
bind:errorHandlerPath={config.advanced.errorHandlerPath}
bind:errorHandleritemKind={config.advanced.errorHandleritemKind}
bind:errorHandlerExtraArgs={config.advanced.errorHandlerExtraArgs}
bind:wsErrorHandlerMuted={config.advanced.wsErrorHandlerMuted}
bind:failedTimes={config.advanced.failedTimes}
bind:failedExact={config.advanced.failedExact}
bind:recoveryHandlerSelected={config.advanced.recoveryHandlerSelected}
bind:recoveryHandlerPath={config.advanced.recoveryHandlerPath}
bind:recoveryHandlerItemKind={config.advanced.recoveryHandlerItemKind}
bind:recoveryHandlerExtraArgs={config.advanced.recoveryHandlerExtraArgs}
bind:recoveredTimes={config.advanced.recoveredTimes}
bind:successHandlerSelected={config.advanced.successHandlerSelected}
bind:successHandlerPath={config.advanced.successHandlerPath}
bind:successHandlerItemKind={config.advanced.successHandlerItemKind}
bind:successHandlerExtraArgs={config.advanced.successHandlerExtraArgs}
bind:retry={config.advanced.retry}
bind:dynamicSkipPath={config.advanced.dynamicSkipPath}
bind:tag={config.advanced.tag}
/>
<!-- Rendered once the workspace defaults are in, so they never
overwrite a handler picked while they load. -->
{#if config.advancedDefaults === 'loaded'}
<ScheduleAdvancedOptions
wsId={$workspaceStore}
itemKind="script"
canWrite
bind:errorHandlerSelected={config.advanced.errorHandlerSelected}
bind:errorHandlerPath={config.advanced.errorHandlerPath}
bind:errorHandleritemKind={config.advanced.errorHandleritemKind}
bind:errorHandlerExtraArgs={config.advanced.errorHandlerExtraArgs}
bind:wsErrorHandlerMuted={config.advanced.wsErrorHandlerMuted}
bind:failedTimes={config.advanced.failedTimes}
bind:failedExact={config.advanced.failedExact}
bind:recoveryHandlerSelected={config.advanced.recoveryHandlerSelected}
bind:recoveryHandlerPath={config.advanced.recoveryHandlerPath}
bind:recoveryHandlerItemKind={config.advanced.recoveryHandlerItemKind}
bind:recoveryHandlerExtraArgs={config.advanced.recoveryHandlerExtraArgs}
bind:recoveredTimes={config.advanced.recoveredTimes}
bind:successHandlerSelected={config.advanced.successHandlerSelected}
bind:successHandlerPath={config.advanced.successHandlerPath}
bind:successHandlerItemKind={config.advanced.successHandlerItemKind}
bind:successHandlerExtraArgs={config.advanced.successHandlerExtraArgs}
bind:retry={config.advanced.retry}
bind:dynamicSkipPath={config.advanced.dynamicSkipPath}
bind:tag={config.advanced.tag}
/>
{:else}
<div class="flex items-center gap-1.5 text-xs text-secondary">
<Loader2 size={12} class="animate-spin" />
Loading the workspace's default handlers…
</div>
{/if}
</div>
</Section>
</div>
@@ -16,7 +16,8 @@ and the controls hung around the card.
title: string
/** Hover text; the path, when the title is a summary. */
tooltip?: string
/** Scripts sit on the main surface; assets and triggers a step down. */
/** Scripts sit on the main surface, assets and triggers a step down; in the
* assets-only view, which has no scripts, assets take the main surface. */
surface?: 'primary' | 'secondary'
selected?: boolean
/** Not deployed yet: dashed edge. */