v0.8.0 eaf4295

actions_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4package web
5
6//lint:file-ignore SA4006 This context is only used if a nested component is present.
7
8import "github.com/a-h/templ"
9import templruntime "github.com/a-h/templ/runtime"
10
11// The CI pages: the runs of a repository, a run with its jobs, a job with its
12// steps and its log (actions.go). A state is always a word as well as a
13// symbol and a colour.
14
15// CheckIcon is the symbol of a state: a mark in the colour of its kind, with
16// the state as its text for a screen reader.
17func CheckIcon(kind, state string) templ.Component {
18	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
19		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
20		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
21			return templ_7745c5c3_CtxErr
22		}
23		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
24		if !templ_7745c5c3_IsBuffer {
25			defer func() {
26				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
27				if templ_7745c5c3_Err == nil {
28					templ_7745c5c3_Err = templ_7745c5c3_BufErr
29				}
30			}()
31		}
32		ctx = templ.InitializeContext(ctx)
33		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
34		if templ_7745c5c3_Var1 == nil {
35			templ_7745c5c3_Var1 = templ.NopComponent
36		}
37		ctx = templ.ClearChildren(ctx)
38		var templ_7745c5c3_Var2 = []any{"ck", "ck-" + kind}
39		templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...)
40		if templ_7745c5c3_Err != nil {
41			return templ_7745c5c3_Err
42		}
43		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<span class=\"")
44		if templ_7745c5c3_Err != nil {
45			return templ_7745c5c3_Err
46		}
47		var templ_7745c5c3_Var3 string
48		templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var2).String())
49		if templ_7745c5c3_Err != nil {
50			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 1, Col: 0}
51		}
52		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3)
53		if templ_7745c5c3_Err != nil {
54			return templ_7745c5c3_Err
55		}
56		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\" role=\"img\" aria-label=\"")
57		if templ_7745c5c3_Err != nil {
58			return templ_7745c5c3_Err
59		}
60		var templ_7745c5c3_Var4 string
61		templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(state)
62		if templ_7745c5c3_Err != nil {
63			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 10, Col: 65}
64		}
65		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4)
66		if templ_7745c5c3_Err != nil {
67			return templ_7745c5c3_Err
68		}
69		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\" title=\"")
70		if templ_7745c5c3_Err != nil {
71			return templ_7745c5c3_Err
72		}
73		var templ_7745c5c3_Var5 string
74		templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.ResolveAttributeValue(state)
75		if templ_7745c5c3_Err != nil {
76			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 10, Col: 81}
77		}
78		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var5)
79		if templ_7745c5c3_Err != nil {
80			return templ_7745c5c3_Err
81		}
82		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\"></span>")
83		if templ_7745c5c3_Err != nil {
84			return templ_7745c5c3_Err
85		}
86		return nil
87	})
88}
89
90func Actions(l Layout, p ActionsPage) templ.Component {
91	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
92		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
93		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
94			return templ_7745c5c3_CtxErr
95		}
96		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
97		if !templ_7745c5c3_IsBuffer {
98			defer func() {
99				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
100				if templ_7745c5c3_Err == nil {
101					templ_7745c5c3_Err = templ_7745c5c3_BufErr
102				}
103			}()
104		}
105		ctx = templ.InitializeContext(ctx)
106		templ_7745c5c3_Var6 := templ.GetChildren(ctx)
107		if templ_7745c5c3_Var6 == nil {
108			templ_7745c5c3_Var6 = templ.NopComponent
109		}
110		ctx = templ.ClearChildren(ctx)
111		templ_7745c5c3_Var7 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
112			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
113			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
114			if !templ_7745c5c3_IsBuffer {
115				defer func() {
116					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
117					if templ_7745c5c3_Err == nil {
118						templ_7745c5c3_Err = templ_7745c5c3_BufErr
119					}
120				}()
121			}
122			ctx = templ.InitializeContext(ctx)
123			if len(p.Runs) == 0 {
124				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<p class=\"dim\">no runs yet: a push that matches a workflow of .github/workflows starts one.</p>")
125				if templ_7745c5c3_Err != nil {
126					return templ_7745c5c3_Err
127				}
128			} else {
129				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<table class=\"list runs\" aria-label=\"Runs\"><thead><tr><th class=\"c-st\"></th><th class=\"c-name\">workflow</th><th class=\"c-sub\">commit</th><th class=\"c-ref\">ref</th><th class=\"c-who\">actor</th><th class=\"c-dur\">time</th><th class=\"c-when\">created</th></tr></thead> <tbody id=\"run-rows\" data-rows>")
130				if templ_7745c5c3_Err != nil {
131					return templ_7745c5c3_Err
132				}
133				for _, r := range p.Runs {
134					templ_7745c5c3_Err = RunListRow(r).Render(ctx, templ_7745c5c3_Buffer)
135					if templ_7745c5c3_Err != nil {
136						return templ_7745c5c3_Err
137					}
138				}
139				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</tbody></table>")
140				if templ_7745c5c3_Err != nil {
141					return templ_7745c5c3_Err
142				}
143			}
144			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, " ")
145			if templ_7745c5c3_Err != nil {
146				return templ_7745c5c3_Err
147			}
148			if p.More != "" {
149				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<p class=\"more\"><a href=\"")
150				if templ_7745c5c3_Err != nil {
151					return templ_7745c5c3_Err
152				}
153				var templ_7745c5c3_Var8 templ.SafeURL
154				templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.More))
155				if templ_7745c5c3_Err != nil {
156					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 30, Col: 50}
157				}
158				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
159				if templ_7745c5c3_Err != nil {
160					return templ_7745c5c3_Err
161				}
162				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "\" rel=\"next\">older runs</a></p>")
163				if templ_7745c5c3_Err != nil {
164					return templ_7745c5c3_Err
165				}
166			}
167			return nil
168		})
169		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var7), templ_7745c5c3_Buffer)
170		if templ_7745c5c3_Err != nil {
171			return templ_7745c5c3_Err
172		}
173		return nil
174	})
175}
176
177// RunListRow is a row of the list of runs; its id is the target of the live
178// updates.
179func RunListRow(r RunRow) templ.Component {
180	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
181		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
182		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
183			return templ_7745c5c3_CtxErr
184		}
185		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
186		if !templ_7745c5c3_IsBuffer {
187			defer func() {
188				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
189				if templ_7745c5c3_Err == nil {
190					templ_7745c5c3_Err = templ_7745c5c3_BufErr
191				}
192			}()
193		}
194		ctx = templ.InitializeContext(ctx)
195		templ_7745c5c3_Var9 := templ.GetChildren(ctx)
196		if templ_7745c5c3_Var9 == nil {
197			templ_7745c5c3_Var9 = templ.NopComponent
198		}
199		ctx = templ.ClearChildren(ctx)
200		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<tr id=\"")
201		if templ_7745c5c3_Err != nil {
202			return templ_7745c5c3_Err
203		}
204		var templ_7745c5c3_Var10 string
205		templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue("run-" + r.ID)
206		if templ_7745c5c3_Err != nil {
207			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 38, Col: 23}
208		}
209		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
210		if templ_7745c5c3_Err != nil {
211			return templ_7745c5c3_Err
212		}
213		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\"><td class=\"c-st\">")
214		if templ_7745c5c3_Err != nil {
215			return templ_7745c5c3_Err
216		}
217		templ_7745c5c3_Err = CheckIcon(r.Kind, r.State).Render(ctx, templ_7745c5c3_Buffer)
218		if templ_7745c5c3_Err != nil {
219			return templ_7745c5c3_Err
220		}
221		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</td><td class=\"c-name\"><a href=\"")
222		if templ_7745c5c3_Err != nil {
223			return templ_7745c5c3_Err
224		}
225		var templ_7745c5c3_Var11 templ.SafeURL
226		templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
227		if templ_7745c5c3_Err != nil {
228			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 41, Col: 34}
229		}
230		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
231		if templ_7745c5c3_Err != nil {
232			return templ_7745c5c3_Err
233		}
234		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "\">")
235		if templ_7745c5c3_Err != nil {
236			return templ_7745c5c3_Err
237		}
238		var templ_7745c5c3_Var12 string
239		templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(r.Workflow)
240		if templ_7745c5c3_Err != nil {
241			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 41, Col: 49}
242		}
243		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
244		if templ_7745c5c3_Err != nil {
245			return templ_7745c5c3_Err
246		}
247		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</a> <span class=\"mute\">")
248		if templ_7745c5c3_Err != nil {
249			return templ_7745c5c3_Err
250		}
251		var templ_7745c5c3_Var13 string
252		templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(r.Number)
253		if templ_7745c5c3_Err != nil {
254			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 42, Col: 32}
255		}
256		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
257		if templ_7745c5c3_Err != nil {
258			return templ_7745c5c3_Err
259		}
260		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</span> ")
261		if templ_7745c5c3_Err != nil {
262			return templ_7745c5c3_Err
263		}
264		if r.Attempt > 1 {
265			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<span class=\"pill\">attempt ")
266			if templ_7745c5c3_Err != nil {
267				return templ_7745c5c3_Err
268			}
269			var templ_7745c5c3_Var14 string
270			templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(int(r.Attempt)))
271			if templ_7745c5c3_Err != nil {
272				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 44, Col: 53}
273			}
274			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
275			if templ_7745c5c3_Err != nil {
276				return templ_7745c5c3_Err
277			}
278			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</span>")
279			if templ_7745c5c3_Err != nil {
280				return templ_7745c5c3_Err
281			}
282		}
283		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</td><td class=\"c-sub\"><a href=\"")
284		if templ_7745c5c3_Err != nil {
285			return templ_7745c5c3_Err
286		}
287		var templ_7745c5c3_Var15 templ.SafeURL
288		templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
289		if templ_7745c5c3_Err != nil {
290			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 47, Col: 52}
291		}
292		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
293		if templ_7745c5c3_Err != nil {
294			return templ_7745c5c3_Err
295		}
296		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">")
297		if templ_7745c5c3_Err != nil {
298			return templ_7745c5c3_Err
299		}
300		var templ_7745c5c3_Var16 string
301		templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short)
302		if templ_7745c5c3_Err != nil {
303			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 47, Col: 64}
304		}
305		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
306		if templ_7745c5c3_Err != nil {
307			return templ_7745c5c3_Err
308		}
309		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</a> ")
310		if templ_7745c5c3_Err != nil {
311			return templ_7745c5c3_Err
312		}
313		var templ_7745c5c3_Var17 string
314		templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title)
315		if templ_7745c5c3_Err != nil {
316			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 47, Col: 80}
317		}
318		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
319		if templ_7745c5c3_Err != nil {
320			return templ_7745c5c3_Err
321		}
322		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</td><td class=\"c-ref\"><a href=\"")
323		if templ_7745c5c3_Err != nil {
324			return templ_7745c5c3_Err
325		}
326		var templ_7745c5c3_Var18 templ.SafeURL
327		templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.RefHref))
328		if templ_7745c5c3_Err != nil {
329			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 48, Col: 54}
330		}
331		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
332		if templ_7745c5c3_Err != nil {
333			return templ_7745c5c3_Err
334		}
335		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\">")
336		if templ_7745c5c3_Err != nil {
337			return templ_7745c5c3_Err
338		}
339		var templ_7745c5c3_Var19 string
340		templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(r.Ref)
341		if templ_7745c5c3_Err != nil {
342			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 48, Col: 64}
343		}
344		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
345		if templ_7745c5c3_Err != nil {
346			return templ_7745c5c3_Err
347		}
348		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</a></td><td class=\"c-who dim\">")
349		if templ_7745c5c3_Err != nil {
350			return templ_7745c5c3_Err
351		}
352		var templ_7745c5c3_Var20 string
353		templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(r.Actor)
354		if templ_7745c5c3_Err != nil {
355			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 49, Col: 33}
356		}
357		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
358		if templ_7745c5c3_Err != nil {
359			return templ_7745c5c3_Err
360		}
361		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</td><td class=\"c-dur dim\">")
362		if templ_7745c5c3_Err != nil {
363			return templ_7745c5c3_Err
364		}
365		var templ_7745c5c3_Var21 string
366		templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(r.State)
367		if templ_7745c5c3_Err != nil {
368			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 50, Col: 33}
369		}
370		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
371		if templ_7745c5c3_Err != nil {
372			return templ_7745c5c3_Err
373		}
374		var templ_7745c5c3_Var22 string
375		templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
376		if templ_7745c5c3_Err != nil {
377			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 50, Col: 40}
378		}
379		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
380		if templ_7745c5c3_Err != nil {
381			return templ_7745c5c3_Err
382		}
383		var templ_7745c5c3_Var23 string
384		templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(r.Duration)
385		if templ_7745c5c3_Err != nil {
386			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 50, Col: 54}
387		}
388		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
389		if templ_7745c5c3_Err != nil {
390			return templ_7745c5c3_Err
391		}
392		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</td><td class=\"c-when dim\">")
393		if templ_7745c5c3_Err != nil {
394			return templ_7745c5c3_Err
395		}
396		if r.WhenAt != "" {
397			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<time datetime=\"")
398			if templ_7745c5c3_Err != nil {
399				return templ_7745c5c3_Err
400			}
401			var templ_7745c5c3_Var24 string
402			templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
403			if templ_7745c5c3_Err != nil {
404				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 53, Col: 29}
405			}
406			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
407			if templ_7745c5c3_Err != nil {
408				return templ_7745c5c3_Err
409			}
410			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\" title=\"")
411			if templ_7745c5c3_Err != nil {
412				return templ_7745c5c3_Err
413			}
414			var templ_7745c5c3_Var25 string
415			templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
416			if templ_7745c5c3_Err != nil {
417				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 53, Col: 48}
418			}
419			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
420			if templ_7745c5c3_Err != nil {
421				return templ_7745c5c3_Err
422			}
423			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
424			if templ_7745c5c3_Err != nil {
425				return templ_7745c5c3_Err
426			}
427			var templ_7745c5c3_Var26 string
428			templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
429			if templ_7745c5c3_Err != nil {
430				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 53, Col: 59}
431			}
432			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
433			if templ_7745c5c3_Err != nil {
434				return templ_7745c5c3_Err
435			}
436			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</time>")
437			if templ_7745c5c3_Err != nil {
438				return templ_7745c5c3_Err
439			}
440		}
441		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</td></tr>")
442		if templ_7745c5c3_Err != nil {
443			return templ_7745c5c3_Err
444		}
445		return nil
446	})
447}
448
449func RunDetail(l Layout, p RunPage) templ.Component {
450	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
451		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
452		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
453			return templ_7745c5c3_CtxErr
454		}
455		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
456		if !templ_7745c5c3_IsBuffer {
457			defer func() {
458				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
459				if templ_7745c5c3_Err == nil {
460					templ_7745c5c3_Err = templ_7745c5c3_BufErr
461				}
462			}()
463		}
464		ctx = templ.InitializeContext(ctx)
465		templ_7745c5c3_Var27 := templ.GetChildren(ctx)
466		if templ_7745c5c3_Var27 == nil {
467			templ_7745c5c3_Var27 = templ.NopComponent
468		}
469		ctx = templ.ClearChildren(ctx)
470		templ_7745c5c3_Var28 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
471			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
472			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
473			if !templ_7745c5c3_IsBuffer {
474				defer func() {
475					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
476					if templ_7745c5c3_Err == nil {
477						templ_7745c5c3_Err = templ_7745c5c3_BufErr
478					}
479				}()
480			}
481			ctx = templ.InitializeContext(ctx)
482			templ_7745c5c3_Err = LiveSlot("run-notice").Render(ctx, templ_7745c5c3_Buffer)
483			if templ_7745c5c3_Err != nil {
484				return templ_7745c5c3_Err
485			}
486			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, " <div id=\"run-body\">")
487			if templ_7745c5c3_Err != nil {
488				return templ_7745c5c3_Err
489			}
490			templ_7745c5c3_Err = RunBody(p).Render(ctx, templ_7745c5c3_Buffer)
491			if templ_7745c5c3_Err != nil {
492				return templ_7745c5c3_Err
493			}
494			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</div>")
495			if templ_7745c5c3_Err != nil {
496				return templ_7745c5c3_Err
497			}
498			return nil
499		})
500		templ_7745c5c3_Err = Shell(l, runRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var28), templ_7745c5c3_Buffer)
501		if templ_7745c5c3_Err != nil {
502			return templ_7745c5c3_Err
503		}
504		return nil
505	})
506}
507
508// runBodyFragment is the body of the run page as a live fragment.
509func runBodyFragment(p RunPage) templ.Component {
510	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
511		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
512		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
513			return templ_7745c5c3_CtxErr
514		}
515		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
516		if !templ_7745c5c3_IsBuffer {
517			defer func() {
518				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
519				if templ_7745c5c3_Err == nil {
520					templ_7745c5c3_Err = templ_7745c5c3_BufErr
521				}
522			}()
523		}
524		ctx = templ.InitializeContext(ctx)
525		templ_7745c5c3_Var29 := templ.GetChildren(ctx)
526		if templ_7745c5c3_Var29 == nil {
527			templ_7745c5c3_Var29 = templ.NopComponent
528		}
529		ctx = templ.ClearChildren(ctx)
530		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<div id=\"run-body\">")
531		if templ_7745c5c3_Err != nil {
532			return templ_7745c5c3_Err
533		}
534		templ_7745c5c3_Err = RunBody(p).Render(ctx, templ_7745c5c3_Buffer)
535		if templ_7745c5c3_Err != nil {
536			return templ_7745c5c3_Err
537		}
538		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</div>")
539		if templ_7745c5c3_Err != nil {
540			return templ_7745c5c3_Err
541		}
542		return nil
543	})
544}
545
546// RunBody is the jobs of a run, replaced by the live updates.
547func RunBody(p RunPage) templ.Component {
548	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
549		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
550		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
551			return templ_7745c5c3_CtxErr
552		}
553		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
554		if !templ_7745c5c3_IsBuffer {
555			defer func() {
556				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
557				if templ_7745c5c3_Err == nil {
558					templ_7745c5c3_Err = templ_7745c5c3_BufErr
559				}
560			}()
561		}
562		ctx = templ.InitializeContext(ctx)
563		templ_7745c5c3_Var30 := templ.GetChildren(ctx)
564		if templ_7745c5c3_Var30 == nil {
565			templ_7745c5c3_Var30 = templ.NopComponent
566		}
567		ctx = templ.ClearChildren(ctx)
568		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<h2 class=\"run-h\">")
569		if templ_7745c5c3_Err != nil {
570			return templ_7745c5c3_Err
571		}
572		templ_7745c5c3_Err = CheckIcon(p.Kind, p.State).Render(ctx, templ_7745c5c3_Buffer)
573		if templ_7745c5c3_Err != nil {
574			return templ_7745c5c3_Err
575		}
576		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<span>")
577		if templ_7745c5c3_Err != nil {
578			return templ_7745c5c3_Err
579		}
580		var templ_7745c5c3_Var31 string
581		templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(p.Workflow)
582		if templ_7745c5c3_Err != nil {
583			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 77, Col: 64}
584		}
585		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
586		if templ_7745c5c3_Err != nil {
587			return templ_7745c5c3_Err
588		}
589		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</span> <span class=\"mute\">")
590		if templ_7745c5c3_Err != nil {
591			return templ_7745c5c3_Err
592		}
593		var templ_7745c5c3_Var32 string
594		templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.Number)
595		if templ_7745c5c3_Err != nil {
596			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 77, Col: 103}
597		}
598		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
599		if templ_7745c5c3_Err != nil {
600			return templ_7745c5c3_Err
601		}
602		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</span></h2>")
603		if templ_7745c5c3_Err != nil {
604			return templ_7745c5c3_Err
605		}
606		if p.Error != "" {
607			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<pre class=\"run-err\">")
608			if templ_7745c5c3_Err != nil {
609				return templ_7745c5c3_Err
610			}
611			var templ_7745c5c3_Var33 string
612			templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(p.Error)
613			if templ_7745c5c3_Err != nil {
614				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 79, Col: 32}
615			}
616			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
617			if templ_7745c5c3_Err != nil {
618				return templ_7745c5c3_Err
619			}
620			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</pre>")
621			if templ_7745c5c3_Err != nil {
622				return templ_7745c5c3_Err
623			}
624		}
625		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<ul class=\"jobs\">")
626		if templ_7745c5c3_Err != nil {
627			return templ_7745c5c3_Err
628		}
629		for _, j := range p.Jobs {
630			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<li id=\"")
631			if templ_7745c5c3_Err != nil {
632				return templ_7745c5c3_Err
633			}
634			var templ_7745c5c3_Var34 string
635			templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue("job-" + j.ID)
636			if templ_7745c5c3_Err != nil {
637				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 83, Col: 25}
638			}
639			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34)
640			if templ_7745c5c3_Err != nil {
641				return templ_7745c5c3_Err
642			}
643			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\"><a class=\"job-h\" href=\"")
644			if templ_7745c5c3_Err != nil {
645				return templ_7745c5c3_Err
646			}
647			var templ_7745c5c3_Var35 templ.SafeURL
648			templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(j.Href))
649			if templ_7745c5c3_Err != nil {
650				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 84, Col: 49}
651			}
652			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
653			if templ_7745c5c3_Err != nil {
654				return templ_7745c5c3_Err
655			}
656			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\">")
657			if templ_7745c5c3_Err != nil {
658				return templ_7745c5c3_Err
659			}
660			templ_7745c5c3_Err = CheckIcon(j.Kind, j.State).Render(ctx, templ_7745c5c3_Buffer)
661			if templ_7745c5c3_Err != nil {
662				return templ_7745c5c3_Err
663			}
664			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<span class=\"j-name\">")
665			if templ_7745c5c3_Err != nil {
666				return templ_7745c5c3_Err
667			}
668			var templ_7745c5c3_Var36 string
669			templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(j.Name)
670			if templ_7745c5c3_Err != nil {
671				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 86, Col: 34}
672			}
673			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
674			if templ_7745c5c3_Err != nil {
675				return templ_7745c5c3_Err
676			}
677			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</span> <span class=\"dim\">")
678			if templ_7745c5c3_Err != nil {
679				return templ_7745c5c3_Err
680			}
681			var templ_7745c5c3_Var37 string
682			templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(j.State)
683			if templ_7745c5c3_Err != nil {
684				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 87, Col: 32}
685			}
686			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
687			if templ_7745c5c3_Err != nil {
688				return templ_7745c5c3_Err
689			}
690			var templ_7745c5c3_Var38 string
691			templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
692			if templ_7745c5c3_Err != nil {
693				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 87, Col: 39}
694			}
695			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
696			if templ_7745c5c3_Err != nil {
697				return templ_7745c5c3_Err
698			}
699			var templ_7745c5c3_Var39 string
700			templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(j.Duration)
701			if templ_7745c5c3_Err != nil {
702				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 87, Col: 53}
703			}
704			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
705			if templ_7745c5c3_Err != nil {
706				return templ_7745c5c3_Err
707			}
708			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</span></a> ")
709			if templ_7745c5c3_Err != nil {
710				return templ_7745c5c3_Err
711			}
712			if j.Runner != "" {
713				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<span class=\"mute\">on ")
714				if templ_7745c5c3_Err != nil {
715					return templ_7745c5c3_Err
716				}
717				var templ_7745c5c3_Var40 string
718				templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(runnerText(j))
719				if templ_7745c5c3_Err != nil {
720					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 90, Col: 42}
721				}
722				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
723				if templ_7745c5c3_Err != nil {
724					return templ_7745c5c3_Err
725				}
726				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</span> ")
727				if templ_7745c5c3_Err != nil {
728					return templ_7745c5c3_Err
729				}
730			}
731			if len(j.Needs) > 0 {
732				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<span class=\"mute\">needs ")
733				if templ_7745c5c3_Err != nil {
734					return templ_7745c5c3_Err
735				}
736				var templ_7745c5c3_Var41 string
737				templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(joinWords(j.Needs))
738				if templ_7745c5c3_Err != nil {
739					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 93, Col: 50}
740				}
741				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
742				if templ_7745c5c3_Err != nil {
743					return templ_7745c5c3_Err
744				}
745				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</span> ")
746				if templ_7745c5c3_Err != nil {
747					return templ_7745c5c3_Err
748				}
749			}
750			if j.Error != "" {
751				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<p class=\"job-err\">")
752				if templ_7745c5c3_Err != nil {
753					return templ_7745c5c3_Err
754				}
755				var templ_7745c5c3_Var42 string
756				templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(j.Error)
757				if templ_7745c5c3_Err != nil {
758					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 96, Col: 33}
759				}
760				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
761				if templ_7745c5c3_Err != nil {
762					return templ_7745c5c3_Err
763				}
764				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</p>")
765				if templ_7745c5c3_Err != nil {
766					return templ_7745c5c3_Err
767				}
768			}
769			if len(j.Steps) > 0 {
770				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<ol class=\"steps\">")
771				if templ_7745c5c3_Err != nil {
772					return templ_7745c5c3_Err
773				}
774				for _, s := range j.Steps {
775					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "<li>")
776					if templ_7745c5c3_Err != nil {
777						return templ_7745c5c3_Err
778					}
779					templ_7745c5c3_Err = CheckIcon(s.Kind, s.State).Render(ctx, templ_7745c5c3_Buffer)
780					if templ_7745c5c3_Err != nil {
781						return templ_7745c5c3_Err
782					}
783					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<span>")
784					if templ_7745c5c3_Err != nil {
785						return templ_7745c5c3_Err
786					}
787					var templ_7745c5c3_Var43 string
788					templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(s.Name)
789					if templ_7745c5c3_Err != nil {
790						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 101, Col: 53}
791					}
792					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
793					if templ_7745c5c3_Err != nil {
794						return templ_7745c5c3_Err
795					}
796					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</span> <span class=\"dim\">")
797					if templ_7745c5c3_Err != nil {
798						return templ_7745c5c3_Err
799					}
800					var templ_7745c5c3_Var44 string
801					templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(s.Duration)
802					if templ_7745c5c3_Err != nil {
803						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 101, Col: 93}
804					}
805					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
806					if templ_7745c5c3_Err != nil {
807						return templ_7745c5c3_Err
808					}
809					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</span></li>")
810					if templ_7745c5c3_Err != nil {
811						return templ_7745c5c3_Err
812					}
813				}
814				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</ol>")
815				if templ_7745c5c3_Err != nil {
816					return templ_7745c5c3_Err
817				}
818			}
819			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</li>")
820			if templ_7745c5c3_Err != nil {
821				return templ_7745c5c3_Err
822			}
823		}
824		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</ul>")
825		if templ_7745c5c3_Err != nil {
826			return templ_7745c5c3_Err
827		}
828		return nil
829	})
830}
831
832func runRail(p RunPage) templ.Component {
833	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
834		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
835		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
836			return templ_7745c5c3_CtxErr
837		}
838		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
839		if !templ_7745c5c3_IsBuffer {
840			defer func() {
841				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
842				if templ_7745c5c3_Err == nil {
843					templ_7745c5c3_Err = templ_7745c5c3_BufErr
844				}
845			}()
846		}
847		ctx = templ.InitializeContext(ctx)
848		templ_7745c5c3_Var45 := templ.GetChildren(ctx)
849		if templ_7745c5c3_Var45 == nil {
850			templ_7745c5c3_Var45 = templ.NopComponent
851		}
852		ctx = templ.ClearChildren(ctx)
853		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "<section aria-labelledby=\"r-run\"><h2 id=\"r-run\">Run</h2><dl class=\"kv\"><dt>result</dt><dd>")
854		if templ_7745c5c3_Err != nil {
855			return templ_7745c5c3_Err
856		}
857		var templ_7745c5c3_Var46 string
858		templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.State)
859		if templ_7745c5c3_Err != nil {
860			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 115, Col: 16}
861		}
862		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
863		if templ_7745c5c3_Err != nil {
864			return templ_7745c5c3_Err
865		}
866		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</dd><dt>commit</dt><dd><a href=\"")
867		if templ_7745c5c3_Err != nil {
868			return templ_7745c5c3_Err
869		}
870		var templ_7745c5c3_Var47 templ.SafeURL
871		templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.CHref))
872		if templ_7745c5c3_Err != nil {
873			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 117, Col: 39}
874		}
875		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
876		if templ_7745c5c3_Err != nil {
877			return templ_7745c5c3_Err
878		}
879		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "\">")
880		if templ_7745c5c3_Err != nil {
881			return templ_7745c5c3_Err
882		}
883		var templ_7745c5c3_Var48 string
884		templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(p.Short)
885		if templ_7745c5c3_Err != nil {
886			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 117, Col: 51}
887		}
888		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
889		if templ_7745c5c3_Err != nil {
890			return templ_7745c5c3_Err
891		}
892		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "</a></dd><dt>ref</dt><dd><a href=\"")
893		if templ_7745c5c3_Err != nil {
894			return templ_7745c5c3_Err
895		}
896		var templ_7745c5c3_Var49 templ.SafeURL
897		templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RefHref))
898		if templ_7745c5c3_Err != nil {
899			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 119, Col: 41}
900		}
901		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
902		if templ_7745c5c3_Err != nil {
903			return templ_7745c5c3_Err
904		}
905		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\">")
906		if templ_7745c5c3_Err != nil {
907			return templ_7745c5c3_Err
908		}
909		var templ_7745c5c3_Var50 string
910		templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(p.Ref)
911		if templ_7745c5c3_Err != nil {
912			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 119, Col: 51}
913		}
914		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50))
915		if templ_7745c5c3_Err != nil {
916			return templ_7745c5c3_Err
917		}
918		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</a></dd><dt>actor</dt><dd>")
919		if templ_7745c5c3_Err != nil {
920			return templ_7745c5c3_Err
921		}
922		var templ_7745c5c3_Var51 string
923		templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(p.Actor)
924		if templ_7745c5c3_Err != nil {
925			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 121, Col: 16}
926		}
927		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
928		if templ_7745c5c3_Err != nil {
929			return templ_7745c5c3_Err
930		}
931		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</dd><dt>attempt</dt><dd>")
932		if templ_7745c5c3_Err != nil {
933			return templ_7745c5c3_Err
934		}
935		var templ_7745c5c3_Var52 string
936		templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(int(p.Attempt)))
937		if templ_7745c5c3_Err != nil {
938			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 123, Col: 29}
939		}
940		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
941		if templ_7745c5c3_Err != nil {
942			return templ_7745c5c3_Err
943		}
944		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, " of ")
945		if templ_7745c5c3_Err != nil {
946			return templ_7745c5c3_Err
947		}
948		var templ_7745c5c3_Var53 string
949		templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(int(p.Latest)))
950		if templ_7745c5c3_Err != nil {
951			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 123, Col: 56}
952		}
953		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53))
954		if templ_7745c5c3_Err != nil {
955			return templ_7745c5c3_Err
956		}
957		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</dd></dl>")
958		if templ_7745c5c3_Err != nil {
959			return templ_7745c5c3_Err
960		}
961		if len(p.Attempts) > 0 {
962			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<ul class=\"attempts\">")
963			if templ_7745c5c3_Err != nil {
964				return templ_7745c5c3_Err
965			}
966			for _, a := range p.Attempts {
967				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<li>")
968				if templ_7745c5c3_Err != nil {
969					return templ_7745c5c3_Err
970				}
971				if a.Current {
972					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<span aria-current=\"page\">")
973					if templ_7745c5c3_Err != nil {
974						return templ_7745c5c3_Err
975					}
976					var templ_7745c5c3_Var54 string
977					templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(a.Label)
978					if templ_7745c5c3_Err != nil {
979						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 130, Col: 42}
980					}
981					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
982					if templ_7745c5c3_Err != nil {
983						return templ_7745c5c3_Err
984					}
985					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</span>")
986					if templ_7745c5c3_Err != nil {
987						return templ_7745c5c3_Err
988					}
989				} else {
990					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<a href=\"")
991					if templ_7745c5c3_Err != nil {
992						return templ_7745c5c3_Err
993					}
994					var templ_7745c5c3_Var55 templ.SafeURL
995					templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.Href))
996					if templ_7745c5c3_Err != nil {
997						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 132, Col: 38}
998					}
999					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1000					if templ_7745c5c3_Err != nil {
1001						return templ_7745c5c3_Err
1002					}
1003					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "\">")
1004					if templ_7745c5c3_Err != nil {
1005						return templ_7745c5c3_Err
1006					}
1007					var templ_7745c5c3_Var56 string
1008					templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(a.Label)
1009					if templ_7745c5c3_Err != nil {
1010						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 132, Col: 50}
1011					}
1012					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1013					if templ_7745c5c3_Err != nil {
1014						return templ_7745c5c3_Err
1015					}
1016					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</a>")
1017					if templ_7745c5c3_Err != nil {
1018						return templ_7745c5c3_Err
1019					}
1020				}
1021				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</li>")
1022				if templ_7745c5c3_Err != nil {
1023					return templ_7745c5c3_Err
1024				}
1025			}
1026			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</ul>")
1027			if templ_7745c5c3_Err != nil {
1028				return templ_7745c5c3_Err
1029			}
1030		}
1031		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</section>")
1032		if templ_7745c5c3_Err != nil {
1033			return templ_7745c5c3_Err
1034		}
1035		if p.CancelAction != "" || p.RerunAction != "" {
1036			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<section aria-labelledby=\"r-act\" class=\"decide\"><h2 id=\"r-act\">Actions</h2><div class=\"d-btns\">")
1037			if templ_7745c5c3_Err != nil {
1038				return templ_7745c5c3_Err
1039			}
1040			if p.CancelAction != "" {
1041				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<form method=\"post\" action=\"")
1042				if templ_7745c5c3_Err != nil {
1043					return templ_7745c5c3_Err
1044				}
1045				var templ_7745c5c3_Var57 templ.SafeURL
1046				templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.CancelAction))
1047				if templ_7745c5c3_Err != nil {
1048					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 144, Col: 63}
1049				}
1050				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57))
1051				if templ_7745c5c3_Err != nil {
1052					return templ_7745c5c3_Err
1053				}
1054				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\"><button type=\"submit\" class=\"btn\">Cancel run</button></form>")
1055				if templ_7745c5c3_Err != nil {
1056					return templ_7745c5c3_Err
1057				}
1058			}
1059			if p.RerunAction != "" {
1060				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<form method=\"post\" action=\"")
1061				if templ_7745c5c3_Err != nil {
1062					return templ_7745c5c3_Err
1063				}
1064				var templ_7745c5c3_Var58 templ.SafeURL
1065				templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RerunAction))
1066				if templ_7745c5c3_Err != nil {
1067					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 147, Col: 62}
1068				}
1069				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58))
1070				if templ_7745c5c3_Err != nil {
1071					return templ_7745c5c3_Err
1072				}
1073				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "\"><button type=\"submit\" class=\"btn primary\">Re-run all jobs</button></form>")
1074				if templ_7745c5c3_Err != nil {
1075					return templ_7745c5c3_Err
1076				}
1077			}
1078			if p.CanRerunFailed {
1079				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<form method=\"post\" action=\"")
1080				if templ_7745c5c3_Err != nil {
1081					return templ_7745c5c3_Err
1082				}
1083				var templ_7745c5c3_Var59 templ.SafeURL
1084				templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RerunFailedAction))
1085				if templ_7745c5c3_Err != nil {
1086					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 150, Col: 68}
1087				}
1088				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59))
1089				if templ_7745c5c3_Err != nil {
1090					return templ_7745c5c3_Err
1091				}
1092				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "\"><button type=\"submit\" class=\"btn\">Re-run failed jobs</button></form>")
1093				if templ_7745c5c3_Err != nil {
1094					return templ_7745c5c3_Err
1095				}
1096			}
1097			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</div></section>")
1098			if templ_7745c5c3_Err != nil {
1099				return templ_7745c5c3_Err
1100			}
1101		}
1102		return nil
1103	})
1104}
1105
1106// JobHead is the title of the job page with its state and its error, replaced
1107// by the live updates. total is the number of lines the log holds.
1108func JobHead(j JobRow, total int64) templ.Component {
1109	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1110		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1111		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1112			return templ_7745c5c3_CtxErr
1113		}
1114		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1115		if !templ_7745c5c3_IsBuffer {
1116			defer func() {
1117				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1118				if templ_7745c5c3_Err == nil {
1119					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1120				}
1121			}()
1122		}
1123		ctx = templ.InitializeContext(ctx)
1124		templ_7745c5c3_Var60 := templ.GetChildren(ctx)
1125		if templ_7745c5c3_Var60 == nil {
1126			templ_7745c5c3_Var60 = templ.NopComponent
1127		}
1128		ctx = templ.ClearChildren(ctx)
1129		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<div id=\"job-head\" data-total=\"")
1130		if templ_7745c5c3_Err != nil {
1131			return templ_7745c5c3_Err
1132		}
1133		var templ_7745c5c3_Var61 string
1134		templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(total))
1135		if templ_7745c5c3_Err != nil {
1136			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 160, Col: 46}
1137		}
1138		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var61)
1139		if templ_7745c5c3_Err != nil {
1140			return templ_7745c5c3_Err
1141		}
1142		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\"><h2 class=\"run-h\">")
1143		if templ_7745c5c3_Err != nil {
1144			return templ_7745c5c3_Err
1145		}
1146		templ_7745c5c3_Err = CheckIcon(j.Kind, j.State).Render(ctx, templ_7745c5c3_Buffer)
1147		if templ_7745c5c3_Err != nil {
1148			return templ_7745c5c3_Err
1149		}
1150		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<span>")
1151		if templ_7745c5c3_Err != nil {
1152			return templ_7745c5c3_Err
1153		}
1154		var templ_7745c5c3_Var62 string
1155		templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(j.Name)
1156		if templ_7745c5c3_Err != nil {
1157			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 161, Col: 61}
1158		}
1159		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1160		if templ_7745c5c3_Err != nil {
1161			return templ_7745c5c3_Err
1162		}
1163		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</span> <span class=\"dim\">")
1164		if templ_7745c5c3_Err != nil {
1165			return templ_7745c5c3_Err
1166		}
1167		var templ_7745c5c3_Var63 string
1168		templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(j.State)
1169		if templ_7745c5c3_Err != nil {
1170			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 161, Col: 98}
1171		}
1172		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63))
1173		if templ_7745c5c3_Err != nil {
1174			return templ_7745c5c3_Err
1175		}
1176		var templ_7745c5c3_Var64 string
1177		templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1178		if templ_7745c5c3_Err != nil {
1179			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 161, Col: 105}
1180		}
1181		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1182		if templ_7745c5c3_Err != nil {
1183			return templ_7745c5c3_Err
1184		}
1185		var templ_7745c5c3_Var65 string
1186		templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(j.Duration)
1187		if templ_7745c5c3_Err != nil {
1188			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 161, Col: 119}
1189		}
1190		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1191		if templ_7745c5c3_Err != nil {
1192			return templ_7745c5c3_Err
1193		}
1194		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</span></h2>")
1195		if templ_7745c5c3_Err != nil {
1196			return templ_7745c5c3_Err
1197		}
1198		if j.Error != "" {
1199			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<p class=\"job-err\">")
1200			if templ_7745c5c3_Err != nil {
1201				return templ_7745c5c3_Err
1202			}
1203			var templ_7745c5c3_Var66 string
1204			templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(j.Error)
1205			if templ_7745c5c3_Err != nil {
1206				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 163, Col: 31}
1207			}
1208			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))
1209			if templ_7745c5c3_Err != nil {
1210				return templ_7745c5c3_Err
1211			}
1212			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</p>")
1213			if templ_7745c5c3_Err != nil {
1214				return templ_7745c5c3_Err
1215			}
1216		}
1217		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</div>")
1218		if templ_7745c5c3_Err != nil {
1219			return templ_7745c5c3_Err
1220		}
1221		return nil
1222	})
1223}
1224
1225// JobSteps is the steps of the job in the rail, replaced by the live updates.
1226func JobSteps(steps []StepView) templ.Component {
1227	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1228		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1229		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1230			return templ_7745c5c3_CtxErr
1231		}
1232		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1233		if !templ_7745c5c3_IsBuffer {
1234			defer func() {
1235				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1236				if templ_7745c5c3_Err == nil {
1237					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1238				}
1239			}()
1240		}
1241		ctx = templ.InitializeContext(ctx)
1242		templ_7745c5c3_Var67 := templ.GetChildren(ctx)
1243		if templ_7745c5c3_Var67 == nil {
1244			templ_7745c5c3_Var67 = templ.NopComponent
1245		}
1246		ctx = templ.ClearChildren(ctx)
1247		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "<ol class=\"steps\" id=\"job-steps\">")
1248		if templ_7745c5c3_Err != nil {
1249			return templ_7745c5c3_Err
1250		}
1251		for _, s := range steps {
1252			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<li>")
1253			if templ_7745c5c3_Err != nil {
1254				return templ_7745c5c3_Err
1255			}
1256			templ_7745c5c3_Err = CheckIcon(s.Kind, s.State).Render(ctx, templ_7745c5c3_Buffer)
1257			if templ_7745c5c3_Err != nil {
1258				return templ_7745c5c3_Err
1259			}
1260			if s.LogEnd > s.LogStart {
1261				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "<a href=\"")
1262				if templ_7745c5c3_Err != nil {
1263					return templ_7745c5c3_Err
1264				}
1265				var templ_7745c5c3_Var68 templ.SafeURL
1266				templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#L" + itoa64(s.LogStart)))
1267				if templ_7745c5c3_Err != nil {
1268					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 175, Col: 55}
1269				}
1270				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1271				if templ_7745c5c3_Err != nil {
1272					return templ_7745c5c3_Err
1273				}
1274				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\">")
1275				if templ_7745c5c3_Err != nil {
1276					return templ_7745c5c3_Err
1277				}
1278				var templ_7745c5c3_Var69 string
1279				templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(s.Name)
1280				if templ_7745c5c3_Err != nil {
1281					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 175, Col: 66}
1282				}
1283				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
1284				if templ_7745c5c3_Err != nil {
1285					return templ_7745c5c3_Err
1286				}
1287				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</a> ")
1288				if templ_7745c5c3_Err != nil {
1289					return templ_7745c5c3_Err
1290				}
1291			} else {
1292				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<span>")
1293				if templ_7745c5c3_Err != nil {
1294					return templ_7745c5c3_Err
1295				}
1296				var templ_7745c5c3_Var70 string
1297				templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(s.Name)
1298				if templ_7745c5c3_Err != nil {
1299					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 177, Col: 19}
1300				}
1301				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70))
1302				if templ_7745c5c3_Err != nil {
1303					return templ_7745c5c3_Err
1304				}
1305				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</span> ")
1306				if templ_7745c5c3_Err != nil {
1307					return templ_7745c5c3_Err
1308				}
1309			}
1310			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<span class=\"dim\">")
1311			if templ_7745c5c3_Err != nil {
1312				return templ_7745c5c3_Err
1313			}
1314			var templ_7745c5c3_Var71 string
1315			templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(s.Duration)
1316			if templ_7745c5c3_Err != nil {
1317				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 179, Col: 34}
1318			}
1319			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))
1320			if templ_7745c5c3_Err != nil {
1321				return templ_7745c5c3_Err
1322			}
1323			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</span></li>")
1324			if templ_7745c5c3_Err != nil {
1325				return templ_7745c5c3_Err
1326			}
1327		}
1328		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "</ol>")
1329		if templ_7745c5c3_Err != nil {
1330			return templ_7745c5c3_Err
1331		}
1332		return nil
1333	})
1334}
1335
1336func Job(l Layout, p JobPage) templ.Component {
1337	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1338		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1339		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1340			return templ_7745c5c3_CtxErr
1341		}
1342		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1343		if !templ_7745c5c3_IsBuffer {
1344			defer func() {
1345				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1346				if templ_7745c5c3_Err == nil {
1347					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1348				}
1349			}()
1350		}
1351		ctx = templ.InitializeContext(ctx)
1352		templ_7745c5c3_Var72 := templ.GetChildren(ctx)
1353		if templ_7745c5c3_Var72 == nil {
1354			templ_7745c5c3_Var72 = templ.NopComponent
1355		}
1356		ctx = templ.ClearChildren(ctx)
1357		templ_7745c5c3_Var73 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1358			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1359			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1360			if !templ_7745c5c3_IsBuffer {
1361				defer func() {
1362					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1363					if templ_7745c5c3_Err == nil {
1364						templ_7745c5c3_Err = templ_7745c5c3_BufErr
1365					}
1366				}()
1367			}
1368			ctx = templ.InitializeContext(ctx)
1369			templ_7745c5c3_Err = LiveSlot("job-notice").Render(ctx, templ_7745c5c3_Buffer)
1370			if templ_7745c5c3_Err != nil {
1371				return templ_7745c5c3_Err
1372			}
1373			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, " ")
1374			if templ_7745c5c3_Err != nil {
1375				return templ_7745c5c3_Err
1376			}
1377			templ_7745c5c3_Err = JobHead(p.JobRow, p.Total).Render(ctx, templ_7745c5c3_Buffer)
1378			if templ_7745c5c3_Err != nil {
1379				return templ_7745c5c3_Err
1380			}
1381			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, " <div id=\"job-log\" class=\"joblog\" data-total=\"")
1382			if templ_7745c5c3_Err != nil {
1383				return templ_7745c5c3_Err
1384			}
1385			var templ_7745c5c3_Var74 string
1386			templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(p.Total))
1387			if templ_7745c5c3_Err != nil {
1388				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 189, Col: 63}
1389			}
1390			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74)
1391			if templ_7745c5c3_Err != nil {
1392				return templ_7745c5c3_Err
1393			}
1394			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\"")
1395			if templ_7745c5c3_Err != nil {
1396				return templ_7745c5c3_Err
1397			}
1398			if p.Follow {
1399				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, " data-follow")
1400				if templ_7745c5c3_Err != nil {
1401					return templ_7745c5c3_Err
1402				}
1403			}
1404			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, " data-stream=\"")
1405			if templ_7745c5c3_Err != nil {
1406				return templ_7745c5c3_Err
1407			}
1408			var templ_7745c5c3_Var75 string
1409			templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.StreamHref)
1410			if templ_7745c5c3_Err != nil {
1411				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 189, Col: 118}
1412			}
1413			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75)
1414			if templ_7745c5c3_Err != nil {
1415				return templ_7745c5c3_Err
1416			}
1417			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "\" data-next=\"")
1418			if templ_7745c5c3_Err != nil {
1419				return templ_7745c5c3_Err
1420			}
1421			var templ_7745c5c3_Var76 string
1422			templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(p.From + int64(len(p.Lines))))
1423			if templ_7745c5c3_Err != nil {
1424				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 189, Col: 169}
1425			}
1426			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var76)
1427			if templ_7745c5c3_Err != nil {
1428				return templ_7745c5c3_Err
1429			}
1430			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "\">")
1431			if templ_7745c5c3_Err != nil {
1432				return templ_7745c5c3_Err
1433			}
1434			if p.Note != "" {
1435				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "<p class=\"dim\">")
1436				if templ_7745c5c3_Err != nil {
1437					return templ_7745c5c3_Err
1438				}
1439				var templ_7745c5c3_Var77 string
1440				templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
1441				if templ_7745c5c3_Err != nil {
1442					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 191, Col: 27}
1443				}
1444				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var77))
1445				if templ_7745c5c3_Err != nil {
1446					return templ_7745c5c3_Err
1447				}
1448				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "</p>")
1449				if templ_7745c5c3_Err != nil {
1450					return templ_7745c5c3_Err
1451				}
1452			}
1453			if p.Prev != "" {
1454				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "<p class=\"more\"><a href=\"")
1455				if templ_7745c5c3_Err != nil {
1456					return templ_7745c5c3_Err
1457				}
1458				var templ_7745c5c3_Var78 templ.SafeURL
1459				templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Prev))
1460				if templ_7745c5c3_Err != nil {
1461					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 194, Col: 51}
1462				}
1463				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
1464				if templ_7745c5c3_Err != nil {
1465					return templ_7745c5c3_Err
1466				}
1467				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "\" rel=\"prev\">earlier lines</a></p>")
1468				if templ_7745c5c3_Err != nil {
1469					return templ_7745c5c3_Err
1470				}
1471			}
1472			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<ol class=\"log\" start=\"")
1473			if templ_7745c5c3_Err != nil {
1474				return templ_7745c5c3_Err
1475			}
1476			var templ_7745c5c3_Var79 string
1477			templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa64(p.From + 1))
1478			if templ_7745c5c3_Err != nil {
1479				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 196, Col: 45}
1480			}
1481			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var79)
1482			if templ_7745c5c3_Err != nil {
1483				return templ_7745c5c3_Err
1484			}
1485			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "\">")
1486			if templ_7745c5c3_Err != nil {
1487				return templ_7745c5c3_Err
1488			}
1489			for _, ln := range p.Lines {
1490				templ_7745c5c3_Err = LogLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1491				if templ_7745c5c3_Err != nil {
1492					return templ_7745c5c3_Err
1493				}
1494			}
1495			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "</ol>")
1496			if templ_7745c5c3_Err != nil {
1497				return templ_7745c5c3_Err
1498			}
1499			if p.Next != "" {
1500				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "<p class=\"more\"><a href=\"")
1501				if templ_7745c5c3_Err != nil {
1502					return templ_7745c5c3_Err
1503				}
1504				var templ_7745c5c3_Var80 templ.SafeURL
1505				templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Next))
1506				if templ_7745c5c3_Err != nil {
1507					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 202, Col: 51}
1508				}
1509				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var80))
1510				if templ_7745c5c3_Err != nil {
1511					return templ_7745c5c3_Err
1512				}
1513				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "\" rel=\"next\">more lines</a></p>")
1514				if templ_7745c5c3_Err != nil {
1515					return templ_7745c5c3_Err
1516				}
1517			}
1518			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "</div>")
1519			if templ_7745c5c3_Err != nil {
1520				return templ_7745c5c3_Err
1521			}
1522			return nil
1523		})
1524		templ_7745c5c3_Err = Shell(l, jobRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var73), templ_7745c5c3_Buffer)
1525		if templ_7745c5c3_Err != nil {
1526			return templ_7745c5c3_Err
1527		}
1528		return nil
1529	})
1530}
1531
1532// LogLine is a line of the log. Group and error markers of the runner show as
1533// headings and errors, never as raw text.
1534func LogLine(ln LogLineView) templ.Component {
1535	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1536		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1537		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1538			return templ_7745c5c3_CtxErr
1539		}
1540		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1541		if !templ_7745c5c3_IsBuffer {
1542			defer func() {
1543				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1544				if templ_7745c5c3_Err == nil {
1545					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1546				}
1547			}()
1548		}
1549		ctx = templ.InitializeContext(ctx)
1550		templ_7745c5c3_Var81 := templ.GetChildren(ctx)
1551		if templ_7745c5c3_Var81 == nil {
1552			templ_7745c5c3_Var81 = templ.NopComponent
1553		}
1554		ctx = templ.ClearChildren(ctx)
1555		var templ_7745c5c3_Var82 = []any{logClass(ln)}
1556		templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var82...)
1557		if templ_7745c5c3_Err != nil {
1558			return templ_7745c5c3_Err
1559		}
1560		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "<li id=\"")
1561		if templ_7745c5c3_Err != nil {
1562			return templ_7745c5c3_Err
1563		}
1564		var templ_7745c5c3_Var83 string
1565		templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.ResolveAttributeValue("L" + itoa64(ln.N))
1566		if templ_7745c5c3_Err != nil {
1567			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 211, Col: 28}
1568		}
1569		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var83)
1570		if templ_7745c5c3_Err != nil {
1571			return templ_7745c5c3_Err
1572		}
1573		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "\" class=\"")
1574		if templ_7745c5c3_Err != nil {
1575			return templ_7745c5c3_Err
1576		}
1577		var templ_7745c5c3_Var84 string
1578		templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var82).String())
1579		if templ_7745c5c3_Err != nil {
1580			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 1, Col: 0}
1581		}
1582		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var84)
1583		if templ_7745c5c3_Err != nil {
1584			return templ_7745c5c3_Err
1585		}
1586		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "\" data-step=\"")
1587		if templ_7745c5c3_Err != nil {
1588			return templ_7745c5c3_Err
1589		}
1590		var templ_7745c5c3_Var85 string
1591		templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(int(ln.Step)))
1592		if templ_7745c5c3_Err != nil {
1593			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 211, Col: 84}
1594		}
1595		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var85)
1596		if templ_7745c5c3_Err != nil {
1597			return templ_7745c5c3_Err
1598		}
1599		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "\"")
1600		if templ_7745c5c3_Err != nil {
1601			return templ_7745c5c3_Err
1602		}
1603		if ln.Continued {
1604			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, " data-cont")
1605			if templ_7745c5c3_Err != nil {
1606				return templ_7745c5c3_Err
1607			}
1608		}
1609		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "><time>")
1610		if templ_7745c5c3_Err != nil {
1611			return templ_7745c5c3_Err
1612		}
1613		var templ_7745c5c3_Var86 string
1614		templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Time)
1615		if templ_7745c5c3_Err != nil {
1616			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 211, Col: 130}
1617		}
1618		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var86))
1619		if templ_7745c5c3_Err != nil {
1620			return templ_7745c5c3_Err
1621		}
1622		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "</time><span class=\"t\">")
1623		if templ_7745c5c3_Err != nil {
1624			return templ_7745c5c3_Err
1625		}
1626		var templ_7745c5c3_Var87 string
1627		templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Text)
1628		if templ_7745c5c3_Err != nil {
1629			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 211, Col: 164}
1630		}
1631		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var87))
1632		if templ_7745c5c3_Err != nil {
1633			return templ_7745c5c3_Err
1634		}
1635		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "</span></li>")
1636		if templ_7745c5c3_Err != nil {
1637			return templ_7745c5c3_Err
1638		}
1639		return nil
1640	})
1641}
1642
1643func jobRail(p JobPage) templ.Component {
1644	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1645		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1646		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1647			return templ_7745c5c3_CtxErr
1648		}
1649		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1650		if !templ_7745c5c3_IsBuffer {
1651			defer func() {
1652				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1653				if templ_7745c5c3_Err == nil {
1654					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1655				}
1656			}()
1657		}
1658		ctx = templ.InitializeContext(ctx)
1659		templ_7745c5c3_Var88 := templ.GetChildren(ctx)
1660		if templ_7745c5c3_Var88 == nil {
1661			templ_7745c5c3_Var88 = templ.NopComponent
1662		}
1663		ctx = templ.ClearChildren(ctx)
1664		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "<section aria-labelledby=\"r-job\"><h2 id=\"r-job\">Steps</h2>")
1665		if templ_7745c5c3_Err != nil {
1666			return templ_7745c5c3_Err
1667		}
1668		templ_7745c5c3_Err = JobSteps(p.Steps).Render(ctx, templ_7745c5c3_Buffer)
1669		if templ_7745c5c3_Err != nil {
1670			return templ_7745c5c3_Err
1671		}
1672		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "</section><section aria-labelledby=\"r-jobf\"><h2 id=\"r-jobf\">Job</h2><dl class=\"kv\"><dt>run</dt><dd><a href=\"")
1673		if templ_7745c5c3_Err != nil {
1674			return templ_7745c5c3_Err
1675		}
1676		var templ_7745c5c3_Var89 templ.SafeURL
1677		templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RunHref))
1678		if templ_7745c5c3_Err != nil {
1679			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 223, Col: 41}
1680		}
1681		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var89))
1682		if templ_7745c5c3_Err != nil {
1683			return templ_7745c5c3_Err
1684		}
1685		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "\">")
1686		if templ_7745c5c3_Err != nil {
1687			return templ_7745c5c3_Err
1688		}
1689		var templ_7745c5c3_Var90 string
1690		templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.JoinStringErrs(p.RunName)
1691		if templ_7745c5c3_Err != nil {
1692			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 223, Col: 55}
1693		}
1694		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var90))
1695		if templ_7745c5c3_Err != nil {
1696			return templ_7745c5c3_Err
1697		}
1698		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "</a></dd>")
1699		if templ_7745c5c3_Err != nil {
1700			return templ_7745c5c3_Err
1701		}
1702		if p.Runner != "" {
1703			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "<dt>runner</dt><dd>")
1704			if templ_7745c5c3_Err != nil {
1705				return templ_7745c5c3_Err
1706			}
1707			var templ_7745c5c3_Var91 string
1708			templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.JoinStringErrs(p.Runner)
1709			if templ_7745c5c3_Err != nil {
1710				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 226, Col: 18}
1711			}
1712			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var91))
1713			if templ_7745c5c3_Err != nil {
1714				return templ_7745c5c3_Err
1715			}
1716			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, "</dd>")
1717			if templ_7745c5c3_Err != nil {
1718				return templ_7745c5c3_Err
1719			}
1720		}
1721		if p.Isolation != "" {
1722			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "<dt>isolation</dt><dd>")
1723			if templ_7745c5c3_Err != nil {
1724				return templ_7745c5c3_Err
1725			}
1726			var templ_7745c5c3_Var92 string
1727			templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.JoinStringErrs(p.Isolation)
1728			if templ_7745c5c3_Err != nil {
1729				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 230, Col: 21}
1730			}
1731			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var92))
1732			if templ_7745c5c3_Err != nil {
1733				return templ_7745c5c3_Err
1734			}
1735			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "</dd>")
1736			if templ_7745c5c3_Err != nil {
1737				return templ_7745c5c3_Err
1738			}
1739		}
1740		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "<dt>lines</dt><dd>")
1741		if templ_7745c5c3_Err != nil {
1742			return templ_7745c5c3_Err
1743		}
1744		var templ_7745c5c3_Var93 string
1745		templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinStringErrs(itoa64(p.Total))
1746		if templ_7745c5c3_Err != nil {
1747			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 233, Col: 24}
1748		}
1749		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
1750		if templ_7745c5c3_Err != nil {
1751			return templ_7745c5c3_Err
1752		}
1753		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "</dd></dl><p><a href=\"")
1754		if templ_7745c5c3_Err != nil {
1755			return templ_7745c5c3_Err
1756		}
1757		var templ_7745c5c3_Var94 templ.SafeURL
1758		templ_7745c5c3_Var94, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.RawHref))
1759		if templ_7745c5c3_Err != nil {
1760			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 235, Col: 39}
1761		}
1762		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var94))
1763		if templ_7745c5c3_Err != nil {
1764			return templ_7745c5c3_Err
1765		}
1766		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "\">raw log</a></p></section>")
1767		if templ_7745c5c3_Err != nil {
1768			return templ_7745c5c3_Err
1769		}
1770		return nil
1771	})
1772}
1773
1774// CommitChecks is the combined state of the checks of a commit, as a mark
1775// with a count, linking to the page that explains it.
1776func CommitChecks(c ChecksSummary) templ.Component {
1777	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1778		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1779		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1780			return templ_7745c5c3_CtxErr
1781		}
1782		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1783		if !templ_7745c5c3_IsBuffer {
1784			defer func() {
1785				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1786				if templ_7745c5c3_Err == nil {
1787					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1788				}
1789			}()
1790		}
1791		ctx = templ.InitializeContext(ctx)
1792		templ_7745c5c3_Var95 := templ.GetChildren(ctx)
1793		if templ_7745c5c3_Var95 == nil {
1794			templ_7745c5c3_Var95 = templ.NopComponent
1795		}
1796		ctx = templ.ClearChildren(ctx)
1797		if c.Total > 0 {
1798			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "<a class=\"ck-sum\" href=\"")
1799			if templ_7745c5c3_Err != nil {
1800				return templ_7745c5c3_Err
1801			}
1802			var templ_7745c5c3_Var96 templ.SafeURL
1803			templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href))
1804			if templ_7745c5c3_Err != nil {
1805				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 243, Col: 48}
1806			}
1807			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var96))
1808			if templ_7745c5c3_Err != nil {
1809				return templ_7745c5c3_Err
1810			}
1811			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "\" title=\"")
1812			if templ_7745c5c3_Err != nil {
1813				return templ_7745c5c3_Err
1814			}
1815			var templ_7745c5c3_Var97 string
1816			templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Title)
1817			if templ_7745c5c3_Err != nil {
1818				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 243, Col: 66}
1819			}
1820			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var97)
1821			if templ_7745c5c3_Err != nil {
1822				return templ_7745c5c3_Err
1823			}
1824			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, "\">")
1825			if templ_7745c5c3_Err != nil {
1826				return templ_7745c5c3_Err
1827			}
1828			templ_7745c5c3_Err = CheckIcon(c.Kind, c.State).Render(ctx, templ_7745c5c3_Buffer)
1829			if templ_7745c5c3_Err != nil {
1830				return templ_7745c5c3_Err
1831			}
1832			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "<span class=\"mute\">")
1833			if templ_7745c5c3_Err != nil {
1834				return templ_7745c5c3_Err
1835			}
1836			var templ_7745c5c3_Var98 string
1837			templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.JoinStringErrs(c.Label)
1838			if templ_7745c5c3_Err != nil {
1839				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 245, Col: 31}
1840			}
1841			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var98))
1842			if templ_7745c5c3_Err != nil {
1843				return templ_7745c5c3_Err
1844			}
1845			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "</span></a>")
1846			if templ_7745c5c3_Err != nil {
1847				return templ_7745c5c3_Err
1848			}
1849		}
1850		return nil
1851	})
1852}
1853
1854// MRChecks is the checks section of the rail of a merge request.
1855func MRChecks(c ChecksSection) templ.Component {
1856	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1857		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1858		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1859			return templ_7745c5c3_CtxErr
1860		}
1861		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1862		if !templ_7745c5c3_IsBuffer {
1863			defer func() {
1864				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1865				if templ_7745c5c3_Err == nil {
1866					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1867				}
1868			}()
1869		}
1870		ctx = templ.InitializeContext(ctx)
1871		templ_7745c5c3_Var99 := templ.GetChildren(ctx)
1872		if templ_7745c5c3_Var99 == nil {
1873			templ_7745c5c3_Var99 = templ.NopComponent
1874		}
1875		ctx = templ.ClearChildren(ctx)
1876		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "<section aria-labelledby=\"r-checks\" id=\"mr-checks\"><h2 id=\"r-checks\">Checks <span class=\"count\">")
1877		if templ_7745c5c3_Err != nil {
1878			return templ_7745c5c3_Err
1879		}
1880		var templ_7745c5c3_Var100 string
1881		templ_7745c5c3_Var100, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(c.Rows)))
1882		if templ_7745c5c3_Err != nil {
1883			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 253, Col: 66}
1884		}
1885		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var100))
1886		if templ_7745c5c3_Err != nil {
1887			return templ_7745c5c3_Err
1888		}
1889		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "</span></h2>")
1890		if templ_7745c5c3_Err != nil {
1891			return templ_7745c5c3_Err
1892		}
1893		if len(c.Rows) == 0 {
1894			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "<p class=\"dim\">no checks</p>")
1895			if templ_7745c5c3_Err != nil {
1896				return templ_7745c5c3_Err
1897			}
1898		} else {
1899			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "<ul class=\"checks\">")
1900			if templ_7745c5c3_Err != nil {
1901				return templ_7745c5c3_Err
1902			}
1903			for _, r := range c.Rows {
1904				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "<li>")
1905				if templ_7745c5c3_Err != nil {
1906					return templ_7745c5c3_Err
1907				}
1908				templ_7745c5c3_Err = CheckIcon(r.Kind, r.State).Render(ctx, templ_7745c5c3_Buffer)
1909				if templ_7745c5c3_Err != nil {
1910					return templ_7745c5c3_Err
1911				}
1912				if r.Href != "" {
1913					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "<a href=\"")
1914					if templ_7745c5c3_Err != nil {
1915						return templ_7745c5c3_Err
1916					}
1917					var templ_7745c5c3_Var101 templ.SafeURL
1918					templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
1919					if templ_7745c5c3_Err != nil {
1920						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 262, Col: 38}
1921					}
1922					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var101))
1923					if templ_7745c5c3_Err != nil {
1924						return templ_7745c5c3_Err
1925					}
1926					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "\">")
1927					if templ_7745c5c3_Err != nil {
1928						return templ_7745c5c3_Err
1929					}
1930					var templ_7745c5c3_Var102 string
1931					templ_7745c5c3_Var102, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1932					if templ_7745c5c3_Err != nil {
1933						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 262, Col: 49}
1934					}
1935					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var102))
1936					if templ_7745c5c3_Err != nil {
1937						return templ_7745c5c3_Err
1938					}
1939					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "</a> ")
1940					if templ_7745c5c3_Err != nil {
1941						return templ_7745c5c3_Err
1942					}
1943				} else {
1944					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "<span>")
1945					if templ_7745c5c3_Err != nil {
1946						return templ_7745c5c3_Err
1947					}
1948					var templ_7745c5c3_Var103 string
1949					templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
1950					if templ_7745c5c3_Err != nil {
1951						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 264, Col: 21}
1952					}
1953					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))
1954					if templ_7745c5c3_Err != nil {
1955						return templ_7745c5c3_Err
1956					}
1957					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, "</span> ")
1958					if templ_7745c5c3_Err != nil {
1959						return templ_7745c5c3_Err
1960					}
1961				}
1962				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, "<span class=\"dim\">")
1963				if templ_7745c5c3_Err != nil {
1964					return templ_7745c5c3_Err
1965				}
1966				var templ_7745c5c3_Var104 string
1967				templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.JoinStringErrs(r.State)
1968				if templ_7745c5c3_Err != nil {
1969					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 266, Col: 33}
1970				}
1971				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var104))
1972				if templ_7745c5c3_Err != nil {
1973					return templ_7745c5c3_Err
1974				}
1975				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, "</span> ")
1976				if templ_7745c5c3_Err != nil {
1977					return templ_7745c5c3_Err
1978				}
1979				if r.Waiting {
1980					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "<span class=\"mute\">waiting for a runner</span>")
1981					if templ_7745c5c3_Err != nil {
1982						return templ_7745c5c3_Err
1983					}
1984				}
1985				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "</li>")
1986				if templ_7745c5c3_Err != nil {
1987					return templ_7745c5c3_Err
1988				}
1989			}
1990			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "</ul>")
1991			if templ_7745c5c3_Err != nil {
1992				return templ_7745c5c3_Err
1993			}
1994		}
1995		if c.Note != "" {
1996			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "<p class=\"mute\">")
1997			if templ_7745c5c3_Err != nil {
1998				return templ_7745c5c3_Err
1999			}
2000			var templ_7745c5c3_Var105 string
2001			templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.JoinStringErrs(c.Note)
2002			if templ_7745c5c3_Err != nil {
2003				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/actions.templ`, Line: 275, Col: 27}
2004			}
2005			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var105))
2006			if templ_7745c5c3_Err != nil {
2007				return templ_7745c5c3_Err
2008			}
2009			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "</p>")
2010			if templ_7745c5c3_Err != nil {
2011				return templ_7745c5c3_Err
2012			}
2013		}
2014		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "</section>")
2015		if templ_7745c5c3_Err != nil {
2016			return templ_7745c5c3_Err
2017		}
2018		return nil
2019	})
2020}
2021
2022var _ = templruntime.GeneratedTemplate

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 45

↑↓ moveenter openesc close