@geekity/cms 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +207 -28
  2. package/admin/layouts/shell.njk +13 -6
  3. package/admin/pages/documents/editor.njk +13 -1
  4. package/admin/pages/error.njk +11 -0
  5. package/admin/static/admin.css +69 -15
  6. package/dist/admin/comments.d.ts.map +1 -1
  7. package/dist/admin/comments.js +2 -1
  8. package/dist/admin/comments.js.map +1 -1
  9. package/dist/admin/documents.d.ts +3 -0
  10. package/dist/admin/documents.d.ts.map +1 -1
  11. package/dist/admin/documents.js +109 -42
  12. package/dist/admin/documents.js.map +1 -1
  13. package/dist/admin/federation.d.ts.map +1 -1
  14. package/dist/admin/federation.js +3 -2
  15. package/dist/admin/federation.js.map +1 -1
  16. package/dist/admin/preview.js +3 -0
  17. package/dist/admin/preview.js.map +1 -1
  18. package/dist/admin/routes.d.ts.map +1 -1
  19. package/dist/admin/routes.js +7 -3
  20. package/dist/admin/routes.js.map +1 -1
  21. package/dist/admin/templates.d.ts +1 -0
  22. package/dist/admin/templates.d.ts.map +1 -1
  23. package/dist/admin/templates.js +1 -0
  24. package/dist/admin/templates.js.map +1 -1
  25. package/dist/cli.d.ts +1 -1
  26. package/dist/cli.d.ts.map +1 -1
  27. package/dist/cli.js +128 -3
  28. package/dist/cli.js.map +1 -1
  29. package/dist/comments/submission.d.ts.map +1 -1
  30. package/dist/comments/submission.js +2 -1
  31. package/dist/comments/submission.js.map +1 -1
  32. package/dist/config.d.ts +23 -0
  33. package/dist/config.d.ts.map +1 -1
  34. package/dist/config.js +3 -0
  35. package/dist/config.js.map +1 -1
  36. package/dist/content/document.d.ts +26 -7
  37. package/dist/content/document.d.ts.map +1 -1
  38. package/dist/content/document.js +2 -0
  39. package/dist/content/document.js.map +1 -1
  40. package/dist/content/index.d.ts +2 -0
  41. package/dist/content/index.d.ts.map +1 -1
  42. package/dist/content/index.js +1 -0
  43. package/dist/content/index.js.map +1 -1
  44. package/dist/content/parser.d.ts.map +1 -1
  45. package/dist/content/parser.js +32 -1
  46. package/dist/content/parser.js.map +1 -1
  47. package/dist/content/post-type.d.ts +48 -0
  48. package/dist/content/post-type.d.ts.map +1 -0
  49. package/dist/content/post-type.js +79 -0
  50. package/dist/content/post-type.js.map +1 -0
  51. package/dist/content/store.d.ts +13 -2
  52. package/dist/content/store.d.ts.map +1 -1
  53. package/dist/content/store.js +62 -3
  54. package/dist/content/store.js.map +1 -1
  55. package/dist/content/sync.d.ts.map +1 -1
  56. package/dist/content/sync.js +6 -0
  57. package/dist/content/sync.js.map +1 -1
  58. package/dist/content/writer.d.ts +1 -1
  59. package/dist/content/writer.d.ts.map +1 -1
  60. package/dist/content/writer.js +13 -2
  61. package/dist/content/writer.js.map +1 -1
  62. package/dist/env.d.ts +12 -0
  63. package/dist/env.d.ts.map +1 -1
  64. package/dist/federation/article.d.ts +27 -9
  65. package/dist/federation/article.d.ts.map +1 -1
  66. package/dist/federation/article.js +110 -18
  67. package/dist/federation/article.js.map +1 -1
  68. package/dist/federation/federation.d.ts.map +1 -1
  69. package/dist/federation/federation.js +24 -6
  70. package/dist/federation/federation.js.map +1 -1
  71. package/dist/federation/inbox.d.ts +17 -3
  72. package/dist/federation/inbox.d.ts.map +1 -1
  73. package/dist/federation/inbox.js +72 -6
  74. package/dist/federation/inbox.js.map +1 -1
  75. package/dist/federation/index.d.ts +1 -1
  76. package/dist/federation/index.d.ts.map +1 -1
  77. package/dist/federation/index.js +1 -1
  78. package/dist/federation/index.js.map +1 -1
  79. package/dist/federation/mount.d.ts.map +1 -1
  80. package/dist/federation/mount.js +11 -6
  81. package/dist/federation/mount.js.map +1 -1
  82. package/dist/federation/paths.d.ts +5 -0
  83. package/dist/federation/paths.d.ts.map +1 -1
  84. package/dist/federation/paths.js +5 -0
  85. package/dist/federation/paths.js.map +1 -1
  86. package/dist/federation/quotes.d.ts +56 -0
  87. package/dist/federation/quotes.d.ts.map +1 -0
  88. package/dist/federation/quotes.js +85 -0
  89. package/dist/federation/quotes.js.map +1 -0
  90. package/dist/federation/wordpress.d.ts.map +1 -1
  91. package/dist/federation/wordpress.js +5 -4
  92. package/dist/federation/wordpress.js.map +1 -1
  93. package/dist/index.d.ts +12 -5
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +46 -4
  96. package/dist/index.js.map +1 -1
  97. package/dist/maintenance.d.ts +47 -0
  98. package/dist/maintenance.d.ts.map +1 -0
  99. package/dist/maintenance.js +78 -0
  100. package/dist/maintenance.js.map +1 -0
  101. package/dist/notifications/comments.d.ts.map +1 -1
  102. package/dist/notifications/comments.js +2 -1
  103. package/dist/notifications/comments.js.map +1 -1
  104. package/dist/notifications/digest.d.ts.map +1 -1
  105. package/dist/notifications/digest.js +2 -1
  106. package/dist/notifications/digest.js.map +1 -1
  107. package/dist/web/archive.d.ts +1 -1
  108. package/dist/web/archive.d.ts.map +1 -1
  109. package/dist/web/archive.js +2 -1
  110. package/dist/web/archive.js.map +1 -1
  111. package/dist/web/context.d.ts +22 -2
  112. package/dist/web/context.d.ts.map +1 -1
  113. package/dist/web/context.js +5 -0
  114. package/dist/web/context.js.map +1 -1
  115. package/dist/web/conversation.d.ts.map +1 -1
  116. package/dist/web/conversation.js +3 -33
  117. package/dist/web/conversation.js.map +1 -1
  118. package/dist/web/documents.d.ts +9 -0
  119. package/dist/web/documents.d.ts.map +1 -1
  120. package/dist/web/documents.js +31 -0
  121. package/dist/web/documents.js.map +1 -1
  122. package/dist/web/errors.d.ts +19 -0
  123. package/dist/web/errors.d.ts.map +1 -0
  124. package/dist/web/errors.js +93 -0
  125. package/dist/web/errors.js.map +1 -0
  126. package/dist/web/feed-atom.d.ts.map +1 -1
  127. package/dist/web/feed-atom.js +14 -2
  128. package/dist/web/feed-atom.js.map +1 -1
  129. package/dist/web/feed-item.d.ts +21 -7
  130. package/dist/web/feed-item.d.ts.map +1 -1
  131. package/dist/web/feed-item.js +13 -6
  132. package/dist/web/feed-item.js.map +1 -1
  133. package/dist/web/feed-json.d.ts +13 -2
  134. package/dist/web/feed-json.d.ts.map +1 -1
  135. package/dist/web/feed-json.js +3 -1
  136. package/dist/web/feed-json.js.map +1 -1
  137. package/dist/web/feed-rss.d.ts.map +1 -1
  138. package/dist/web/feed-rss.js +2 -2
  139. package/dist/web/feed-rss.js.map +1 -1
  140. package/dist/web/feed-xml.d.ts +2 -0
  141. package/dist/web/feed-xml.d.ts.map +1 -1
  142. package/dist/web/feed-xml.js +2 -0
  143. package/dist/web/feed-xml.js.map +1 -1
  144. package/dist/web/feeds.d.ts +1 -1
  145. package/dist/web/feeds.d.ts.map +1 -1
  146. package/dist/web/feeds.js.map +1 -1
  147. package/dist/web/health.d.ts +6 -0
  148. package/dist/web/health.d.ts.map +1 -1
  149. package/dist/web/health.js +5 -1
  150. package/dist/web/health.js.map +1 -1
  151. package/dist/web/index.d.ts +5 -1
  152. package/dist/web/index.d.ts.map +1 -1
  153. package/dist/web/index.js +3 -0
  154. package/dist/web/index.js.map +1 -1
  155. package/dist/web/maintenance.d.ts +18 -0
  156. package/dist/web/maintenance.d.ts.map +1 -0
  157. package/dist/web/maintenance.js +108 -0
  158. package/dist/web/maintenance.js.map +1 -0
  159. package/dist/web/redirects.d.ts +75 -0
  160. package/dist/web/redirects.d.ts.map +1 -0
  161. package/dist/web/redirects.js +200 -0
  162. package/dist/web/redirects.js.map +1 -0
  163. package/dist/web/render.d.ts +18 -0
  164. package/dist/web/render.d.ts.map +1 -1
  165. package/dist/web/render.js +38 -1
  166. package/dist/web/render.js.map +1 -1
  167. package/dist/web/routes.d.ts.map +1 -1
  168. package/dist/web/routes.js +55 -1
  169. package/dist/web/routes.js.map +1 -1
  170. package/dist/webmention/index.d.ts +6 -0
  171. package/dist/webmention/index.d.ts.map +1 -1
  172. package/dist/webmention/index.js +3 -0
  173. package/dist/webmention/index.js.map +1 -1
  174. package/dist/webmention/links.d.ts +5 -0
  175. package/dist/webmention/links.d.ts.map +1 -1
  176. package/dist/webmention/links.js +14 -7
  177. package/dist/webmention/links.js.map +1 -1
  178. package/dist/webmention/microformats.d.ts +21 -0
  179. package/dist/webmention/microformats.d.ts.map +1 -1
  180. package/dist/webmention/microformats.js +35 -5
  181. package/dist/webmention/microformats.js.map +1 -1
  182. package/dist/webmention/public-address.d.ts +30 -0
  183. package/dist/webmention/public-address.d.ts.map +1 -0
  184. package/dist/webmention/public-address.js +71 -0
  185. package/dist/webmention/public-address.js.map +1 -0
  186. package/dist/webmention/receive.d.ts.map +1 -1
  187. package/dist/webmention/receive.js +1 -23
  188. package/dist/webmention/receive.js.map +1 -1
  189. package/dist/webmention/reply-context.d.ts +67 -0
  190. package/dist/webmention/reply-context.d.ts.map +1 -0
  191. package/dist/webmention/reply-context.js +189 -0
  192. package/dist/webmention/reply-context.js.map +1 -0
  193. package/dist/webmention/reply-contexts.d.ts +50 -0
  194. package/dist/webmention/reply-contexts.d.ts.map +1 -0
  195. package/dist/webmention/reply-contexts.js +163 -0
  196. package/dist/webmention/reply-contexts.js.map +1 -0
  197. package/dist/webmention/service.d.ts.map +1 -1
  198. package/dist/webmention/service.js +9 -2
  199. package/dist/webmention/service.js.map +1 -1
  200. package/package.json +10 -10
  201. package/themes/default/README.md +20 -0
  202. package/themes/default/layouts/500.njk +8 -0
  203. package/themes/default/layouts/503.njk +8 -0
  204. package/themes/default/layouts/base.njk +5 -3
  205. package/themes/default/layouts/post.njk +8 -0
  206. package/themes/default/layouts/search.njk +4 -2
  207. package/themes/default/partials/post-list.njk +17 -5
  208. package/themes/default/partials/reply-context.njk +29 -0
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/webmention/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/webmention/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekity/cms",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "description": "A file-first CMS: Markdown content, a SQLite index, a Hono server that is both the editor and the public site.",
6
6
  "license": "MIT",
