Membership is a publication date, not a type declaration (ADR-0043). The parked
feed shape said "every type declared primary", which would have made feeds wait on
declared types a third time — but the thing that distinguishes a feed item is
already on disk. Pages and section landings drop out because they have no date,
which is the right reason. The parked idea stays parked with a sharper trigger:
someone wanting a *dated* bundle kept out.
Built with encoding/xml from typed structs, never a template: XML in html/template
is escaping for the wrong grammar, and that is a correctness trap rather than a
matter of taste.
A bug the evidence found, older than feeds: content.URL("", lang) built "//", so a
whole-site feed's id and alternate link were https://khosra.example// — every
entry identity wrong in every reader. The root is "/" now, with a test, and the
hand-built "/" the resolver carried for the same reason can follow later.
Two counters re-scoped rather than incremented, the same way transforms was:
Views now counts *per-bundle selection* — the thing architecture.md means by the
View layer, still at zero consumers. Output formats are not it: HTML, sitemap XML
and Atom are three functions with nothing to share, so an interface over them
would have one member and no leverage.
Effects stays at 1. A feed is generated per request like the sitemap, so it is not
a second Effect and the runner is not yet due — the next thing that writes files
off the request path is.
31 lines
888 B
HTML
31 lines
888 B
HTML
{{define "base" -}}
|
|
<!doctype html>
|
|
<html lang="{{.Lang}}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{{.Title}}{{if .Site.Title}} · {{.Site.Title}}{{end}}</title>
|
|
<link rel="canonical" href="{{.Canonical}}">
|
|
{{- range .Alternates}}
|
|
<link rel="alternate" hreflang="{{.Lang}}" href="{{.URL}}">
|
|
{{- end}}
|
|
<meta property="og:title" content="{{.Title}}">
|
|
<meta property="og:url" content="{{.Canonical}}">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:locale" content="{{.Lang}}">
|
|
{{- if .Site.Title}}
|
|
<meta property="og:site_name" content="{{.Site.Title}}">
|
|
{{- end}}
|
|
{{- if .Site.Base}}
|
|
<link rel="alternate" type="application/atom+xml" href="{{.Site.Base}}/feed.xml" title="{{.Site.Title}}">
|
|
{{- end}}
|
|
<style>{{.Style}}</style>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
{{- template "main" .}}
|
|
</main>
|
|
</body>
|
|
</html>
|
|
{{- end}}
|