Recent changes to this wiki:

untag patch: this todo is a change request for ikiwiki.info
diff --git a/doc/todo/Change_the_ikiwiki.info_search_box_to_not_using_Google.mdwn b/doc/todo/Change_the_ikiwiki.info_search_box_to_not_using_Google.mdwn
index 84e83cea7..66d9182c5 100644
--- a/doc/todo/Change_the_ikiwiki.info_search_box_to_not_using_Google.mdwn
+++ b/doc/todo/Change_the_ikiwiki.info_search_box_to_not_using_Google.mdwn
@@ -9,7 +9,7 @@ With both engines adding the "site:ikiwiki.info" string to the search terms limi
 > I've had a first stab at implementing this. It's in [my fork on
 > GitHub](https://github.com/jmtd/ikiwiki/tree/duckduckgo), specifically [branch
 > duckduckgo](https://github.com/jmtd/ikiwiki/tree/duckduckgo).
-> It's also live on <https://jmtd.net/>. — [[Jon]] (2019) [[!tag patch]]
+> It's also live on <https://jmtd.net/>. — [[Jon]] (2019)
 
 >> I've just updated this branch to not require JavaScript (I learned about a hidden parameter to
 >> the search form for specifying the URLs to search under). In case this wasn't clear already, I
@@ -23,3 +23,6 @@ With both engines adding the "site:ikiwiki.info" string to the search terms limi
 >>> every time (I don't let it save the cookie). (2)
 >>> 
 >>> (1) is no doubt a pre-requisite for (2). Are either under consideration? *—[[Jon]], 2021-02-07*
+
+>>>> Untagging 'patch': _this_ TODO is specifically a request to change <https://ikiwiki.info/>,
+>>>> and not the inclusion of the duckduckgo patch. &mdash; *[[Jon]], 2024-02-22*

pubdate bug fixed
diff --git a/doc/bugs/pubdate_not_valid_for_html5.mdwn b/doc/bugs/pubdate_not_valid_for_html5.mdwn
index fe956c521..9bc4a9c1a 100644
--- a/doc/bugs/pubdate_not_valid_for_html5.mdwn
+++ b/doc/bugs/pubdate_not_valid_for_html5.mdwn
@@ -9,3 +9,5 @@ Patch: <https://github.com/jmtd/ikiwiki/commit/a137103d3004cc8cec42459205684ec48
 *—[[Jon]], 2020-10-06*
 
 > LGTM. In [[bugs/charset_attribute_on_the_script_element_is_obsolete]], I found that `itemprop="datePublished"` was another way to do this, but it seems like there is no real standard way to do this anymore, so I'm happy with anything that doesn't break validators. :) *--[[anarcat]], 2022-09-06*
+
+[[done]]. Thanks for the ACK &mdash; *[[Jon]], 2024-02-22*

done
diff --git a/doc/todo/report_on_specific_markdown_implementation_used.mdwn b/doc/todo/report_on_specific_markdown_implementation_used.mdwn
index 7efaca1d8..5e1e5bf0f 100644
--- a/doc/todo/report_on_specific_markdown_implementation_used.mdwn
+++ b/doc/todo/report_on_specific_markdown_implementation_used.mdwn
@@ -12,6 +12,11 @@ Patch: <https://github.com/jmtd/ikiwiki/commit/79297a0879e4f05f421b560bbbc74c227
 >> I should have done something like `"mdwn: ".gettext("using ")."Text::Markdown::markdown"`.
 >> I bow to the superior gettext knowledge of just about anyone. *— [[Jon]], 2021-11-10* 
 
+>>> I dropped the `gettext` in the end: the only localizable bit of the strings was 'using'
+>>> so there wasn't much point. Thanks! &mdash; *[[Jon]], 2024-02-22*
+
 [[!tag patch]]
 [[!template id=gitbranch branch=jon/mdwn-debug-log-chosen-impl author="[[Jon]]"]]
 
+> [[done]]: <http://source.ikiwiki.branchable.com/?p=source.git;a=commitdiff;h=4996866181cbcce15ebb98f9c9142af26f2e80e7>
+> &mdash; *[[Jon]], 2024-02-22*

some review notes for this patch
diff --git a/doc/bugs/Commonmark_support.mdwn b/doc/bugs/Commonmark_support.mdwn
index cd1bd90f8..01c38e16a 100644
--- a/doc/bugs/Commonmark_support.mdwn
+++ b/doc/bugs/Commonmark_support.mdwn
@@ -27,3 +27,18 @@ to do.
 Patch: <https://github.com/jmtd/ikiwiki/commit/c76eeac8152604ce3d7d1672fe404c8ee8ef2dd8>
 [[!tag patch]]
 [[!template id=gitbranch branch=jon/commonmark author="[[Jon]]"]]
+
+> I'm starting to review outstanding IkiWiki patches, and this one was an
+> early candidate because it's so trivial, but I have some questions to resolve.
+>
+> 1. In order of preference, I've inserted this after multimarkdown and
+>    Discount, but those are only enabled if they are explicitly selected;
+>    Commonmark is ahead of the remaining implementations that are checked
+>    for (`Text::Markdown`, `Markdown`, `/usr/bin/markdown`), and so if
+>    available, would take precedence. Is this reasonable?
+> 2. Should one be able to explicitly force Commonmark, like one can with multimarkdown and Discount?
+> 3. I'd not use `gettext` in the debug print now.
+> 4. I need to double check why I've used `->` instead of `::` (thanks [[users/anarcat]])
+> 5. Per [[smcv]]'s comment above, what's the status of the Commonmark library in Debian now?
+>
+> &mdash; *[[Jon]], 2024-02-22*

Added a comment: Basic Homebrew Tap for ikiwiki
diff --git a/doc/forum/Can_someone_add_Ikiwiki_in_Homebrew__63__/comment_5_3e59857673112de1bd9a47e42bdff8ac._comment b/doc/forum/Can_someone_add_Ikiwiki_in_Homebrew__63__/comment_5_3e59857673112de1bd9a47e42bdff8ac._comment
new file mode 100644
index 000000000..c53f31691
--- /dev/null
+++ b/doc/forum/Can_someone_add_Ikiwiki_in_Homebrew__63__/comment_5_3e59857673112de1bd9a47e42bdff8ac._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="ewen"
+ avatar="http://cdn.libravatar.org/avatar/842f85937fe6a92934d188f1c86109e6"
+ subject="Basic Homebrew Tap for ikiwiki"
+ date="2024-02-05T02:58:58Z"
+ content="""
+Since no one else had done it, I've created a basic Homebrew Tap (ie non-core Formula) for ikiwiki, now that Homebrew has support for external (ie, non-core) Formulas developed by end users:
+
+[https://github.com/naosnz/homebrew-ikiwiki](https://github.com/naosnz/homebrew-ikiwiki)
+
+Only tested on macOS 13 (Ventura) so far, and only with very basic ikiwiki features from the command line which is pretty much all I need for my purpose.  (Lots of the more advanced ikiwiki features/plugins will need more Perl modules installed, which anyone who needs them will need to figure out; there are some examples of having Homebrew install ikiwiki Perl \"resources\" in the formula for essential Perl modules which might be a guide how to add more.)
+"""]]