@@ -28,33 +28,33 @@
28
28
  "LICENSE"
29
29
  ],
30
30
  "dependencies": {
31
- "@fedify/fedify": "^2.3.6",
32
- "@fedify/hono": "^2.3.6",
33
- "@fedify/vocab": "^2.3.6",
31
+ "@fedify/fedify": "^2.3.7",
32
+ "@fedify/hono": "^2.3.7",
33
+ "@fedify/vocab": "^2.3.7",
34
34
  "@hono/node-server": "^2.1.1",
35
35
  "@js-temporal/polyfill": "^0.5.1",
36
36
  "chokidar": "^5.0.0",
37
37
  "gray-matter": "^4.0.3",
38
- "hono": "^4.13.7",
38
+ "hono": "^4.13.8",
39
39
  "js-yaml": "^5.4.2",
40
40
  "markdown-it": "^15.0.2",
41
41
  "markdown-it-footnote": "^4.0.0",
42
- "nodemailer": "^10.0.9",
42
+ "nodemailer": "^10.0.10",
43
43
  "nunjucks": "^3.2.4",
44
44
  "sharp": "^0.35.4"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@11ty/eleventy": "^3.1.6",
48
48
  "@codemirror/lang-markdown": "^6.5.2",
49
- "@fedify/cli": "2.3.6",
49
+ "@fedify/cli": "2.3.7",
50
50
  "@types/markdown-it-footnote": "^3.0.4",
51
- "@types/node": "^26.4.1",
52
- "@types/nodemailer": "^8.0.1",
51
+ "@types/node": "^26.6.2",
52
+ "@types/nodemailer": "^8.0.2",
53
53
  "@types/nunjucks": "^3.2.6",
54
54
  "codemirror": "^6.0.2",
55
55
  "esbuild": "^0.28.2",
56
56
  "highlight.js": "11.12.0",
57
- "tsx": "^4.23.13",
57
+ "tsx": "^4.23.15",
58
58
  "typescript": "^7.0.2"
59
59
  },
