@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.
- package/README.md +207 -28
- package/admin/layouts/shell.njk +13 -6
- package/admin/pages/documents/editor.njk +13 -1
- package/admin/pages/error.njk +11 -0
- package/admin/static/admin.css +69 -15
- package/dist/admin/comments.d.ts.map +1 -1
- package/dist/admin/comments.js +2 -1
- package/dist/admin/comments.js.map +1 -1
- package/dist/admin/documents.d.ts +3 -0
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +109 -42
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +3 -2
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/preview.js +3 -0
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +7 -3
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/templates.d.ts +1 -0
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +1 -0
- package/dist/admin/templates.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +128 -3
- package/dist/cli.js.map +1 -1
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +2 -1
- package/dist/comments/submission.js.map +1 -1
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/content/document.d.ts +26 -7
- package/dist/content/document.d.ts.map +1 -1
- package/dist/content/document.js +2 -0
- package/dist/content/document.js.map +1 -1
- package/dist/content/index.d.ts +2 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +32 -1
- package/dist/content/parser.js.map +1 -1
- package/dist/content/post-type.d.ts +48 -0
- package/dist/content/post-type.d.ts.map +1 -0
- package/dist/content/post-type.js +79 -0
- package/dist/content/post-type.js.map +1 -0
- package/dist/content/store.d.ts +13 -2
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +62 -3
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +6 -0
- package/dist/content/sync.js.map +1 -1
- package/dist/content/writer.d.ts +1 -1
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +13 -2
- package/dist/content/writer.js.map +1 -1
- package/dist/env.d.ts +12 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/article.d.ts +27 -9
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +110 -18
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +24 -6
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/inbox.d.ts +17 -3
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +72 -6
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +1 -1
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +1 -1
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +11 -6
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +5 -0
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +5 -0
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/quotes.d.ts +56 -0
- package/dist/federation/quotes.d.ts.map +1 -0
- package/dist/federation/quotes.js +85 -0
- package/dist/federation/quotes.js.map +1 -0
- package/dist/federation/wordpress.d.ts.map +1 -1
- package/dist/federation/wordpress.js +5 -4
- package/dist/federation/wordpress.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -4
- package/dist/index.js.map +1 -1
- package/dist/maintenance.d.ts +47 -0
- package/dist/maintenance.d.ts.map +1 -0
- package/dist/maintenance.js +78 -0
- package/dist/maintenance.js.map +1 -0
- package/dist/notifications/comments.d.ts.map +1 -1
- package/dist/notifications/comments.js +2 -1
- package/dist/notifications/comments.js.map +1 -1
- package/dist/notifications/digest.d.ts.map +1 -1
- package/dist/notifications/digest.js +2 -1
- package/dist/notifications/digest.js.map +1 -1
- package/dist/web/archive.d.ts +1 -1
- package/dist/web/archive.d.ts.map +1 -1
- package/dist/web/archive.js +2 -1
- package/dist/web/archive.js.map +1 -1
- package/dist/web/context.d.ts +22 -2
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +5 -0
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +3 -33
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/documents.d.ts +9 -0
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +31 -0
- package/dist/web/documents.js.map +1 -1
- package/dist/web/errors.d.ts +19 -0
- package/dist/web/errors.d.ts.map +1 -0
- package/dist/web/errors.js +93 -0
- package/dist/web/errors.js.map +1 -0
- package/dist/web/feed-atom.d.ts.map +1 -1
- package/dist/web/feed-atom.js +14 -2
- package/dist/web/feed-atom.js.map +1 -1
- package/dist/web/feed-item.d.ts +21 -7
- package/dist/web/feed-item.d.ts.map +1 -1
- package/dist/web/feed-item.js +13 -6
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-json.d.ts +13 -2
- package/dist/web/feed-json.d.ts.map +1 -1
- package/dist/web/feed-json.js +3 -1
- package/dist/web/feed-json.js.map +1 -1
- package/dist/web/feed-rss.d.ts.map +1 -1
- package/dist/web/feed-rss.js +2 -2
- package/dist/web/feed-rss.js.map +1 -1
- package/dist/web/feed-xml.d.ts +2 -0
- package/dist/web/feed-xml.d.ts.map +1 -1
- package/dist/web/feed-xml.js +2 -0
- package/dist/web/feed-xml.js.map +1 -1
- package/dist/web/feeds.d.ts +1 -1
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +6 -0
- package/dist/web/health.d.ts.map +1 -1
- package/dist/web/health.js +5 -1
- package/dist/web/health.js.map +1 -1
- package/dist/web/index.d.ts +5 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +3 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/maintenance.d.ts +18 -0
- package/dist/web/maintenance.d.ts.map +1 -0
- package/dist/web/maintenance.js +108 -0
- package/dist/web/maintenance.js.map +1 -0
- package/dist/web/redirects.d.ts +75 -0
- package/dist/web/redirects.d.ts.map +1 -0
- package/dist/web/redirects.js +200 -0
- package/dist/web/redirects.js.map +1 -0
- package/dist/web/render.d.ts +18 -0
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +38 -1
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +55 -1
- package/dist/web/routes.js.map +1 -1
- package/dist/webmention/index.d.ts +6 -0
- package/dist/webmention/index.d.ts.map +1 -1
- package/dist/webmention/index.js +3 -0
- package/dist/webmention/index.js.map +1 -1
- package/dist/webmention/links.d.ts +5 -0
- package/dist/webmention/links.d.ts.map +1 -1
- package/dist/webmention/links.js +14 -7
- package/dist/webmention/links.js.map +1 -1
- package/dist/webmention/microformats.d.ts +21 -0
- package/dist/webmention/microformats.d.ts.map +1 -1
- package/dist/webmention/microformats.js +35 -5
- package/dist/webmention/microformats.js.map +1 -1
- package/dist/webmention/public-address.d.ts +30 -0
- package/dist/webmention/public-address.d.ts.map +1 -0
- package/dist/webmention/public-address.js +71 -0
- package/dist/webmention/public-address.js.map +1 -0
- package/dist/webmention/receive.d.ts.map +1 -1
- package/dist/webmention/receive.js +1 -23
- package/dist/webmention/receive.js.map +1 -1
- package/dist/webmention/reply-context.d.ts +67 -0
- package/dist/webmention/reply-context.d.ts.map +1 -0
- package/dist/webmention/reply-context.js +189 -0
- package/dist/webmention/reply-context.js.map +1 -0
- package/dist/webmention/reply-contexts.d.ts +50 -0
- package/dist/webmention/reply-contexts.d.ts.map +1 -0
- package/dist/webmention/reply-contexts.js +163 -0
- package/dist/webmention/reply-contexts.js.map +1 -0
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +9 -2
- package/dist/webmention/service.js.map +1 -1
- package/package.json +10 -10
- package/themes/default/README.md +20 -0
- package/themes/default/layouts/500.njk +8 -0
- package/themes/default/layouts/503.njk +8 -0
- package/themes/default/layouts/base.njk +5 -3
- package/themes/default/layouts/post.njk +8 -0
- package/themes/default/layouts/search.njk +4 -2
- package/themes/default/partials/post-list.njk +17 -5
- package/themes/default/partials/reply-context.njk +29 -0
package/README.md
CHANGED
|
@@ -79,18 +79,20 @@ changelog.
|
|
|
79
79
|
site (or `npx geekity`, or a `package.json` script, which is how the generated
|
|
80
80
|
`sync` script calls it).
|
|
81
81
|
|
|
82
|
-
| Command
|
|
83
|
-
|
|
|
84
|
-
| `geekity serve`
|
|
85
|
-
| `geekity init <dir>`
|
|
86
|
-
| `geekity sync`
|
|
87
|
-
| `geekity rebuild`
|
|
88
|
-
| `geekity
|
|
89
|
-
| `geekity
|
|
90
|
-
| `geekity
|
|
91
|
-
| `geekity
|
|
92
|
-
|
|
93
|
-
|
|
82
|
+
| Command | What it does |
|
|
83
|
+
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
84
|
+
| `geekity serve` | Boot from the config file and listen. The default when no command is given. |
|
|
85
|
+
| `geekity init <dir>` | Create a new site in `<dir>`. Refuses a directory that is not empty. |
|
|
86
|
+
| `geekity sync` | Rebuild the content index once and exit. Exits non-zero if any file could not be parsed. |
|
|
87
|
+
| `geekity rebuild` | Delete `data/geekity.db` and build it again from the files. |
|
|
88
|
+
| `geekity resend --all`, `<slug>...` | Send announced posts to every follower and relay again, as they now read. See [Quote posts](#quote-posts). |
|
|
89
|
+
| `geekity maintenance on`, `off`, `status` | Take the public site down on purpose with a 503 and `Retry-After`, or bring it back, without a restart. `on --until <time>` names when it should be back. |
|
|
90
|
+
| `geekity user add <name>` | Create an admin account, so a site can get its first login without the setup screen. |
|
|
91
|
+
| `geekity import wordpress-actor <name>` | Bring one person across from the WordPress ActivityPub plugin: their key pair, the actor id their followers hold, the plugin's numeric actor id, and their followers. |
|
|
92
|
+
| `geekity --help`, `-h` | The same table, on the terminal. |
|
|
93
|
+
| `geekity --version` | The installed version. |
|
|
94
|
+
|
|
95
|
+
`serve`, `sync`, `rebuild`, `resend`, `maintenance`, `user add` and `import wordpress-actor` take
|
|
94
96
|
`--config <file>`; without it they look for `geekity.config.ts`, then
|
|
95
97
|
`geekity.config.js`, then `geekity.config.mjs` in the working directory, and run
|
|
96
98
|
on defaults if there is none.
|
|
@@ -273,6 +275,7 @@ directory; absolute ones are used as given.
|
|
|
273
275
|
| `accessLog` | `false`; `true` under `geekity serve` | `GEEKITY_ACCESS_LOG` | One line per request on stdout: method, path with query, status, duration. See [The access log](#the-access-log). |
|
|
274
276
|
| `accessLogAddress` | `false` | `GEEKITY_ACCESS_LOG_ADDRESS` | Put the client address on the end of each access-log line. `trustProxy` decides which address that is. |
|
|
275
277
|
| `accessLogWriter` | stdout | — | Where the lines go instead. See [The access log](#the-access-log). |
|
|
278
|
+
| `maintenance` | `false` | `GEEKITY_MAINTENANCE` | Keep the site in maintenance mode, answering 503, until a restart without it. |
|
|
276
279
|
| `onDocumentChange` | none | — | Hook run for every change to the index. See [Hooks](#hooks). |
|
|
277
280
|
| `onPublish` | none | — | Hook run when a document becomes visible. See [Hooks](#hooks). |
|
|
278
281
|
| `federation` | `{}` | — | Federation stores and guards. See [Federation](#federation). |
|
|
@@ -499,8 +502,8 @@ does:
|
|
|
499
502
|
|
|
500
503
|
| What happened to the post | What the followers get |
|
|
501
504
|
| ------------------------------------------------------------------------- | ------------------------- |
|
|
502
|
-
| became published — written live, or undrafted, or restored from the trash | `Create
|
|
503
|
-
| edited while published | `Update
|
|
505
|
+
| became published — written live, or undrafted, or restored from the trash | `Create` of its object |
|
|
506
|
+
| edited while published | `Update` of its object |
|
|
504
507
|
| drafted, trashed, or its file deleted | `Delete` of a `Tombstone` |
|
|
505
508
|
|
|
506
509
|
Nothing is delivered for a full scan, the boot scan included: a rebuilt index
|
|
@@ -509,26 +512,49 @@ reports the whole archive as new, and announcing it again is not what deleting
|
|
|
509
512
|
|
|
510
513
|
A post's ActivityStreams object id is its permalink, absolute on the site's
|
|
511
514
|
base URL. One URL answers both audiences — a browser gets the page, a peer
|
|
512
|
-
asking for `application/activity+json` gets the
|
|
513
|
-
feed item, an object id and a reply's `inReplyTo` all name the same
|
|
514
|
-
Nothing else has to be minted or kept in step.
|
|
515
|
+
asking for `application/activity+json` gets the post's object — so a shared
|
|
516
|
+
link, a feed item, an object id and a reply's `inReplyTo` all name the same
|
|
517
|
+
thing. Nothing else has to be minted or kept in step.
|
|
518
|
+
|
|
519
|
+
That object is a `Note` or an `Article`, whichever the post's discovered type
|
|
520
|
+
is: a post with no title, or whose text opens with its title, is a `Note`, and
|
|
521
|
+
any other is an `Article`. Mastodon shows the two differently. An `Article`
|
|
522
|
+
arrives as its title, its excerpt and a link, so it sends `name` and a
|
|
523
|
+
`summary`. A `Note` arrives as its `content` and nothing else, and Mastodon
|
|
524
|
+
would show a `summary` as a content warning, so a note sends neither and puts a
|
|
525
|
+
title its text does not open with at the top of its content.
|
|
526
|
+
|
|
527
|
+
An author can choose the type for one post in its front matter:
|
|
528
|
+
|
|
529
|
+
```yaml
|
|
530
|
+
activitypub:
|
|
531
|
+
type: Note
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
`Note` and `Article` are the two values. Anything else is logged as a warning
|
|
535
|
+
and the derived type is sent instead. The CMS never rewrites the key. Changing
|
|
536
|
+
it on a post already announced sends an `Update`, but a remote server may keep
|
|
537
|
+
showing the post the way it first arrived.
|
|
515
538
|
|
|
516
539
|
The first activity about a post writes one key, `activitypub.published`, into
|
|
517
540
|
its front matter: the record that the post has been announced and when, which
|
|
518
541
|
is what decides `Create` against `Update` and what a resend reads. Restoring a
|
|
519
542
|
trashed post reuses it too.
|
|
520
543
|
|
|
521
|
-
Because that URL is a promise, the editor keeps it: **a published post's slug
|
|
522
|
-
and permalink cannot be changed**. Both fields still move freely on a draft,
|
|
523
|
-
and a site that really means to move a published post can edit the file,
|
|
524
|
-
knowing that its followers will be handed a second object.
|
|
525
|
-
|
|
526
544
|
A post whose file already names an `activitypub.id` keeps it as its object id
|
|
527
545
|
for the life of the post — that is how a post migrated from WordPress keeps the
|
|
528
546
|
`https://example.com/?p=813` its followers, its replies and its RSS subscribers
|
|
529
|
-
already hold. The CMS serves the
|
|
547
|
+
already hold. The CMS serves the post's object at that URL on an ActivityStreams
|
|
530
548
|
request, redirects a browser from it to the permalink, and names it in every
|
|
531
|
-
`Update` and `Delete`.
|
|
549
|
+
`Update` and `Delete`.
|
|
550
|
+
|
|
551
|
+
The CMS writes one itself in one case: when a published post's slug or
|
|
552
|
+
permalink is changed in the editor. A fediverse server cannot rename an object
|
|
553
|
+
it holds, so the URL the post is leaving becomes its stored `activitypub.id`.
|
|
554
|
+
Followers get an `Update` of the object they already have, a peer at the old
|
|
555
|
+
URL still gets the object, and a browser there is redirected to the new
|
|
556
|
+
permalink. The object's `url` is the new permalink. See
|
|
557
|
+
[Moved URLs](#moved-urls).
|
|
532
558
|
|
|
533
559
|
One POST serves a whole instance — the shared inbox is preferred — but the
|
|
534
560
|
outcome is recorded per recipient, so an admin can see which one did not get it
|
|
@@ -560,6 +586,56 @@ queue, which retries out of band) or `failed`.
|
|
|
560
586
|
The one capability given up is tombstoning a post whose file is gone entirely
|
|
561
587
|
rather than in the trash: there is no file left to build the `Tombstone` from.
|
|
562
588
|
|
|
589
|
+
### Quote posts
|
|
590
|
+
|
|
591
|
+
Mastodon 4.5 lets people quote a post only when the post says who may, and
|
|
592
|
+
shows a quote only once the quoted author's server has approved it
|
|
593
|
+
([FEP-044f]). Every post this site federates is public, so every `Note` and
|
|
594
|
+
`Article` carries `interactionPolicy.canQuote` with `automaticApproval` set to
|
|
595
|
+
the public collection: anybody may quote it, and nobody has to approve it by
|
|
596
|
+
hand. Pages, drafts, scheduled and trashed posts do not federate, so nobody
|
|
597
|
+
can quote them.
|
|
598
|
+
|
|
599
|
+
A quoting server sends a `QuoteRequest` to the post's author. The inbox, and
|
|
600
|
+
the WordPress-compatible inbox when that switch is on, answers it:
|
|
601
|
+
|
|
602
|
+
- For a post the site federates, whose quote lives on the requester's own
|
|
603
|
+
server, it stores an approval and replies `Accept` with a
|
|
604
|
+
`QuoteAuthorization` as its `result`. The authorization names the quote
|
|
605
|
+
(`interactingObject`), the post (`interactionTarget`) and the author
|
|
606
|
+
(`attributedTo`).
|
|
607
|
+
- For anything else it replies `Reject` and stores nothing.
|
|
608
|
+
|
|
609
|
+
Approvals are files, like followers:
|
|
610
|
+
`content/_data/federation/{username}/quotes.json` holds one object per quote of
|
|
611
|
+
that user's posts. Each is served unsigned, as ActivityStreams JSON, at
|
|
612
|
+
`{baseUrl}/author/{username}/quotes/{id}/`, for as long as the post is still
|
|
613
|
+
published. An `Undo` of the `QuoteRequest`, or a `Delete` of the quoting post,
|
|
614
|
+
removes the approval, and its URL answers 404 after that. A quote does not
|
|
615
|
+
notify the author.
|
|
616
|
+
|
|
617
|
+
Mastodon keeps the copy of a post it fetched first, so a post federated before
|
|
618
|
+
the quote policy existed is not quotable until its followers receive an
|
|
619
|
+
`Update`. Editing the post sends one. To update every announced post at once,
|
|
620
|
+
run `geekity resend --all` in the site directory:
|
|
621
|
+
|
|
622
|
+
```sh
|
|
623
|
+
$ geekity resend --all
|
|
624
|
+
hello-world: Update to 3 of 3 inboxes
|
|
625
|
+
another-post: Update to 3 of 3 inboxes
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
`geekity resend <slug>...` does the same for named posts. Each is what the
|
|
629
|
+
Resend button on the federation screen does: an `Update` for a post still
|
|
630
|
+
published, a `Delete` for one that has been withdrawn, and a `Create` for a
|
|
631
|
+
published post that was never announced. `--all` only reaches posts that were
|
|
632
|
+
announced. The command delivers with no queue, so every activity has been
|
|
633
|
+
posted before it exits, and it exits non-zero when a named slug has nothing to
|
|
634
|
+
resend. It works while the server runs, because both read the same files and
|
|
635
|
+
database.
|
|
636
|
+
|
|
637
|
+
[FEP-044f]: https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md
|
|
638
|
+
|
|
563
639
|
### Relays
|
|
564
640
|
|
|
565
641
|
A [Mastodon-style relay][fepae0c] boosts every public activity it is sent on to
|
|
@@ -855,7 +931,7 @@ Then, from a Mastodon account:
|
|
|
855
931
|
CMS answers `Accept`, and the account appears on `/admin/federation` within
|
|
856
932
|
a second or two.
|
|
857
933
|
3. Publish a post, from the editor or by writing a file into `content/posts/`.
|
|
858
|
-
A `Create
|
|
934
|
+
A `Create` is delivered, and the post shows up in the follower's
|
|
859
935
|
home timeline; `/admin/federation` records the outcome, with a Resend
|
|
860
936
|
button if it did not land.
|
|
861
937
|
4. Edit the post, then set `draft: true` on it, to see the `Update` and the
|
|
@@ -1370,7 +1446,7 @@ off every archive, out of all three feeds and out of the ActivityPub outbox,
|
|
|
1370
1446
|
its permalink 404s in every representation, and no follower has been told about
|
|
1371
1447
|
it. When the moment comes the running server publishes it — no restart, no
|
|
1372
1448
|
build — and the same delivery that a live publish runs sends the
|
|
1373
|
-
`Create
|
|
1449
|
+
`Create` and pings the notify server.
|
|
1374
1450
|
|
|
1375
1451
|
There is no `scheduled` key and no state to keep: a scheduled post is an
|
|
1376
1452
|
ordinary published one whose date has not arrived, which is a question asked of
|
|
@@ -1795,7 +1871,7 @@ so a head never advertises a URL this server would answer 404 for.
|
|
|
1795
1871
|
|
|
1796
1872
|
`documentContext(document, images)` is where the rewrite is applied. Passing the
|
|
1797
1873
|
config is what turns the page's `content` into `<picture>` markup; the feeds,
|
|
1798
|
-
`documentJson`, the Markdown representation and `
|
|
1874
|
+
`documentJson`, the Markdown representation and `postObject` all read
|
|
1799
1875
|
`document.html` directly and so keep the plain `<img>` by construction.
|
|
1800
1876
|
|
|
1801
1877
|
### Managing tags and categories
|
|
@@ -1821,7 +1897,7 @@ bulk rewrite that trusted it would put that edit back. A file that has gone or
|
|
|
1821
1897
|
will not parse is skipped, counted, and named in the message.
|
|
1822
1898
|
|
|
1823
1899
|
Every rewrite is announced the way an editor save is, so the index, the feeds,
|
|
1824
|
-
the notify server and the fediverse all follow — one `Update
|
|
1900
|
+
the notify server and the fediverse all follow — one `Update` per
|
|
1825
1901
|
affected published post, because the hashtags on those posts have just changed.
|
|
1826
1902
|
A term on many published posts is therefore many deliveries; that is the point,
|
|
1827
1903
|
but it is worth knowing before renaming a tag that half the archive carries.
|
|
@@ -2126,6 +2202,85 @@ hand-edited `site.json` that is not an object of lists of items yields no menu
|
|
|
2126
2202
|
rather than an error, exactly as a bad archive base falls back rather than
|
|
2127
2203
|
taking the site down.
|
|
2128
2204
|
|
|
2205
|
+
### Moved URLs
|
|
2206
|
+
|
|
2207
|
+
Changing the slug or the permalink of a published post or page in the editor
|
|
2208
|
+
moves it, and the URL it leaves is written into its file:
|
|
2209
|
+
|
|
2210
|
+
```yaml
|
|
2211
|
+
permalink: /2026/01/new-name/
|
|
2212
|
+
redirect_from:
|
|
2213
|
+
- /2026/01/first-name/
|
|
2214
|
+
- /2026/01/second-name/
|
|
2215
|
+
```
|
|
2216
|
+
|
|
2217
|
+
Every URL in `redirect_from` answers `301 Moved Permanently` with the current
|
|
2218
|
+
permalink, and so do its `.md` and `.json` spellings. Each entry points at the
|
|
2219
|
+
document itself, not at the next rename, so no chain of redirects builds up.
|
|
2220
|
+
The list is in the file, so deleting `data/geekity.db` keeps it working.
|
|
2221
|
+
|
|
2222
|
+
A URL in the list only redirects while nothing else lives there: a new document
|
|
2223
|
+
given that URL takes it over. Moving a document back to a URL in its list takes
|
|
2224
|
+
that URL off the list. A draft that was never published moves without leaving
|
|
2225
|
+
anything behind. Correcting a published post's date files it under the new
|
|
2226
|
+
day but keeps its URL.
|
|
2227
|
+
|
|
2228
|
+
### Declared redirects
|
|
2229
|
+
|
|
2230
|
+
A site that moves to this CMS, or reorganises, lists the old URLs that no
|
|
2231
|
+
document owns in `content/_data/redirects.json`. The file is a JSON list:
|
|
2232
|
+
|
|
2233
|
+
```json
|
|
2234
|
+
[
|
|
2235
|
+
{ "from": "/?p=123", "to": "/2026/01/hello/" },
|
|
2236
|
+
{ "from": "/old-section/", "to": "/new-section/", "status": 301 },
|
|
2237
|
+
{ "from": "/sale/", "to": "/shop/", "status": 302 },
|
|
2238
|
+
{ "from": "/forum/", "to": "https://forum.example.com/", "status": 308 }
|
|
2239
|
+
]
|
|
2240
|
+
```
|
|
2241
|
+
|
|
2242
|
+
- `from` is a path on this site. It starts with `/` and can carry a query
|
|
2243
|
+
string.
|
|
2244
|
+
- `to` is a path on this site, or an absolute `http` or `https` URL.
|
|
2245
|
+
- `status` is `301` or `308` for a permanent redirect, and `302` or `307` for a
|
|
2246
|
+
temporary one. It defaults to `301`.
|
|
2247
|
+
|
|
2248
|
+
A `from` without a query string matches that path with any query, or none. The
|
|
2249
|
+
request's query goes on to a `to` that has no query of its own, so
|
|
2250
|
+
`/old-section/?page=2` lands on `/new-section/?page=2`. The path must match
|
|
2251
|
+
exactly, except that a `from` ending in `/` also answers the same path without
|
|
2252
|
+
the slash, in one hop.
|
|
2253
|
+
|
|
2254
|
+
A `from` with a query string matches only that query. The order of the
|
|
2255
|
+
parameters does not matter, so `/archives/?cat=4&paged=2` also matches
|
|
2256
|
+
`/archives/?paged=2&cat=4`. Nothing else in the request's query may differ:
|
|
2257
|
+
`/?p=123` does not match `/?p=123&replytocom=9`. This is how old WordPress
|
|
2258
|
+
`?p=` links reach their posts.
|
|
2259
|
+
|
|
2260
|
+
A declared redirect never hides something real. A path-only `from` is answered
|
|
2261
|
+
only after every document, archive, feed and moved URL has had its turn, and
|
|
2262
|
+
just before the 404 page, so a document given that URL later takes it over. A
|
|
2263
|
+
`from` with a query string is answered first, because no document is addressed
|
|
2264
|
+
by its query. The admin, the federation endpoints and the health check answer
|
|
2265
|
+
before any declared redirect.
|
|
2266
|
+
|
|
2267
|
+
The file is read on the next request after it changes, with no restart. An
|
|
2268
|
+
entry that cannot be served is logged as a warning at boot, and again on the
|
|
2269
|
+
first request after the file changes, and it is skipped. The following entries are skipped:
|
|
2270
|
+
|
|
2271
|
+
- An entry with a missing or malformed `from`, `to` or `status`.
|
|
2272
|
+
- A second entry with the same `from`. The first entry wins.
|
|
2273
|
+
- Every entry that leads into a loop, such as `/a/` to `/b/` and `/b/` back to
|
|
2274
|
+
`/a/`.
|
|
2275
|
+
|
|
2276
|
+
A file that is not a JSON list serves no redirects and is reported the same
|
|
2277
|
+
way.
|
|
2278
|
+
|
|
2279
|
+
Every redirect the CMS sends carries `X-Redirect-By: Geekity CMS`. This
|
|
2280
|
+
includes the declared redirects, moved URLs, trailing slashes, feed spellings
|
|
2281
|
+
and the admin's redirects. Someone who traces a chain of redirects through a
|
|
2282
|
+
proxy can see which layer sent each one.
|
|
2283
|
+
|
|
2129
2284
|
## Content negotiation
|
|
2130
2285
|
|
|
2131
2286
|
Every public URL is one resource with more than one body. A post or a page has
|
|
@@ -2314,6 +2469,30 @@ only when there is nothing to summarise at all. The whole post goes in the
|
|
|
2314
2469
|
content element beside it, so a reader that shows both has something to choose
|
|
2315
2470
|
between.
|
|
2316
2471
|
|
|
2472
|
+
**Replies.** A post whose `in-reply-to` front matter is an absolute `http` or
|
|
2473
|
+
`https` URL is a reply, and Atom and JSON Feed name the URL it answers. An Atom
|
|
2474
|
+
entry carries RFC 4685's `<thr:in-reply-to ref="…" href="…"/>`, with the target
|
|
2475
|
+
URL as both its identity and its location, and every Atom feed declares
|
|
2476
|
+
`xmlns:thr="http://purl.org/syndication/thread/1.0"`. JSON Feed 1.1 has no reply
|
|
2477
|
+
field, so a JSON Feed item carries the target in an extension object, which the
|
|
2478
|
+
spec allows under any key that starts with an underscore and tells readers that
|
|
2479
|
+
do not know it to ignore:
|
|
2480
|
+
|
|
2481
|
+
```json
|
|
2482
|
+
{
|
|
2483
|
+
"id": "…",
|
|
2484
|
+
"url": "…",
|
|
2485
|
+
"content_html": "…",
|
|
2486
|
+
"_geekity": { "in_reply_to": "https://example.net/notes/1" }
|
|
2487
|
+
}
|
|
2488
|
+
```
|
|
2489
|
+
|
|
2490
|
+
The key is `_geekity` because an extension is named after its publisher, and
|
|
2491
|
+
`in_reply_to` spells the microformats `in-reply-to` property the JSON way. A
|
|
2492
|
+
post that is not a reply, or whose `in-reply-to` is not such a URL, carries
|
|
2493
|
+
neither. RSS 2.0 has no equivalent element, so an RSS item for a reply is
|
|
2494
|
+
written the same as any other.
|
|
2495
|
+
|
|
2317
2496
|
### RSS 2.0
|
|
2318
2497
|
|
|
2319
2498
|
The channel carries `title`, `link`, `description` (the tagline), `language`
|
package/admin/layouts/shell.njk
CHANGED
|
@@ -7,12 +7,19 @@
|
|
|
7
7
|
<a class="admin-bar-site" href="{{ adminUrl }}">{{ site.title }}</a>
|
|
8
8
|
<a href="{{ siteUrl }}">View site</a>
|
|
9
9
|
<span class="admin-bar-spacer"></span>
|
|
10
|
-
{% if
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
</
|
|
10
|
+
{% if me %}
|
|
11
|
+
{# WordPress's "Howdy," menu, greeting the way this site's owner does.
|
|
12
|
+
A popover rather than a script: the browser opens and closes it,
|
|
13
|
+
shuts it on Escape or a click elsewhere, and tells a screen reader
|
|
14
|
+
whether it is expanded, all under the CSP's script-src 'self'. #}
|
|
15
|
+
<button type="button" class="admin-bar-account" popovertarget="admin-account-menu">Hoopla! {{ me.name }}</button>
|
|
16
|
+
<div id="admin-account-menu" class="admin-account-menu" popover>
|
|
17
|
+
<a href="{{ me.url }}">Edit profile</a>
|
|
18
|
+
<form method="post" action="{{ logoutUrl }}">
|
|
19
|
+
<input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
|
|
20
|
+
<button type="submit">Log out</button>
|
|
21
|
+
</form>
|
|
22
|
+
</div>
|
|
16
23
|
{% endif %}
|
|
17
24
|
</header>
|
|
18
25
|
{% endblock %}
|
|
@@ -32,7 +32,11 @@
|
|
|
32
32
|
|
|
33
33
|
<div class="admin-editor-main">
|
|
34
34
|
<label for="editor-title">Title</label>
|
|
35
|
-
|
|
35
|
+
{#- A post may go without one, and is then a note; a page is always named. -#}
|
|
36
|
+
<input id="editor-title" name="title" type="text" value="{{ form.title }}"{% if kind.type == "page" %} required{% endif %} autofocus />
|
|
37
|
+
{% if kind.type == "post" %}
|
|
38
|
+
<p class="admin-hint">Leave it empty to write a note: the post is then its words, and takes its slug from the first of them.</p>
|
|
39
|
+
{% endif %}
|
|
36
40
|
|
|
37
41
|
<label for="editor-body">Body</label>
|
|
38
42
|
<textarea id="editor-body" name="body" rows="24">{{ form.body }}</textarea>
|
|
@@ -88,6 +92,14 @@
|
|
|
88
92
|
<p class="admin-hint">Separated by commas.</p>
|
|
89
93
|
{% endif %}
|
|
90
94
|
|
|
95
|
+
{% if kind.type == "post" %}
|
|
96
|
+
{#- The mf2 `in-reply-to`: a URL here makes the post a reply, threads
|
|
97
|
+
it in the fediverse and sends that page a webmention. -#}
|
|
98
|
+
<label for="editor-in-reply-to">In reply to</label>
|
|
99
|
+
<input id="editor-in-reply-to" name="in-reply-to" type="url" value="{{ form.inReplyTo }}" />
|
|
100
|
+
<p class="admin-hint">The address of the post this one answers. Leave it empty for a post that answers nobody.</p>
|
|
101
|
+
{% endif %}
|
|
102
|
+
|
|
91
103
|
<label for="editor-description">Description</label>
|
|
92
104
|
<input id="editor-description" name="description" type="text" value="{{ form.description }}" />
|
|
93
105
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{% extends "layouts/base.njk" %}
|
|
2
|
+
|
|
3
|
+
{% block title %}Something went wrong{% endblock %}
|
|
4
|
+
|
|
5
|
+
{% block content %}
|
|
6
|
+
{# The page an admin request that threw answers with. It extends the bare
|
|
7
|
+
layout rather than the shell because the shell reads the session, the
|
|
8
|
+
menu and the site, and any of those may be what failed. #}
|
|
9
|
+
<h1>Something went wrong</h1>
|
|
10
|
+
<p>This screen could not be shown because of a problem on the server. The error has been logged. Try again in a moment, or go back to the <a href="{{ adminUrl }}">dashboard</a>.</p>
|
|
11
|
+
{% endblock %}
|
package/admin/static/admin.css
CHANGED
|
@@ -54,11 +54,13 @@ a {
|
|
|
54
54
|
min-height: 2.5rem;
|
|
55
55
|
background: var(--admin-bar);
|
|
56
56
|
color: var(--admin-nav-text);
|
|
57
|
+
anchor-name: --admin-bar;
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
.admin-bar a {
|
|
60
61
|
color: var(--admin-nav-text);
|
|
61
62
|
text-decoration: none;
|
|
63
|
+
white-space: nowrap;
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
.admin-bar a:hover,
|
|
@@ -74,22 +76,71 @@ a {
|
|
|
74
76
|
flex: 1;
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
.admin-bar-
|
|
78
|
-
|
|
79
|
+
.admin-bar-account {
|
|
80
|
+
padding: 0;
|
|
81
|
+
border: 0;
|
|
82
|
+
background: none;
|
|
83
|
+
color: var(--admin-nav-text);
|
|
84
|
+
font: inherit;
|
|
85
|
+
text-align: right;
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
anchor-name: --admin-account;
|
|
79
88
|
}
|
|
80
89
|
|
|
81
|
-
.admin-bar
|
|
82
|
-
|
|
90
|
+
.admin-bar-account:hover,
|
|
91
|
+
.admin-bar-account:focus-visible,
|
|
92
|
+
.admin-bar-account:popover-open {
|
|
93
|
+
color: #72aee6;
|
|
83
94
|
}
|
|
84
95
|
|
|
85
|
-
.admin-bar
|
|
86
|
-
|
|
96
|
+
.admin-bar-account::after {
|
|
97
|
+
content: ' \25BE' / '';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* The menu is in the top layer, so it is placed rather than laid out: under
|
|
101
|
+
the greeting where anchor positioning exists, at the bar's right edge
|
|
102
|
+
where it does not. */
|
|
103
|
+
|
|
104
|
+
.admin-account-menu {
|
|
105
|
+
inset: 2.5rem 0 auto auto;
|
|
106
|
+
margin: 0;
|
|
107
|
+
min-width: 10rem;
|
|
108
|
+
padding: 0.25rem 0;
|
|
109
|
+
border: 0;
|
|
110
|
+
background: var(--admin-nav);
|
|
111
|
+
color: var(--admin-nav-text);
|
|
112
|
+
box-shadow: 0 3px 5px rgb(0 0 0 / 20%);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@supports (top: anchor(--admin-bar bottom)) {
|
|
116
|
+
.admin-account-menu {
|
|
117
|
+
inset: anchor(--admin-bar bottom) anchor(--admin-account right) auto auto;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.admin-account-menu a,
|
|
122
|
+
.admin-account-menu button[type='submit'] {
|
|
123
|
+
display: block;
|
|
124
|
+
box-sizing: border-box;
|
|
125
|
+
width: 100%;
|
|
126
|
+
margin: 0;
|
|
127
|
+
padding: 0.5rem 1rem;
|
|
87
128
|
border: 0;
|
|
129
|
+
border-radius: 0;
|
|
88
130
|
background: none;
|
|
89
131
|
color: var(--admin-nav-text);
|
|
90
132
|
font: inherit;
|
|
133
|
+
text-align: left;
|
|
134
|
+
text-decoration: none;
|
|
91
135
|
cursor: pointer;
|
|
92
|
-
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.admin-account-menu a:hover,
|
|
139
|
+
.admin-account-menu a:focus-visible,
|
|
140
|
+
.admin-account-menu button[type='submit']:hover,
|
|
141
|
+
.admin-account-menu button[type='submit']:focus-visible {
|
|
142
|
+
background: var(--admin-bar);
|
|
143
|
+
color: #72aee6;
|
|
93
144
|
}
|
|
94
145
|
|
|
95
146
|
/* The shell: navigation column beside the screen itself. */
|
|
@@ -331,6 +382,8 @@ label {
|
|
|
331
382
|
input[type='text'],
|
|
332
383
|
input[type='password'],
|
|
333
384
|
input[type='email'],
|
|
385
|
+
input[type='url'],
|
|
386
|
+
select,
|
|
334
387
|
textarea {
|
|
335
388
|
width: 100%;
|
|
336
389
|
padding: 0.4rem 0.5rem;
|
|
@@ -346,6 +399,13 @@ textarea {
|
|
|
346
399
|
resize: vertical;
|
|
347
400
|
}
|
|
348
401
|
|
|
402
|
+
/* A select lays its text out at line-height: normal whatever it inherits, so
|
|
403
|
+
it is given the height a text box reaches: the body's 1.6 line, the padding
|
|
404
|
+
and the border. */
|
|
405
|
+
select {
|
|
406
|
+
min-height: calc(1.6em + 0.8rem + 2px);
|
|
407
|
+
}
|
|
408
|
+
|
|
349
409
|
button[type='submit'],
|
|
350
410
|
.admin-button {
|
|
351
411
|
margin-top: 1rem;
|
|
@@ -477,6 +537,7 @@ button[type='submit']:hover,
|
|
|
477
537
|
|
|
478
538
|
.admin-check input {
|
|
479
539
|
width: auto;
|
|
540
|
+
margin: 0;
|
|
480
541
|
}
|
|
481
542
|
|
|
482
543
|
.admin-editor-buttons {
|
|
@@ -659,14 +720,6 @@ button[type='submit']:hover,
|
|
|
659
720
|
border-top: 0;
|
|
660
721
|
}
|
|
661
722
|
|
|
662
|
-
.admin-settings select {
|
|
663
|
-
padding: 0.4rem 0.5rem;
|
|
664
|
-
border: 1px solid #8c8f94;
|
|
665
|
-
background: var(--admin-surface);
|
|
666
|
-
color: inherit;
|
|
667
|
-
font: inherit;
|
|
668
|
-
}
|
|
669
|
-
|
|
670
723
|
.admin-settings input:disabled {
|
|
671
724
|
background: var(--admin-field);
|
|
672
725
|
color: var(--admin-muted);
|
|
@@ -877,6 +930,7 @@ button[type='submit']:hover,
|
|
|
877
930
|
switches and windows still reads as one column rather than as a form. */
|
|
878
931
|
|
|
879
932
|
.admin-inline select {
|
|
933
|
+
width: auto;
|
|
880
934
|
margin: 0;
|
|
881
935
|
}
|
|
882
936
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/admin/comments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/admin/comments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAO1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOlD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAGzE;;;;;;;;;;;;;;GAcG;AAEH,uCAAuC;AACvC,eAAO,MAAM,aAAa,oBAA6B,CAAC;AAExD,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,kCAAkC;AAClC,eAAO,MAAM,sBAAsB,6BAA8B,CAAC;AAElE,kCAAkC;AAClC,eAAO,MAAM,mBAAmB,0BAA2B,CAAC;AAE5D,kDAAkD;AAClD,eAAO,MAAM,oBAAoB;IAC/B,uCAAuC;aACvC,EAAE,EAAE,IAAI;IACR,gEAAgE;aAChE,MAAM,EAAE,QAAQ;IAChB,+CAA+C;aAC/C,IAAI,EAAE,MAAM;IACZ,2CAA2C;aAC3C,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,eAAe,YAAI,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAEtE,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,4DAA4D;AAC5D,eAAO,MAAM,YAAY,EAAE,SAAS;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAI3E,CAAC;AAEF,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sDAAsD;IACtD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,uEAAuE;AACvE,MAAM,WAAW,0BAA0B;IACzC,oFAAoF;IACpF,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EACrB,OAAO,EAAE,0BAA0B,GAClC,IAAI,CA+IN;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,yCAAyC;AACzC,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,SAAI,GAAG,MAAM,CAG/D"}
|
package/dist/admin/comments.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { postLabel } from '../content/post-type.js';
|
|
1
2
|
import { renderCommentMarkdown } from '../comments/markdown.js';
|
|
2
3
|
import { isModerationAction, moderateComment } from '../comments/moderate.js';
|
|
3
4
|
import { intakeComment } from '../comments/records.js';
|
|
@@ -213,7 +214,7 @@ function commentRow(c, comment) {
|
|
|
213
214
|
// The first eight characters are enough to see that two comments came from
|
|
214
215
|
// one place, which is the only question the hash is there to answer.
|
|
215
216
|
address: comment.addressHash === null ? null : comment.addressHash.slice(0, 8),
|
|
216
|
-
post: document
|
|
217
|
+
post: document === undefined ? comment.slug : postLabel(document),
|
|
217
218
|
postUrl: comment.permalink === '' ? null : comment.permalink,
|
|
218
219
|
editUrl: document === undefined
|
|
219
220
|
? null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/admin/comments.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/admin/comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,6 +159,8 @@ export interface EditorForm {
|
|
|
159
159
|
* decision-14 has to be offered back as what it says until somebody saves it.
|
|
160
160
|
*/
|
|
161
161
|
author: string;
|
|
162
|
+
/** The post this one replies to, the mf2 `in-reply-to`. Posts only. */
|
|
163
|
+
inReplyTo: string;
|
|
162
164
|
draft: boolean;
|
|
163
165
|
/** Whether `eleventyExcludeFromCollections` is set. Pages only. */
|
|
164
166
|
exclude: boolean;
|
|
@@ -205,6 +207,7 @@ export declare function formFor(document: Document, timezone?: string): EditorFo
|
|
|
205
207
|
export declare function findBySlug(store: ContentStore, kind: DocumentKind, slug: string): Document | undefined;
|
|
206
208
|
/** What the listing template shows for one document. */
|
|
207
209
|
export interface DocumentRow {
|
|
210
|
+
/** What the row's link says: the title, or a note's first words. */
|
|
208
211
|
title: string;
|
|
209
212
|
slug: string;
|
|
210
213
|
author: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/admin/documents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAmB,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/admin/documents.ts"],"names":[],"mappings":"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"}
|