@@ -19,7 +19,6 @@ import { Label } from "~/components/primitives/Label";
19
19
import { DurationPicker } from "~/components/primitives/DurationPicker" ;
20
20
import { Paragraph } from "~/components/primitives/Paragraph" ;
21
21
import { Popover , PopoverContent , PopoverTrigger } from "~/components/primitives/Popover" ;
22
- import { SimpleTooltip } from "~/components/primitives/Tooltip" ;
23
22
import {
24
23
ResizableHandle ,
25
24
ResizablePanel ,
@@ -60,6 +59,7 @@ import { TaskRunStatusCombo } from "~/components/runs/v3/TaskRunStatus";
60
59
import { ClockRotateLeftIcon } from "~/assets/icons/ClockRotateLeftIcon" ;
61
60
import { MachinePresetName } from "@trigger.dev/core/v3" ;
62
61
import { TaskTriggerSourceIcon } from "~/components/runs/v3/TaskTriggerSource" ;
62
+ import { Callout } from "~/components/primitives/Callout" ;
63
63
64
64
export const loader = async ( { request, params } : LoaderFunctionArgs ) => {
65
65
const userId = await requireUserId ( request ) ;
@@ -412,12 +412,17 @@ function StandardTaskForm({
412
412
</ div >
413
413
</ ResizablePanel >
414
414
< ResizableHandle id = "test-task-handle" />
415
- < ResizablePanel id = "test-task-options" min = "285px " default = "285px " max = "360px" >
416
- < div className = "h-full overflow-y-scroll" >
415
+ < ResizablePanel id = "test-task-options" min = "300px " default = "300px " max = "360px" >
416
+ < div className = "h-full overflow-y-scroll scrollbar-thin scrollbar-track-transparent scrollbar-thumb-charcoal-600 " >
417
417
< Fieldset className = "px-3 py-3" >
418
+ < Hint >
419
+ Options enable you to control the execution behavior of your task.{ " " }
420
+ < TextLink to = { docsPath ( "triggering#options" ) } > Read the docs.</ TextLink >
421
+ </ Hint >
418
422
< InputGroup >
419
423
< Label variant = "small" > Delay</ Label >
420
424
< DurationPicker name = { delaySeconds . name } id = { delaySeconds . id } />
425
+ < Hint > Delays run by a specific duration.</ Hint >
421
426
< FormError id = { delaySeconds . errorId } > { delaySeconds . error } </ FormError >
422
427
</ InputGroup >
423
428
< InputGroup >
@@ -428,7 +433,7 @@ function StandardTaskForm({
428
433
value = { ttlValue }
429
434
onChange = { setTtlValue }
430
435
/>
431
- < Hint > The run will expire if it hasn't started within the TTL (time to live) .</ Hint >
436
+ < Hint > Expires the run if it hasn't started within the TTL.</ Hint >
432
437
< FormError id = { ttlSeconds . errorId } > { ttlSeconds . error } </ FormError >
433
438
</ InputGroup >
434
439
< InputGroup >
@@ -447,6 +452,7 @@ function StandardTaskForm({
447
452
name = { queue . name }
448
453
id = { queue . id }
449
454
placeholder = "Select queue"
455
+ heading = "Filter queues"
450
456
variant = "tertiary/small"
451
457
dropdownIcon
452
458
items = { queueItems }
@@ -481,6 +487,7 @@ function StandardTaskForm({
481
487
}
482
488
</ Select >
483
489
) }
490
+ < Hint > Assign run to a specific queue.</ Hint >
484
491
< FormError id = { queue . errorId } > { queue . error } </ FormError >
485
492
</ InputGroup >
486
493
< InputGroup >
@@ -494,7 +501,7 @@ function StandardTaskForm({
494
501
tags = { tagsValue }
495
502
onTagsChange = { setTagsValue }
496
503
/>
497
- < Hint > Tags enable you to easily filter runs.</ Hint >
504
+ < Hint > Add tags to easily filter runs.</ Hint >
498
505
< FormError id = { tags . errorId } > { tags . error } </ FormError >
499
506
</ InputGroup >
500
507
< InputGroup >
@@ -523,6 +530,7 @@ function StandardTaskForm({
523
530
}
524
531
} }
525
532
/>
533
+ < Hint > Retries failed runs up to the specified number of attempts.</ Hint >
526
534
< FormError id = { maxAttempts . errorId } > { maxAttempts . error } </ FormError >
527
535
</ InputGroup >
528
536
< InputGroup >
@@ -533,6 +541,7 @@ function StandardTaskForm({
533
541
value = { maxDurationValue }
534
542
onChange = { setMaxDurationValue }
535
543
/>
544
+ < Hint > Overrides the maximum compute time limit for the run.</ Hint >
536
545
< FormError id = { maxDurationSeconds . errorId } > { maxDurationSeconds . error } </ FormError >
537
546
</ InputGroup >
538
547
< InputGroup >
@@ -552,7 +561,7 @@ function StandardTaskForm({
552
561
name = { idempotencyKeyTTLSeconds . name }
553
562
id = { idempotencyKeyTTLSeconds . id }
554
563
/>
555
- < Hint > By default, idempotency keys expire after 30 days.</ Hint >
564
+ < Hint > Keys expire after 30 days by default .</ Hint >
556
565
< FormError id = { idempotencyKeyTTLSeconds . errorId } >
557
566
{ idempotencyKeyTTLSeconds . error }
558
567
</ FormError >
@@ -568,8 +577,7 @@ function StandardTaskForm({
568
577
onChange = { ( e ) => setConcurrencyKeyValue ( e . target . value ) }
569
578
/>
570
579
< Hint >
571
- Concurrency keys enable you limit concurrency by creating a separate queue for
572
- each value of the key.
580
+ Limits concurrency by creating a separate queue for each value of the key.
573
581
</ Hint >
574
582
< FormError id = { concurrencyKey . errorId } > { concurrencyKey . error } </ FormError >
575
583
</ InputGroup >
@@ -596,7 +604,7 @@ function StandardTaskForm({
596
604
</ SelectItem >
597
605
) ) }
598
606
</ Select >
599
- < Hint > This lets you override the machine preset specified in the task .</ Hint >
607
+ < Hint > Overrides the machine preset.</ Hint >
600
608
< FormError id = { machine . errorId } > { machine . error } </ FormError >
601
609
</ InputGroup >
602
610
< InputGroup >
@@ -617,8 +625,10 @@ function StandardTaskForm({
617
625
</ SelectItem >
618
626
) ) }
619
627
</ Select >
620
- { disableVersionSelection && (
628
+ { disableVersionSelection ? (
621
629
< Hint > Only the latest version is available in the development environment.</ Hint >
630
+ ) : (
631
+ < Hint > Runs task on a specific version.</ Hint >
622
632
) }
623
633
< FormError id = { version . errorId } > { version . error } </ FormError >
624
634
</ InputGroup >
@@ -869,7 +879,11 @@ function ScheduledTaskForm({
869
879
</ Hint >
870
880
< FormError id = { externalId . errorId } > { externalId . error } </ FormError >
871
881
</ InputGroup >
872
- < div className = "w-full border-b border-grid-bright" > </ div >
882
+ < div className = "w-full border-b border-grid-bright" />
883
+ < Hint >
884
+ Options enable you to control the execution behavior of your task.{ " " }
885
+ < TextLink to = { docsPath ( "triggering#options" ) } > Read the docs.</ TextLink >
886
+ </ Hint >
873
887
< InputGroup >
874
888
< Label htmlFor = { ttlSeconds . id } variant = "small" >
875
889
TTL
@@ -880,7 +894,7 @@ function ScheduledTaskForm({
880
894
value = { ttlValue }
881
895
onChange = { setTtlValue }
882
896
/>
883
- < Hint > The run will expire if it hasn't started within the TTL (time to live) .</ Hint >
897
+ < Hint > Expires the run if it hasn't started within the TTL.</ Hint >
884
898
< FormError id = { ttlSeconds . errorId } > { ttlSeconds . error } </ FormError >
885
899
</ InputGroup >
886
900
< InputGroup >
@@ -899,6 +913,7 @@ function ScheduledTaskForm({
899
913
name = { queue . name }
900
914
id = { queue . id }
901
915
placeholder = "Select queue"
916
+ heading = "Filter queues"
902
917
variant = "tertiary/small"
903
918
dropdownIcon
904
919
items = { queueItems }
@@ -933,6 +948,7 @@ function ScheduledTaskForm({
933
948
}
934
949
</ Select >
935
950
) }
951
+ < Hint > Assign run to a specific queue.</ Hint >
936
952
< FormError id = { queue . errorId } > { queue . error } </ FormError >
937
953
</ InputGroup >
938
954
< InputGroup >
@@ -946,7 +962,7 @@ function ScheduledTaskForm({
946
962
tags = { tagsValue }
947
963
onTagsChange = { setTagsValue }
948
964
/>
949
- < Hint > Tags enable you to easily filter runs.</ Hint >
965
+ < Hint > Add tags to easily filter runs.</ Hint >
950
966
< FormError id = { tags . errorId } > { tags . error } </ FormError >
951
967
</ InputGroup >
952
968
< InputGroup >
@@ -975,6 +991,7 @@ function ScheduledTaskForm({
975
991
}
976
992
} }
977
993
/>
994
+ < Hint > Retries failed runs up to the specified number of attempts.</ Hint >
978
995
< FormError id = { maxAttempts . errorId } > { maxAttempts . error } </ FormError >
979
996
</ InputGroup >
980
997
< InputGroup >
@@ -987,6 +1004,7 @@ function ScheduledTaskForm({
987
1004
value = { maxDurationValue }
988
1005
onChange = { setMaxDurationValue }
989
1006
/>
1007
+ < Hint > Overrides the maximum compute time limit for the run.</ Hint >
990
1008
< FormError id = { maxDurationSeconds . errorId } > { maxDurationSeconds . error } </ FormError >
991
1009
</ InputGroup >
992
1010
< InputGroup >
@@ -1005,7 +1023,7 @@ function ScheduledTaskForm({
1005
1023
Idempotency key TTL
1006
1024
</ Label >
1007
1025
< DurationPicker name = { idempotencyKeyTTLSeconds . name } id = { idempotencyKeyTTLSeconds . id } />
1008
- < Hint > By default, idempotency keys expire after 30 days.</ Hint >
1026
+ < Hint > Keys expire after 30 days by default .</ Hint >
1009
1027
< FormError id = { idempotencyKeyTTLSeconds . errorId } >
1010
1028
{ idempotencyKeyTTLSeconds . error }
1011
1029
</ FormError >
@@ -1020,10 +1038,7 @@ function ScheduledTaskForm({
1020
1038
value = { concurrencyKeyValue ?? "" }
1021
1039
onChange = { ( e ) => setConcurrencyKeyValue ( e . target . value ) }
1022
1040
/>
1023
- < Hint >
1024
- Concurrency keys enable you limit concurrency by creating a separate queue for each
1025
- value of the key.
1026
- </ Hint >
1041
+ < Hint > Limits concurrency by creating a separate queue for each value of the key.</ Hint >
1027
1042
< FormError id = { concurrencyKey . errorId } > { concurrencyKey . error } </ FormError >
1028
1043
</ InputGroup >
1029
1044
< InputGroup >
@@ -1049,7 +1064,7 @@ function ScheduledTaskForm({
1049
1064
</ SelectItem >
1050
1065
) ) }
1051
1066
</ Select >
1052
- < Hint > This lets you override the machine preset specified in the task .</ Hint >
1067
+ < Hint > Overrides the machine preset.</ Hint >
1053
1068
< FormError id = { machine . errorId } > { machine . error } </ FormError >
1054
1069
</ InputGroup >
1055
1070
< InputGroup >
@@ -1070,8 +1085,10 @@ function ScheduledTaskForm({
1070
1085
</ SelectItem >
1071
1086
) ) }
1072
1087
</ Select >
1073
- { disableVersionSelection && (
1088
+ { disableVersionSelection ? (
1074
1089
< Hint > Only the latest version is available in the development environment.</ Hint >
1090
+ ) : (
1091
+ < Hint > Runs task on a specific version.</ Hint >
1075
1092
) }
1076
1093
< FormError id = { version . errorId } > { version . error } </ FormError >
1077
1094
</ InputGroup >
@@ -1120,7 +1137,7 @@ function RecentRunsPopover<T extends StandardRun | ScheduledRun>({
1120
1137
Recent runs
1121
1138
</ Button >
1122
1139
</ PopoverTrigger >
1123
- < PopoverContent className = "min-w-[279px ] p-0" align = "end" sideOffset = { 6 } >
1140
+ < PopoverContent className = "min-w-[294px ] p-0" align = "end" sideOffset = { 6 } >
1124
1141
< div className = "max-h-80 overflow-y-auto" >
1125
1142
< div className = "p-1" >
1126
1143
{ runs . map ( ( run ) => (
@@ -1134,7 +1151,7 @@ function RecentRunsPopover<T extends StandardRun | ScheduledRun>({
1134
1151
className = "flex w-full items-center gap-2 rounded-sm px-2 py-2 outline-none transition-colors focus-custom hover:bg-charcoal-900 "
1135
1152
>
1136
1153
< div className = "flex flex-col items-start" >
1137
- < Paragraph variant = "small" >
1154
+ < Paragraph variant = "small/bright " >
1138
1155
< DateTime date = { run . createdAt } showTooltip = { false } />
1139
1156
</ Paragraph >
1140
1157
< div className = "flex items-center gap-2 text-xs text-text-dimmed" >
0 commit comments