From ec66cb477c4f5de58c2893cd7fc6a33f977ca064 Mon Sep 17 00:00:00 2001 From: Snider Date: Wed, 15 Apr 2026 20:18:22 +0100 Subject: [PATCH] Add store result source links --- pkg/display/scheme.go | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/pkg/display/scheme.go b/pkg/display/scheme.go index 54acc8d3..fe13e56a 100644 --- a/pkg/display/scheme.go +++ b/pkg/display/scheme.go @@ -420,8 +420,8 @@ func (s *Service) renderKeyValuePage(title, key string, value any, snapshot any) } func (s *Service) renderStoreEntryPage(entry StorageEntry) string { - return "core://store
core://store
Origin: " + - html.EscapeString(entry.Origin) + + return "core://store
core://store
Origin: " + + anchorHTML(safeOriginHref(entry.Origin), entry.Origin) + "
Bucket: " + html.EscapeString(entry.Bucket) + "
Key: " + @@ -486,7 +486,7 @@ func (s *Service) renderStoreSearchPage(query string, results []StorageEntry) st } else { for _, group := range groups { items.WriteString("
") - items.WriteString(html.EscapeString(group.Origin)) + items.WriteString(anchorHTML(safeOriginHref(group.Origin), group.Origin)) items.WriteString("
    ") for _, item := range group.Entries { items.WriteString("
  • ") @@ -497,6 +497,8 @@ func (s *Service) renderStoreSearchPage(query string, results []StorageEntry) st items.WriteString(html.EscapeString(item.Value)) items.WriteString("
    Updated ") items.WriteString(html.EscapeString(item.UpdatedAt.Format(time.RFC3339))) + items.WriteString(" ยท ") + items.WriteString(anchorHTML(safeOriginHref(item.Origin), "open source app")) items.WriteString("
  • ") } items.WriteString("
") @@ -574,6 +576,31 @@ func coreRouteURL(segment string, parts ...string) string { return route } +func safeOriginHref(origin string) string { + trimmed := strings.TrimSpace(origin) + if trimmed == "" { + return "#" + } + parsed, err := url.Parse(trimmed) + if err != nil { + return "#" + } + switch strings.ToLower(parsed.Scheme) { + case "http", "https", "file", "core": + return parsed.String() + default: + return "#" + } +} + +func anchorHTML(href, text string) string { + escapedHref := html.EscapeString(strings.TrimSpace(href)) + if escapedHref == "" { + escapedHref = "#" + } + return "" + html.EscapeString(text) + "" +} + func (s *Service) AssetMiddleware() application.Middleware { return func(next application.Handler) application.Handler { return assetMiddlewareHandler{service: s, next: next}