{{end}}
{{define "notelist"}}{{range .Notes}}{{template "note" (dict "N" . "P" $)}}{{end}}{{if not .Notes}}
no notes match these filters
{{end}}{{end}}
{{/* htmx responses: the list plus an out-of-band count update */}}
{{define "notelist-oob"}}{{len .Notes}}{{template "notelist" .}}{{end}}
{{define "note-added"}}{{if .File}}{{len .File.Notes}}{{end}}{{range .Notes}}{{template "note" (dict "N" . "P" $)}}{{end}}{{end}}
{{/* A child-note form appears below every full card in a focused thread. It
deliberately uses a normal POST: one append and one redirect rebuild the
entire DAG from the log, including shared mention paths. */}}
{{define "replyform"}}{{$n := .N}}{{$p := .P}}
reply to #{{$n.ID}}
{{end}}
{{/* Recursive at arbitrary depth. A DAG join/cycle is a reference rather than
a second card, which keeps ids unique and recursion finite. */}}
{{define "threadnode"}}{{$x := .Node}}{{$p := .P}}