@@ -8,7 +8,11 @@ import {
88} from "@heroicons/react/20/solid" ;
99import { BeakerIcon , BookOpenIcon , CheckIcon } from "@heroicons/react/24/solid" ;
1010import { useLocation } from "@remix-run/react" ;
11- import { formatDuration , formatDurationMilliseconds } from "@trigger.dev/core/v3" ;
11+ import {
12+ formatDuration ,
13+ formatDurationMilliseconds ,
14+ MachinePresetName ,
15+ } from "@trigger.dev/core/v3" ;
1216import { useCallback , useRef } from "react" ;
1317import { Badge } from "~/components/primitives/Badge" ;
1418import { Button , LinkButton } from "~/components/primitives/Buttons" ;
@@ -52,6 +56,8 @@ import {
5256 filterableTaskRunStatuses ,
5357 TaskRunStatusCombo ,
5458} from "./TaskRunStatus" ;
59+ import { MachineIcon } from "~/assets/icons/MachineIcon" ;
60+ import { MachineLabelCombo } from "~/components/MachineLabelCombo" ;
5561
5662type RunsTableProps = {
5763 total : number ;
@@ -201,6 +207,65 @@ export function TaskRunsTable({
201207 < TableHeaderCell > Compute</ TableHeaderCell >
202208 </ >
203209 ) }
210+ < TableHeaderCell
211+ className = "pl-4"
212+ tooltip = {
213+ < div className = "flex max-w-xs flex-col gap-4 p-1" >
214+ < div >
215+ < div className = "mb-0.5 flex items-center gap-1.5" >
216+ < MachineIcon preset = "no-machine" />
217+ < Header3 > No machine yet</ Header3 >
218+ </ div >
219+ < Paragraph variant = "small" className = "text-text-dimmed" >
220+ The machine is set at the moment the run is dequeued.
221+ </ Paragraph >
222+ </ div >
223+ < div >
224+ < div className = "mb-0.5 flex items-center gap-1.5" >
225+ < MachineIcon preset = "micro" />
226+ < Header3 > Micro</ Header3 >
227+ </ div >
228+ < Paragraph variant = "small" className = "text-text-dimmed" >
229+ The smallest and cheapest machine available.
230+ </ Paragraph >
231+ </ div >
232+ < div >
233+ < div className = "mb-0.5 flex items-center gap-1.5" >
234+ < MachineIcon preset = "small-1x" /> < Header3 > Small 1x & 2 x </ Header3 >
235+ </ div >
236+ < Paragraph variant = "small" className = "text-text-dimmed" >
237+ Smaller machines for basic workloads. Small 1x is the default machine.
238+ </ Paragraph >
239+ </ div >
240+ < div >
241+ < div className = "mb-0.5 flex items-center gap-1.5" >
242+ < MachineIcon preset = "medium-1x" /> < Header3 > Medium 1x & 2 x </ Header3 >
243+ </ div >
244+ < Paragraph variant = "small" className = "text-text-dimmed" >
245+ Medium machines for more demanding workloads.
246+ </ Paragraph >
247+ </ div >
248+ < div >
249+ < div className = "mb-0.5 flex items-center gap-1.5" >
250+ < MachineIcon preset = "large-1x" /> < Header3 > Large 1x & 2 x </ Header3 >
251+ </ div >
252+ < Paragraph variant = "small" className = "text-text-dimmed" >
253+ Larger machines for the most demanding workloads such as video processing. The
254+ larger the machine, the more expensive it is.
255+ </ Paragraph >
256+ </ div >
257+ < LinkButton
258+ to = { docsPath ( "machines#machine-configurations" ) }
259+ variant = "docs/small"
260+ LeadingIcon = { BookOpenIcon }
261+ >
262+ Read docs
263+ </ LinkButton >
264+ </ div >
265+ }
266+ >
267+ Machine
268+ </ TableHeaderCell >
204269 < TableHeaderCell > Test</ TableHeaderCell >
205270 < TableHeaderCell > Created at</ TableHeaderCell >
206271 < TableHeaderCell
@@ -375,6 +440,9 @@ export function TaskRunsTable({
375440 : "–" }
376441 </ TableCell >
377442 ) }
443+ < TableCell to = { path } >
444+ < MachineLabelCombo preset = { run . machinePreset as MachinePresetName } />
445+ </ TableCell >
378446 < TableCell to = { path } >
379447 { run . isTest ? < CheckIcon className = "size-4 text-charcoal-400" /> : "–" }
380448 </ TableCell >
0 commit comments