detached fda3c2b

releases_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// ReleaseBadges are textual as well as visual, including the computed latest.
12func ReleaseBadges(r ReleaseRow) templ.Component {
13	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
14		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
15		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
16			return templ_7745c5c3_CtxErr
17		}
18		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
19		if !templ_7745c5c3_IsBuffer {
20			defer func() {
21				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
22				if templ_7745c5c3_Err == nil {
23					templ_7745c5c3_Err = templ_7745c5c3_BufErr
24				}
25			}()
26		}
27		ctx = templ.InitializeContext(ctx)
28		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
29		if templ_7745c5c3_Var1 == nil {
30			templ_7745c5c3_Var1 = templ.NopComponent
31		}
32		ctx = templ.ClearChildren(ctx)
33		if r.Draft {
34			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<span class=\"pill\">Draft</span> ")
35			if templ_7745c5c3_Err != nil {
36				return templ_7745c5c3_Err
37			}
38		}
39		if r.Prerelease {
40			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<span class=\"pill\">Pre-release</span> ")
41			if templ_7745c5c3_Err != nil {
42				return templ_7745c5c3_Err
43			}
44		}
45		if r.Latest {
46			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<span class=\"pill\">Latest</span>")
47			if templ_7745c5c3_Err != nil {
48				return templ_7745c5c3_Err
49			}
50		}
51		return nil
52	})
53}
54
55func Releases(l Layout, p ReleaseListPage) templ.Component {
56	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
57		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
58		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
59			return templ_7745c5c3_CtxErr
60		}
61		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
62		if !templ_7745c5c3_IsBuffer {
63			defer func() {
64				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
65				if templ_7745c5c3_Err == nil {
66					templ_7745c5c3_Err = templ_7745c5c3_BufErr
67				}
68			}()
69		}
70		ctx = templ.InitializeContext(ctx)
71		templ_7745c5c3_Var2 := templ.GetChildren(ctx)
72		if templ_7745c5c3_Var2 == nil {
73			templ_7745c5c3_Var2 = templ.NopComponent
74		}
75		ctx = templ.ClearChildren(ctx)
76		templ_7745c5c3_Var3 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
77			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
78			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
79			if !templ_7745c5c3_IsBuffer {
80				defer func() {
81					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
82					if templ_7745c5c3_Err == nil {
83						templ_7745c5c3_Err = templ_7745c5c3_BufErr
84					}
85				}()
86			}
87			ctx = templ.InitializeContext(ctx)
88			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<h1>Releases</h1>")
89			if templ_7745c5c3_Err != nil {
90				return templ_7745c5c3_Err
91			}
92			if len(p.Rows) == 0 {
93				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<p class=\"dim\">no releases yet.</p>")
94				if templ_7745c5c3_Err != nil {
95					return templ_7745c5c3_Err
96				}
97			} else {
98				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<table class=\"list\" aria-label=\"Releases\"><thead><tr><th>tag</th><th>title</th><th>published</th><th>assets</th></tr></thead> <tbody>")
99				if templ_7745c5c3_Err != nil {
100					return templ_7745c5c3_Err
101				}
102				for _, r := range p.Rows {
103					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<tr><td><a href=\"")
104					if templ_7745c5c3_Err != nil {
105						return templ_7745c5c3_Err
106					}
107					var templ_7745c5c3_Var4 templ.SafeURL
108					templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
109					if templ_7745c5c3_Err != nil {
110						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 27, Col: 42}
111					}
112					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
113					if templ_7745c5c3_Err != nil {
114						return templ_7745c5c3_Err
115					}
116					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\">")
117					if templ_7745c5c3_Err != nil {
118						return templ_7745c5c3_Err
119					}
120					var templ_7745c5c3_Var5 string
121					templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(r.Tag)
122					if templ_7745c5c3_Err != nil {
123						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 27, Col: 52}
124					}
125					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
126					if templ_7745c5c3_Err != nil {
127						return templ_7745c5c3_Err
128					}
129					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</a></td><td>")
130					if templ_7745c5c3_Err != nil {
131						return templ_7745c5c3_Err
132					}
133					var templ_7745c5c3_Var6 string
134					templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title)
135					if templ_7745c5c3_Err != nil {
136						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 28, Col: 20}
137					}
138					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
139					if templ_7745c5c3_Err != nil {
140						return templ_7745c5c3_Err
141					}
142					templ_7745c5c3_Err = ReleaseBadges(r).Render(ctx, templ_7745c5c3_Buffer)
143					if templ_7745c5c3_Err != nil {
144						return templ_7745c5c3_Err
145					}
146					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</td><td>")
147					if templ_7745c5c3_Err != nil {
148						return templ_7745c5c3_Err
149					}
150					var templ_7745c5c3_Var7 string
151					templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(r.Published)
152					if templ_7745c5c3_Err != nil {
153						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 29, Col: 24}
154					}
155					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
156					if templ_7745c5c3_Err != nil {
157						return templ_7745c5c3_Err
158					}
159					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</td><td>")
160					if templ_7745c5c3_Err != nil {
161						return templ_7745c5c3_Err
162					}
163					var templ_7745c5c3_Var8 string
164					templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(r.AssetCount))
165					if templ_7745c5c3_Err != nil {
166						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 29, Col: 55}
167					}
168					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
169					if templ_7745c5c3_Err != nil {
170						return templ_7745c5c3_Err
171					}
172					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</td></tr>")
173					if templ_7745c5c3_Err != nil {
174						return templ_7745c5c3_Err
175					}
176				}
177				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</tbody></table>")
178				if templ_7745c5c3_Err != nil {
179					return templ_7745c5c3_Err
180				}
181			}
182			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, " ")
183			if templ_7745c5c3_Err != nil {
184				return templ_7745c5c3_Err
185			}
186			if p.Older != "" {
187				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<p class=\"more\"><a href=\"")
188				if templ_7745c5c3_Err != nil {
189					return templ_7745c5c3_Err
190				}
191				var templ_7745c5c3_Var9 templ.SafeURL
192				templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Older))
193				if templ_7745c5c3_Err != nil {
194					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 36, Col: 51}
195				}
196				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
197				if templ_7745c5c3_Err != nil {
198					return templ_7745c5c3_Err
199				}
200				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" rel=\"next\">older releases</a></p>")
201				if templ_7745c5c3_Err != nil {
202					return templ_7745c5c3_Err
203				}
204			}
205			return nil
206		})
207		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var3), templ_7745c5c3_Buffer)
208		if templ_7745c5c3_Err != nil {
209			return templ_7745c5c3_Err
210		}
211		return nil
212	})
213}
214
215func ReleaseDetail(l Layout, p ReleaseDetailPage) templ.Component {
216	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
217		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
218		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
219			return templ_7745c5c3_CtxErr
220		}
221		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
222		if !templ_7745c5c3_IsBuffer {
223			defer func() {
224				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
225				if templ_7745c5c3_Err == nil {
226					templ_7745c5c3_Err = templ_7745c5c3_BufErr
227				}
228			}()
229		}
230		ctx = templ.InitializeContext(ctx)
231		templ_7745c5c3_Var10 := templ.GetChildren(ctx)
232		if templ_7745c5c3_Var10 == nil {
233			templ_7745c5c3_Var10 = templ.NopComponent
234		}
235		ctx = templ.ClearChildren(ctx)
236		templ_7745c5c3_Var11 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
237			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
238			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
239			if !templ_7745c5c3_IsBuffer {
240				defer func() {
241					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
242					if templ_7745c5c3_Err == nil {
243						templ_7745c5c3_Err = templ_7745c5c3_BufErr
244					}
245				}()
246			}
247			ctx = templ.InitializeContext(ctx)
248			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<h1>")
249			if templ_7745c5c3_Err != nil {
250				return templ_7745c5c3_Err
251			}
252			var templ_7745c5c3_Var12 string
253			templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
254			if templ_7745c5c3_Err != nil {
255				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 43, Col: 15}
256			}
257			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
258			if templ_7745c5c3_Err != nil {
259				return templ_7745c5c3_Err
260			}
261			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</h1><p><span class=\"pill\">")
262			if templ_7745c5c3_Err != nil {
263				return templ_7745c5c3_Err
264			}
265			var templ_7745c5c3_Var13 string
266			templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(p.Tag)
267			if templ_7745c5c3_Err != nil {
268				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 45, Col: 29}
269			}
270			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
271			if templ_7745c5c3_Err != nil {
272				return templ_7745c5c3_Err
273			}
274			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</span>")
275			if templ_7745c5c3_Err != nil {
276				return templ_7745c5c3_Err
277			}
278			templ_7745c5c3_Err = ReleaseBadges(p.ReleaseRow).Render(ctx, templ_7745c5c3_Buffer)
279			if templ_7745c5c3_Err != nil {
280				return templ_7745c5c3_Err
281			}
282			if p.SHA != "" {
283				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<a href=\"")
284				if templ_7745c5c3_Err != nil {
285					return templ_7745c5c3_Err
286				}
287				var templ_7745c5c3_Var14 templ.SafeURL
288				templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.CommitHref))
289				if templ_7745c5c3_Err != nil {
290					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 47, Col: 41}
291				}
292				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
293				if templ_7745c5c3_Err != nil {
294					return templ_7745c5c3_Err
295				}
296				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\"><code>")
297				if templ_7745c5c3_Err != nil {
298					return templ_7745c5c3_Err
299				}
300				var templ_7745c5c3_Var15 string
301				templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(p.SHA)
302				if templ_7745c5c3_Err != nil {
303					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 47, Col: 57}
304				}
305				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
306				if templ_7745c5c3_Err != nil {
307					return templ_7745c5c3_Err
308				}
309				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</code></a> ")
310				if templ_7745c5c3_Err != nil {
311					return templ_7745c5c3_Err
312				}
313			}
314			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<span class=\"dim\">")
315			if templ_7745c5c3_Err != nil {
316				return templ_7745c5c3_Err
317			}
318			var templ_7745c5c3_Var16 string
319			templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(p.Published)
320			if templ_7745c5c3_Err != nil {
321				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 49, Col: 34}
322			}
323			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
324			if templ_7745c5c3_Err != nil {
325				return templ_7745c5c3_Err
326			}
327			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</span></p><div class=\"md\">")
328			if templ_7745c5c3_Err != nil {
329				return templ_7745c5c3_Err
330			}
331			templ_7745c5c3_Err = templ.Raw(string(p.Notes)).Render(ctx, templ_7745c5c3_Buffer)
332			if templ_7745c5c3_Err != nil {
333				return templ_7745c5c3_Err
334			}
335			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</div><h2>Assets</h2>")
336			if templ_7745c5c3_Err != nil {
337				return templ_7745c5c3_Err
338			}
339			if len(p.Assets) == 0 {
340				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<p class=\"dim\">no assets.</p>")
341				if templ_7745c5c3_Err != nil {
342					return templ_7745c5c3_Err
343				}
344			} else {
345				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<table class=\"list\" aria-label=\"Release assets\"><thead><tr><th>name</th><th>size</th><th>content type</th></tr></thead> <tbody>")
346				if templ_7745c5c3_Err != nil {
347					return templ_7745c5c3_Err
348				}
349				for _, a := range p.Assets {
350					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "<tr><td><a href=\"")
351					if templ_7745c5c3_Err != nil {
352						return templ_7745c5c3_Err
353					}
354					var templ_7745c5c3_Var17 templ.SafeURL
355					templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.Href))
356					if templ_7745c5c3_Err != nil {
357						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 60, Col: 45}
358					}
359					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
360					if templ_7745c5c3_Err != nil {
361						return templ_7745c5c3_Err
362					}
363					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\" download>")
364					if templ_7745c5c3_Err != nil {
365						return templ_7745c5c3_Err
366					}
367					var templ_7745c5c3_Var18 string
368					templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(a.Name)
369					if templ_7745c5c3_Err != nil {
370						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 60, Col: 65}
371					}
372					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
373					if templ_7745c5c3_Err != nil {
374						return templ_7745c5c3_Err
375					}
376					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</a></td><td>")
377					if templ_7745c5c3_Err != nil {
378						return templ_7745c5c3_Err
379					}
380					var templ_7745c5c3_Var19 string
381					templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(a.Size)
382					if templ_7745c5c3_Err != nil {
383						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 60, Col: 88}
384					}
385					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
386					if templ_7745c5c3_Err != nil {
387						return templ_7745c5c3_Err
388					}
389					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</td><td>")
390					if templ_7745c5c3_Err != nil {
391						return templ_7745c5c3_Err
392					}
393					var templ_7745c5c3_Var20 string
394					templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(a.ContentType)
395					if templ_7745c5c3_Err != nil {
396						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 60, Col: 114}
397					}
398					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
399					if templ_7745c5c3_Err != nil {
400						return templ_7745c5c3_Err
401					}
402					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</td></tr>")
403					if templ_7745c5c3_Err != nil {
404						return templ_7745c5c3_Err
405					}
406				}
407				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</tbody></table>")
408				if templ_7745c5c3_Err != nil {
409					return templ_7745c5c3_Err
410				}
411			}
412			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, " <p><a href=\"")
413			if templ_7745c5c3_Err != nil {
414				return templ_7745c5c3_Err
415			}
416			var templ_7745c5c3_Var21 templ.SafeURL
417			templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.SourceHref))
418			if templ_7745c5c3_Err != nil {
419				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 65, Col: 42}
420			}
421			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
422			if templ_7745c5c3_Err != nil {
423				return templ_7745c5c3_Err
424			}
425			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\">Source</a></p>")
426			if templ_7745c5c3_Err != nil {
427				return templ_7745c5c3_Err
428			}
429			return nil
430		})
431		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var11), templ_7745c5c3_Buffer)
432		if templ_7745c5c3_Err != nil {
433			return templ_7745c5c3_Err
434		}
435		return nil
436	})
437}
438
439var _ = 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