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
|
{{mark "contacts"}}
account: {{account}}
{{if .ShowHidden}}hidden contacts{{else}}contacts{{end}} — {{.Paging.Total}} addresses
{{- with .Paging.Range (len .Contacts)}}, showing {{.}}{{end}}
{{mark "addresses"}}
{{nameLegend}}
{{range .Contacts}}{{if .Important}}*{{else}} {{end}} {{pad 19 (date .LastSeen)}} {{name .Name}}
/contact/{{.AddrEscaped}} ({{.Count}} message{{if ne .Count 1}}s{{end}})
{{end}}
{{- if .Paging.Next}}
next page: {{.Paging.Next}} ({{.Paging.NextCount}} more)
{{- end}}
{{- if .Paging.Prev}}
previous page: {{.Paging.Prev}}
{{- end}}
{{if and (not .ShowHidden) (gt .HiddenCount 0)}}
{{.HiddenCount}} hidden contact(s): /contacts?show=hidden
{{- end}}
{{mark "routes"}}
Columns: `*` marks an important contact, then last interaction, name and
address. The count on each link is how many messages that page will list, and
includes every header the address appears in.
/contact/{addr}/petname POST (application/x-www-form-urlencoded)
fields: petname required, empty clears it
Assigns the name this account calls an address.
Yours, local, never sent: it is the only name
here that is not a claim by a stranger.
A name already naming another address is
allowed; /contact/{addr}/settings says so.
HTML version: {{.HTMLViewURL}}
All routes accept `Accept: text/llm`, or append `?view=llm` to the URL:
/ most recent messages
/contact/{addr} the full conversation with one address
/contacts?limit=N page size (default 50); combine with &offset=N
/forge forge notifications, which are not listed here
/drafts replies being written, none of them sent
|