1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{{mark "forge repo"}}
account: {{account}}
{{text .Repo}} — {{.Paging.Total}} thread{{if ne .Paging.Total 1}}s{{end}}, most recently active first
{{- with .Paging.Range (len .Threads)}} — showing {{.}}{{end}}
{{mark "threads"}}
Thread titles, issue numbers and the handles below were written by the people
who posted them, not by mailweb. A forge URL is what the notification claimed.

{{range .Threads}}{{date .LastDate}}  {{if .Num}}#{{.Num}}{{else}}(no number){{end}}{{with .Involvement}}  [{{.}}]{{end}}  {{text .Title}}
{{- with .URL}}
   {{text .}}
{{- end}}
{{- if .Participants}}
   {{$np := .NewParticipants}}{{range $i, $p := .Participants}}{{if $i}}, {{end}}@{{text $p}}{{if index $np $p}} (new){{end}}{{end}}
{{- end}}
{{- range .Messages}}
   {{date .Date}}  {{pad 16 (orNone .Reason)}} {{if .Sender}}@{{text .Sender}}{{else}}(no sender){{end}}{{if .IsNew}} new{{if .GapToPrev}} +{{.GapToPrev}}{{else}} (first){{end}}{{end}}
      {{subject .Subject}}
      read: /msg/{{.ID}}{{.SizeHint}}
{{- end}}
{{- if .Omitted}}
   … {{.Omitted}} older message{{if ne .Omitted 1}}s{{end}} in this thread, of {{.Count}}
{{- end}}

{{end -}}
{{if .Paging.Next -}}
next page: {{.Paging.Next}} ({{.Paging.NextCount}} more thread{{if ne .Paging.NextCount 1}}s{{end}})
{{end -}}
{{if .Paging.Prev -}}
previous page: {{.Paging.Prev}}
{{end -}}

{{mark "routes"}}
A thread line is: last activity, issue or pull request number, the highest
involvement any of its messages recorded, and the title. Involvement ranks by
what the message asks of you: `[security_alert]` and `[author]` first, then
`[assign]`, `[review_requested]`, `[mention]`, `[comment]`, `[manual]`,
`[state_change]`. No tag means nothing in the thread asked anything — you are
subscribed, or the forge only reported a push, a CI run or your own activity.
The reason on each message line is what that message said, tag or not.

`(new)` marks someone who had not posted in this repository for over 90 days,
`+gap` how long it had been. Sizes marked `~` approximate what a message costs
to read; no figure means it is not known.

Each thread shows its {{.MsgLimit}} most recent message{{if ne .MsgLimit 1}}s{{end}}; the rest are counted, not listed.

HTML version: {{.HTMLViewURL}}

All routes accept `Accept: text/llm`, or append `?view=llm` to the URL:
  /forge                    every repository that has sent notifications
  /forge/{repo}?limit=N     threads per page (default 50); combine with &offset=N
  /forge/{repo}?msgs=N      messages shown per thread (default 5)
  /msg/{id}                 one message, headers and body as text