60
60
  "scripts": {
@@ -17,6 +17,8 @@ themes/default/
17
17
  author.njk one person's archive, paginated
18
18
  search.njk the search form and what it found, paginated
19
19
  404.njk nothing at this URL
20
+ 500.njk the request failed on the server
21
+ 503.njk the site is in maintenance mode
20
22
  partials/
21
23
  post-list.njk the h-feed a listing is made of
22
24
  pagination.njk previous/next pager
@@ -373,6 +375,24 @@ alone.
373
375
 
374
376
  `layouts/404.njk` says `Content not found.` and links home and to the search.
375
377
 
378
+ `layouts/500.njk` is the page a request gets when the server fails while
379
+ answering it (TASK-129). It says `Something went wrong.` in an
380
+ `article.server-error` and links home. The context is the 404's: `title`,
381
+ `url` and `page.url`. The response is a 500 with `Cache-Control: no-store`, and
382
+ the error itself goes to the server's log, never into the page. If this template
383
+ fails too, the CMS answers with a plain HTML page of its own instead, so a theme
384
+ cannot turn one failure into a crash. A request for the `.md` or `.json`
385
+ representation gets a 500 in that format and never reaches this template.
386
+
387
+ `layouts/503.njk` is the page a request gets while the site is in maintenance
388
+ mode (TASK-130). It says `Down for maintenance.` in an `article.maintenance`.
389
+ The context is the 404's, plus `until` (an ISO 8601 time) and `untilText` (the
390
+ same time as an HTTP date) when the operator named when the site should be
391
+ back. The response is a 503 with `Retry-After` and `Cache-Control: no-store`.
392
+ The theme's files under `/theme/` are still served, so the page can use the
393
+ stylesheet. If this template fails, the CMS answers with a plain HTML page of
394
+ its own.
395
+
376
396
  ### Search