Add urosm's personal git repository
diff --git a/doc/git.mdwn b/doc/git.mdwn
index 17a44d2c8..0e2647225 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -65,6 +65,8 @@ think about merging them. This is recommended. :-)
 * [[hefee]] `https://salsa.debian.org/hefee/ikiwiki.git/` ([[browse|https://salsa.debian.org/hefee/ikiwiki]])
 * bsv `https://bico.media/1EZF5WfG6t35iwFpyVVptxT1MB4DKt6G2U`
   bsv blockchain repo using ([[git-remote-bsv|https://github.com/xloem/git-remote-bsv]])
+* urosm `https://git.kompot.si/urosm/ikiwiki.git`
+
 ## branches
 
 Current branches of ikiwiki are listed on [[branches]].

remove spammer test page
diff --git a/doc/test_page_space_allowed.mdwn b/doc/test_page_space_allowed.mdwn
deleted file mode 100644
index 87ebc62ae..000000000
--- a/doc/test_page_space_allowed.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-tada!
-Hello

revert rename of recentchanges by insane person (which broke build)
diff --git a/doc/json.tl.ph.mdwn b/doc/recentchanges.mdwn
similarity index 100%
rename from doc/json.tl.ph.mdwn
rename to doc/recentchanges.mdwn

diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 0eac0fa0e..4915b57ac 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -1,4 +1,4 @@
-General information
+General Information
 ===================
 
 Feel free to add your own ikiwiki site! In case you have created a custom theme consider adding it to [the theme list](http://ikiwiki.info/themes/)

diff --git a/doc/test_page_space_allowed.mdwn b/doc/test_page_space_allowed.mdwn
index c8f912322..87ebc62ae 100644
--- a/doc/test_page_space_allowed.mdwn
+++ b/doc/test_page_space_allowed.mdwn
@@ -1 +1,2 @@
 tada!
+Hello

reply
diff --git a/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn b/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn
index 00eec1405..e9a175f8c 100644
--- a/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn
+++ b/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn
@@ -1,3 +1,5 @@
 The following error is displayed when trying to include a `jpg` image: 
 
 `[[!img Error: failed to read filename.jpg: Exception 435: unable to open image 'jpeg:/path/to/source/folder/filename.jpg[0]': No such file or directory @ error/blob.c/OpenBlob/3569]]`
+
+> I routinely include JPEGs via img. Can you share a) exactly the directive you've tried to use to generate that error and b), if possible, the source image? &mdash; *[[Jon]], 2023-12-05*

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index edf0c055d..9492c4bb6 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -278,3 +278,5 @@ Install ikiwiki
 If you're using Debian or Ubuntu, ikiwiki is an apt-get install ikiwiki away. If you're not, see the download and install pages.
 
 You may also want to try out IkiWiki in a container.
+
+This line was added using the web interface.

diff --git a/doc/sandbox/Number.MAXIMUM_VALUE.mdwn b/doc/sandbox/Number.MAXIMUM_VALUE.mdwn
new file mode 100644
index 000000000..9daeafb98
--- /dev/null
+++ b/doc/sandbox/Number.MAXIMUM_VALUE.mdwn
@@ -0,0 +1 @@
+test

test
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 8fd68f4c4..edf0c055d 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -1,3 +1,5 @@
+[[Number.MAXIMUM_VALUE]]
+
 ### testing graph directive...
 
 [[!graph   src=""""

Update branch location
diff --git a/doc/todo/_Add_ikiwiki_PO-Plugin_to_ignore_languages.mdwn b/doc/todo/_Add_ikiwiki_PO-Plugin_to_ignore_languages.mdwn
index fbdccc5b2..2616e3281 100644
--- a/doc/todo/_Add_ikiwiki_PO-Plugin_to_ignore_languages.mdwn
+++ b/doc/todo/_Add_ikiwiki_PO-Plugin_to_ignore_languages.mdwn
@@ -6,7 +6,7 @@ the end-user. More precisely, PO files for these languages are updated
 normally, however, HTML creation will be disabled and no reference to
 these translations will be visible on the website.
 
-See also downstream bug report in tails: <https://labs.riseup.net/code/issues/15355>
+See also downstream bug report in tails: <https://gitlab.tails.boum.org/tails/tails/-/issues/15355>
 
 > From the downstream bug report it appears this branch is not yet
 > considered ready (as of February 2019), so I haven't attempted to
@@ -22,7 +22,7 @@ See also downstream bug report in tails: <https://labs.riseup.net/code/issues/15
 > --[[smcv]]
 
 >> I've put this branch into a shape that I now dare submitting:
->> https://salsa.debian.org/tails-team/ikiwiki/tree/feature/15355-po-plugin-disable-languages.
+>> https://gitlab.tails.boum.org/tails/ikiwiki/-/tree/feature/15355-po-plugin-disable-languages.
 >> It adds a little bit test coverage in the form of integration tests
 >> for the proposed feature, that incidentally exercise the rest of the
 >> basic functionality of the PO plugin.

Update branch location
diff --git a/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn b/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn
index 3d231cf3c..5915def19 100644
--- a/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn
+++ b/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn
@@ -2,7 +2,7 @@
 
 With po4a 0.58+, the po plugin incorrectly extracts UTF-8 strings from source pages.
 
-I've prepared a branch to fix this: https://salsa.debian.org/tails-team/ikiwiki/-/tree/po-fix-utf8
+I've prepared a branch to fix this: https://gitlab.tails.boum.org/tails/ikiwiki/-/tree/po-fix-utf8
 
 This branch adds a test case that fails on current `master`.
 That test case passes from my branch on Debian sid with po4a 0.55 (Buster), 0.62 (Bullseye), and 0.66 (sid).

Add notqmail.org
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index d39769bca..0eac0fa0e 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -52,6 +52,7 @@ Projects & Organizations
   * [Børneuniversitetet](http://support.borneuni.dk/) ([source](http://source.borneuni.dk/))
 * [CampusGrün Hamburg](http://www.campusgruen.org/)
 * The [awesome window manager homepage](http://awesome.naquadah.org/)
+* [notqmail](https://notqmail.org)
 * [vcs-home](http://vcs-home.madduck.net)
 * [Public Domain collection of Debian related tips & tricks](http://dabase.com/tips/) - please add any tips too
 * [Finnish Debian community](http://debian.fi)

diff --git a/doc/news/version_3.20190207.mdwn b/doc/news/version_3.20190207.mdwn
index bd8f33fe8..b9baffb73 100644
--- a/doc/news/version_3.20190207.mdwn
+++ b/doc/news/version_3.20190207.mdwn
@@ -32,9 +32,3 @@ ikiwiki 3.20190207 released with [[!toggle text="these changes"]]
      Thanks, Alexandre Oliva
    * poll: Added postlink and posttrail options for better multi-page polls.
    * Fix permalink to comments."""]]
-
-
-
-
-
-[[!img favicon.svg align="right" size="" alt=""]]

diff --git a/doc/news/version_3.20190207.mdwn b/doc/news/version_3.20190207.mdwn
index 8e5696ffd..bd8f33fe8 100644
--- a/doc/news/version_3.20190207.mdwn
+++ b/doc/news/version_3.20190207.mdwn
@@ -31,4 +31,10 @@ ikiwiki 3.20190207 released with [[!toggle text="these changes"]]
    * aggregate: Fix aggregation of posts without a title.
      Thanks, Alexandre Oliva
    * poll: Added postlink and posttrail options for better multi-page polls.
-   * Fix permalink to comments."""]]
\ No newline at end of file
+   * Fix permalink to comments."""]]
+
+
+
+
+
+[[!img favicon.svg align="right" size="" alt=""]]

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 2b768c8ce..8fd68f4c4 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -1,17 +1,16 @@
 ### testing graph directive...
 
 [[!graph   src=""""
-google [ href="http://google.com/" ]
+google [ href="http://google.com/"]
 sandbox [ href=[[SandBox]] ]
-help [ href=[[ikiwiki/formatting]] ]
-newpage [ href=[[NewPage]] ]
+help [ href=[[ikiwiki/formatting]]]
+newpage [ href=[[NewPage]]]
 
 google -> sandbox -> help -> newpage -> help -> google;
 """"]]
 
 ### Is this a heading?
 
-Why doesn't the following work?..
 [[!color  foreground=white background=#ff0000 text="White text on red background"]]
 
 Sure it is.

diff --git a/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn b/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn
new file mode 100644
index 000000000..00eec1405
--- /dev/null
+++ b/doc/bugs/__91____33__img__93____93___directive_does_not_work_with_jpg_images.mdwn
@@ -0,0 +1,3 @@
+The following error is displayed when trying to include a `jpg` image: 
+
+`[[!img Error: failed to read filename.jpg: Exception 435: unable to open image 'jpeg:/path/to/source/folder/filename.jpg[0]': No such file or directory @ error/blob.c/OpenBlob/3569]]`

trace of match_ispage/pagetype
diff --git a/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn b/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn
index 4964f4af1..41a9c7bc2 100644
--- a/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn
+++ b/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn
@@ -31,3 +31,14 @@ The second is empty. Expected behaviour:
 (with [[plugins/txt]] not enabled)
 
 *&mdash; [[Jon]], 2023-09-06*
+
+> here's a trace of what happens to `ispage()` when applied to the above example.
+> 
+> * `match_ispage` gets called with argument "a/foo"
+> * it calls `Ikiwiki::pagetype` with that argument unmodified
+> * the first branch checks for a period, so fails
+> * base is calculated to be "foo"
+> * the next branch fails as $hooks{htmlize}{foo} is false
+> * the function returns undefined.
+> 
+> *&mdash; [[Jon]], 2023-09-06*

uninitialized value warning with attachment plugin
diff --git a/doc/bugs/filecheck.pm:_warnings_about_division_with_uninitialized_value.mdwn b/doc/bugs/filecheck.pm:_warnings_about_division_with_uninitialized_value.mdwn
new file mode 100644
index 000000000..dff77a00d
--- /dev/null
+++ b/doc/bugs/filecheck.pm:_warnings_about_division_with_uninitialized_value.mdwn
@@ -0,0 +1,20 @@
+If you enable [[plugins/filecheck]] *and* [[plugins/attachment]], then IkiWiki (e.g. via wrapper) will throw a lot of the following errors on stderr
+
+    Use of uninitialized value $size in division (/) at /.../filecheck.pm line 73.
+
+73 is
+
+```
+sub humansize ($) {
+	my $size=shift;
+
+	foreach my $unit (reverse sort { $units{$a} <=> $units{$b} || $b cmp $a } keys %units) {
+		if ($size / $units{$unit} > 0.25) {
+			return (int($size / $units{$unit} * 10)/10).$unit;
+		}
+	}
+	return $size; # near zero, or negative
+}
+```
+
+Disabling *attachment* is sufficient to stop this. *&mdash; [[Jon]] 2023-09-06*

ispage() does not seem to work as expected
diff --git a/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn b/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn
new file mode 100644
index 000000000..4964f4af1
--- /dev/null
+++ b/doc/bugs/ispage__40____41___does_not_work_as_expected.mdwn
@@ -0,0 +1,33 @@
+In a few places, it is recommended to try the `ispage()` pagespec, described at [[ikiwiki/pagespec/attachment]] but provided by the (supposedly independent) plugin [[plugins/filecheck]].
+
+I've had trouble getting it to work so put together a minimal test-case. Very basic wiki with filecheck enabled (but attachment not).
+
+File structure as follows
+
+```
+index.mdwn
+a/foo.mdwn
+a/bar.txt
+a/pic.png
+```
+
+index containing
+
+```
+\[[!map pages="a/*"]]
+\[[!map pages="a/* and ispage()"]]
+```
+
+The first map expands, as expected, to
+
+ *  bar.txt
+ *  foo
+ *  pic.png
+
+The second is empty. Expected behaviour:
+
+ * foo
+
+(with [[plugins/txt]] not enabled)
+
+*&mdash; [[Jon]], 2023-09-06*

response
diff --git a/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn b/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn
index f3706174d..7e70836e1 100644
--- a/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn
+++ b/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn
@@ -1 +1,5 @@
 How to integrate ikiwiki on wordpress site?
+
+> Your question is a little bit too vague, there may be some way to achieve
+> it in some very specific circumstances, but I think the general answer is:
+> you can't. *&mdash; [[Jon]], 2023-06-07*

response, workaround
diff --git a/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn b/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn
index 275857c38..38f30d897 100644
--- a/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn
+++ b/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn
@@ -2,3 +2,13 @@ I have been browsing the `templates` directory and the css files to understand w
 
 Thanks,
 Frederik
+
+> I don't think it is possible to reposition the feedlink
+> buttons that are generated by the inline plugin. This is a reasonable enhancement
+> request: Alas no one is working on IkiWiki at the moment.
+> 
+> Instead, you could hide those
+> ones altogether (by e.g. specifying a templatedir in your setup that contains an
+> empty feedlink.tmpl file) and use another method to include some in the location
+> you want, such as just plain old HTML (the content is static enough).
+>  &mdash; *[[Jon]], 2023-06-07*

diff --git a/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn b/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn
new file mode 100644
index 000000000..275857c38
--- /dev/null
+++ b/doc/forum/How_to_move_RSS_button_to_bottom_of_page__63__.mdwn
@@ -0,0 +1,4 @@
+I have been browsing the `templates` directory and the css files to understand where the placement of the feedbuttons is determined, but can't seem to figure it out fully. They appear to be generated by line 388 in `inline.pm` for a blog setup, which reads in `feedlink.tmpl`. Is there a way to configure where they are rendered on the page in `page.tmpl` or through some crafty CSS?
+
+Thanks,
+Frederik

diff --git a/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn b/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn
new file mode 100644
index 000000000..f3706174d
--- /dev/null
+++ b/doc/forum/How_to_integrate_ikiwiki_on_wordpress_site__63__.mdwn
@@ -0,0 +1 @@
+How to integrate ikiwiki on wordpress site?

fix mdash
diff --git a/doc/users/spalax/discussion.mdwn b/doc/users/spalax/discussion.mdwn
index c0cac78ee..a9e08fa25 100644
--- a/doc/users/spalax/discussion.mdwn
+++ b/doc/users/spalax/discussion.mdwn
@@ -1,2 +1,2 @@
 > htaccess
->> Just to write, this is something I've considered writing to for the [opinionated-ikiwiki](https://github.com/jmtd/opinionated-ikiwiki) [[containers]], in order to have one account DB shared between IkiWiki CGI and Git CGI. &emdash; *[[Jon]], 2023-04-03*
+>> Just to write, this is something I've considered writing to for the [opinionated-ikiwiki](https://github.com/jmtd/opinionated-ikiwiki) [[containers]], in order to have one account DB shared between IkiWiki CGI and Git CGI. &mdash; *[[Jon]], 2023-04-03*

htaccess - me too
diff --git a/doc/users/spalax/discussion.mdwn b/doc/users/spalax/discussion.mdwn
new file mode 100644
index 000000000..c0cac78ee
--- /dev/null
+++ b/doc/users/spalax/discussion.mdwn
@@ -0,0 +1,2 @@
+> htaccess
+>> Just to write, this is something I've considered writing to for the [opinionated-ikiwiki](https://github.com/jmtd/opinionated-ikiwiki) [[containers]], in order to have one account DB shared between IkiWiki CGI and Git CGI. &emdash; *[[Jon]], 2023-04-03*

Spalax's (unmaintained) plugins have a new home
diff --git a/doc/plugins/contrib/addtag.mdwn b/doc/plugins/contrib/addtag.mdwn
index 5b9461d28..6b84b1077 100644
--- a/doc/plugins/contrib/addtag.mdwn
+++ b/doc/plugins/contrib/addtag.mdwn
@@ -70,4 +70,4 @@ the following code to your CSS.
 
 ## Code
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Addtag]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/addtag]].
diff --git a/doc/plugins/contrib/compile.mdwn b/doc/plugins/contrib/compile.mdwn
index d3139e900..72dfee6cd 100644
--- a/doc/plugins/contrib/compile.mdwn
+++ b/doc/plugins/contrib/compile.mdwn
@@ -225,4 +225,4 @@ displaying it on your website, you can use as a template:
 
 # Download
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Compile]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/compile]].
diff --git a/doc/plugins/contrib/created_in_future.mdwn b/doc/plugins/contrib/created_in_future.mdwn
index 95793e12a..7e82eefc2 100644
--- a/doc/plugins/contrib/created_in_future.mdwn
+++ b/doc/plugins/contrib/created_in_future.mdwn
@@ -25,5 +25,5 @@ It can be used to display a list of upcoming events.
 
 ## Code
 
-Code and documentation this way: [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Created_in_future]].
+Code and documentation this way: [[https://spalax.frama.io/gresille-ikiwiki/created_in_future]].
 """]]
diff --git a/doc/plugins/contrib/datetime_cmp.mdwn b/doc/plugins/contrib/datetime_cmp.mdwn
index 47eaffaec..baeee2d4e 100644
--- a/doc/plugins/contrib/datetime_cmp.mdwn
+++ b/doc/plugins/contrib/datetime_cmp.mdwn
@@ -85,4 +85,4 @@ It can be used to display a list of upcoming events.
 
 ## Code
 
-Code and documentation this way: [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/datetime_cmp]].
+Code and documentation this way: [[https://spalax.frama.io/gresille-ikiwiki/datetime_cmp]].
diff --git a/doc/plugins/contrib/jscalendar.mdwn b/doc/plugins/contrib/jscalendar.mdwn
index 8123b3132..acbaec724 100644
--- a/doc/plugins/contrib/jscalendar.mdwn
+++ b/doc/plugins/contrib/jscalendar.mdwn
@@ -45,6 +45,6 @@ options of the directive.
 
 You can see this plugin in action on [[our website|http://www.gresille.org]].
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Jscalendar]]
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/jscalendar]]
 
 -- Louis
diff --git a/doc/plugins/contrib/monthcalendar.mdwn b/doc/plugins/contrib/monthcalendar.mdwn
index c21be0abe..b00e49d0f 100644
--- a/doc/plugins/contrib/monthcalendar.mdwn
+++ b/doc/plugins/contrib/monthcalendar.mdwn
@@ -124,4 +124,4 @@ plugin.
 
 ## Code
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Monthcalendar]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/monthcalendar]].
diff --git a/doc/plugins/contrib/pageversion.mdwn b/doc/plugins/contrib/pageversion.mdwn
index 0d86f0f0a..b3089ef73 100644
--- a/doc/plugins/contrib/pageversion.mdwn
+++ b/doc/plugins/contrib/pageversion.mdwn
@@ -86,4 +86,4 @@ Directive ``\[[!redirect]]`` (from the [[redirect]] plugin) can be used together
 
 # Download and Install
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/PageVersion]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/pageVersion]].
diff --git a/doc/plugins/contrib/parenttag.mdwn b/doc/plugins/contrib/parenttag.mdwn
index 5dc01c7c5..233d24b4f 100644
--- a/doc/plugins/contrib/parenttag.mdwn
+++ b/doc/plugins/contrib/parenttag.mdwn
@@ -11,4 +11,4 @@ The `taglink` directive is changed as well: instead of displaying the leaf of th
 
 ## Code
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Parenttag]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/parenttag]].
diff --git a/doc/plugins/contrib/poetry.mdwn b/doc/plugins/contrib/poetry.mdwn
index aed2e420a..7e6dc2b2b 100644
--- a/doc/plugins/contrib/poetry.mdwn
+++ b/doc/plugins/contrib/poetry.mdwn
@@ -104,4 +104,4 @@ website](http://barricades.int.eu.org/repertoire/bread_and_roses/).
 
 ## Code
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Poetry]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/poetry]].
diff --git a/doc/plugins/contrib/redirect.mdwn b/doc/plugins/contrib/redirect.mdwn
index 4bf315ae6..d632349e0 100644
--- a/doc/plugins/contrib/redirect.mdwn
+++ b/doc/plugins/contrib/redirect.mdwn
@@ -32,4 +32,4 @@ This directive accepts no setup options.
 
 # Download and install
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Redirect]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/redirect]].
diff --git a/doc/plugins/contrib/sidebar2.mdwn b/doc/plugins/contrib/sidebar2.mdwn
index 5c169bfd4..062b20c0c 100644
--- a/doc/plugins/contrib/sidebar2.mdwn
+++ b/doc/plugins/contrib/sidebar2.mdwn
@@ -93,4 +93,4 @@ handled by this plugin.
 
 # Download and install
 
-Code and documentation: [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Sidebar2]].
+Code and documentation: [[https://spalax.frama.io/gresille-ikiwiki/sidebar2]].
diff --git a/doc/plugins/contrib/taskreport.mdwn b/doc/plugins/contrib/taskreport.mdwn
index 377c9ed39..67da41b32 100644
--- a/doc/plugins/contrib/taskreport.mdwn
+++ b/doc/plugins/contrib/taskreport.mdwn
@@ -58,6 +58,6 @@ To allow CSS customization, the following classes are used.
 
 ## Download and install
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Taskreport]]
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/taskreport]]
 
 -- [[Louis|spalax]]
diff --git a/doc/plugins/contrib/verboserpc.mdwn b/doc/plugins/contrib/verboserpc.mdwn
index 09446fef5..d5617e98c 100644
--- a/doc/plugins/contrib/verboserpc.mdwn
+++ b/doc/plugins/contrib/verboserpc.mdwn
@@ -80,4 +80,4 @@ I am not sure that this plugin is the solution to the problem of debugging exter
 
 # Download and install
 
-Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/VerboseRPC]].
+Code and documentation can be found here : [[https://spalax.frama.io/gresille-ikiwiki/verboserpc]].
diff --git a/doc/users/spalax.mdwn b/doc/users/spalax.mdwn
index 52b538b22..ee8811f74 100644
--- a/doc/users/spalax.mdwn
+++ b/doc/users/spalax.mdwn
@@ -1,10 +1,10 @@
 [[!meta title="Louis Paternault"]]
 
-User of IkiWiki (my [professional website](http://ababsurdo.fr), among others).
+[[Former user|forum/Some_thoughts_about_Ikiwiki]] of IkiWiki.
 
 # Plugins
 
-I wrote and maintain a few plugins, which are available here: [[https://atelier.gresille.org/projects/gresille-ikiwiki]].
+I wrote and maintain a few plugins, which are available here: [[https://framagit.org/spalax/gresille-ikiwiki]].
 
 [[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and author(spalax)"]]
 

a little annoyance when CGIURL is down
diff --git a/doc/todo/proper_links_in_recentchanges_without_CGI.mdwn b/doc/todo/proper_links_in_recentchanges_without_CGI.mdwn
new file mode 100644
index 000000000..37f69fbcc
--- /dev/null
+++ b/doc/todo/proper_links_in_recentchanges_without_CGI.mdwn
@@ -0,0 +1,3 @@
+[[!template  id=gitbranch branch=anarcat/recent-changes-plain-url author="[[anarcat]]"]]
+
+After turning off CGI on my wiki, I was surprised to find out that the RSS feed was basically broken. I was relying on the feed to fetch the list of recently changed pages to feed into a link checker, an archiver, and so on, but now I only get links to anchors inside the recent changes page. Boooring. ;) Here's a patch to restore this functionality which was dropped, possibly mistakenly, in 2008 (!). -- [[anarcat]]

if resurrect, let's drop php
diff --git a/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn b/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn
index facc8b231..9cf2318a6 100644
--- a/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn
+++ b/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn
@@ -11,3 +11,10 @@ I have tried to use the sparkline plugin today and it failed with:
 But really, maybe, the sparkline Perl library should be examined again. Surely it's not *that* bad that we need PHP around here, do we? It looks like [SVG::Sparkline](https://metacpan.org/pod/SVG::Sparkline) could be a good candidate although there's also [Text::Sparkline](https://metacpan.org/pod/Text::Sparkline).
 
 Or maybe sparklines are dead... <http://sparkline.org> doesn't even resolve... Time flies, doesn't it? -- [[anarcat]]
+
+> I hit this a little while ago and ended up ditching the sparkline plugin. But, if it
+> is to be resurrected, I would agree with ditching PHP here, too. For my use-case the
+> data changes so infrequently ([this graph](https://jmtd.net/log/all/500x-graph.png) of
+> blog posts by year, not including the current year) that I manually generate something
+> in LibreCalc annually, and copy the resulting picture in.
+> *— [[Jon]], 2023-01-20*

some success
diff --git a/doc/todo/mastodon_comments.mdwn b/doc/todo/mastodon_comments.mdwn
index 1100552c8..cd9aaa145 100644
--- a/doc/todo/mastodon_comments.mdwn
+++ b/doc/todo/mastodon_comments.mdwn
@@ -7,3 +7,9 @@ I'm not sure how to do this in ikiwiki: how can we access page-specific data in
 Or maybe i just need to make a new template and insert it in my blog posts... pondering. --[[anarcat]]
 
 > I have tried to make a template, and that (obviously) fails because the `<script>` stuff gets sanitized. It seems I would need to split the javascript out of the template into a base template and then make the page template refer to a function in there. It's kind of horrible and messy. I wish there was a way to just access page metadata from the page template itself... I see that the [[plugins/meta]] plugin passes along its metadata, but that's not extensible, so i'd need to either patch that or make yet another plugin. Ugh.
+
+>> Update: I did it. I have something that kind of works that's a combination of a `page.tmpl` patch and a plugin. The plugin adds a `[[!mastodon]]` directive that feeds the `page.tmpl` with the right stuff, and adds comments through Javascript and the API. It's not pretty, but it works. You need [this page.tmpl](https://gitlab.com/anarcat/ikiwiki-bootstrap-anarcat/-/blob/01524241a1346211bad2d681f0ed634af29d5c38/templates/page.tmpl) (or at least [this patch](https://gitlab.com/anarcat/ikiwiki-bootstrap-anarcat/-/commit/491dd6bfba3bee3ce702545e7f445e227dc66b30) and [that one](https://gitlab.com/anarcat/ikiwiki-bootstrap-anarcat/-/commit/c0abd79e53b8fee60cf4582971df35e6feb957fd)) and the [mastodon.pm plugin](https://gitlab.com/anarcat/ikiwiki/-/blob/2400baee8f5bc06f810b5ed96395ee84b05943ed/IkiWiki/Plugin/mastodon.pm) from my [mastodon-plugin](https://gitlab.com/anarcat/ikiwiki/-/tree/mastodon-plugin) branch.
+>>
+>> I'm not even sure this is a good idea. The first test I did was a "test comment" which led to half a dozen "test reply" and then I realized i couldn't redact individual posts from there. Ugh. I don't even know if, when I mute a user, it actually gets hidden from everyone else too...
+>>
+>> So I'll test this for a while, I guess.

failing, so far
diff --git a/doc/todo/mastodon_comments.mdwn b/doc/todo/mastodon_comments.mdwn
index 487b37953..1100552c8 100644
--- a/doc/todo/mastodon_comments.mdwn
+++ b/doc/todo/mastodon_comments.mdwn
@@ -5,3 +5,5 @@ So. I'm considering ditching ikiwiki comments altogether and I'm turning towards
 I'm not sure how to do this in ikiwiki: how can we access page-specific data in [[templates]]?
 
 Or maybe i just need to make a new template and insert it in my blog posts... pondering. --[[anarcat]]
+
+> I have tried to make a template, and that (obviously) fails because the `<script>` stuff gets sanitized. It seems I would need to split the javascript out of the template into a base template and then make the page template refer to a function in there. It's kind of horrible and messy. I wish there was a way to just access page metadata from the page template itself... I see that the [[plugins/meta]] plugin passes along its metadata, but that's not extensible, so i'd need to either patch that or make yet another plugin. Ugh.

diff --git a/doc/todo/mastodon_comments.mdwn b/doc/todo/mastodon_comments.mdwn
new file mode 100644
index 000000000..487b37953
--- /dev/null
+++ b/doc/todo/mastodon_comments.mdwn
@@ -0,0 +1,7 @@
+I'm getting truly fed up with spam in my wiki. At this point, all comments are manually approved and I still get trouble: now it's scammers spamming the registration form with dummy accounts, which bounce back to me when I make new posts, or just generate backscatter for the confirmation email. It's really bad. I have hundreds of users registered on my blog, and I don't know which are spammy, which aren't.
+
+So. I'm considering ditching ikiwiki comments altogether and I'm turning towards Mastodon as a commenting platforms. Others (JAK) have implemented this [as a server](https://github.com/julian-klode/mastodon-comments) but a more interesting approach for me is to simply load them dynamically from the server, which is what [this person has done](https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/). They are using Hugo, however, so they can easily embed page metadata in the template to load the right server with the right comment ID.
+
+I'm not sure how to do this in ikiwiki: how can we access page-specific data in [[templates]]?
+
+Or maybe i just need to make a new template and insert it in my blog posts... pondering. --[[anarcat]]

diff --git a/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn b/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn
new file mode 100644
index 000000000..facc8b231
--- /dev/null
+++ b/doc/bugs/sparkline_fails_to_generate_graphs_in_debian_bullseye.mdwn
@@ -0,0 +1,13 @@
+I have tried to use the sparkline plugin today and it failed with:
+
+    remote: PHP Fatal error:  Cannot use 'Object' as class name as it is reserved in /usr/share/php/sparkline/Object.php on line 71        
+
+... at built time. I have tried to follow the instructions in [[plugins/sparkline]] but those *also* failed with because php5 is long gone from Debian, of course. The `libdigest-sha1-perl` package also seems gone, so I have tried this:
+
+    apt install libsparkline-php php-gd php-cli
+
+... but that is how I ended up with the above failures. I suspect the embedded PHP code in ikiwiki needs to be ported to PHP 7 (or 8 now?)...
+
+But really, maybe, the sparkline Perl library should be examined again. Surely it's not *that* bad that we need PHP around here, do we? It looks like [SVG::Sparkline](https://metacpan.org/pod/SVG::Sparkline) could be a good candidate although there's also [Text::Sparkline](https://metacpan.org/pod/Text::Sparkline).
+
+Or maybe sparklines are dead... <http://sparkline.org> doesn't even resolve... Time flies, doesn't it? -- [[anarcat]]

testing graph directive
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 24e6c9f20..2b768c8ce 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -1,3 +1,14 @@
+### testing graph directive...
+
+[[!graph   src=""""
+google [ href="http://google.com/" ]
+sandbox [ href=[[SandBox]] ]
+help [ href=[[ikiwiki/formatting]] ]
+newpage [ href=[[NewPage]] ]
+
+google -> sandbox -> help -> newpage -> help -> google;
+""""]]
+
 ### Is this a heading?
 
 Why doesn't the following work?..

add link to patch for darkmode support in anti-theme
diff --git a/doc/todo/support_dark_mode_in_antitheme.mdwn b/doc/todo/support_dark_mode_in_antitheme.mdwn
index 801ff2507..2e1597796 100644
--- a/doc/todo/support_dark_mode_in_antitheme.mdwn
+++ b/doc/todo/support_dark_mode_in_antitheme.mdwn
@@ -1,4 +1,5 @@
-[[!tag wishlist]]
+[[!tag wishlist patch]]
+[[!template id=gitbranch branch=jon/default-style-support-dark-mode author="[[Jon]]"]]
 
 Modern OSes and browsers can now report a user's preference for a "dark mode"
 setting. See <https://css-tricks.com/a-complete-guide-to-dark-mode-on-the-web/>

new wishlist item: support dark mode in antitheme
diff --git a/doc/todo/support_dark_mode_in_antitheme.mdwn b/doc/todo/support_dark_mode_in_antitheme.mdwn
new file mode 100644
index 000000000..801ff2507
--- /dev/null
+++ b/doc/todo/support_dark_mode_in_antitheme.mdwn
@@ -0,0 +1,19 @@
+[[!tag wishlist]]
+
+Modern OSes and browsers can now report a user's preference for a "dark mode"
+setting. See <https://css-tricks.com/a-complete-guide-to-dark-mode-on-the-web/>
+for some background on technical specifics.
+
+The default IkiWiki anti-theme leaves most styling decisions up to the browser.
+Nevertheless, the anti-theme will always be rendered as Light, regardless of a
+user's preference for dark-mode, as a site's css needs to explicitly indicate
+that it *can* support dark-mode in order for it to be available.
+
+IkiWiki's anti-theme almost entirely supports dark-mode out of the box by virtue
+of delegating the style decisions to browser defaults. We should add the minimum
+required CSS to let it be enabled.
+
+(The only example of default theme which does not appear to look good in dark
+mode, in my testing, is the styling around [[RecentChanges]].)
+
+—­[[Jon]], *2022-12-12*

revert spam
This reverts commit 41dd34c030be3c0c3ad98e696117ed6a4d2ca73a
diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 21ef42728..56f78a4e8 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -34,7 +34,7 @@ gnomes will convert them to css files..)
 
 * **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
   designed by [jarico](http://www.openwebdesign.org/userinfo.phtml?user=jcarico) 
-  (License: [public domain](https://simthanhdat.net)). You'll need a modified page.tmpl
+  (License: public domain). You'll need a modified page.tmpl
   **[[css_market/02_Template.tmpl]]**. If you prefer 
   [my header image](http://martin.wuertele.net/images/header.png) you can 
   use it under the terms of the MIT License (see png comment).

diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 56f78a4e8..21ef42728 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -34,7 +34,7 @@ gnomes will convert them to css files..)
 
 * **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
   designed by [jarico](http://www.openwebdesign.org/userinfo.phtml?user=jcarico) 
-  (License: public domain). You'll need a modified page.tmpl
+  (License: [public domain](https://simthanhdat.net)). You'll need a modified page.tmpl
   **[[css_market/02_Template.tmpl]]**. If you prefer 
   [my header image](http://martin.wuertele.net/images/header.png) you can 
   use it under the terms of the MIT License (see png comment).

Revert spam edit.
This reverts commit 420381a226fbd0a19c8a0bc5125c572ab4ad775d.
diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 6f282949d..56f78a4e8 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -34,7 +34,7 @@ gnomes will convert them to css files..)
 
 * **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
   designed by [jarico](http://www.openwebdesign.org/userinfo.phtml?user=jcarico) 
-  (License: [public domain](https://simthanhdat.net/)). You'll need a modified page.tmpl
+  (License: public domain). You'll need a modified page.tmpl
   **[[css_market/02_Template.tmpl]]**. If you prefer 
   [my header image](http://martin.wuertele.net/images/header.png) you can 
   use it under the terms of the MIT License (see png comment).

diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 56f78a4e8..6f282949d 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -34,7 +34,7 @@ gnomes will convert them to css files..)
 
 * **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
   designed by [jarico](http://www.openwebdesign.org/userinfo.phtml?user=jcarico) 
-  (License: public domain). You'll need a modified page.tmpl
+  (License: [public domain](https://simthanhdat.net/)). You'll need a modified page.tmpl
   **[[css_market/02_Template.tmpl]]**. If you prefer 
   [my header image](http://martin.wuertele.net/images/header.png) you can 
   use it under the terms of the MIT License (see png comment).

Review of disclaimer.
diff --git a/doc/plugins/contrib/opengraph/discussion.mdwn b/doc/plugins/contrib/opengraph/discussion.mdwn
new file mode 100644
index 000000000..8b6d0c79c
--- /dev/null
+++ b/doc/plugins/contrib/opengraph/discussion.mdwn
@@ -0,0 +1,3 @@
+Regarding the disclaimer "WARNING: Open Graph is modern spyware. You should use this if and only if you don't mind making the readers of your wiki/blog being tracked by evil corporations without their consent. By using this plugin you are being mean to the people who are reading your content. You have been warned."
+
+I have looked up how open graph is described to work, and don't see how this can be considered spyware. All it seems to do is enable to control how shared links are displayed on social networks that implement the protocol, and possibly on those platforms determine how many times a link to my site would be shared a little more easily, but there doesn't seem to be a way readers of my site would be tracked thanks to the metadata on the wiki. Even if they are users of social networks and logged in there, their browsing of my site won't be tracked after open graph metadata is included. Is that incorrect?

Revert spam
This reverts commit 48cb1a494577dc047c17f10364ecd217b01194ad
diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 21ef42728..56f78a4e8 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -34,7 +34,7 @@ gnomes will convert them to css files..)
 
 * **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
   designed by [jarico](http://www.openwebdesign.org/userinfo.phtml?user=jcarico) 
-  (License: [public domain](https://simthanhdat.net)). You'll need a modified page.tmpl
+  (License: public domain). You'll need a modified page.tmpl
   **[[css_market/02_Template.tmpl]]**. If you prefer 
   [my header image](http://martin.wuertele.net/images/header.png) you can 
   use it under the terms of the MIT License (see png comment).

diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 56f78a4e8..21ef42728 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -34,7 +34,7 @@ gnomes will convert them to css files..)
 
 * **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
   designed by [jarico](http://www.openwebdesign.org/userinfo.phtml?user=jcarico) 
-  (License: public domain). You'll need a modified page.tmpl
+  (License: [public domain](https://simthanhdat.net)). You'll need a modified page.tmpl
   **[[css_market/02_Template.tmpl]]**. If you prefer 
   [my header image](http://martin.wuertele.net/images/header.png) you can 
   use it under the terms of the MIT License (see png comment).

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index acf53e6a8..24e6c9f20 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -258,3 +258,11 @@ I must **emphasise** this.
       cout << "secondvalue is " << secondvalue << '\n';
       return 0;
     }
+
+testeteset
+
+Install ikiwiki
+
+If you're using Debian or Ubuntu, ikiwiki is an apt-get install ikiwiki away. If you're not, see the download and install pages.
+
+You may also want to try out IkiWiki in a container.

Record yesterday's spam edits.
diff --git a/doc/spam_fighting.mdwn b/doc/spam_fighting.mdwn
index bb8bc904d..3a4856267 100644
--- a/doc/spam_fighting.mdwn
+++ b/doc/spam_fighting.mdwn
@@ -39,4 +39,5 @@ ca4d8fc and 17 more | 2015/01/12-14 | spalax. (note the trailing dot) | 122.173.
 1d05cf3 | 2015/05/20 | justine (OpenID) | ?
 697a0e4 and bc1b60b | 2019/12/21 | 360boom720@gmail.com | 99.203.143.171
 39c6ce3 and 13 more | 2020/06/04 | gogreenjogja1453@gmail.com | 114.142.169.63
+109d256 and 22 more | 2022/10/02 | jaysonbaldecanas1986@gmail.com | 193.150.70.77
 """]]

Revert "update for rename of recentchanges.mdwn to json.tl.ph.mdwn"
This reverts the most recent 23 commits, all with the same log message.
diff --git a/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn b/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn
index 1bfd8f3b3..c852df5e9 100644
--- a/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn
+++ b/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn
@@ -1,4 +1,4 @@
-The [[Json.tl.ph]] page is broken (doesn't show any history at all) when used with an empty svnpath in the ikiwiki.setup file.
+The [[RecentChanges]] page is broken (doesn't show any history at all) when used with an empty svnpath in the ikiwiki.setup file.
 
 Say you have the following configuration:
 
@@ -6,7 +6,7 @@ Say you have the following configuration:
     svnrepo => "ssh+svn://foo.bar.com/wiki",
     svnpath => "",
 
-In the above, $svnpath need to be either empty or "/" - both trigger the 'next unless' check in IkiWiki/Rcs/svn.pm:rcs_recentchanges() as shown in the patch below, thus causing all files to be ignored for [[Json.tl.ph]].
+In the above, $svnpath need to be either empty or "/" - both trigger the 'next unless' check in IkiWiki/Rcs/svn.pm:rcs_recentchanges() as shown in the patch below, thus causing all files to be ignored for [[RecentChanges]].
 
 I can not see why this check is needed in the first place, so here's a patch for removing it :)
 
diff --git a/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn b/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
index cd6db2c9d..eb95e9992 100644
--- a/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
+++ b/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
@@ -1,6 +1,6 @@
 The final `</div>` in `recentchanges.tmpl` gets wrapped in a
 `<p>` tag for some reason, resulting in the following invalid XHTML at
-the end of the [[Json.tl.ph]] page
+the end of the [[RecentChanges]] page
 
     <p></div></p>
 
@@ -11,7 +11,7 @@ the end of the [[Json.tl.ph]] page
 Also, there is a problem with the `<img>` tags generated by the smiley
 plugin which end up wrapped in a `<pre>` tag in the inline diff output.
 `<img>` tags is not allowed within a `<pre>` block.  Maybe the smiley
-plugin should be disabled on [[Json.tl.ph]]?
+plugin should be disabled on [[RecentChanges]]?
 
 > See [[Smileys_in_the_block_code]], which is now fixed. --[[Joey]]
 
diff --git a/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn b/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn
index 4c0b4bfb6..0eaeafb0c 100644
--- a/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn
+++ b/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn
@@ -1,4 +1,4 @@
-[[Json.tl.ph]] should not link to pages that are being deleted. For as
+[[RecentChanges]] should not link to pages that are being deleted. For as
 example, see the change with the title 'add news item for ikiwiki 2.60'
 which includes the deletion of "news/version 2.52". Maybe it should be made
 clear in RecentChanges that the change to the file is it being deleted.
diff --git a/doc/bugs/cannot_revert_page_deletion.mdwn b/doc/bugs/cannot_revert_page_deletion.mdwn
index bc440de8a..651b4d0ec 100644
--- a/doc/bugs/cannot_revert_page_deletion.mdwn
+++ b/doc/bugs/cannot_revert_page_deletion.mdwn
@@ -1,4 +1,4 @@
-After deleting a page with the "remove" button, it seems that the page deletion cannot be reverted using the "revert" icon in [[Json.tl.ph]]. 
+After deleting a page with the "remove" button, it seems that the page deletion cannot be reverted using the "revert" icon in [[RecentChanges]]. 
 It ironically says that "Error: ?$pagename does not exist". See [[http://ikiwiki.info/ikiwiki.cgi?rev=860c2c84d98ea0a38a4f91dacef6d4e09f6e6c2e&do=revert]]. [[JeanPrivat]]
 
 > And it only gets that far if the remove plugin is enabled. Otherwise it
diff --git a/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn b/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn
index 14073e731..dae00857b 100644
--- a/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn
+++ b/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn
@@ -1,4 +1,4 @@
-Comments produce links like `sandbox/comment_1` in [[Json.tl.ph]], which,
+Comments produce links like `sandbox/comment_1` in [[RecentChanges]], which,
 when clicked, redirect to a page that does not exist.
 
 The `recentchanges` branch in my repository contains one possible [[patch]],
diff --git a/doc/bugs/discussion.mdwn b/doc/bugs/discussion.mdwn
index e385cf8ad..474e07564 100644
--- a/doc/bugs/discussion.mdwn
+++ b/doc/bugs/discussion.mdwn
@@ -8,7 +8,7 @@ the ikiwiki.cgi CGI wrapper. ..."
 
   Enable [[CGI]] mode. In cgi mode ikiwiki __runs as a cgi script__, and
   supports editing pages, signing in, registration, and displaying
-  [[Json.tl.ph]].
+  [[RecentChanges]].
 
   __To use ikiwiki as a [[CGI]] program you need to use --wrapper or --setup
   to generate a wrapper.__ The wrapper will generally need to run suid 6755
diff --git a/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn b/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn
index 852a0e37d..558eb90c8 100644
--- a/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn
+++ b/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn
@@ -1,4 +1,4 @@
-I'm using firefox-3.0.8-alt0.M41.1 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008100921 Firefox/3.0). I have noticed that quite often it shows an old state of a page at http://ikiwiki.info, e.g., [[json.tl.ph]] without my last edits, or the last page I edited (say, 50 min ago) in the state it was before I edited it.
+I'm using firefox-3.0.8-alt0.M41.1 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008100921 Firefox/3.0). I have noticed that quite often it shows an old state of a page at http://ikiwiki.info, e.g., [[recentchanges]] without my last edits, or the last page I edited (say, 50 min ago) in the state it was before I edited it.
 
 Only explicitly pressing "reload" helps.
 
diff --git a/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn b/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn
index a034fe541..85a206bc0 100644
--- a/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn
+++ b/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn
@@ -6,7 +6,7 @@ The git commit (in my `openid` branch) says it all:
     However, all we actually want is the (undocumented) DisplayOfURL function
     that is invoked by the display method, so try to use that.
 
-This bug affects ikiwiki.info (my commits show up in [[Json.tl.ph]] as http://smcv.pseudorandom.co.uk/ rather than smcv [pseudorandom.co.uk]).
+This bug affects ikiwiki.info (my commits show up in [[RecentChanges]] as http://smcv.pseudorandom.co.uk/ rather than smcv [pseudorandom.co.uk]).
 
 > Cherry picked, thanks. --[[Joey]]
 
diff --git a/doc/bugs/web_reversion_on_ikiwiki.info.mdwn b/doc/bugs/web_reversion_on_ikiwiki.info.mdwn
index 0159f5b77..6f18cfcba 100644
--- a/doc/bugs/web_reversion_on_ikiwiki.info.mdwn
+++ b/doc/bugs/web_reversion_on_ikiwiki.info.mdwn
@@ -1,5 +1,5 @@
 I created [[sandbox/revert me]] and then tried the revert button on
-[[json.tl.ph]], but I was not allowed to revert it. The specific error
+[[recentchanges]], but I was not allowed to revert it. The specific error
 was
 
     Error: you are not allowed to change sandbox/revert_me.mdwn
diff --git a/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn b/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn
index 71b8b06be..5f7450b79 100644
--- a/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn
+++ b/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn
@@ -3,6 +3,6 @@ in ikiwiki instances that don't reside in the git root directory (the only ones
 the expected behavior is to compensate for the modified root directory (i.e., show index instead of doc/index).
 
 > This seems to work OK now - commit 84c4ca33 and its reversion both
-> appear correctly in [[json.tl.ph]]. Looking at git history,
+> appear correctly in [[recentchanges]]. Looking at git history,
 > Joey [[fixed this|done]] in commit 1b6c1895 before 3.20120203.
 > --[[smcv]]
diff --git a/doc/contact.mdwn b/doc/contact.mdwn
index f85fcf2d9..afcc67765 100644
--- a/doc/contact.mdwn
+++ b/doc/contact.mdwn
@@ -3,7 +3,7 @@ and thus does not have a mailing list.  Anyone can create an account on
 ikiwiki's own wiki. ikiwiki provides a [[bug_tracker|bugs]], a
 [[TODO_list|TODO]], and "discussion" sub-pages for every page, as well as a
 [[forum]] for general questions and discussion. ikiwiki
-developers monitor [[Json.tl.ph]] closely, via the webpage, email,
+developers monitor [[RecentChanges]] closely, via the webpage, email,
 and IRC, and respond in a timely fashion.
 
 You could also drop by the IRC channel `#ikiwiki` on
diff --git a/doc/features.mdwn b/doc/features.mdwn
index 4dee6c2d8..61b23bb59 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -133,7 +133,7 @@ page being concurrently edited, regular commit conflict markers are
 shown in the file to resolve the conflict, so if you're already familiar
 with that there's no new commit marker syntax to learn.
 
-### [[Json.tl.ph]], editing pages in a web browser
+### [[RecentChanges]], editing pages in a web browser
 
 Nearly the definition of a wiki, although perhaps ikiwiki challenges how
 much of that web gunk a wiki really needs. These features are optional
diff --git a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
index 071642ac0..2b6237bc4 100644
--- a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
+++ b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
@@ -4,5 +4,5 @@
  subject="comment 2"
  date="2011-12-20T15:13:48Z"
  content="""
-The [[Json.tl.ph]] page is a regular wiki page that inlines a few special pages with a special template. That content can be copied anywhere else in the wiki to get the same effect.
+The [[RecentChanges]] page is a regular wiki page that inlines a few special pages with a special template. That content can be copied anywhere else in the wiki to get the same effect.
 """]]
diff --git a/doc/forum/Spaces_in_wikilinks.mdwn b/doc/forum/Spaces_in_wikilinks.mdwn
index aa8bfef20..9326ac448 100644
--- a/doc/forum/Spaces_in_wikilinks.mdwn
+++ b/doc/forum/Spaces_in_wikilinks.mdwn
@@ -34,7 +34,7 @@ I'm playing around with various ways that I can use subversion with ikiwiki.
 > away without running the post-commit wrapper on commit, and all you lose
 > is the ability to send commit notification emails.
 
-> (And now that [[json.tl.ph]] includes rss, you can just subscribe to
+> (And now that [[recentchanges]] includes rss, you can just subscribe to
 > that, no need to worry about commit notification emails anymore.)
 
 * Is it possible / sensible to have ikiwiki share a subversion repository with other data (either completely unrelated files or another ikiwiki instance)?  This works in part but again the post-commit hook seems problematic.
diff --git a/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn b/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn
index d540d4b00..8eed30cd8 100644
--- a/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn
+++ b/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn
@@ -10,7 +10,7 @@ I'm playing around with various ways that I can use subversion with ikiwiki.
 > away without running the post-commit wrapper on commit, and all you lose
 > is the ability to send commit notification emails.
 
-> (And now that [[json.tl.ph]] includes rss, you can just subscribe to
+> (And now that [[recentchanges]] includes rss, you can just subscribe to
 > that, no need to worry about commit notification emails anymore.)
 
 * Is it possible / sensible to have ikiwiki share a subversion repository with other data (either completely unrelated files or another ikiwiki instance)?  This works in part but again the post-commit hook seems problematic.
diff --git a/doc/forum/web_service_API__44___fastcgi_support.mdwn b/doc/forum/web_service_API__44___fastcgi_support.mdwn
index dd57a8ded..84b227eef 100644
--- a/doc/forum/web_service_API__44___fastcgi_support.mdwn
+++ b/doc/forum/web_service_API__44___fastcgi_support.mdwn
@@ -1,6 +1,6 @@
 This is a half-baked thought of mine so I thought I would post it in forum for discussion.
 
-There are some things that ikiwiki.cgi is asked to do which do not involve changing the repository: these include form generation, handling logins, the "goto" from [[json.tl.ph]], edit previews, etc.

(Diff truncated)
update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
index 2b6237bc4..071642ac0 100644
--- a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
+++ b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
@@ -4,5 +4,5 @@
  subject="comment 2"
  date="2011-12-20T15:13:48Z"
  content="""
-The [[RecentChanges]] page is a regular wiki page that inlines a few special pages with a special template. That content can be copied anywhere else in the wiki to get the same effect.
+The [[Json.tl.ph]] page is a regular wiki page that inlines a few special pages with a special template. That content can be copied anywhere else in the wiki to get the same effect.
 """]]

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/git.mdwn b/doc/rcs/git.mdwn
index fa7a037ba..7dc8d836a 100644
--- a/doc/rcs/git.mdwn
+++ b/doc/rcs/git.mdwn
@@ -8,7 +8,7 @@ the Linux kernel. Ikiwiki supports storing a wiki in git.
 Ikiwiki can run as a git `post-update` hook to update a wiki
 whenever commits come in. When running as a [[cgi]],
 ikiwiki automatically commits edited pages, and uses the
-git history to generate the [[RecentChanges]] page.
+git history to generate the [[Json.tl.ph]] page.
 
 Normally you can just follow the instructions in [[setup]] to create
 the git repositories and get started. To understand the details, read on.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/bzr.mdwn b/doc/rcs/bzr.mdwn
index 19a7ae395..6ca197477 100644
--- a/doc/rcs/bzr.mdwn
+++ b/doc/rcs/bzr.mdwn
@@ -5,4 +5,4 @@ bzr repository.
 Ikiwiki can run as a post-update hook to update a wiki whenever commits
 come in. When running as a [[cgi]] with bzr, ikiwiki automatically
 commits edited pages, and uses the bzr history to generate the
-[[RecentChanges]] page.
+[[Json.tl.ph]] page.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/news/no_more_email_notifications.mdwn b/doc/news/no_more_email_notifications.mdwn
index 18a70557e..f07cc5006 100644
--- a/doc/news/no_more_email_notifications.mdwn
+++ b/doc/news/no_more_email_notifications.mdwn
@@ -1,12 +1,12 @@
 ikiwiki.info has upgraded to the not yet released ikiwiki 2.30. This
 version of ikiwiki drops support for subscribing to commit mail
 notifications for pages. The idea is that you can subscribe to the new
-[[RecentChanges]] feed instead. (Or create your own custom feed of only the
+[[Json.tl.ph]] feed instead. (Or create your own custom feed of only the
 changes you're interested in, and subscribe to that.)
 
 So if you were subscribed to mail notifications on here, you'll need to
 change how you keep track of changes. Please let me know if there are any
-missing features in the [[RecentChanges]] feeds.
+missing features in the [[Json.tl.ph]] feeds.
 
 Statically building the RecentChanges also has performance implications,
 I'll keep an eye on [[server_speed]]..

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/forum/web_service_API__44___fastcgi_support.mdwn b/doc/forum/web_service_API__44___fastcgi_support.mdwn
index 84b227eef..dd57a8ded 100644
--- a/doc/forum/web_service_API__44___fastcgi_support.mdwn
+++ b/doc/forum/web_service_API__44___fastcgi_support.mdwn
@@ -1,6 +1,6 @@
 This is a half-baked thought of mine so I thought I would post it in forum for discussion.
 
-There are some things that ikiwiki.cgi is asked to do which do not involve changing the repository: these include form generation, handling logins, the "goto" from [[recentchanges]], edit previews, etc.
+There are some things that ikiwiki.cgi is asked to do which do not involve changing the repository: these include form generation, handling logins, the "goto" from [[json.tl.ph]], edit previews, etc.
 
 For one thing I am working on slowly ([[todo/interactive todo lists]]), I've hit a situation where I am likely to need to implement doing markup evaluation for a subset of a page. The problem I face is, if a user edits content in the browser, markup, ikiwiki directives etc. need to be expanded. I could possibly do this with a round-trip through edit preview, but that would be for the whole content of a page, and I hit the problem with editing a list item.
 

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/security.mdwn b/doc/security.mdwn
index fcc33fd48..29cbab6be 100644
--- a/doc/security.mdwn
+++ b/doc/security.mdwn
@@ -22,7 +22,7 @@ _(The list of things to fix.)_
 ## commit spoofing
 
 Anyone with direct commit access can forge "web commit from foo" and
-make it appear on [[RecentChanges]] like foo committed. One way to avoid
+make it appear on [[Json.tl.ph]] like foo committed. One way to avoid
 this would be to limit web commits to those done by a certain user.
 
 ## other stuff to look at

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn b/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn
index 5f7450b79..71b8b06be 100644
--- a/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn
+++ b/doc/bugs/wrong_link_in_recentchanges_when_reverting_an_ikiwiki_outside_git_root.mdwn
@@ -3,6 +3,6 @@ in ikiwiki instances that don't reside in the git root directory (the only ones
 the expected behavior is to compensate for the modified root directory (i.e., show index instead of doc/index).
 
 > This seems to work OK now - commit 84c4ca33 and its reversion both
-> appear correctly in [[recentchanges]]. Looking at git history,
+> appear correctly in [[json.tl.ph]]. Looking at git history,
 > Joey [[fixed this|done]] in commit 1b6c1895 before 3.20120203.
 > --[[smcv]]

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/discussion.mdwn b/doc/bugs/discussion.mdwn
index 474e07564..e385cf8ad 100644
--- a/doc/bugs/discussion.mdwn
+++ b/doc/bugs/discussion.mdwn
@@ -8,7 +8,7 @@ the ikiwiki.cgi CGI wrapper. ..."
 
   Enable [[CGI]] mode. In cgi mode ikiwiki __runs as a cgi script__, and
   supports editing pages, signing in, registration, and displaying
-  [[RecentChanges]].
+  [[Json.tl.ph]].
 
   __To use ikiwiki as a [[CGI]] program you need to use --wrapper or --setup
   to generate a wrapper.__ The wrapper will generally need to run suid 6755

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/tla.mdwn b/doc/rcs/tla.mdwn
index 79eecd627..952000260 100644
--- a/doc/rcs/tla.mdwn
+++ b/doc/rcs/tla.mdwn
@@ -8,6 +8,6 @@ using ikiwiki with tla is not recommended.
 Ikiwiki can run as a [[post-commit]] hook to update a wiki whenever commits
 come in. When running as a [[cgi]] with tla, ikiwiki automatically
 commits edited pages to the Arch repostory, and uses the Arch
-log to generate the [[RecentChanges]] page.
+log to generate the [[Json.tl.ph]] page.
 
 Note that the tla support needs the [[!cpan MailTools]] perl module.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/contact.mdwn b/doc/contact.mdwn
index afcc67765..f85fcf2d9 100644
--- a/doc/contact.mdwn
+++ b/doc/contact.mdwn
@@ -3,7 +3,7 @@ and thus does not have a mailing list.  Anyone can create an account on
 ikiwiki's own wiki. ikiwiki provides a [[bug_tracker|bugs]], a
 [[TODO_list|TODO]], and "discussion" sub-pages for every page, as well as a
 [[forum]] for general questions and discussion. ikiwiki
-developers monitor [[RecentChanges]] closely, via the webpage, email,
+developers monitor [[Json.tl.ph]] closely, via the webpage, email,
 and IRC, and respond in a timely fashion.
 
 You could also drop by the IRC channel `#ikiwiki` on

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn b/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn
index c852df5e9..1bfd8f3b3 100644
--- a/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn
+++ b/doc/bugs/RecentChanges_broken_with_empty_svnpath.mdwn
@@ -1,4 +1,4 @@
-The [[RecentChanges]] page is broken (doesn't show any history at all) when used with an empty svnpath in the ikiwiki.setup file.
+The [[Json.tl.ph]] page is broken (doesn't show any history at all) when used with an empty svnpath in the ikiwiki.setup file.
 
 Say you have the following configuration:
 
@@ -6,7 +6,7 @@ Say you have the following configuration:
     svnrepo => "ssh+svn://foo.bar.com/wiki",
     svnpath => "",
 
-In the above, $svnpath need to be either empty or "/" - both trigger the 'next unless' check in IkiWiki/Rcs/svn.pm:rcs_recentchanges() as shown in the patch below, thus causing all files to be ignored for [[RecentChanges]].
+In the above, $svnpath need to be either empty or "/" - both trigger the 'next unless' check in IkiWiki/Rcs/svn.pm:rcs_recentchanges() as shown in the patch below, thus causing all files to be ignored for [[Json.tl.ph]].
 
 I can not see why this check is needed in the first place, so here's a patch for removing it :)
 

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/cannot_revert_page_deletion.mdwn b/doc/bugs/cannot_revert_page_deletion.mdwn
index 651b4d0ec..bc440de8a 100644
--- a/doc/bugs/cannot_revert_page_deletion.mdwn
+++ b/doc/bugs/cannot_revert_page_deletion.mdwn
@@ -1,4 +1,4 @@
-After deleting a page with the "remove" button, it seems that the page deletion cannot be reverted using the "revert" icon in [[RecentChanges]]. 
+After deleting a page with the "remove" button, it seems that the page deletion cannot be reverted using the "revert" icon in [[Json.tl.ph]]. 
 It ironically says that "Error: ?$pagename does not exist". See [[http://ikiwiki.info/ikiwiki.cgi?rev=860c2c84d98ea0a38a4f91dacef6d4e09f6e6c2e&do=revert]]. [[JeanPrivat]]
 
 > And it only gets that far if the remove plugin is enabled. Otherwise it

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn b/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn
index dae00857b..14073e731 100644
--- a/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn
+++ b/doc/bugs/comments_produce_broken_links_in_RecentChanges.mdwn
@@ -1,4 +1,4 @@
-Comments produce links like `sandbox/comment_1` in [[RecentChanges]], which,
+Comments produce links like `sandbox/comment_1` in [[Json.tl.ph]], which,
 when clicked, redirect to a page that does not exist.
 
 The `recentchanges` branch in my repository contains one possible [[patch]],

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn b/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn
index 0eaeafb0c..4c0b4bfb6 100644
--- a/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn
+++ b/doc/bugs/RecentChanges_links_to_deleted_pages.mdwn
@@ -1,4 +1,4 @@
-[[RecentChanges]] should not link to pages that are being deleted. For as
+[[Json.tl.ph]] should not link to pages that are being deleted. For as
 example, see the change with the title 'add news item for ikiwiki 2.60'
 which includes the deletion of "news/version 2.52". Maybe it should be made
 clear in RecentChanges that the change to the file is it being deleted.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn b/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn
index 85a206bc0..a034fe541 100644
--- a/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn
+++ b/doc/bugs/openid_no_longer_pretty-prints_OpenIDs.mdwn
@@ -6,7 +6,7 @@ The git commit (in my `openid` branch) says it all:
     However, all we actually want is the (undocumented) DisplayOfURL function
     that is invoked by the display method, so try to use that.
 
-This bug affects ikiwiki.info (my commits show up in [[RecentChanges]] as http://smcv.pseudorandom.co.uk/ rather than smcv [pseudorandom.co.uk]).
+This bug affects ikiwiki.info (my commits show up in [[Json.tl.ph]] as http://smcv.pseudorandom.co.uk/ rather than smcv [pseudorandom.co.uk]).
 
 > Cherry picked, thanks. --[[Joey]]
 

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/mercurial.mdwn b/doc/rcs/mercurial.mdwn
index ebfc35202..3a5af3ff0 100644
--- a/doc/rcs/mercurial.mdwn
+++ b/doc/rcs/mercurial.mdwn
@@ -5,7 +5,7 @@ mercurial repository.
 Ikiwiki can run as a `post-commit` and/or `incoming` hook to update a wiki whenever commits or remote pushes
 come in. When running as a [[cgi]] with Mercurial, ikiwiki automatically
 commits edited pages, and uses the Mercurial history to generate the
-[[RecentChanges]] page.
+[[Json.tl.ph]] page.
 
 Example for a `.hg/hgrc` file in `$SRCDIR`:
 

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/monotone.mdwn b/doc/rcs/monotone.mdwn
index 2cfcdfbf5..2e9939bf5 100644
--- a/doc/rcs/monotone.mdwn
+++ b/doc/rcs/monotone.mdwn
@@ -1,7 +1,7 @@
 [Monotone](http://monotone.ca/) is a distributed revision control system.
 Ikiwiki supports storing a wiki in a Monotone repository and editing it
 using the [[cgi]] interface. It will use the Monotone logs to generate the
-[[RecentChanges]] page.
+[[Json.tl.ph]] page.
 
 The monotone support in ikiwiki requires the Monotone perl module to be
 installed. (It's available from the contrib/ directory in the monotone

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/plugins/recentchangesdiff/discussion.mdwn b/doc/plugins/recentchangesdiff/discussion.mdwn
index 0ec6d7bf0..9703b0f6d 100644
--- a/doc/plugins/recentchangesdiff/discussion.mdwn
+++ b/doc/plugins/recentchangesdiff/discussion.mdwn
@@ -1,7 +1,7 @@
 # Syntax highlighting of recent changes
 
 Hello,
-is there a simple way to highlight the diff printed in the [[/recentchanges]]
+is there a simple way to highlight the diff printed in the [[/json.tl.ph]]
 page? I imagined several solutions, but I am still wondering about the best one.
 
 * One might activate the [[plugins/highlight]] and [[plugins/format]] plugins,

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/svn.mdwn b/doc/rcs/svn.mdwn
index 7aa682978..ac91553de 100644
--- a/doc/rcs/svn.mdwn
+++ b/doc/rcs/svn.mdwn
@@ -6,4 +6,4 @@ system is recommended.
 Ikiwiki can run as a [[post-commit]] hook to update a wiki whenever commits
 come in. When running as a [[cgi]] with Subversion, ikiwiki automatically
 commits edited pages to the subversion repostory, and uses the Subversion
-log to generate the [[RecentChanges]] page.
+log to generate the [[Json.tl.ph]] page.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/rcs/darcs.mdwn b/doc/rcs/darcs.mdwn
index fbb9bcede..0f4f364ea 100644
--- a/doc/rcs/darcs.mdwn
+++ b/doc/rcs/darcs.mdwn
@@ -5,7 +5,7 @@ Darcs repository.
 An Ikiwiki wrapper is run by the `posthook` to update a wiki whenever commits
 or remote pushes come in. When running as a [[cgi]] with Darcs, ikiwiki
 automatically commits edited pages, and uses the Darcs history to generate the
-[[RecentChanges]] page.
+[[Json.tl.ph]] page.
 
 Example for a `_darcs/prefs/defaults` file in `$SRCDIR`:
 

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn b/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
index eb95e9992..cd6db2c9d 100644
--- a/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
+++ b/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
@@ -1,6 +1,6 @@
 The final `</div>` in `recentchanges.tmpl` gets wrapped in a
 `<p>` tag for some reason, resulting in the following invalid XHTML at
-the end of the [[RecentChanges]] page
+the end of the [[Json.tl.ph]] page
 
     <p></div></p>
 
@@ -11,7 +11,7 @@ the end of the [[RecentChanges]] page
 Also, there is a problem with the `<img>` tags generated by the smiley
 plugin which end up wrapped in a `<pre>` tag in the inline diff output.
 `<img>` tags is not allowed within a `<pre>` block.  Maybe the smiley
-plugin should be disabled on [[RecentChanges]]?
+plugin should be disabled on [[Json.tl.ph]]?
 
 > See [[Smileys_in_the_block_code]], which is now fixed. --[[Joey]]
 

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/users/Erkan_Yilmaz.mdwn b/doc/users/Erkan_Yilmaz.mdwn
index 070a3a45a..b5c070d35 100644
--- a/doc/users/Erkan_Yilmaz.mdwn
+++ b/doc/users/Erkan_Yilmaz.mdwn
@@ -1,2 +1,2 @@
-* [[recentchanges]]
+* [[json.tl.ph]]
 * my site: [here](http://iaskquestions.com)

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/features.mdwn b/doc/features.mdwn
index 61b23bb59..4dee6c2d8 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -133,7 +133,7 @@ page being concurrently edited, regular commit conflict markers are
 shown in the file to resolve the conflict, so if you're already familiar
 with that there's no new commit marker syntax to learn.
 
-### [[RecentChanges]], editing pages in a web browser
+### [[Json.tl.ph]], editing pages in a web browser
 
 Nearly the definition of a wiki, although perhaps ikiwiki challenges how
 much of that web gunk a wiki really needs. These features are optional

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/web_reversion_on_ikiwiki.info.mdwn b/doc/bugs/web_reversion_on_ikiwiki.info.mdwn
index 6f18cfcba..0159f5b77 100644
--- a/doc/bugs/web_reversion_on_ikiwiki.info.mdwn
+++ b/doc/bugs/web_reversion_on_ikiwiki.info.mdwn
@@ -1,5 +1,5 @@
 I created [[sandbox/revert me]] and then tried the revert button on
-[[recentchanges]], but I was not allowed to revert it. The specific error
+[[json.tl.ph]], but I was not allowed to revert it. The specific error
 was
 
     Error: you are not allowed to change sandbox/revert_me.mdwn

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/forum/Spaces_in_wikilinks.mdwn b/doc/forum/Spaces_in_wikilinks.mdwn
index 9326ac448..aa8bfef20 100644
--- a/doc/forum/Spaces_in_wikilinks.mdwn
+++ b/doc/forum/Spaces_in_wikilinks.mdwn
@@ -34,7 +34,7 @@ I'm playing around with various ways that I can use subversion with ikiwiki.
 > away without running the post-commit wrapper on commit, and all you lose
 > is the ability to send commit notification emails.
 
-> (And now that [[recentchanges]] includes rss, you can just subscribe to
+> (And now that [[json.tl.ph]] includes rss, you can just subscribe to
 > that, no need to worry about commit notification emails anymore.)
 
 * Is it possible / sensible to have ikiwiki share a subversion repository with other data (either completely unrelated files or another ikiwiki instance)?  This works in part but again the post-commit hook seems problematic.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn b/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn
index 8eed30cd8..d540d4b00 100644
--- a/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn
+++ b/doc/forum/Various_ways_to_use_Subversion_with_ikiwiki.mdwn
@@ -10,7 +10,7 @@ I'm playing around with various ways that I can use subversion with ikiwiki.
 > away without running the post-commit wrapper on commit, and all you lose
 > is the ability to send commit notification emails.
 
-> (And now that [[recentchanges]] includes rss, you can just subscribe to
+> (And now that [[json.tl.ph]] includes rss, you can just subscribe to
 > that, no need to worry about commit notification emails anymore.)
 
 * Is it possible / sensible to have ikiwiki share a subversion repository with other data (either completely unrelated files or another ikiwiki instance)?  This works in part but again the post-commit hook seems problematic.

update for rename of recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn b/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn
index 558eb90c8..852a0e37d 100644
--- a/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn
+++ b/doc/bugs/firefox_doesn__39__t_want_to_load_updated_pages_at_ikiwiki.info.mdwn
@@ -1,4 +1,4 @@
-I'm using firefox-3.0.8-alt0.M41.1 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008100921 Firefox/3.0). I have noticed that quite often it shows an old state of a page at http://ikiwiki.info, e.g., [[recentchanges]] without my last edits, or the last page I edited (say, 50 min ago) in the state it was before I edited it.
+I'm using firefox-3.0.8-alt0.M41.1 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008100921 Firefox/3.0). I have noticed that quite often it shows an old state of a page at http://ikiwiki.info, e.g., [[json.tl.ph]] without my last edits, or the last page I edited (say, 50 min ago) in the state it was before I edited it.
 
 Only explicitly pressing "reload" helps.
 

rename recentchanges.mdwn to json.tl.ph.mdwn
diff --git a/doc/recentchanges.mdwn b/doc/json.tl.ph.mdwn
similarity index 100%
rename from doc/recentchanges.mdwn
rename to doc/json.tl.ph.mdwn

does not seem possible
diff --git a/doc/todo/bad_content_support.mdwn b/doc/todo/bad_content_support.mdwn
index d4ac46d25..e514d2795 100644
--- a/doc/todo/bad_content_support.mdwn
+++ b/doc/todo/bad_content_support.mdwn
@@ -11,3 +11,8 @@ Failing that, it could also simply be a list in the `ikiwiki.setup`. But my expe
 The "pie-in-the-sky" plugin here would of course to just plug the checkcontent hook straight into spamassassin or something similar. Then you possibly get bayesian filtering, all sorts of rules, Razor, etc.
 
 -- [[anarcat]]
+
+
+> I looked into this briefly, and it seems like what I want (specifically: discard incoming comments if they have bad content) is fundamentally impossible with the current way the `checkcontent` hook is setup. When *pages* are inspected for content, yes, it's possible to just discard the submission, but not when *comments* are submitted, because the `IkiWiki::check_content` wrapper is called with `nonfatal => 1` which makes it skip any possible interception (returning a function or error message) that would abort submissions. This is because the comments module hardcodes the fact that a `checkcontent` failure is "soft" and means "this comment should be moderated"...
+>
+> So either a new hook needs to be written, or this one needs to be fixed, and either case it cannot be done simply with a plugin. I documented this odd behavior in [[plugins/write]]. --[[anarcat]]

document that checkcontent behaves differently for comments
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index b6d0611dc..7480a6148 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -531,6 +531,10 @@ should return a message stating what the problem is, or a function
 that can be run to perform whatever action is necessary to allow the user
 to post the content.
 
+If the hook is ran on a comment, it will be put in the moderation queue if
+anything but `undef` is returned. The function or error message will not
+be ran or displayed.
+
 ### <a name="editcontent">editcontent</a>
 
 	hook(type => "editcontent", id => "foo", call => \&editcontent);

cross-ref to new todo
diff --git a/doc/todo/anti-spam_protection.mdwn b/doc/todo/anti-spam_protection.mdwn
index cf07fe7eb..b6ec9310d 100644
--- a/doc/todo/anti-spam_protection.mdwn
+++ b/doc/todo/anti-spam_protection.mdwn
@@ -88,3 +88,7 @@ this another way - I'm thinking of fail2ban or a simple Apache rewrite
 table (and it might easier and faster too) - but I wonder why those
 IPs can still post comments when they are listed in
 `banned_users`... -- [[anarcat]]
+
+----
+
+I made a new TODO item for this, specifically to be able to block certain expressions. See [[todo/bad_content_support]] for a followup on that. -- [[anarcat]]

oh, and spamassassin too
diff --git a/doc/todo/bad_content_support.mdwn b/doc/todo/bad_content_support.mdwn
index 30d19e22c..d4ac46d25 100644
--- a/doc/todo/bad_content_support.mdwn
+++ b/doc/todo/bad_content_support.mdwn
@@ -8,4 +8,6 @@ I am not sure we should follow the MoinMoin mechanism, where the list is a wiki
 
 Failing that, it could also simply be a list in the `ikiwiki.setup`. But my experience with managing a block list of IP addresses there has not been fun: you need to context switch (to another branch, or to the ikiwiki.setup file) and rebuild the wiki at each change, which is rather disruptive... 
 
+The "pie-in-the-sky" plugin here would of course to just plug the checkcontent hook straight into spamassassin or something similar. Then you possibly get bayesian filtering, all sorts of rules, Razor, etc.
+
 -- [[anarcat]]

specifically something to block certain bad words
diff --git a/doc/todo/bad_content_support.mdwn b/doc/todo/bad_content_support.mdwn
new file mode 100644
index 000000000..30d19e22c
--- /dev/null
+++ b/doc/todo/bad_content_support.mdwn
@@ -0,0 +1,11 @@
+One of the suggestions that came out of the [[todo/anti-spam_protection]] is to have the [MoinMoin technique](http://moinmo.in/HelpOnSpam) of having a list of [bad content](http://moinmo.in/BadContent) which is basically a list of regexes. Typically, you'd add a URL in there, but really, it's just any "bad content": it could be forbidden words or whatever.
+
+This, by the way, only worked so far with MoinMoin. Spammers did find a way around it, and the list's last update dates back to 2014. But that doesn't mean the list is not at least somewhat effective. In my specific use case right now, I moderate all incoming comments and there's this one spammer which repeatedly tries to post the same stupid URL. I delete the comment and move on, but it's repetitive and frustrating: if I had a way to just block that one piece of bad content, it could make my life easier.
+
+I think this could be a plugin, which hooks into the `checkcontent` hook [[joeyh]] made in the [[anti-spam_protection]] work. This todo is to track the work on writing such a plugin and, ultimately and hopefully, include it directly in ikiwiki.
+
+I am not sure we should follow the MoinMoin mechanism, where the list is a wiki page, but why not? The only downside to this is that I'm not sure how to fetch content from an arbitrary page from inside a plugin. The other problem, of course, is that you then publish a list of bad URLs on your website, which is pretty much exactly the opposite of what you want to do... So maybe some file inside `.ikiwiki` or outside the published tree could be used.
+
+Failing that, it could also simply be a list in the `ikiwiki.setup`. But my experience with managing a block list of IP addresses there has not been fun: you need to context switch (to another branch, or to the ikiwiki.setup file) and rebuild the wiki at each change, which is rather disruptive... 
+
+-- [[anarcat]]

thanks for the patch!
diff --git a/doc/bugs/pubdate_not_valid_for_html5.mdwn b/doc/bugs/pubdate_not_valid_for_html5.mdwn
index 4b55cc928..fe956c521 100644
--- a/doc/bugs/pubdate_not_valid_for_html5.mdwn
+++ b/doc/bugs/pubdate_not_valid_for_html5.mdwn
@@ -7,3 +7,5 @@ Patch: <https://github.com/jmtd/ikiwiki/commit/a137103d3004cc8cec42459205684ec48
 [[!tag patch]]
 [[!template id=gitbranch branch=jon/html5-no-pubdate-attribute author="[[Jon]]"]]
 *—[[Jon]], 2020-10-06*
+
+> LGTM. In [[bugs/charset_attribute_on_the_script_element_is_obsolete]], I found that `itemprop="datePublished"` was another way to do this, but it seems like there is no real standard way to do this anymore, so I'm happy with anything that doesn't break validators. :) *--[[anarcat]], 2022-09-06*

patch for pubdate
diff --git a/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn b/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
index 7eba64714..b11ed7b62 100644
--- a/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
+++ b/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
@@ -13,3 +13,5 @@ Seems like a low-hanging fruit...
 There are other errors on my blog, namely the `pubdate=pubdate` blob added by `IkiWiki::displaytime`, no idea where that's coming from, but it's not standard anymore. See for example, [this validation](https://validator.w3.org/nu/?doc=https%3A%2F%2Fanarc.at%2Fblog%2F2020-04-27-drowning-camera%2F) and also the [time element specification](https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element). It looks like it was [part of HTML5](https://www.w3.org/TR/2011/WD-html5-author-20110809/the-time-element.html#attr-time-pubdate) but was removed at some later point. According to [this GitHub comment on the react project](https://github.com/facebook/react/issues/3411#issuecomment-80234574), it was replaced by the [itemprop](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemprop) attribute, as in `itemprop="datePublished"`. See also [this w3 example](https://html.spec.whatwg.org/multipage/sections.html#the-article-element:the-article-element-11). Phew.
 
 -- [[anarcat]] 2022-09-01
+
+> For pubdate, I created [[pubdate not valid for html5]] in 2020, with a patch. I've applied that in my *opinionated ikiwiki* [[container|containers]].  -- [[Jon]], 2022-09-06

another example error i get
diff --git a/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn b/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
index 3b6b82c62..7eba64714 100644
--- a/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
+++ b/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
@@ -10,4 +10,6 @@ From line 271, column 1; to line 271, column 78
 
 Seems like a low-hanging fruit... 
 
+There are other errors on my blog, namely the `pubdate=pubdate` blob added by `IkiWiki::displaytime`, no idea where that's coming from, but it's not standard anymore. See for example, [this validation](https://validator.w3.org/nu/?doc=https%3A%2F%2Fanarc.at%2Fblog%2F2020-04-27-drowning-camera%2F) and also the [time element specification](https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element). It looks like it was [part of HTML5](https://www.w3.org/TR/2011/WD-html5-author-20110809/the-time-element.html#attr-time-pubdate) but was removed at some later point. According to [this GitHub comment on the react project](https://github.com/facebook/react/issues/3411#issuecomment-80234574), it was replaced by the [itemprop](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemprop) attribute, as in `itemprop="datePublished"`. See also [this w3 example](https://html.spec.whatwg.org/multipage/sections.html#the-article-element:the-article-element-11). Phew.
+
 -- [[anarcat]] 2022-09-01

diff --git a/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn b/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
new file mode 100644
index 000000000..3b6b82c62
--- /dev/null
+++ b/doc/bugs/charset_attribute_on_the_script_element_is_obsolete.mdwn
@@ -0,0 +1,13 @@
+the w3 validator fails on the main ikiwiki website because of the way inline scripts are handled. For example, [validating](https://validator.w3.org/nu/?doc=https%3A%2F%2Fikiwiki.info%2Fforum%2Fconvention_for_signing_posts_to_ikiwiki.info%2F) the post [[forum/convention_for_signing_posts_to_ikiwiki.info]] leads to this warning:
+
+[[!format txt """
+Warning: The charset attribute on the script element is obsolete.
+
+From line 271, column 1; to line 271, column 78
+
+>↩↩</div>↩<script src="../../ikiwiki/ikiwiki.js" type="text/javascript" charset="utf-8"></scri
+"""]]
+
+Seems like a low-hanging fruit... 
+
+-- [[anarcat]] 2022-09-01

diff --git a/doc/bugs/wishlist:_make_variable_where_httpauth_takes_the_user_configurable.mdwn b/doc/bugs/wishlist:_make_variable_where_httpauth_takes_the_user_configurable.mdwn
new file mode 100644
index 000000000..bb4f06280
--- /dev/null
+++ b/doc/bugs/wishlist:_make_variable_where_httpauth_takes_the_user_configurable.mdwn
@@ -0,0 +1,5 @@
+I recently migrated from the (no longer supported) mod_auth_kerb to its designated replacement, mod_auth_gssapi for HTTP authentication.
+
+mod_auth_kerb sets `REMOTE_USER` to the Krb5 name that authenticated (e.g., wouter@EXAMPLE.COM). mod_auth_gssapi does not do so; it sets it in the `GSS_NAME` variable, instead.
+
+It would be awesome if the httpauth plugin would accept a configuration value to set the variable in which to look for the username to account for cases like these.

websetup timeouts
diff --git a/doc/bugs/WSL:___40__110:_Connection_timed_out__41___while_reading_upstream.mdwn b/doc/bugs/WSL:___40__110:_Connection_timed_out__41___while_reading_upstream.mdwn
new file mode 100644
index 000000000..8c9d51467
--- /dev/null
+++ b/doc/bugs/WSL:___40__110:_Connection_timed_out__41___while_reading_upstream.mdwn
@@ -0,0 +1,7 @@
+Hello.
+
+I've just installed ikiwiki on Debian WSL and what I tried so far is working, but a thing: the websetup page is loading until it reaches a timeout and I can't see any button to save preferences at the bottom of the page.
+
+This is the log:
+
+    2022/08/01 20:10:13 [error] 3881#3881: *2 upstream timed out (110: Connection timed out) while reading upstream, client: 172.26.16.1, server: cuspide, request: "POST /ikiwiki.cgi HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "cuspide:8080", referrer: "http://cuspide:8080/ikiwiki.cgi?do=prefs"

po: report bug + test case + proposed fix
diff --git a/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn b/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn
new file mode 100644
index 000000000..3d231cf3c
--- /dev/null
+++ b/doc/bugs/po:_buggy_UTF-8_support_with_po4a_0.58+.mdwn
@@ -0,0 +1,8 @@
+[[!tag patch]]
+
+With po4a 0.58+, the po plugin incorrectly extracts UTF-8 strings from source pages.
+
+I've prepared a branch to fix this: https://salsa.debian.org/tails-team/ikiwiki/-/tree/po-fix-utf8
+
+This branch adds a test case that fails on current `master`.
+That test case passes from my branch on Debian sid with po4a 0.55 (Buster), 0.62 (Bullseye), and 0.66 (sid).

diff --git a/doc/forum/discordian.mdwn b/doc/forum/discordian.mdwn
new file mode 100644
index 000000000..538cabc6c
--- /dev/null
+++ b/doc/forum/discordian.mdwn
@@ -0,0 +1,12 @@
+Hi Team- 
+I can't figure out this error I'm getting on my blog - it shows up at the bottom of every post: 
+
+```Posted some time or other (Can't locate DateTime/Calendar/Discordian.pm in @INC (you may need to install the DateTime::Calendar::Discordian module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/x86_64-linux-gnu/perl5/5.32 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl) at (eval 1479) line 3. BEGIN failed--compilation aborted at (eval 1479) line 3. -- hail Eris!)```
+
+I'm using a freedombox, and I did something to the preferences of my ikiwiki blog, and don't know what I did wrong. Please help, it's kinda ugly.... ;) 
+
+blog is located here: 
+
+https://mudbox.freedombox.rocks/ikiwiki/NotesfromtheMudbox/
+
+(Hi Joey!)

Added a comment
diff --git a/doc/forum/problems_with_git_push_on_openbsd/comment_2_91f5b5c6c8ac9b8a1c207ebba7721682._comment b/doc/forum/problems_with_git_push_on_openbsd/comment_2_91f5b5c6c8ac9b8a1c207ebba7721682._comment
new file mode 100644
index 000000000..1a1bcb1a9
--- /dev/null
+++ b/doc/forum/problems_with_git_push_on_openbsd/comment_2_91f5b5c6c8ac9b8a1c207ebba7721682._comment
@@ -0,0 +1,43 @@
+[[!comment format=mdwn
+ username="gry"
+ avatar="http://cdn.libravatar.org/avatar/5821f2dec97d186ce3b455b806d33035"
+ subject="comment 2"
+ date="2022-02-15T20:23:09Z"
+ content="""
+Made these changes to IkiWiki/Wrapper.pm:
+
+````
+        my @envsave;
+        push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
+                       CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
+                       HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS
+                       HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT
+                       REDIRECT_URL} if $config{cgi};
+        push @envsave, qw{GIT_OBJECT_DIRECTORY GIT_QUARANTINE_PATH
+                       GIT_ALTERNATE_OBJECT_DIRECTORIES} if $config{test_receive};
++        push @envsave, qw{PERL5LIB};
+        my $envsave=\"\";
+        foreach my $var (@envsave) {
+                $envsave.=<<\"EOF\";
+        if ((s=getenv(\"$var\")))
+                addenv(\"$var\", s);
+EOF
+        }
+
+
+````
+
+and this:
+
+```
+$check_commit_hook
+@wrapper_hooks
+$envsave
+        addenv(\"HOME\", \"$ENV{HOME}\");
+        addenv(\"PATH\", \"$ENV{PATH}\");
++        addenv(\"PERL5LIB\", \"$ENV{PERL5LIB}\");
+        addenv(\"WRAPPED_OPTIONS\", \"$configstring\");
+```
+
+I don't know which of the two changes was needed - maybe only one. Now it builds. :-)
+"""]]

removed
diff --git a/doc/forum/problems_with_git_push_on_openbsd/comment_2_e94bbbeae9c517ce2b7d3f41b3aedd90._comment b/doc/forum/problems_with_git_push_on_openbsd/comment_2_e94bbbeae9c517ce2b7d3f41b3aedd90._comment
deleted file mode 100644
index 264ffc2f1..000000000
--- a/doc/forum/problems_with_git_push_on_openbsd/comment_2_e94bbbeae9c517ce2b7d3f41b3aedd90._comment
+++ /dev/null
@@ -1,41 +0,0 @@
-[[!comment format=mdwn
- username="gry"
- avatar="http://cdn.libravatar.org/avatar/5821f2dec97d186ce3b455b806d33035"
- subject="comment 2"
- date="2022-02-15T20:21:26Z"
- content="""
-Made these changes to WikiWiki/Wrapper.pm:
-
-````
-        my @envsave;
-        push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
-                       CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
-                       HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS
-                       HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT
-                       REDIRECT_URL} if $config{cgi};
-        push @envsave, qw{GIT_OBJECT_DIRECTORY GIT_QUARANTINE_PATH
-                       GIT_ALTERNATE_OBJECT_DIRECTORIES} if $config{test_receive};
-+        push @envsave, qw{PERL5LIB};
-        my $envsave=\"\";
-        foreach my $var (@envsave) {
-                $envsave.=<<\"EOF\";
-        if ((s=getenv(\"$var\")))
-                addenv(\"$var\", s);
-EOF
-        }
-
-
-````
-
-```
-$check_commit_hook
-@wrapper_hooks
-$envsave
-        addenv(\"HOME\", \"$ENV{HOME}\");
-        addenv(\"PATH\", \"$ENV{PATH}\");
-+        addenv(\"PERL5LIB\", \"$ENV{PERL5LIB}\");
-        addenv(\"WRAPPED_OPTIONS\", \"$configstring\");
-```
-
-I don't know which of the two changes was needed - maybe only one. Now it builds. :-)
-"""]]

Added a comment
diff --git a/doc/forum/problems_with_git_push_on_openbsd/comment_2_e94bbbeae9c517ce2b7d3f41b3aedd90._comment b/doc/forum/problems_with_git_push_on_openbsd/comment_2_e94bbbeae9c517ce2b7d3f41b3aedd90._comment
new file mode 100644
index 000000000..264ffc2f1
--- /dev/null
+++ b/doc/forum/problems_with_git_push_on_openbsd/comment_2_e94bbbeae9c517ce2b7d3f41b3aedd90._comment
@@ -0,0 +1,41 @@
+[[!comment format=mdwn
+ username="gry"
+ avatar="http://cdn.libravatar.org/avatar/5821f2dec97d186ce3b455b806d33035"
+ subject="comment 2"
+ date="2022-02-15T20:21:26Z"
+ content="""
+Made these changes to WikiWiki/Wrapper.pm:
+
+````
+        my @envsave;
+        push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
+                       CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
+                       HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS
+                       HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT
+                       REDIRECT_URL} if $config{cgi};
+        push @envsave, qw{GIT_OBJECT_DIRECTORY GIT_QUARANTINE_PATH
+                       GIT_ALTERNATE_OBJECT_DIRECTORIES} if $config{test_receive};
++        push @envsave, qw{PERL5LIB};
+        my $envsave=\"\";
+        foreach my $var (@envsave) {
+                $envsave.=<<\"EOF\";
+        if ((s=getenv(\"$var\")))
+                addenv(\"$var\", s);
+EOF
+        }
+
+
+````
+
+```
+$check_commit_hook
+@wrapper_hooks
+$envsave
+        addenv(\"HOME\", \"$ENV{HOME}\");
+        addenv(\"PATH\", \"$ENV{PATH}\");
++        addenv(\"PERL5LIB\", \"$ENV{PERL5LIB}\");
+        addenv(\"WRAPPED_OPTIONS\", \"$configstring\");
+```
+
+I don't know which of the two changes was needed - maybe only one. Now it builds. :-)
+"""]]

Added a comment
diff --git a/doc/forum/problems_with_git_push_on_openbsd/comment_1_b4405629a7ab7058b8d0284ef36de7e8._comment b/doc/forum/problems_with_git_push_on_openbsd/comment_1_b4405629a7ab7058b8d0284ef36de7e8._comment
new file mode 100644
index 000000000..45e58e82d
--- /dev/null
+++ b/doc/forum/problems_with_git_push_on_openbsd/comment_1_b4405629a7ab7058b8d0284ef36de7e8._comment
@@ -0,0 +1,43 @@
+[[!comment format=mdwn
+ username="gry"
+ avatar="http://cdn.libravatar.org/avatar/5821f2dec97d186ce3b455b806d33035"
+ subject="comment 1"
+ date="2022-02-13T22:10:45Z"
+ content="""
+Steps I did for install,
+
+0) create user 'w' in which the wiki will be set up
+
+1) add the following to ~/.profile:
+
+wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
+eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
+echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
+echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
+
+2) . ~/.profile
+
+3) download ikiwki from packages.debian.org, extract the archive
+
+4) ./Makefile.PL - warned about missing dependencies - installed them using cpanm
+
+5) 
+
+```
+gmake install DESTDIR=/home/w/usr
+install -d /home/w/usr/etc/ikiwiki
+install -m 0644 wikilist /home/w/usr/etc/ikiwiki
+install -m 0644 auto.setup /home/w/usr/etc/ikiwiki
+install -m 0644 auto-blog.setup /home/w/usr/etc/ikiwiki
+
+```
+
+6) added \"PATH=$PATH:/home/w/usr/usr/local/bin/\" and \"export PERL5LIB=/home/w/usr/usr/local/libdata/perl5/site_perl/\" to ~/.profile
+
+7) logged off, logged back on
+
+8) ikiwiki --setup mysite.setup
+
+Hope it helps with finding where the issue is.
+
+"""]]

Added a comment
diff --git a/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_4_554ff4e523670c271ee08f0fbce4b8b2._comment b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_4_554ff4e523670c271ee08f0fbce4b8b2._comment
new file mode 100644
index 000000000..2c9fda446
--- /dev/null
+++ b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_4_554ff4e523670c271ee08f0fbce4b8b2._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="kinostl"
+ avatar="http://cdn.libravatar.org/avatar/3687dfd12f6338c547718b7839959617"
+ subject="comment 4"
+ date="2022-02-13T19:25:57Z"
+ content="""
+It definitely does grys.
+
+And yes, the permissions are important because people have said they want to be able to write stuff, but keep it hidden from their players until its time for them to see it. Players also tend to like to do this for character notes as well, keeping things hidden and there just for themselves. The ownership is necessary because of culture, players don't see their character as part of the story but the story as part of their experiences.
+"""]]

Added a comment
diff --git a/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_3_22ad9a7ef385c781bdbb540631a7e19f._comment b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_3_22ad9a7ef385c781bdbb540631a7e19f._comment
new file mode 100644
index 000000000..8a4df9ece
--- /dev/null
+++ b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_3_22ad9a7ef385c781bdbb540631a7e19f._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="gry"
+ avatar="http://cdn.libravatar.org/avatar/5821f2dec97d186ce3b455b806d33035"
+ subject="comment 3"
+ date="2022-02-13T19:21:55Z"
+ content="""
+Okay, a few points
+
+* by default anonymous users cannot edit the wiki, this can be controlled by [anonok plugin](http://ikiwiki.info/plugins/anonok/)
+* in ikiwiki once you are logged in you can read and edit any pages. the only wiki engine that allows precise control over permissions similar to what you described is dokuwiki, and i find it is less elegant than ikiwiki. please consider whether you really need this feature.
+* comments currently are not inline, not attached to any particular pagagraph of the page. they are like what we are writing here right now. ( via [this](http://ikiwiki.info/plugins/comments/) ) personally, when I need real time communication, I use IRC chat, like OFTC or Libera.Chat, that is open in another tab. For smaller wikis it means only those present in the chat can read it. This can be overcome by publishing IRC chat logs (software exists for this) or by scheduling meetups at a particular hour when everyone is more likely to be online.
+* ikiwiki is in my view really good for putting pages and stories in an organized way. there are nested page names, there are page tags, there are links between pages. ikiwiki corrects dead links for each page rename. I can not as of today imagine a better more organized way to index and link pages than what ikiwiki does. it supports attachments and image upload too.
+* about seeing what each user does. ikiwiki uses a revision control as backend. if you click [recent changes](http://ikiwiki.info/recentchanges/) and click the goggles, it will show you a diff. I don't think it is possible to view contibutions of one particular user on-wiki by clicking their nick, but I think in git this is possible, see [this example](https://stackoverflow.com/questions/4259996/how-can-i-view-a-git-log-of-just-one-users-commits). I think it is possible (someone more experienced than me should correct me if not) to implement a plugin that shows a user's contributions, like the recent changes link does.
+* \"I want people to be able to receive suggestions on their work?\" - two options - either via 'Comment' like what you are reading now, those can be moderated if needed, i.e. require manual approval by admin; or via 'Discussion' tab at the top of the page, which is another page, and is not moderated.
+
+Hope it helps.
+"""]]

Added a comment: Clarifications for gry
diff --git a/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_2_86171fe3f586dd6cc92d70524dacd8e8._comment b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_2_86171fe3f586dd6cc92d70524dacd8e8._comment
new file mode 100644
index 000000000..034eb85e9
--- /dev/null
+++ b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_2_86171fe3f586dd6cc92d70524dacd8e8._comment
@@ -0,0 +1,24 @@
+[[!comment format=mdwn
+ username="kinostl"
+ avatar="http://cdn.libravatar.org/avatar/3687dfd12f6338c547718b7839959617"
+ subject="Clarifications for gry"
+ date="2022-02-13T19:06:25Z"
+ content="""
+Hi gry, thanks for the questions.
+
+> \"I want them to be able to choose who can see their work, I want them to be able to choose who can edit their work\" - how do you see this controlled?
+
+I'm imagining a user can go to a page and go to a \"permissions\" tab, then add people to different roles such as \"editor\" and \"reader\". Non-logged in users, and any user, would be presented as an individual user on this page, to make it easier on the user. 
+
+> \"I want people to be able to use their characters and settings to write stories\" - what do you mean - other than have one pages 'My list of characters' and anorher page 'My story' - what else does the software need to be able to do?
+
+I pretty much just mean people having pages and a good index, yes. 
+
+> \"in both realtime and asynchronously\" -- could you please tell more details about this feature? Do you mean 'live' collaborative editing when there are several users editing a page at the same time?
+
+I should have left this part out, I realized its essentially a whole different project. I just mean real time comments.
+
+> Thanks.
+
+Thanks for pointing out where I could be more clear!
+"""]]

Added a comment
diff --git a/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_1_c4949958689f6a8d92b98e96b30696b1._comment b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_1_c4949958689f6a8d92b98e96b30696b1._comment
new file mode 100644
index 000000000..51a13fcb8
--- /dev/null
+++ b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool/comment_1_c4949958689f6a8d92b98e96b30696b1._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="gry"
+ avatar="http://cdn.libravatar.org/avatar/5821f2dec97d186ce3b455b806d33035"
+ subject="comment 1"
+ date="2022-02-13T18:28:45Z"
+ content="""
+Hello,
+
+\"I want them to be able to choose who can see their work, I want them to be able to choose who can edit their work\" -  how do you see this controlled?
+
+\"I want people to be able to use their characters and settings to write stories\" - what do you mean - other than have one pages 'My list of characters' and anorher page 'My story' - what else does the software need to be able to do?
+
+\"in both realtime and asynchronously\" -- could you please tell more details about this feature? Do you mean 'live' collaborative editing when there are several users editing a page at the same time?
+
+Thanks.
+
+"""]]

diff --git a/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool.mdwn b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool.mdwn
new file mode 100644
index 000000000..347a6523f
--- /dev/null
+++ b/doc/forum/Looking_to_make_a_Collaborative_Fiction_tool.mdwn
@@ -0,0 +1,45 @@
+Hello, I'm looking to make a Collaborative Fiction tool meant for multiple users and I was wondering if Ikiwiki would be a good base for that. Its plugin system looks very powerful, but I'm worried if I'd have to lock down too many things for it to be viable.
+
+Heres the requirements list that I've made so far
+
+> I want something that can easily let me see information about my friends' world building.
+> 
+> World building involves
+> 
+> - Characters
+> - Player Characters
+> - Settings
+> - Major Events
+> - Cool Things (Magic Items for example)
+> 
+> I want to be able to see whatever they feel like is the best entrypoint
+> 
+> I want to be able to see a general list of everything they make
+> 
+> I want them to be able to choose who can see their work
+> 
+> I want them to be able to choose who can **edit** their work
+> 
+> I want people to be able to contribute to the same World or Project
+> 
+> I want people to be able to receive suggestions on their work?
+> 
+> I want people to be able to use their characters and settings to write stories in both realtime and asynchronously
+
+As for implementation. My original idea for this was to build a wrapper around git. This wrapper would allow someone to log in using Discord. If it is a new account, it would create a new git repo for them. Each user only has 1 git repo for simplicity's sake.
+
+The repo has folders and files in it, and each folder and file has user controlled access on it. A file or folder can be publicly viewable, only viewable to themselves, or only viewable to others they choose.
+
+On top of that, they can allow others to edit their files.
+
+I figure this is easily doable by just having the wrapper handling all this role based stuff. I'm not sure if a database or the files themselves would have the information for this rbac feature.
+
+I also figure having it be built on git would also allow people to use their own choice in editor, instead of whatever client I create. This has been a pretty important use case to people I talk to about this project.
+
+When I looked over ikiwiki's abilities, it seemed like most of this was already done by ikiwiki and I'd like to avoid doing work someone else has already done, and contribute to a project. Pushing free software is always great.
+
+I figure it could be implemented by giving every user their own ikiwiki, having some sort of centralized auth server that does the rbac and login. I'd also probably want to tighten the git access to be more similar to traditional git hosting web services.
+
+My users aren't developers, and should have the more confusing but powerful features of git left to git. They're just people who have fun writing fiction about their original characters and fiction with no intent of publishing anything. So the focus is entirely on making sure the software is enjoyable to use.
+
+I was wondering if anyone could tell me if this is outside the scope of ikiwiki's abilities, or if theres a more intelligent way for me to implement this idea using ikiwiki.