legal: close AGPL packaging gaps
test / test (push) Has been cancelled

Name the copyright holder, ship NOTICE with the image, serve the licence
from the panel footer on every page, and record the vendored htmx licence.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-10 21:56:51 +03:00
parent c713f51f24
commit 6c8bf0d3b3
17 changed files with 908 additions and 16 deletions
+6 -2
View File
@@ -5,6 +5,8 @@ import (
"fmt"
"html/template"
"net/http"
"github.com/mixeme/selfpost/internal/legal"
)
// templates holds the parsed page and fragment templates. Each page is parsed
@@ -84,13 +86,15 @@ func (s *Server) render(w http.ResponseWriter, status int, page string, data any
// The layout's navigation compares .Active against each item, so the key
// must exist on every authenticated page. Defaulting it here keeps a page
// that forgets it from failing to render — it simply highlights nothing.
// .Version, shown in the layout's footer, is supplied the same way: it is
// the same value on every page, so no handler should have to pass it.
// Footer fields (.Version, .Copyright, .SourceURL) are the same on every
// page, so no handler should have to pass them.
if m, ok := data.(map[string]any); ok {
if _, has := m["Active"]; !has {
m["Active"] = ""
}
m["Version"] = s.cfg.Version
m["Copyright"] = legal.CopyrightLine
m["SourceURL"] = legal.SourceURL
}
var buf bytes.Buffer
if err := tmpl.ExecuteTemplate(&buf, "layout.html", data); err != nil {