377
397
 
378
398
  `layouts/search.njk` is the page at `/search/` (TASK-22). It prints
@@ -0,0 +1,8 @@
1
+ {% extends "layouts/base.njk" %}
2
+
3
+ {% block content %}
4
+ <article class="server-error">
5
+ <h1 class="page-title">Something went wrong.</h1>
6
+ <p>This page could not be shown because of a problem on the server. Try again in a moment, or go <a href="{{ "/" | url }}">home</a>.</p>
7
+ </article>
8
+ {% endblock %}
@@ -0,0 +1,8 @@
1
+ {% extends "layouts/base.njk" %}
2
+
3
+ {% block content %}
4
+ <article class="maintenance">
5
+ <h1 class="page-title">Down for maintenance.</h1>
6
+ <p>This site is down for maintenance and will be back shortly.{% if until %} It should be back by <time datetime="{{ until }}">{{ untilText }}</time>.{% endif %} Please try again then.</p>
7
+ </article>
8
+ {% endblock %}
@@ -39,7 +39,9 @@
39
39
  `pagination`, and the posts page is a listing carrying a page's front
40
40
  matter, so it is a website like every other listing. -#}
41
41
  {% set metaDescription = description or summary or site.tagline %}
42
- {% set metaTitle = title or site.title %}
42
+ {#- A note has no title, and is named here by its first words. -#}
43
+ {% set pageTitle = title or label %}
44
+ {% set metaTitle = pageTitle or site.title %}
43
45
  {% set metaUrl = (page.url or "/") | absoluteUrl %}
44
46
  {% set metaImage = image or site.avatar %}
45
47
  {% set isEntry = (type == "post" or type == "page") and not pagination %}
@@ -48,7 +50,7 @@
48
50
  <head>
49
51
  <meta charset="utf-8">
50
52
  <meta name="viewport" content="width=device-width, initial-scale=1">
51
- <title>{% block title %}{% if title %}{{ title }} &middot; {% endif %}{{ site.title }}{% endblock %}</title>
53
+ <title>{% block title %}{% if pageTitle %}{{ pageTitle }} &middot; {% endif %}{{ site.title }}{% endblock %}</title>
52
54
  {% if metaDescription %}
53
55
  <meta name="description" content="{{ metaDescription }}">
54
56
  {% endif %}
@@ -58,7 +60,7 @@
58
60
  {{ feeds.feedLinks("/", site.title) }}
59
61
  {{ feeds.commentsFeedLink("/comments/feed/", site.title + " comments") }}
60
62
  {% if commentsFeed %}
61
- {{ feeds.commentsFeedLink(commentsFeed, "Comments on: " + title) }}
63
+ {{ feeds.commentsFeedLink(commentsFeed, "Comments on: " + pageTitle) }}
62
64
  {% endif %}
63
65
  {% if activityStreams %}
64
66
  <link rel="alternate" type="application/activity+json" href="{{ activityStreams }}">
@@ -23,9 +23,17 @@
23
23
  {% block content %}
24
24
  {% set entryUrl = page.url or url %}
25
25
  <article class="blog-post h-entry">
26
+ {#- A post with no name of its own (a note, or a reply without a title) is
27
+ its words, so it opens on them rather than on an empty heading. -#}
28
+ {% if named %}
26
29
  <header>
27
30
  <h1 class="p-name">{{ title }}</h1>
28
31
  </header>
32
+ {% endif %}
33
+
34
+ {#- A reply cites the post it answers, whose URL is also the link its
35
+ webmention points a receiver at. -#}
36
+ {% include "partials/reply-context.njk" %}
29
37
 
30
38
  <section class="e-content">
31
39
  {{ content | safe }}
@@ -37,8 +37,10 @@
37
37
  <div class="search-results">
38
38
  {% for post in posts %}
39
39
  <article class="search-result h-entry">
40
- <h2 class="feed-title p-name">
41
- <a href="{{ post.url | url }}" class="u-url">{{ post.title }}</a>
40
+ {#- A post with no name of its own has none to claim, so its first words
41
+ link it without being marked up as one. -#}
42
+ <h2 class="feed-title{% if post.named %} p-name{% endif %}">
43
+ <a href="{{ post.url | url }}" class="u-url">{{ post.label }}</a>
42
44
  </h2>
43
45
  {% if post.snippet %}
44
46
  <p class="search-snippet">{{ post.snippet | safe }}</p>
@@ -2,10 +2,11 @@
2
2
  The feed a listing is made of: `h-feed` of `h-entry` items, as the source
3
3
  design lists them (decision-16).
4
4
 
5
- Expects `posts`. Each entry prints its title as a linked `p-name`, its
6
- `summary` — the very line the feeds publish — as a `p-summary` cut to about
7
- 280 characters, a Continue reading link, its publish date and the categories
8
- it is filed under. Tags are deliberately not here: an entry's tags belong
5
+ Expects `posts`. A note, which has no title, is printed whole as its
6
+ `e-content`, with its date as the link to it. Every other entry prints its
7
+ title as a linked `p-name`, its `summary` — the very line the feeds publish —
8
+ as a `p-summary` cut to about 280 characters, a Continue reading link, its
9
+ publish date and the categories it is filed under. Tags are deliberately not here: an entry's tags belong
9
10
  under the entry, and a feed of twenty posts listing everyone's would be a
10
11
  wall of links rather than a list of writing.
11
12
 
@@ -24,6 +25,12 @@
24
25
  {% endif %}
25
26
  <article class="feed-item h-entry">
26
27
  <div class="feed-content">
28
+ {% if post.inReplyTo %}
29
+ <p class="feed-reply small">In reply to <a class="u-in-reply-to" href="{{ post.inReplyTo }}">{{ post.inReplyTo }}</a></p>
30
+ {% endif %}
31
+ {% if not post.named %}
32
+ <div class="feed-excerpt e-content">{{ post.content | safe }}</div>
33
+ {% else %}
27
34
  <{{ feedTitleTag }} class="feed-title p-name">
28
35
  <a href="{{ post.url | url }}" class="u-url">{{ post.title }}</a>
29
36
  </{{ feedTitleTag }}>
@@ -38,8 +45,13 @@
38
45
  <p class="feed-more">
39
46
  <a href="{{ post.url | url }}" aria-label="Continue reading: {{ post.title }}">Continue reading<span aria-hidden="true"> &rarr;</span></a>
40
47
  </p>
48
+ {% endif %}
41
49
  <div class="feed-meta">
42
- {% if post.date %}
50
+ {% if not post.named %}
51
+ <p>
52
+ <a href="{{ post.url | url }}" class="u-url">{% if post.date %}<time class="feed-date dt-published" datetime="{{ post.date | date("iso") }}">{{ post.date | date }}</time>{% else %}{{ post.label }}{% endif %}</a>
53
+ </p>
54
+ {% elif post.date %}
43
55
  <p>
44
56
  <time class="feed-date dt-published" datetime="{{ post.date | date("iso") }}">
45
57
  {{ post.date | date }}
@@ -0,0 +1,29 @@
1
+ {#
2
+ The post a reply answers, cited in the reply (TASK-123): an embedded
3
+ `u-in-reply-to h-cite` that always carries the target's URL, so a parser
4
+ reads what this post answers even when nothing more is known about it.
5
+
6
+ `replyContext` is what the target said about itself when the reply was saved
7
+ or synced: its name, a short excerpt, its author and its date, each only when
8
+ it said so. It is somebody else's words, so every piece is printed through
9
+ autoescaping and none of it with `safe`.
10
+ #}
11
+ {% if inReplyTo %}
12
+ <div class="reply-context u-in-reply-to h-cite">
13
+ <p class="small">In reply to
14
+ {%- if replyContext.name %} <a class="u-url p-name" href="{{ inReplyTo }}">{{ replyContext.name }}</a>
15
+ {%- else %} <a class="u-url" href="{{ inReplyTo }}">{{ inReplyTo }}</a>
16
+ {%- endif %}
17
+ {%- if replyContext.author %} by <span class="p-author h-card">
18
+ {%- if replyContext.author.url %}<a class="u-url p-name" href="{{ replyContext.author.url }}">{{ replyContext.author.name }}</a>
19
+ {%- else %}<span class="p-name">{{ replyContext.author.name }}</span>{% endif -%}
20
+ </span>
21
+ {%- endif %}
22
+ {%- if replyContext.published %} on <time class="dt-published" datetime="{{ replyContext.published | date("iso") }}">{{ replyContext.published | date }}</time>
23
+ {%- endif -%}
24
+ </p>
25
+ {% if replyContext.text %}
26
+ <blockquote class="p-content">{{ replyContext.text }}</blockquote>
27
+ {% endif %}
28
+ </div>
29
+ {% endif %}