Fix push-digest sentinel filter, watermark, and cleanups from review

- push digest queries now exclude _duplicate channel like every other
  visibility query (bookmarks list/count and NewClassifiedSince)
- advance push watermark to newest scanned story, not pass-start now, so
  stories arriving during a long send pass aren't re-counted next pass
- replace hand-rolled escapeHTMLText with stdlib html.EscapeString
- drop em-dashes from user-facing copy; bump PWA CACHE_VERSION so clients
  pick up the changed shell assets
This commit is contained in:
prosolis
2026-07-07 01:25:23 -07:00
parent 8863b75916
commit 35850eaf73
7 changed files with 16 additions and 22 deletions

View File

@@ -3,6 +3,7 @@ package web
import (
"encoding/json"
"encoding/xml"
"html"
"log/slog"
"net/http"
"strings"
@@ -284,20 +285,8 @@ func contentToHTML(text string) string {
continue
}
b.WriteString("<p>")
b.WriteString(strings.ReplaceAll(escapeHTMLText(para), "\n", "<br>"))
b.WriteString(strings.ReplaceAll(html.EscapeString(para), "\n", "<br>"))
b.WriteString("</p>")
}
return b.String()
}
// escapeHTMLText escapes the five characters that matter inside HTML text so the
// article body can't inject markup into content:encoded.
func escapeHTMLText(s string) string {
return strings.NewReplacer(
"&", "&amp;",
"<", "&lt;",
">", "&gt;",
`"`, "&#34;",
"'", "&#39;",
).Replace(s)
}