Recent changes to this wiki:

de-emphasize contributions to Joey; ikiwiki has more developers than just me. Donations have been used to help cover hosting and domain name costs, and so just say that's what they're for.
diff --git a/doc/tipjar.mdwn b/doc/tipjar.mdwn
index d23dc10..37968e0 100644
--- a/doc/tipjar.mdwn
+++ b/doc/tipjar.mdwn
@@ -1,5 +1,5 @@
 Ikiwiki is [[FreeSoftware]], but you're also free to show your appreciation
-to [[Joey]] or help offset hosting costs with a donation in any amount you
+by helping to offset hosting costs with a donation in any amount you
 choose. If you'd like to fund development of a specific feature, see the
 [[consultants]] page.
 

initial creation
diff --git a/doc/forum/Blog_pages.mdwn b/doc/forum/Blog_pages.mdwn
new file mode 100644
index 0000000..4ff1e95
--- /dev/null
+++ b/doc/forum/Blog_pages.mdwn
@@ -0,0 +1,3 @@
+How can I add an "older posts" link to my blog? I understand trail can be used for moving between individual posts, but how do I move between pages of blog posts?
+
+Thanks, Jamie

Fix getlibdirs when libdirs is unset
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 41baa66..7afd579 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -569,7 +569,10 @@ sub getsetup () {
 }
 
 sub getlibdirs () {
-	my @libdirs = @{$config{libdirs}};
+	my @libdirs;
+	if ($config{libdirs}) {
+		@libdirs = @{$config{libdirs}};
+	}
 	if (length $config{libdir}) {
 		push @libdirs, $config{libdir};
 	}
diff --git a/doc/bugs/getlibdirs_function_failure.mdwn b/doc/bugs/getlibdirs_function_failure.mdwn
index 68d4326..ac909f7 100644
--- a/doc/bugs/getlibdirs_function_failure.mdwn
+++ b/doc/bugs/getlibdirs_function_failure.mdwn
@@ -11,3 +11,5 @@ This error is triggered when $config{libdirs} is undefined; it didn't happen in
 A simple patch would be to alter that line to this:
 
         my @libdirs = $config{libdirs} ? @{$config{libdirs}} : ();
+
+> [[Fixed|done]], sorry about that --[[smcv]]

bug with patch
diff --git a/doc/bugs/getlibdirs_function_failure.mdwn b/doc/bugs/getlibdirs_function_failure.mdwn
new file mode 100644
index 0000000..68d4326
--- /dev/null
+++ b/doc/bugs/getlibdirs_function_failure.mdwn
@@ -0,0 +1,13 @@
+Up-to-date version today (commit 287231f7d29374264c2cd23818d5cb9d607d33e9). Now "make test" fails with the following error:
+
+        Error:  Can't use an undefined value as an ARRAY reference at /home/kat/files/repos/ikiwiki_master/blib/lib/IkiWiki.pm line 570.
+
+Looked up line 570, it's the first line of the "getlibdirs" function.
+
+        my @libdirs = @{$config{libdirs}};
+
+This error is triggered when $config{libdirs} is undefined; it didn't happen in the previous version because more checking was done before the value was dereferenced.
+
+A simple patch would be to alter that line to this:
+
+        my @libdirs = $config{libdirs} ? @{$config{libdirs}} : ();

libdirs option: I agree
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index 89bef40..579e357 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -49,4 +49,8 @@ I think the change is a one-liner, but I put this here for discussion before att
 >>>> instead: ikiwiki will now search each item of `$config{libdirs}`, then
 >>>> `$config{libdir}`. [[done]] --[[smcv]]
 
+>>>>> Good. I cannot see any justification apart from historical reasons, but I
+>>>>> agree with your choice.
+>>>>> -- [[Louis|spalax]]
+
 [[!taglink wishlist]]

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
index e546ec5..fef64dd 100644
--- a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -4,7 +4,7 @@ The rest of the wiki continues to work, but only "Content-type: text/html" gets
 
 * Fresh ikiwiki --setup of 3.20141016-1 
 * Nginx
-EDIT: Arch Linux, built ikiwiki from AUR
+* EDIT: Arch Linux, built ikiwiki from AUR
 
 Would this be something I'm doing wrong or a bug?
 

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
index 568abbb..e546ec5 100644
--- a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -4,7 +4,7 @@ The rest of the wiki continues to work, but only "Content-type: text/html" gets
 
 * Fresh ikiwiki --setup of 3.20141016-1 
 * Nginx
-EDIT: Arch Linux, built ikiwiki form AUR
+EDIT: Arch Linux, built ikiwiki from AUR
 
 Would this be something I'm doing wrong or a bug?
 

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
index d1d3505..568abbb 100644
--- a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -4,5 +4,7 @@ The rest of the wiki continues to work, but only "Content-type: text/html" gets
 
 * Fresh ikiwiki --setup of 3.20141016-1 
 * Nginx
+EDIT: Arch Linux, built ikiwiki form AUR
 
 Would this be something I'm doing wrong or a bug?
+

Added a comment: Apologies
diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_2_52e045d33c5aab67d37dba35536ecec6._comment b/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_2_52e045d33c5aab67d37dba35536ecec6._comment
new file mode 100644
index 0000000..093f80f
--- /dev/null
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_2_52e045d33c5aab67d37dba35536ecec6._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="Veyrdite"
+ subject="Apologies"
+ date="2014-12-12T01:32:56Z"
+ content="""
+I'm a horrible person.  Rather than working out what caused the issue I instead setup ikiwiki on Debian Stable (which was going to be my final platform for the server anyway). 
+
+My debugging experience with cgi and webservers is limited, but I will give it another go on my Arch box to see if I can find a resolution.  Other users might be affected by the same issue.
+"""]]

Correct minor spelling error
diff --git a/doc/plugins/notifyemail.mdwn b/doc/plugins/notifyemail.mdwn
index 302979e..642b266 100644
--- a/doc/plugins/notifyemail.mdwn
+++ b/doc/plugins/notifyemail.mdwn
@@ -1,5 +1,5 @@
-This plugin allows uses to subscribe to pages, and emails them when
-they are created or changed.
+This plugin allows users to subscribe to pages, and emails them when
+those pages are created or changed.
 
 It needs the [[!cpan Mail::SendMail]] perl module, and sends mail
 using the local MTA.

diff --git a/doc/plugins/contrib/org_mode.mdwn b/doc/plugins/contrib/org_mode.mdwn
index 539423c..11153be 100644
--- a/doc/plugins/contrib/org_mode.mdwn
+++ b/doc/plugins/contrib/org_mode.mdwn
@@ -1,5 +1,3 @@
-[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
-
 Summary
 =======
 
@@ -12,6 +10,8 @@ be a bit faster than the older plugin, as well as properly handling
 [[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
 plugin.  An example of its use can be found at my [blog][chrismgray-blog].
 
+[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
+
 Original plugin
 ===============
 

move this with the real plugins, since it's now implemented - not sure it was still in todos
diff --git a/doc/plugins/contrib/org_mode.mdwn b/doc/plugins/contrib/org_mode.mdwn
index bb3b7de..539423c 100644
--- a/doc/plugins/contrib/org_mode.mdwn
+++ b/doc/plugins/contrib/org_mode.mdwn
@@ -1,12 +1,19 @@
 [[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
 
-summary
+Summary
 =======
 
-Add a plugin for handling files written in [org-mode][].
+A plugin for handling files written in [org-mode][].
 
-notes
-=====
+A complete rewrite of the plugin can be found
+[here][chrismgray-rewrite].  It uses a
+dedicated emacs instance to parse the org-mode files.  Thus, it should
+be a bit faster than the older plugin, as well as properly handling
+[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
+plugin.  An example of its use can be found at my [blog][chrismgray-blog].
+
+Original plugin
+===============
 
 This is an updated form of [Manoj Srivastava's plugin][MS].  You can
 see the plugin [in action][example] on my blog.
@@ -18,19 +25,10 @@ but Ikiwiki currently (as far as I know) lacks a method to escape
 inserted HTML depending on which plugins will be used during the
 [[htmlize phase|plugins/write#index11h3]].
 
-new plugin
-==========
-
-A complete rewrite of the plugin can be found
-[here][chrismgray-rewrite].  It uses a
-dedicated emacs instance to parse the org-mode files.  Thus, it should
-be a bit faster than the older plugin, as well as properly handling
-[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
-plugin.  An example of its use can be found at my [blog][chrismgray-blog].
-
 [org-mode]: http://orgmode.org/
 [MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
 [example]: http://blog.tremily.us/posts/Git/notes/
 [raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
 [chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
 [chrismgray-blog]: http://chrismgray.github.com
+

update for rename of todo/org_mode/Discussion.mdwn to plugins/contrib/org_mode/Discussion.mdwn
diff --git a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
index 4ac817a..a05b367 100644
--- a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
+++ b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
@@ -1,4 +1,4 @@
-If you look at [[plugins/contrib/org_mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[todo/org mode/Discussion]]. 
+If you look at [[plugins/contrib/org_mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[plugins/contrib/org_mode/Discussion]]. 
 
 So, there is a bug that prevents a link to the existing Discussion page from appearing in the correct way on the corresponding main page. --Ivan Z.
 

update for rename of todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/users/chrismgray.mdwn b/doc/users/chrismgray.mdwn
index b008483..d4068d4 100644
--- a/doc/users/chrismgray.mdwn
+++ b/doc/users/chrismgray.mdwn
@@ -1,4 +1,4 @@
 I'm Chris Gray.  I have an ikiwiki-based blog at
 [[http://chrismgray.github.com]].  I wrote a plugin for
-[[org-mode|todo/org_mode]] files that is probably the first ikiwiki
+[[org-mode|plugins/contrib/org_mode]] files that is probably the first ikiwiki
 plugin written mostly in emacs lisp.

update for rename of todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/todo/be_more_selective_about_running_hooks.mdwn b/doc/todo/be_more_selective_about_running_hooks.mdwn
index 70a1cb7..768a6d1 100644
--- a/doc/todo/be_more_selective_about_running_hooks.mdwn
+++ b/doc/todo/be_more_selective_about_running_hooks.mdwn
@@ -12,7 +12,7 @@ only do anything if they do.
 > something else, it has no reason to care what the pagetype is. (Same for
 > linkify.) --[[Joey]]
 
->> My [[org-mode|todo/org_mode]] external plugin (which will never
+>> My [[org-mode|plugins/contrib/org_mode]] external plugin (which will never
 >> really make sense to include with ikiwiki I think) does this.  I
 >> think that most plugins defining alternate wiki syntaxes would as
 >> well. --[[chrismgray]]

update for rename of todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
index 9ba4ede..4ac817a 100644
--- a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
+++ b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
@@ -1,4 +1,4 @@
-If you look at [[todo/org mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[todo/org mode/Discussion]]. 
+If you look at [[plugins/contrib/org_mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[todo/org mode/Discussion]]. 
 
 So, there is a bug that prevents a link to the existing Discussion page from appearing in the correct way on the corresponding main page. --Ivan Z.
 

rename todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/plugins/contrib/org_mode.mdwn b/doc/plugins/contrib/org_mode.mdwn
new file mode 100644
index 0000000..bb3b7de
--- /dev/null
+++ b/doc/plugins/contrib/org_mode.mdwn
@@ -0,0 +1,36 @@
+[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
+
+summary
+=======
+
+Add a plugin for handling files written in [org-mode][].
+
+notes
+=====
+
+This is an updated form of [Manoj Srivastava's plugin][MS].  You can
+see the plugin [in action][example] on my blog.
+
+For reasons discussed in the [[reStructuredText plugin|plugins/rst]],
+wikilinks and other ikiwiki markup that inserts raw HTML can cause
+problems.  Org-mode provides a [means for processing raw HTML][raw],
+but Ikiwiki currently (as far as I know) lacks a method to escape
+inserted HTML depending on which plugins will be used during the
+[[htmlize phase|plugins/write#index11h3]].
+
+new plugin
+==========
+
+A complete rewrite of the plugin can be found
+[here][chrismgray-rewrite].  It uses a
+dedicated emacs instance to parse the org-mode files.  Thus, it should
+be a bit faster than the older plugin, as well as properly handling
+[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
+plugin.  An example of its use can be found at my [blog][chrismgray-blog].
+
+[org-mode]: http://orgmode.org/
+[MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
+[example]: http://blog.tremily.us/posts/Git/notes/
+[raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
+[chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
+[chrismgray-blog]: http://chrismgray.github.com
diff --git a/doc/plugins/contrib/org_mode/Discussion.mdwn b/doc/plugins/contrib/org_mode/Discussion.mdwn
new file mode 100644
index 0000000..726590b
--- /dev/null
+++ b/doc/plugins/contrib/org_mode/Discussion.mdwn
@@ -0,0 +1,7 @@
+I don't find org.pm in git branch. The steps are:
+
+1. git clone git://github.com/wking/ikiwiki.git
+2. cd ikiwiki
+3. find . | grep org.pm
+
+I've taken the name from <http://www.golden-gryphon.com/software/misc/org.pm.html>
diff --git a/doc/todo/org_mode.mdwn b/doc/todo/org_mode.mdwn
deleted file mode 100644
index bb3b7de..0000000
--- a/doc/todo/org_mode.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
-
-summary
-=======
-
-Add a plugin for handling files written in [org-mode][].
-
-notes
-=====
-
-This is an updated form of [Manoj Srivastava's plugin][MS].  You can
-see the plugin [in action][example] on my blog.
-
-For reasons discussed in the [[reStructuredText plugin|plugins/rst]],
-wikilinks and other ikiwiki markup that inserts raw HTML can cause
-problems.  Org-mode provides a [means for processing raw HTML][raw],
-but Ikiwiki currently (as far as I know) lacks a method to escape
-inserted HTML depending on which plugins will be used during the
-[[htmlize phase|plugins/write#index11h3]].
-
-new plugin
-==========
-
-A complete rewrite of the plugin can be found
-[here][chrismgray-rewrite].  It uses a
-dedicated emacs instance to parse the org-mode files.  Thus, it should
-be a bit faster than the older plugin, as well as properly handling
-[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
-plugin.  An example of its use can be found at my [blog][chrismgray-blog].
-
-[org-mode]: http://orgmode.org/
-[MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
-[example]: http://blog.tremily.us/posts/Git/notes/
-[raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
-[chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
-[chrismgray-blog]: http://chrismgray.github.com
diff --git a/doc/todo/org_mode/Discussion.mdwn b/doc/todo/org_mode/Discussion.mdwn
deleted file mode 100644
index 726590b..0000000
--- a/doc/todo/org_mode/Discussion.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I don't find org.pm in git branch. The steps are:
-
-1. git clone git://github.com/wking/ikiwiki.git
-2. cd ikiwiki
-3. find . | grep org.pm
-
-I've taken the name from <http://www.golden-gryphon.com/software/misc/org.pm.html>

please don't rely on me for this bit
diff --git a/doc/bugs/outdated_jquery-ui.mdwn b/doc/bugs/outdated_jquery-ui.mdwn
index 41d3f1b..bcd44e2 100644
--- a/doc/bugs/outdated_jquery-ui.mdwn
+++ b/doc/bugs/outdated_jquery-ui.mdwn
@@ -8,3 +8,9 @@ Amitai gets there first.
 It doesn't look as though we actually use the vulnerable functionality.
 
 --[[smcv]]
+
+> This is more complicated than it looked at first glance because both
+> jquery and jquery-ui have broken API since the version we embed,
+> and we also ship other jquery plugins for [[plugins/attachment]].
+> Perhaps someone who knows jquery could check compatibility and
+> propose a branch? --[[smcv]]

some notes on ikiwiki vs. Markdown
diff --git a/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn b/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
index bf1ca0e..819f1ac 100644
--- a/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
+++ b/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
@@ -43,4 +43,22 @@ main = forever $
 > >
 > > ... maybe a bug in Discount... --[[anarcat]]
 
+> > > Discount versions older than 2.1.6 do not support the \`\`\` fences.
+> > > ikiwiki.info (hosted by branchable.com) presumably runs on Debian
+> > > stable, which only has 2.1.3. I am not involved in running Branchable,
+> > > but it seems reasonable to assume that it will be upgraded to 2.1.7
+> > > as part of upgrading to Debian 8 when that is released. --[[smcv]]
+
 > > I strongly support this feature as well! --[[integrii]]
+
+> > > ikiwiki has no support for specific Markdown features: all it does
+> > > is to recognise a Markdown file and give it to a Markdown
+> > > implementation such as [[!cpan Text::Markdown::Discount]].
+> > > If you would like ikiwiki to support a different subset of Markdown,
+> > > please either recommend a better Markdown implementation, or
+> > > report bugs / feature requests to the maintainer of Discount.
+> > >
+> > > In this case it appears there is no code change required in
+> > > ikiwiki (and for that matter, nothing to do in Discount either
+> > > because the feature request has already been implemented),
+> > > so I'm [[closing this todo item|done]]. --[[smcv]]
diff --git a/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn b/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn
index 54a6159..85dfddf 100644
--- a/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn
+++ b/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn
@@ -5,3 +5,13 @@ Just a quick note that some people are making noise about Markdown standardisati
   * <http://johnmacfarlane.net/babelmark2/faq.html#what-are-some-big-questions-that-the-markdown-spec-does-not-answer>
 
 It might be worth following...
+
+> ikiwiki does not implement Markdown: we use a third-party library for that
+> (there are several options, but the recommended one is currently
+> [[!cpan Text::Markdown::Discount]]). We support whatever dialect
+> of Markdown is implemented by the chosen Markdown implementation.
+>
+> As a result, nothing is likely to change in ikiwiki's interpretation of
+> Markdown unless someone either changes the behaviour of Discount,
+> or recommends a different (and hopefully better) third-party library.
+> --[[smcv]]

changelog, close bug
diff --git a/debian/changelog b/debian/changelog
index afe3bb5..824a006 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -23,6 +23,11 @@ ikiwiki (3.20141017) UNRELEASED; urgency=medium
   * style.css, actiontabs, blueview, goldtype, monochrome: adjust layout
     below 600px ("responsive layout") so that horizontal scrolling is not
     needed on smartphone browsers or other small viewports.
+  * core: new libdirs option alongside libdir. Thanks, Louis Paternault
+
+  [ Amitai Schlair ]
+  * core: log a debug message before waiting for the lock.
+    Thanks, Mark Jason Dominus
 
  -- Joey Hess <joeyh@debian.org>  Mon, 20 Oct 2014 12:04:49 -0400
 
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index 6e3fe22..89bef40 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -43,5 +43,10 @@ I think the change is a one-liner, but I put this here for discussion before att
 >>> efficient in Python) feel free to improve my [[!taglink patch]].
 >>> [[!template  id=gitbranch branch=spalax/paternal/libdirs browse="https://github.com/paternal/ikiwiki/tree/paternal/libdirs" author="[[Louis|spalax]]"]]
 
+>>>> While reviewing and applying your patch I decided the new
+>>>> "sometimes a list, sometimes not" behaviour of `libdir` was
+>>>> too confusing in documentation, so I made it work like underlaydir(s)
+>>>> instead: ikiwiki will now search each item of `$config{libdirs}`, then
+>>>> `$config{libdir}`. [[done]] --[[smcv]]
 
 [[!taglink wishlist]]

Simplify libdirs: libdirs must be plural, libdir must be a single string
This makes the documentation read more sensibly, and matches how we
handle underlaydirs and underlaydir.
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 7c55764..41baa66 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -358,11 +358,20 @@ sub getsetup () {
 		safe => 0, # paranoia
 		rebuild => 0,
 	},
+	libdirs => {
+		type => "string",
+		default => [],
+		example => ["$ENV{HOME}/.local/share/ikiwiki"],
+		description => "extra library and plugin directories",
+		advanced => 1,
+		safe => 0, # directory
+		rebuild => 0,
+	},
 	libdir => {
 		type => "string",
 		default => "",
 		example => "$ENV{HOME}/.ikiwiki/",
-		description => "extra library and plugin directorys. Can be either a string (for backward compatibility) or a list of strings.",
+		description => "extra library and plugin directory (searched after libdirs)",
 		advanced => 1,
 		safe => 0, # directory
 		rebuild => 0,
@@ -560,17 +569,11 @@ sub getsetup () {
 }
 
 sub getlibdirs () {
-	my $libdirs;
-	if (! ref $config{libdir}) {
-		if (length $config{libdir}) {
-			$libdirs = [$config{libdir}];
-		} else {
-			$libdirs = [];
-		}
-	} else {
-		$libdirs = $config{libdir};
+	my @libdirs = @{$config{libdirs}};
+	if (length $config{libdir}) {
+		push @libdirs, $config{libdir};
 	}
-	return @{$libdirs};
+	return @libdirs;
 }
 
 sub defaultconfig () {
@@ -733,10 +736,8 @@ sub listplugins () {
 }
 
 sub loadplugins () {
-	if (defined $config{libdir} && length $config{libdir}) {
-		foreach my $dir (getlibdirs()) {
-			unshift @INC, possibly_foolish_untaint($dir);
-		}
+	foreach my $dir (getlibdirs()) {
+		unshift @INC, possibly_foolish_untaint($dir);
 	}
 
 	foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) {
@@ -770,7 +771,7 @@ sub loadplugin ($;$) {
 	return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}};
 
 	foreach my $possiblytainteddir (getlibdirs(), "$installdir/lib/ikiwiki") {
-		my $dir = defined $possiblytainteddir ? possibly_foolish_untaint($possiblytainteddir) : undef;
+		my $dir = possibly_foolish_untaint($possiblytainteddir);
 		if (defined $dir && -x "$dir/plugins/$plugin") {
 			eval { require IkiWiki::Plugin::external };
 			if ($@) {
diff --git a/doc/plugins/install.mdwn b/doc/plugins/install.mdwn
index 8ae1c8b..e810d87 100644
--- a/doc/plugins/install.mdwn
+++ b/doc/plugins/install.mdwn
@@ -8,14 +8,14 @@ inside the perl search path. For example, if your perl looks in
 `/usr/local/lib/site_perl` for modules, you can locally install ikiwiki
 plugins to `/usr/local/lib/site_perl/IkiWiki/Plugin`
 
-You can use the `libdir` configuration option to add directories to the
+You can use the `libdirs` and/or `libdir` configuration options to add
+directories to the
 search path. For example, if you set `libdir` to `/home/you/.ikiwiki/`,
-then ikiwiki will look for plugins in `/home/you/.ikiwiki/IkiWiki/Plugin`. This
-configuration option can be either a string (for backward compatibility) or a
-list of strings (to add several directories to the search path).
+then ikiwiki will look for plugins in `/home/you/.ikiwiki/IkiWiki/Plugin`.
 
 Ikiwiki also supports plugins that are external programs. These are
 typically written in some other language than perl. Ikiwiki searches for
-these in `/usr/lib/ikiwiki/plugins` by default. If `libdir` is set, it will
-also look under that directory, for example in `/home/you/.ikiwiki/plugins`.
+these in `/usr/lib/ikiwiki/plugins` by default. If `libdirs` or `libdir` are
+set, it will also look under those directories, for example in
+`/home/you/.ikiwiki/plugins`.
 Note that this type of plugin has to be executable for ikiwiki to use it.

Added a comment
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_5_af8c6f5cdebae6e72d9d8eb9011a9dbf._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_5_af8c6f5cdebae6e72d9d8eb9011a9dbf._comment
new file mode 100644
index 0000000..2c909ab
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_5_af8c6f5cdebae6e72d9d8eb9011a9dbf._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://www.globalclue.com/"
+ nickname="Dion"
+ subject="comment 5"
+ date="2014-12-08T17:44:49Z"
+ content="""
+I tried just now and it does work, and it is quite surprising
+"""]]

Several libdirs: proposed patch
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index 06fd424..6e3fe22 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -36,5 +36,12 @@ I think the change is a one-liner, but I put this here for discussion before att
 >> and replace all uses of $config{libdir} with it.
 >>
 >> --[[smcv]]
+>>>
+>>> I implemented it (see branch ``paternal/libdirs``). I used [[smcv]]'s idea, but
+>>> avoiding side effects. I edited documentation as well. As usual, as neither
+>>> English nor Perl are my first languages (damn! I would be so much more
+>>> efficient in Python) feel free to improve my [[!taglink patch]].
+>>> [[!template  id=gitbranch branch=spalax/paternal/libdirs browse="https://github.com/paternal/ikiwiki/tree/paternal/libdirs" author="[[Louis|spalax]]"]]
+
 
 [[!taglink wishlist]]

Allow several extra library and plugin directories (libdir option)
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 1043ef4..73fedb0 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -361,7 +361,7 @@ sub getsetup () {
 		type => "string",
 		default => "",
 		example => "$ENV{HOME}/.ikiwiki/",
-		description => "extra library and plugin directory",
+		description => "extra library and plugin directorys. Can be either a string (for backward compatibility) or a list of strings.",
 		advanced => 1,
 		safe => 0, # directory
 		rebuild => 0,
@@ -551,6 +551,17 @@ sub getsetup () {
 	},
 }
 
+sub getlibdirs () {
+	if (! ref $config{libdir}) {
+		if (length $config{libdir}) {
+			return [$config{libdir}];
+		} else {
+			return [];
+		}
+	}
+	return $config{libdir};
+}
+
 sub defaultconfig () {
 	my %s=getsetup();
 	my @ret;
@@ -693,14 +704,14 @@ sub checkconfig () {
 sub listplugins () {
 	my %ret;
 
-	foreach my $dir (@INC, $config{libdir}) {
+	foreach my $dir (@INC, @{getlibdirs()}) {
 		next unless defined $dir && length $dir;
 		foreach my $file (glob("$dir/IkiWiki/Plugin/*.pm")) {
 			my ($plugin)=$file=~/.*\/(.*)\.pm$/;
 			$ret{$plugin}=1;
 		}
 	}
-	foreach my $dir ($config{libdir}, "$installdir/lib/ikiwiki") {
+	foreach my $dir (@{getlibdirs()}, "$installdir/lib/ikiwiki") {
 		next unless defined $dir && length $dir;
 		foreach my $file (glob("$dir/plugins/*")) {
 			$ret{basename($file)}=1 if -x $file;
@@ -712,7 +723,9 @@ sub listplugins () {
 
 sub loadplugins () {
 	if (defined $config{libdir} && length $config{libdir}) {
-		unshift @INC, possibly_foolish_untaint($config{libdir});
+		foreach my $dir (@{getlibdirs()}) {
+			unshift @INC, possibly_foolish_untaint($dir);
+		}
 	}
 
 	foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) {
@@ -745,8 +758,8 @@ sub loadplugin ($;$) {
 
 	return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}};
 
-	foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef,
-	                 "$installdir/lib/ikiwiki") {
+	foreach my $possiblytainteddir (@{getlibdirs()}, "$installdir/lib/ikiwiki") {
+		my $dir = defined $possiblytainteddir ? possibly_foolish_untaint($possiblytainteddir) : undef;
 		if (defined $dir && -x "$dir/plugins/$plugin") {
 			eval { require IkiWiki::Plugin::external };
 			if ($@) {
diff --git a/doc/plugins/install.mdwn b/doc/plugins/install.mdwn
index 900662e..8ae1c8b 100644
--- a/doc/plugins/install.mdwn
+++ b/doc/plugins/install.mdwn
@@ -8,9 +8,11 @@ inside the perl search path. For example, if your perl looks in
 `/usr/local/lib/site_perl` for modules, you can locally install ikiwiki
 plugins to `/usr/local/lib/site_perl/IkiWiki/Plugin`
 
-You can use the `libdir` configuration option to add a directory to the
+You can use the `libdir` configuration option to add directories to the
 search path. For example, if you set `libdir` to `/home/you/.ikiwiki/`,
-then ikiwiki will look for plugins in `/home/you/.ikiwiki/IkiWiki/Plugin`.
+then ikiwiki will look for plugins in `/home/you/.ikiwiki/IkiWiki/Plugin`. This
+configuration option can be either a string (for backward compatibility) or a
+list of strings (to add several directories to the search path).
 
 Ikiwiki also supports plugins that are external programs. These are
 typically written in some other language than perl. Ikiwiki searches for

adding my support for GitHub style multinline code blocks
diff --git a/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn b/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
index 24552b2..bf1ca0e 100644
--- a/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
+++ b/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
@@ -42,3 +42,5 @@ main = forever $
 > > ```
 > >
 > > ... maybe a bug in Discount... --[[anarcat]]
+
+> > I strongly support this feature as well! --[[integrii]]

yet more variants of CSS flex
diff --git a/doc/style.css b/doc/style.css
index a875969..fe1eb90 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -563,25 +563,29 @@ a.openid_large_btn:focus {
 	.page {
 		display: -webkit-box;
 		display: -webkit-flexbox;
-		display: -ms-flexbox;
 		display: -webkit-flex;
+		display: -moz-box;
+		display: -ms-flexbox;
 		display: flex;
 		-webkit-box-orient: vertical;
-		-ms-flex-direction: column;
 		-webkit-flex-direction: tb;
 		-webkit-flex-direction: column;
+		-webkit-flex-flow: column;
+		-ms-flex-direction: column;
 		flex-direction: column;
 	}
 	#pageheader {
 		-webkit-box-ordinal-group: -1;
-		-ms-flex-order: -1;
 		-webkit-order: -1;
+		-ms-box-ordinal-group: -1;
+		-ms-flex-order: -1;
 		order: -1;
 	}
 	.sidebar, #footer {
 		-webkit-box-ordinal-group: 1;
-		-ms-flex-order: 1;
 		-webkit-order: 1;
+		-ms-box-ordinal-group: 1;
+		-ms-flex-order: 1;
 		order: 1;
 	}
 

be more backwards-compatible with flex layout
diff --git a/doc/style.css b/doc/style.css
index 6050a25..a875969 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -562,9 +562,14 @@ a.openid_large_btn:focus {
 	 * the sidebar to the end */
 	.page {
 		display: -webkit-box;
+		display: -webkit-flexbox;
 		display: -ms-flexbox;
 		display: -webkit-flex;
 		display: flex;
+		-webkit-box-orient: vertical;
+		-ms-flex-direction: column;
+		-webkit-flex-direction: tb;
+		-webkit-flex-direction: column;
 		flex-direction: column;
 	}
 	#pageheader {

close
diff --git a/doc/bugs/More_mobile_friendly_default_themes.mdwn b/doc/bugs/More_mobile_friendly_default_themes.mdwn
index fa25814..8eeae41 100644
--- a/doc/bugs/More_mobile_friendly_default_themes.mdwn
+++ b/doc/bugs/More_mobile_friendly_default_themes.mdwn
@@ -11,6 +11,10 @@ http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=templates/page.tmpl;
 > a proportion of desktop browsers, rather than being responsive to window
 > size like they should have been all along. --[[smcv]]
 
+>> Fixed in master. It is currently on by default, but people with
+>> customized CSS that doesn't scale nicely can put
+>> `responsive_layout => 0` in the config to turn it off. --[[smcv]]
+
 Further more:
 
 * fonts need to be tweaked
@@ -21,10 +25,30 @@ Further more:
   > anti-theme; enhancing the other themes would be OK though.)
   > --[[smcv]]
 
+  >> With git master, the layout and font sizes seem appropriate on my
+  >> Galaxy Nexus (360 CSS pixels wide), and on simulated devices
+  >> 320 device pixels wide (e.g. the first couple of iPhone models)
+  >> in Chromium's developer tools. [[done]]
+  >>
+  >> Test sites:
+  >>
+  >> * <http://actiontabs.hosted.pseudorandom.co.uk/>
+  >> * <http://blueview.hosted.pseudorandom.co.uk/>
+  >> * <http://goldtype.hosted.pseudorandom.co.uk/>
+  >> * <http://monochrome.hosted.pseudorandom.co.uk/>
+  >> * <http://unthemed.hosted.pseudorandom.co.uk/>
+  >>
+  >> If stylistic changes are needed, please open another issue with a
+  >> suggested patch.
+  >> --[[smcv]]
+
 * XHTML should be dropped !
 
   > Already in the to-do list: [[todo/generate HTML5 by default]]. --[[smcv]]
 
+  >> Next version will always generate HTML5, unless someone overrules me.
+  >> --[[smcv]]
+
 I'm practicing this on http://dabase.com/ with <http://source.dabase.branchable.com/?p=source.git;a=blob;f=templates/page.tmpl;>
 
 > [[!format diff """

diff --git a/doc/users/james.mdwn b/doc/users/james.mdwn
new file mode 100644
index 0000000..ee539c2
--- /dev/null
+++ b/doc/users/james.mdwn
@@ -0,0 +1 @@
+Runs ikiwiki on his home page at [[http://jamestechnotes.com]] and can be reached at [[james@jamestechnotes.com]]

diff --git a/doc/tips/nearlyfreespeech/discussion.mdwn b/doc/tips/nearlyfreespeech/discussion.mdwn
index 60ee96e..b13366c 100644
--- a/doc/tips/nearlyfreespeech/discussion.mdwn
+++ b/doc/tips/nearlyfreespeech/discussion.mdwn
@@ -36,4 +36,4 @@ to `sparkline.pm` around line 38. This is mostly likely because
 1. I don't really know php.
 1. I don't have the time (right now) to sort out the proper way to do this.
 
-I also haven't sorted out how to make [[!iki plugins/openid]] or [[!iki ikiwiki/directive/format]] fully functional. I haven't researched either fully. -- james
+I also haven't sorted out how to make [[!iki ikiwiki/directive/format]] fully functional. I suspect I don't have everything installed on the host. -- [[james]]

More page layout adjustments for mobile browsers and small windows
diff --git a/doc/style.css b/doc/style.css
index 18bf531..6050a25 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -555,6 +555,7 @@ a.openid_large_btn:focus {
 		width: auto;
 		float: none;
 		margin-top: 0;
+		border: none;
 	}
 
 	/* if the mobile browser is new enough, use flex layout to shuffle
@@ -578,4 +579,8 @@ a.openid_large_btn:focus {
 		-webkit-order: 1;
 		order: 1;
 	}
+
+	.blogform, #blogform {
+		padding: 4px 4px;
+	}
 }
diff --git a/themes/actiontabs/style.css b/themes/actiontabs/style.css
index d4afc09..67720e2 100644
--- a/themes/actiontabs/style.css
+++ b/themes/actiontabs/style.css
@@ -147,3 +147,13 @@ div.recentchanges {
 	/* allow space for the action tabs */
 	margin-bottom: 2em;
 }
+
+@media (max-width: 600px) {
+	#content, #enclosure, #comments, #footer {
+		margin: 0.5em;
+	}
+	.pageheader .actions ul li {
+		padding: .1em .2em 0 .2em;
+		font-size: 0.8em;
+	}
+}
diff --git a/themes/blueview/style.css b/themes/blueview/style.css
index 7b3382c..57813e2 100644
--- a/themes/blueview/style.css
+++ b/themes/blueview/style.css
@@ -291,6 +291,10 @@ body {
 	#pagebody {
 		margin: auto;
 		border: none;
+		padding: 0.5em;
+	}
+	#footer {
+		padding: 0.5em;
 	}
 }
 
diff --git a/themes/monochrome/style.css b/themes/monochrome/style.css
index bd3fdf5..e85f8ab 100644
--- a/themes/monochrome/style.css
+++ b/themes/monochrome/style.css
@@ -10,6 +10,7 @@ body {
 	margin-left: auto;
 	margin-right: auto;
 	width: 48em;
+	max-width: 95%;
 
 	background: url(gradient.png) repeat-x white 0px -16px;
 	margin-top: 48px; /* height of gradient.png that we want to see */

diff --git a/doc/tips/nearlyfreespeech/discussion.mdwn b/doc/tips/nearlyfreespeech/discussion.mdwn
index b764325..60ee96e 100644
--- a/doc/tips/nearlyfreespeech/discussion.mdwn
+++ b/doc/tips/nearlyfreespeech/discussion.mdwn
@@ -20,3 +20,20 @@ Thanks for your incredible work!
 > it ikiwiki. --[[Joey]]
 
 Thanks a lot Joey. :-)
+
+Hi
+
+I installed version 3.20141016 as described, and it works mostly. However to get [[!iki plugins/sparkline]] to work properly I had to add
+
+[[!format php """
+set_include_path(get_include_path() . PATH_SEPARATOR . '/home/private/src/sparkline-php-0.2/lib');
+require_once('/home/private/src/sparkline-php-0.2/lib/Sparkline_$style.php');
+"""]]
+
+to `sparkline.pm` around line 38. This is mostly likely because
+
+1. I didn't install sparkline into php's default path.
+1. I don't really know php.
+1. I don't have the time (right now) to sort out the proper way to do this.
+
+I also haven't sorted out how to make [[!iki plugins/openid]] or [[!iki ikiwiki/directive/format]] fully functional. I haven't researched either fully. -- james

rename mjd.mdwn to users/mjd.mdwn
diff --git a/doc/mjd.mdwn b/doc/mjd.mdwn
deleted file mode 100644
index 018314b..0000000
--- a/doc/mjd.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Mark Jason Dominus / `yrlnry` (on IRC) / [[Ikiwiki git repo|https://github.com/mjdominus/ikiwiki]]
-
-* [[blog|http://blog.plover.com/]]
-* [[CPAN|https://metacpan.org/author/MJD]]
-* [[math.stackexchange|http://math.stackexchange.com/users/25554/mjd]]
diff --git a/doc/users/mjd.mdwn b/doc/users/mjd.mdwn
new file mode 100644
index 0000000..018314b
--- /dev/null
+++ b/doc/users/mjd.mdwn
@@ -0,0 +1,5 @@
+Mark Jason Dominus / `yrlnry` (on IRC) / [[Ikiwiki git repo|https://github.com/mjdominus/ikiwiki]]
+
+* [[blog|http://blog.plover.com/]]
+* [[CPAN|https://metacpan.org/author/MJD]]
+* [[math.stackexchange|http://math.stackexchange.com/users/25554/mjd]]

update for rename of mjd.mdwn to users/mjd.mdwn
diff --git a/doc/git.mdwn b/doc/git.mdwn
index 855fe5d..1e67ba2 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -81,7 +81,7 @@ think about merging them. This is recommended. :-)
 * [[mhameed]] `git://github.com/mhameed/ikiwiki.git`
 * [[spalax]] `git://github.com/paternal/ikiwiki.git` ([[browse|https://github.com/paternal/ikiwiki]])
 * [[jcflack]] `git://github.com/jcflack/ikiwiki.git`
-* [[mjd]] `https://github.com/mjdominus/ikiwiki.git` ([[browse|https://github.com/mjdominus/ikiwiki]])
+* [[users/mjd]] `https://github.com/mjdominus/ikiwiki.git` ([[browse|https://github.com/mjdominus/ikiwiki]])
 
 ## branches
 

add IRC identity
diff --git a/doc/mjd.mdwn b/doc/mjd.mdwn
index 5e6053b..018314b 100644
--- a/doc/mjd.mdwn
+++ b/doc/mjd.mdwn
@@ -1,4 +1,4 @@
-Mark Jason Dominus / [[Ikiwiki git repo|https://github.com/mjdominus/ikiwiki]]
+Mark Jason Dominus / `yrlnry` (on IRC) / [[Ikiwiki git repo|https://github.com/mjdominus/ikiwiki]]
 
 * [[blog|http://blog.plover.com/]]
 * [[CPAN|https://metacpan.org/author/MJD]]

diff --git a/doc/mjd.mdwn b/doc/mjd.mdwn
new file mode 100644
index 0000000..5e6053b
--- /dev/null
+++ b/doc/mjd.mdwn
@@ -0,0 +1,5 @@
+Mark Jason Dominus / [[Ikiwiki git repo|https://github.com/mjdominus/ikiwiki]]
+
+* [[blog|http://blog.plover.com/]]
+* [[CPAN|https://metacpan.org/author/MJD]]
+* [[math.stackexchange|http://math.stackexchange.com/users/25554/mjd]]

correct broken markup
diff --git a/doc/git.mdwn b/doc/git.mdwn
index 27d1499..855fe5d 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -81,7 +81,7 @@ think about merging them. This is recommended. :-)
 * [[mhameed]] `git://github.com/mhameed/ikiwiki.git`
 * [[spalax]] `git://github.com/paternal/ikiwiki.git` ([[browse|https://github.com/paternal/ikiwiki]])
 * [[jcflack]] `git://github.com/jcflack/ikiwiki.git`
-* [[mjd]] `https://github.com/mjdominus/ikiwiki.git` ([[browse|https://github.com/mjdominus/ikiwiki])
+* [[mjd]] `https://github.com/mjdominus/ikiwiki.git` ([[browse|https://github.com/mjdominus/ikiwiki]])
 
 ## branches
 

mention mjd's repository
diff --git a/doc/git.mdwn b/doc/git.mdwn
index ed02247..27d1499 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -81,6 +81,7 @@ think about merging them. This is recommended. :-)
 * [[mhameed]] `git://github.com/mhameed/ikiwiki.git`
 * [[spalax]] `git://github.com/paternal/ikiwiki.git` ([[browse|https://github.com/paternal/ikiwiki]])
 * [[jcflack]] `git://github.com/jcflack/ikiwiki.git`
+* [[mjd]] `https://github.com/mjdominus/ikiwiki.git` ([[browse|https://github.com/mjdominus/ikiwiki])
 
 ## branches
 

Adding James Richardson home page.
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index e3a5002..a8ae0ff 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -185,7 +185,6 @@ Personal sites and blogs
 * [L'Altro Wiki](http://laltromondo.dynalias.net/~iki/) Tutorials, reviews, miscellaneus articles in English and Italian.
 * gregoa's [p.r. - political rants](http://info.comodo.priv.at/pr/)
 * [Michael Hammer](http://www.michael-hammer.at/)
-* [Richardson Family Wiki](http://the4richardsons.com) A wiki, blog or some such nonsense for the family home page or something or other... I will eventually move the rest of my sites to ikiwiki. The source of the site is in git.
 * [The personal website of Andrew Back](http://carrierdetect.com)
 * [Paul Elms](http://paul.elms.pro) Personal site and blog in russian.
 * [Salient Dream](http://www.salientdream.com/) - All Things Strange. 
@@ -205,4 +204,4 @@ Personal sites and blogs
 * [KheOps's blog](https://w.ceops.eu/words/)
 * [Stig Sandbeck Mathisen](http://fnord.no/) - Personal site and blog, with a bootstrap theme, and varnish frontend.
 * Kalle Söderman: [Seen Architecture](http://img.kalleswork.net), [Stockholm Project](http://stockholm.kalleswork.net) - Mainly -image galleries using the album and osm plugins with a customized html5 theme.
-
+* [James Technotes](http://jamestechnotes.com), my [wiki](http://jamestechnotes.com) and [blog](http://jamestechnotes.com/blog).

Added a comment: more info needed
diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_1_5af6f470cc568fa7139d43a896763767._comment b/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_1_5af6f470cc568fa7139d43a896763767._comment
new file mode 100644
index 0000000..b75b5e8
--- /dev/null
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_1_5af6f470cc568fa7139d43a896763767._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="more info needed"
+ date="2014-11-27T12:14:56Z"
+ content="""
+That sounds like a bug. Please check your web server log for warnings
+or error messages from the CGI script.
+"""]]

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
new file mode 100644
index 0000000..d1d3505
--- /dev/null
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -0,0 +1,8 @@
+After enabling "Show sidebar on all pages" (global_sidebars) I can no longer access the setup page via the web interface.
+
+The rest of the wiki continues to work, but only "Content-type: text/html" gets sent for this page.
+
+* Fresh ikiwiki --setup of 3.20141016-1 
+* Nginx
+
+Would this be something I'm doing wrong or a bug?

update
diff --git a/doc/bugs/outdated_jquery-ui.mdwn b/doc/bugs/outdated_jquery-ui.mdwn
index f74c66b..41d3f1b 100644
--- a/doc/bugs/outdated_jquery-ui.mdwn
+++ b/doc/bugs/outdated_jquery-ui.mdwn
@@ -3,4 +3,8 @@
            2010-5312, and/or 2012-6662)
 
 I'll do this next time I spend some time on ikiwiki unless Joey or
-Amitai gets there first. --[[smcv]]
+Amitai gets there first.
+
+It doesn't look as though we actually use the vulnerable functionality.
+
+--[[smcv]]

IRC is not a bug tracker
diff --git a/doc/bugs/outdated_jquery-ui.mdwn b/doc/bugs/outdated_jquery-ui.mdwn
new file mode 100644
index 0000000..f74c66b
--- /dev/null
+++ b/doc/bugs/outdated_jquery-ui.mdwn
@@ -0,0 +1,6 @@
+    < thm> joeyh: ping
+    < thm> can you update the embedded jquery-ui? (for cve 
+           2010-5312, and/or 2012-6662)
+
+I'll do this next time I spend some time on ikiwiki unless Joey or
+Amitai gets there first. --[[smcv]]

you'd get this error on any refresh?
diff --git a/doc/bugs/Spam:_recent_changes_discussion.mdwn b/doc/bugs/Spam:_recent_changes_discussion.mdwn
index 74188a3..f036374 100644
--- a/doc/bugs/Spam:_recent_changes_discussion.mdwn
+++ b/doc/bugs/Spam:_recent_changes_discussion.mdwn
@@ -23,4 +23,20 @@ The content is changing frequently without being checked into the git repository
 > that owns the wiki), commit that, and merge with the bare repository
 > if necessary.
 >
+> ----
+>
+> When I tried editing the spammed page to clear it, I got this error:
+>
+>     Error: /srv/www/Kurse/AFu-Lizenz/e09.tex independently created, not overwriting with version from Kurse/AFu-Lizenz/e09.tex
+>
+> Your srcdir and destdir seem to have got out of sync. You might need
+> to rebuild the wiki.
+>
+> (I think I'd have received the same error for *any* edit right now.)
+>
+> If you're going to enable completely anonymous editing, I
+> recommend monitoring the wiki more carefully. It might be useful
+> to enable the `syslog` option so that wiki errors go to the
+> system log.
+>
 > --[[smcv]]

moreinfo
diff --git a/doc/bugs/Spam:_recent_changes_discussion.mdwn b/doc/bugs/Spam:_recent_changes_discussion.mdwn
index cdaa5b8..74188a3 100644
--- a/doc/bugs/Spam:_recent_changes_discussion.mdwn
+++ b/doc/bugs/Spam:_recent_changes_discussion.mdwn
@@ -5,3 +5,22 @@ see <http://www.dk0tu.de/recentchanges/discussion/>
 The content is changing frequently without being checked into the git repository. Any ideas?
 
 --[[bastla]]
+
+> Please check your web server logs for any error messages from the CGI.
+> It seems likely that the spammer is editing that page but the changes
+> are somehow not getting committed or pushed.
+>
+> I can't tell you much without knowing details of your setup.
+> For instance, are you using the suggested git repository setup
+> shown in the diagram on the [[rcs/git]] page, or something
+> different? Can you publish a (possibly censored) setup file somewhere?
+>
+> It would probably also be worthwhile to compare the git history of
+> `srcdir/.git` with the git history of the bare repository, if you
+> have one.
+>
+> To recover, you could undo the spam in the `srcdir` (as the user ID
+> that owns the wiki), commit that, and merge with the bare repository
+> if necessary.
+>
+> --[[smcv]]

core: generate HTML5 by default, but keep avoiding new elements like <section> that require specific browser support unless html5 is set to 1.
diff --git a/debian/changelog b/debian/changelog
index ab48846..01f6066 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -13,6 +13,9 @@ ikiwiki (3.20141017) UNRELEASED; urgency=medium
     can mostly supersede the ikiwiki-calendar command.
     Thanks, Louis Paternault
   * search: add more classes as a hook for CSS. Thanks, sajolida
+  * core: generate HTML5 by default, but keep avoiding new elements
+    like <section> that require specific browser support unless html5 is
+    set to 1.
 
  -- Joey Hess <joeyh@debian.org>  Mon, 20 Oct 2014 12:04:49 -0400
 
diff --git a/doc/todo/generate_HTML5_by_default.mdwn b/doc/todo/generate_HTML5_by_default.mdwn
index f8d598c..56041d9 100644
--- a/doc/todo/generate_HTML5_by_default.mdwn
+++ b/doc/todo/generate_HTML5_by_default.mdwn
@@ -59,3 +59,5 @@ At the moment my preferred option is the last, for which see my `ready/html5`
 branch. I'll apply this at some point if there are no objections.
 
 --[[smcv]]
+
+> [[merged|done]] --[[smcv]]

review
diff --git a/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn b/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn
index 48901a2..4f44783 100644
--- a/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn
+++ b/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn
@@ -12,3 +12,53 @@ I was asked by [[Joey]] to create a page here for purposes of review. I'm still
 That seemed to be ok for reviewing [[bugs/CGI wrapper doesn't store PERL5LIB environment variable]], so I hope it's ok for this one too. If another way would be preferable, please let me know.
 
 -- [[jcflack]]
+
+> This is less about what plugins need, and more about what is safe.
+> If an environment variable is unsafe (in the sense of "can make a
+> setuid executable change its behaviour in dangerous ways") then we
+> must not pass it through, however desirable it might be.
+>
+> Because the only safe thing we can do is a whitelist, the list
+> is secondarily about what plugins need: if nothing needs a variable,
+> we don't pass it through.
+>
+> However, if a particular variable is safe, then it's always safe;
+> so if any plugin needs something, we might as well just put it in
+> the big list of things to keep. (In other words, any change to this
+> list is already security-sensitive.)
+>
+> As such, and because importing CGI into Setup pulls in a bunch
+> of extra code that is normally only imported when we are actually
+> running as a CGI, it might make more sense to have the "master list"
+> stay in Wrapper.
+>
+> What variables would `signinview` need? Can we just add them to
+> the list and skip the complexity of per-plugin configurability?
+>
+> Sorting the list makes sense to me, and so does adding the RFC 3875 set.
+>
+> [[!format txt """
+This change does seem to have exposed a thing where various plugins that
+call checksessionexpiry() (in CGI.pm) have been supplying one more argument
+than its prototype allows ... for years ...
+"""]]
+>
+> I fixed that in ikiwiki 3.20141016. Please don't add the extra ignored
+> parameter to the prototype.
+>
+> [[!format diff """
++ if ( $config{needenvkeys} ) {
+"""]]
+>
+> If this is needed at all, you should include this in the master list of
+> setup keys in IkiWiki.pm so it's documentable. Please mention setuid
+> in the description: "environment variables that are safe to pass through
+> a setuid wrapper" or something.
+>
+> I think it's `safe => 0, advanced => 1`.
+>
+> `preserve_env` or `env_keep` (or without the underscore, as you prefer)
+> might be better names for it (terminology stolen from `debuild` and `sudo`
+> respectively).
+>
+> --[[smcv]]

search: add more classes as a hook for CSS. Thanks, sajolida
diff --git a/debian/changelog b/debian/changelog
index 1cf3dce..ab48846 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,7 @@ ikiwiki (3.20141017) UNRELEASED; urgency=medium
   * calendar: add calendar_autocreate option, with which "ikiwiki --refresh"
     can mostly supersede the ikiwiki-calendar command.
     Thanks, Louis Paternault
+  * search: add more classes as a hook for CSS. Thanks, sajolida
 
  -- Joey Hess <joeyh@debian.org>  Mon, 20 Oct 2014 12:04:49 -0400
 
diff --git a/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn b/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
index 0cc5aca..68e49b9 100644
--- a/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
+++ b/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
@@ -43,3 +43,5 @@ Here is a patch:
      <hr>
     --
     2.1.1
+
+> [[Applied|done]], thanks --[[smcv]]

a plan
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index b71780f..06fd424 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -18,5 +18,23 @@ I think the change is a one-liner, but I put this here for discussion before att
 >
 > [[Louis|spalax]]
 
+>> Modifying `getconfig` is not a valid solution, because IkiWiki.pm is also imported by
+>> [[ikiwiki-transition]], [[ikiwiki-calendar]], the regression tests, etc.
+>>
+>> The way I would personally do it is to have a new non-exported function `getlibdirs`
+>> or something, have it do something like this:
+>>
+>>     if (! ref $config{libdir}) {
+>>             if (length $config{libdir}) {
+>>                     $config{libdir} = [$config{libdir}];
+>>             } else {
+>>                     $config{libdir} = [];
+>>             }
+>>     }
+>>     return @{$config{libdir}};
+>>
+>> and replace all uses of $config{libdir} with it.
+>>
+>> --[[smcv]]
 
 [[!taglink wishlist]]

Fix broken links in the basewiki
diff --git a/doc/ikiwiki/directive/calendar.mdwn b/doc/ikiwiki/directive/calendar.mdwn
index 412285c..4c2b99c 100644
--- a/doc/ikiwiki/directive/calendar.mdwn
+++ b/doc/ikiwiki/directive/calendar.mdwn
@@ -27,8 +27,8 @@ to display or list pages created in the given time frame.
 
 ## Generating archive pages
 
-If [[option|plugins/calendar]] `calendar_autocreate` is not set, the
-[[ikiwiki-calendar]] command can be used to automatically generate the archive
+If [[!iki plugins/calendar desc=option]] `calendar_autocreate` is not set, the
+[[!iki ikiwiki-calendar]] command can be used to automatically generate the archive
 pages. It also refreshes the wiki, updating the calendars to highlight the
 current day. This command is typically run at midnight from cron.
 
@@ -37,8 +37,9 @@ An example crontab:
     0 0 * * * ikiwiki-calendar ~/ikiwiki.setup "posts/* and !*/Discussion"
 
 
-With [[setup option|plugins/calendar]] `calendar_autocreate`, all this work is
-done by `ikiwiki` itself. Thus, the crontab command can be replaced by:
+With [[!iki plugins/calendar desc="setup option"]] `calendar_autocreate`,
+all this work is done by `ikiwiki` itself. Thus, the crontab command can be
+replaced by:
 
     0 0 * * * ikiwiki --setup ~/ikiwiki.setup --refresh
 
@@ -53,7 +54,7 @@ done by `ikiwiki` itself. Thus, the crontab command can be replaced by:
   for the whole wiki by setting `archivebase` in ikiwiki's setup file.
   Calendars link to pages under here, with names like "2010/04" and
   "2010". These pages can be automatically created using the
-  `calendar_autocreate` [[setup option|plugins/calendar]].
+  `calendar_autocreate` [[!iki plugins/calendar desc="setup option"]].
 * `year` - The year for which the calendar is requested. Defaults to the
   current year. Can also use -1 to refer to last year, and so on.
 * `month` - The numeric month for which the calendar is requested, in the

calendar: add calendar_autocreate option, with which "ikiwiki --refresh" can mostly supersede the ikiwiki-calendar command. Thanks, Louis Paternault
diff --git a/debian/changelog b/debian/changelog
index 014066e..1cf3dce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
 ikiwiki (3.20141017) UNRELEASED; urgency=medium
 
+  [ Joey Hess ]
   * Added ikiwiki-comment program.
   * Add missing build-depends on libcgi-formbuilder-perl, needed for
     t/relativity.t
@@ -7,6 +8,11 @@ ikiwiki (3.20141017) UNRELEASED; urgency=medium
   * Set Debian package maintainer to Simon McVittie as I'm retiring from
     Debian.
 
+  [ Simon McVittie ]
+  * calendar: add calendar_autocreate option, with which "ikiwiki --refresh"
+    can mostly supersede the ikiwiki-calendar command.
+    Thanks, Louis Paternault
+
  -- Joey Hess <joeyh@debian.org>  Mon, 20 Oct 2014 12:04:49 -0400
 
 ikiwiki (3.20141016) unstable; urgency=medium
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index 371079d..c1f9c45 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -1,5 +1,7 @@
 Here is a patch that makes [[ikiwiki-calendar]] almost useless.
 
+> [[merged|done]], thanks! --[[smcv]]
+
 It adds some options, the main one being `calendar_autocreate`, which is
 similar to the `tag_autocreate` option of the [[tag|plugins/tag]]: it create
 archive pages when needed.

fix some typos
diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
index f0ac9ac..3d10b1e 100644
--- a/IkiWiki/Plugin/calendar.pm
+++ b/IkiWiki/Plugin/calendar.pm
@@ -193,7 +193,7 @@ sub gencalendaryear {
 		}
 
 		# Filling potential gaps in years (e.g. calendar goes from 2010 to 2014,
-		# and we just added year 2005. We have to had years 2006 to 2009).
+		# and we just added year 2005. We have to add years 2006 to 2009).
 		return if $params{norecurse};
 		if ($wikistate{calendar}{minyear} > $year) {
 			foreach my $other ($year + 1 .. $wikistate{calendar}{minyear} - 1) {
diff --git a/doc/plugins/calendar.mdwn b/doc/plugins/calendar.mdwn
index d55c21a..8d18ed0 100644
--- a/doc/plugins/calendar.mdwn
+++ b/doc/plugins/calendar.mdwn
@@ -17,12 +17,12 @@ pages from templates (overriding the existing ones).
 * `calendar_autocreate` - Control whether new archive pages are created as
   needed. It defaults to being done only if option `archivebase` is set.
 * `calendar_fill_gaps` - If set (and `calendar_autocreate` is set as well),
-  build calendar pages of emty years and months (but does not build pages older
+  build calendar pages of empty years and months (but does not build pages older
   than the older page, and younger than the younger page of the pagespec). If
-  not, thoses empty calendar pages will be skipped. *Please note:*
+  not, those empty calendar pages will be skipped. *Please note:*
   * The archive pages will not be automatically updated if this option changes.
     It is up to the user to delete relevant pages, and rebuild the wiki.
-  * When `calendar_fill_gaps` is set, and post is deleted, making the
+  * When `calendar_fill_gaps` is set, and a post is deleted, making the
     corresponding year/month empty, the corresponding page is left, and shows
     an empty calendar. This is on purpose, not to break any external link
     pointing to this particular page. If you do not like it, delete the

Make the layout adjust to narrow viewports better
Below about 600px (phones and small windowed browsers) the sidebar
starts breaking the layout. Moving it inline helps a lot; with
modern CSS (flex layout) we can also shuffle it after the main content.
Older browsers that don't do one of the 4 variants of flex layout
will just display it above the main content, which is annoying
but not too bad.
blueview also has a minimum width set so that it won't become
ridiculously small with small fonts, but that means it gets
scrollbars below about 850px; stop enforcing the minimum width
if necessary.
Finally, blueview's relatively generous margins look good in a
desktop browser, but are just too space-hungry on a phone.
Turn them off below 600px.
diff --git a/doc/style.css b/doc/style.css
index 4c48e5c..18bf531 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -548,3 +548,34 @@ a.openid_large_btn:focus {
 .trailsep {
 	display: none;
 }
+
+/* mobile/small-screen-friendly layout */
+@media (max-width: 600px) {
+	.sidebar {
+		width: auto;
+		float: none;
+		margin-top: 0;
+	}
+
+	/* if the mobile browser is new enough, use flex layout to shuffle
+	 * the sidebar to the end */
+	.page {
+		display: -webkit-box;
+		display: -ms-flexbox;
+		display: -webkit-flex;
+		display: flex;
+		flex-direction: column;
+	}
+	#pageheader {
+		-webkit-box-ordinal-group: -1;
+		-ms-flex-order: -1;
+		-webkit-order: -1;
+		order: -1;
+	}
+	.sidebar, #footer {
+		-webkit-box-ordinal-group: 1;
+		-ms-flex-order: 1;
+		-webkit-order: 1;
+		order: 1;
+	}
+}
diff --git a/themes/blueview/style.css b/themes/blueview/style.css
index af14345..7b3382c 100644
--- a/themes/blueview/style.css
+++ b/themes/blueview/style.css
@@ -279,3 +279,26 @@ body {
 
 }
 
+/* lose the border on mobile */
+@media (max-width: 600px) {
+	body {
+		padding: 0;
+	}
+	.page {
+		border: none;
+		margin: 0;
+	}
+	#pagebody {
+		margin: auto;
+		border: none;
+	}
+}
+
+/* cancel the minimum width if it would mean scrollbars */
+@media (max-width: 850px) {
+	.page {
+		width: auto;
+		min-width: 0;
+		padding: 0;
+	}
+}

diff --git a/doc/index.mdwn b/doc/index.mdwn
index 336f625..f4073aa 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -30,4 +30,4 @@ The [[RoadMap]] describes where the project is going.
 can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
-and is [[FreeSoftware]]. asdf
+and is [[FreeSoftware]].

diff --git a/doc/index.mdwn b/doc/index.mdwn
index f4073aa..336f625 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -30,4 +30,4 @@ The [[RoadMap]] describes where the project is going.
 can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
-and is [[FreeSoftware]].
+and is [[FreeSoftware]]. asdf

Thoughts about several libdirs
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index 2869b50..b71780f 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -8,4 +8,15 @@ I think the change is a one-liner, but I put this here for discussion before att
 
 [[DavidBremner]]
 
+> I would like this feature too, for the very same reasons.
+>
+> To preserve backward compatibility, I tried to implement it in the following way: if `libdir` is a string, it is (as it is right now), a directory in which plugins can be searched; if `libdir` is an array of strings, it is a list of libdirs. The ideal place to put it in would be in subroutine [checkconfig](http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=IkiWiki.pm;hb=56f8223f9594ae687099dada0c138d669a6f931f#l569). However, plugins are loaded (and option `libdir` is used) in subroutine [loadplugins](http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=IkiWiki.pm;hb=56f8223f9594ae687099dada0c138d669a6f931f#l713), which is called [just before `checkconfig`](http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=ikiwiki.in;hb=729991564ec7e1116fc023c51e73b47af8b6fce7#l143).
+>
+> A solution would be to check `libdir` (and turn it into a list if necessary) somewhere in subroutine [getconfig](http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=ikiwiki.in;hb=729991564ec7e1116fc023c51e73b47af8b6fce7#l26), but I do not know where to put it not to make it look like a bad hack…
+>
+> Any idea about the best place to preprocess `libdir`? Or any better idea to implement this?
+>
+> [[Louis|spalax]]
+
+
 [[!taglink wishlist]]

diff --git a/doc/bugs/Spam:_recent_changes_discussion.mdwn b/doc/bugs/Spam:_recent_changes_discussion.mdwn
index 88e984b..cdaa5b8 100644
--- a/doc/bugs/Spam:_recent_changes_discussion.mdwn
+++ b/doc/bugs/Spam:_recent_changes_discussion.mdwn
@@ -1,5 +1,7 @@
 We have a weird spam problem on our site - must be something via CGI.
 
-see http://www.dk0tu.de/recentchanges/discussion/
+see <http://www.dk0tu.de/recentchanges/discussion/>
 
 The content is changing frequently without being checked into the git repository. Any ideas?
+
+--[[bastla]]

Discussion Spam
diff --git a/doc/bugs/Spam:_recent_changes_discussion.mdwn b/doc/bugs/Spam:_recent_changes_discussion.mdwn
new file mode 100644
index 0000000..88e984b
--- /dev/null
+++ b/doc/bugs/Spam:_recent_changes_discussion.mdwn
@@ -0,0 +1,5 @@
+We have a weird spam problem on our site - must be something via CGI.
+
+see http://www.dk0tu.de/recentchanges/discussion/
+
+The content is changing frequently without being checked into the git repository. Any ideas?

Added a comment
diff --git a/doc/forum/Federated_wiki__63__/comment_2_bbfb11517e968311419a8cd2d77de189._comment b/doc/forum/Federated_wiki__63__/comment_2_bbfb11517e968311419a8cd2d77de189._comment
new file mode 100644
index 0000000..7fe8366
--- /dev/null
+++ b/doc/forum/Federated_wiki__63__/comment_2_bbfb11517e968311419a8cd2d77de189._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="anarcat"
+ subject="comment 2"
+ date="2014-11-20T03:16:50Z"
+ content="""
+you should probably look at the [[tips/distributed_wikis/]] page, which details a few of those scenarios. --[[anarcat]]
+"""]]

thanks Patrick ZAJDA for a kind contribution
diff --git a/doc/tipjar.mdwn b/doc/tipjar.mdwn
index 80d8f5c..d23dc10 100644
--- a/doc/tipjar.mdwn
+++ b/doc/tipjar.mdwn
@@ -18,6 +18,7 @@ Thanks to the following people for their kind contributions:
 * Jon Dowland
 * Amitai Schlair
 * Luca Capello
+* Patrick ZAJDA
 
 (Note that this page is locked to prevent anyone from tampering with the PayPal link.
 If you prefer your donation *not* be listed here, let [[Joey]] know.)

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 748fdbe..9aeb10d 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -36,6 +36,7 @@ Numbered list
     1. foo
     2. bar
     3. quz
+    3. quze
 
 Bulleted list
 

Amendment, following review
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index 2a7350b..371079d 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -191,22 +191,30 @@ sub gencalendaryear {
 >
 > I think that should be `ikiwiki --setup ~/ikiwiki.setup --refresh`
 >
+> > [[Corrected|https://github.com/paternal/ikiwiki/commit/213dad76d47bab9db8e44d6e20c8371960375e77]]
+>
 > The indentation of some of the new code in `IkiWiki/Plugin/calendar.pm`
 > is weird. Please use one hard tab (U+0009) per indent step: you seem
 > to have used a mixture of one hard tab per indent or two spaces
 > per indent, which looks bizarre for anyone whose tab size is not
 > 2 spaces.
 >
+> > [[Corrected|https://github.com/paternal/ikiwiki/commit/1d97160dae775c31e166d9886472dacdd773d571]]
+>
 >     +	return unless $config{calendar_autocreate};
 >
 > This is checked in `gencalendaryear` but not in `gencalendarmonth`.
 > Shouldn't `gencalendarmonth` do it too? Alternatively, do the check
 > in `scan`, which calls `gencalendarmonth` directly.
 >
+> > Once again, [[you are right|https://github.com/paternal/ikiwiki/commit/473bcbe7a42a4168cab82ed12185817248de045f]]
+>
 >     +		my $year  = $date[5] + 1900;
 >
 > You calculate this, but you don't seem to do anything with it?
 >
+> > [[Corrected|https://github.com/paternal/ikiwiki/commit/d0b34951240317642543351ec62f98d3d8df8c0f]]
+>
 >     +  if (not exists $changed{$params{year}}) {
 >     +    $changed{$params{year}} = ();
 >     +  }
@@ -222,4 +230,9 @@ sub gencalendaryear {
 > in order to put the pair `$params{month} => 1` in it (the term to look
 > up if you're curious is "autovivification").
 >
+> > [[Corrected|https://github.com/paternal/ikiwiki/commit/d0b34951240317642543351ec62f98d3d8df8c0f]]
+>
 > --[[smcv]]
+>
+> > Thank you for your review.
+> > --[[Louis|spalax]]

typo
diff --git a/doc/ikiwiki/directive/calendar.mdwn b/doc/ikiwiki/directive/calendar.mdwn
index 4814b02..412285c 100644
--- a/doc/ikiwiki/directive/calendar.mdwn
+++ b/doc/ikiwiki/directive/calendar.mdwn
@@ -40,7 +40,7 @@ An example crontab:
 With [[setup option|plugins/calendar]] `calendar_autocreate`, all this work is
 done by `ikiwiki` itself. Thus, the crontab command can be replaced by:
 
-    0 0 * * * ikiwiki ~/ikiwiki.setup --refresh
+    0 0 * * * ikiwiki --setup ~/ikiwiki.setup --refresh
 
 ## usage
 

Add "patch" tag.
diff --git a/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn b/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
index da4c798..0cc5aca 100644
--- a/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
+++ b/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
@@ -11,6 +11,8 @@ the sidebar.
 Having CSS selectors to style the elements of this form would solve our
 problem.
 
+[[!tag patch]]
+
 Here is a patch:
 
     From c4c6c9bf3b296c2db10d6fb9e6421d82f341b1cf Mon Sep 17 00:00:00 2001

file bug
diff --git a/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn b/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
new file mode 100644
index 0000000..da4c798
--- /dev/null
+++ b/doc/bugs/Impossible_to_resize_text_input_in_search_results.mdwn
@@ -0,0 +1,43 @@
+While working on the [Tails website](https://tails.boum.org/), I didn't
+managed to resize the text input on top of the search results.
+
+This is problematic with our layout and it might be the same for others.
+For example, reducing a bit the width of the browser on [this
+page](https://tails.boum.org/ikiwiki.cgi?P=testing) makes the search
+results jump at the bottom of the page since the text input is wider
+(size=65 by default) than the body of the page when side by side with
+the sidebar.
+
+Having CSS selectors to style the elements of this form would solve our
+problem.
+
+Here is a patch:
+
+    From c4c6c9bf3b296c2db10d6fb9e6421d82f341b1cf Mon Sep 17 00:00:00 2001
+    From: sajolida <sajolida@pimienta.org>
+    Date: Sun, 9 Nov 2014 16:48:33 +0100
+    Subject: [PATCH] Add classes to form in search results
+    
+    This is needed to style it, for example to reduce the width of the text
+    input and prevent layout issues.
+    ---
+     templates/searchquery.tmpl | 4 ++--
+     1 file changed, 2 insertions(+), 2 deletions(-)
+    
+    diff --git a/templates/searchquery.tmpl b/templates/searchquery.tmpl
+    index 15bc78e..6277266 100644
+    --- a/templates/searchquery.tmpl
+    +++ b/templates/searchquery.tmpl
+    @@ -33,8 +33,8 @@ $def{NEXT,$if{$ne{$last,$msize},<INPUT TYPE=submit NAME="&gt;" VALUE="Next">}}
+     
+     <FORM NAME=P METHOD=GET
+     ACTION="$html{$env{CGIURL}}" TARGET="_top">
+    -<div style="text-align:center">
+    -<INPUT NAME=P VALUE="$html{$query}" SIZE=65>
+    +<div class="searchquery" style="text-align:center">
+    +<INPUT class="searchbox" NAME=P VALUE="$html{$query}" SIZE=65>
+     <INPUT TYPE=SUBMIT VALUE="Search">
+     $env{HELPLINK}
+     <hr>
+    --
+    2.1.1

poll vote (Accept only OpenID for logins)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 03fca55..a163186 100644
--- a/doc/news/openid.mdwn
+++ b/doc/news/openid.mdwn
@@ -10,4 +10,4 @@ log back in, try out the OpenID signup process if you don't already have an
 OpenID, and see how OpenID works for you. And let me know your feelings about
 making such a switch. --[[Joey]]
 
-[[!poll 76 "Accept only OpenID for logins" 21 "Accept only password logins" 50 "Accept both"]]
+[[!poll 77 "Accept only OpenID for logins" 21 "Accept only password logins" 50 "Accept both"]]

Update RTL tip to use dir instead of class
diff --git a/doc/tips/Right-to-left___40__RTL__41___page_text.mdwn b/doc/tips/Right-to-left___40__RTL__41___page_text.mdwn
index 2b176c8..339f05b 100644
--- a/doc/tips/Right-to-left___40__RTL__41___page_text.mdwn
+++ b/doc/tips/Right-to-left___40__RTL__41___page_text.mdwn
@@ -10,7 +10,7 @@ footer. Only what is rendered from the mdwn file is affected.
 
 Create a new template page *templates/rtl.mdwn* with the following content:
 
-    <div class="rtl">
+    <div dir="rtl">
     <TMPL_VAR text>
     </div>
     <TMPL_UNLESS text>
@@ -21,18 +21,7 @@ Create a new template page *templates/rtl.mdwn* with the following content:
     </ul>
     </TMPL_UNLESS>
 
-# 2 Add an RTL class to the CSS
-
-In your *local.css* add the following:
-
-[[!format css """
-/* rtl template */
-.rtl {
-    direction: rtl;
-}
-"""]]
-
-# 3 Use the Template
+# 2 Use the Template
 
 To make a page or part of it RTL, use the [[ikiwiki/directive/template]] directive:
 

Ask about forum/ML integration
diff --git a/doc/forum/proposal:_mailing_list_and_forum_integration.mdwn b/doc/forum/proposal:_mailing_list_and_forum_integration.mdwn
new file mode 100644
index 0000000..57f2fc3
--- /dev/null
+++ b/doc/forum/proposal:_mailing_list_and_forum_integration.mdwn
@@ -0,0 +1,21 @@
+For a while I've been wondering how to use a communication channel which can be
+accessed both by e-mail and web interface, while using ikiwiki's git repo. There
+are solutions like Drupal which can combine mailing lists and a forum, but then
+you lose the ikiwiki integration.
+
+So I had an idea:
+
+What if an ikiwiki server subscribes to a mailing list, and automatically posts
+under a "forum" page (like the [[/forum]] here) every time it gets a new e-mail?
+And when someone posts a new entry using git or the web UI, it can send an
+e-mail to the mailing list! (perhaps mark it somehow to avoid an infinite loop)
+
+Does something like this make sense? It can work not only with e-mail but also
+with other forum tools (e.g. Syndie). Are there any critical synchronization
+issues I'm missing? If not, I'd like to suggest this as a feature and add this
+to my todo list :-)
+
+Currently I have mail and forum separate, and I'd like to integrate them. If I
+get positive feedback, I'll start working on it at some point (soon, I hope).
+
+-- [[fr33domlover]]

diff --git a/doc/plugins/contrib/sqlite__95__search.mdwn b/doc/plugins/contrib/sqlite__95__search.mdwn
new file mode 100644
index 0000000..cc205b5
--- /dev/null
+++ b/doc/plugins/contrib/sqlite__95__search.mdwn
@@ -0,0 +1,5 @@
+[[!template id="plugin" name="sqlite_search" author="Baldur Kristinsson"]]
+
+The [sqlite_search plugin](https://github.com/bk/ikiwiki-plugin-sqlite_search), available on GitHub, provides a full text search backend for those who, for one reason or another, find it impractical or bothersome to install or configure the Xapian-based backend of the search module which comes with IkiWiki. Practically the only dependency is DBD::SQLite.
+
+It is suitable for small and medium sites in a language written using the Latin alphabet and with a UTF-8 locale.

add copyleft.org
and tweak wording
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index bc5df6c..e3a5002 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -6,7 +6,7 @@ Feel free to add your own ikiwiki site! In case you have created a custom theme
 See also: [Debian ikiwiki popcon graph](http://qa.debian.org/popcon.php?package=ikiwiki)
 and [google search for ikiwiki powered sites](http://www.google.com/search?q=%22powered%20by%20ikiwiki%22).
 
-While nothing makes me happier than knowing that ikiwiki has happy users,
+While nothing makes us happier than knowing that ikiwiki has happy users,
 dropping some change in the [[TipJar]] is a nice way to show extra
 appreciation.
 
@@ -100,6 +100,7 @@ Projects & Organizations
 * [[Smuxi IRC Client|https://smuxi.im/]] - powerful IRC client for GNOME
 * [[hplusroadmap|http://diyhpl.us/wiki/]] - a community for open source hardware, do-it-yourself biohacking and practical transhumanism
 * [[OpenAFS|http://wiki.openafs.org]] - an open-source, cross-platform distributed file system
+* [Copyleft.org](http://copyleft.org/)
 
 Personal sites and blogs
 ========================

Added a comment
diff --git a/doc/forum/Federated_wiki__63__/comment_1_44b7dbfb6035fc387e1e79c35b27d003._comment b/doc/forum/Federated_wiki__63__/comment_1_44b7dbfb6035fc387e1e79c35b27d003._comment
new file mode 100644
index 0000000..95a6c28
--- /dev/null
+++ b/doc/forum/Federated_wiki__63__/comment_1_44b7dbfb6035fc387e1e79c35b27d003._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkwqKsWfFCk-NK99S77R2v1JorVCnpzXUA"
+ nickname="Dave"
+ subject="comment 1"
+ date="2014-11-07T16:25:57Z"
+ content="""
+Apparently the author of the article uses this: https://github.com/WardCunningham/Smallest-Federated-Wiki
+"""]]

diff --git a/doc/forum/Federated_wiki__63__.mdwn b/doc/forum/Federated_wiki__63__.mdwn
index 16c2072..cdf76a9 100644
--- a/doc/forum/Federated_wiki__63__.mdwn
+++ b/doc/forum/Federated_wiki__63__.mdwn
@@ -1,10 +1,6 @@
 Has anyone experimented with pulling commits from an external ikiwiki into your own?
 
-I ask because I've just read a great article about Federated Wikis.
-
-Here's the link.  http://hapgood.us/2014/11/06/federated-education-new-directions-in-digital-collaboration/
-
-...I probably won't be able to post this because of the link.  Let's see.
+I ask because I've just read a great [article about Federated Wikis](http://hapgood.us/2014/11/06/federated-education-new-directions-in-digital-collaboration/ "Federated Education: New Directions In Digital Collaboration").
 
 Anyway, the author opens with the idea that good ideas are often lost or delayed for years because of we don't communicate as well as we could.  He presents an example: Arthur C. Clarke speculating about GPS over a decade before Sputnik.
 

diff --git a/doc/forum/Federated_wiki__63__.mdwn b/doc/forum/Federated_wiki__63__.mdwn
new file mode 100644
index 0000000..16c2072
--- /dev/null
+++ b/doc/forum/Federated_wiki__63__.mdwn
@@ -0,0 +1,19 @@
+Has anyone experimented with pulling commits from an external ikiwiki into your own?
+
+I ask because I've just read a great article about Federated Wikis.
+
+Here's the link.  http://hapgood.us/2014/11/06/federated-education-new-directions-in-digital-collaboration/
+
+...I probably won't be able to post this because of the link.  Let's see.
+
+Anyway, the author opens with the idea that good ideas are often lost or delayed for years because of we don't communicate as well as we could.  He presents an example: Arthur C. Clarke speculating about GPS over a decade before Sputnik.
+
+He goes on to present the idea of a federation of wikis.  Note: 'federation' is used as a technical term here: cf. email or Google Wave.
+
+I for one am persuaded by his article, because wiki federation is an idea I've had before!
+
+With ikiwiki, couldn't it work just by adding external wikis as remotes and selectively merging from them?
+
+Cheers,
+
+--Dave

Fixes perl-magick link #2
diff --git a/doc/plugins/img.mdwn b/doc/plugins/img.mdwn
index f23409a..9eadb65 100644
--- a/doc/plugins/img.mdwn
+++ b/doc/plugins/img.mdwn
@@ -8,7 +8,7 @@ easily scale down an image for inclusion onto a page, providing a link to a
 full-size version.
 
 This plugin uses the [ImageMagick](http://www.imagemagick.org/) tools via
-[PerlMagick](http://www.imagemagick.org/script/perl-magick.html).
+[PerlMagick](http://www.imagemagick.org/script/perl-magick.php).
 
 Note that this is a stripped down version of Christian Mock's
 [[original_img_plugin|contrib/img]].

Fixes perl-magick link
diff --git a/doc/plugins/img.mdwn b/doc/plugins/img.mdwn
index a6cd90f..f23409a 100644
--- a/doc/plugins/img.mdwn
+++ b/doc/plugins/img.mdwn
@@ -8,7 +8,7 @@ easily scale down an image for inclusion onto a page, providing a link to a
 full-size version.
 
 This plugin uses the [ImageMagick](http://www.imagemagick.org/) tools via
-[PerlMagick](http://www.imagemagick.org/www/perl-magick.html).
+[PerlMagick](http://www.imagemagick.org/script/perl-magick.html).
 
 Note that this is a stripped down version of Christian Mock's
 [[original_img_plugin|contrib/img]].

typos
diff --git a/doc/plugins/contrib/compile/discussion.mdwn b/doc/plugins/contrib/compile/discussion.mdwn
index c2d2f6c..fbf9f22 100644
--- a/doc/plugins/contrib/compile/discussion.mdwn
+++ b/doc/plugins/contrib/compile/discussion.mdwn
@@ -43,7 +43,7 @@ command...
 >       like `latex foo.tex && dvipdf foo.dvi`).
 >   - the `compile_unsecure` would:
 >     - forbid commands to be strings (thus, forbidding shell commands, and preventing command injections);
->     - forbid compilation using Makefile or executable prevent in the wiki (to prevent users from modifying those files, and executing arbitrary commands);
+>     - forbid compilation using Makefile or executable present in the wiki (to prevent users from modifying those files, and executing arbitrary commands);
 >     - forbid directive argument `build`.
 >
 >

How signinview handles the goto leak
diff --git a/doc/todo/Zoned_ikiwiki.mdwn b/doc/todo/Zoned_ikiwiki.mdwn
index c2dfb7a..76b2b69 100644
--- a/doc/todo/Zoned_ikiwiki.mdwn
+++ b/doc/todo/Zoned_ikiwiki.mdwn
@@ -128,15 +128,12 @@ Note that not all of these issues will be problems for all **zoned ikiwiki use c
 An unauthorized client can use a `do=goto` request to find out whether a
 page exists (will be forbidden to view it) or not (will be forbidden to create it).
 
-My first idea was to fix this all within [[plugins/contrib/signinview]] by hooking
-`cgi` first and checking for `goto` and an unauthorized page. But checking authorization
-requires session info, not loaded at `cgi` hook time. Next idea was to somehow skip the rest of
-the chain of `cgi` hooks, preventing `goto` from handling the request, and handling
-it again in `sessioncgi`. But 'skip the rest of this chain' doesn't seem to be something
-a hook can return.
-
-Hmm, maybe change the `do` parameter to something other than `goto` before the `goto` hook
-can see it, _then_ handle it later in `sessioncgi`?
+In [[plugins/contrib/signinview]] this is handled by hooking
+`cgi` first and checking for `goto` and a non-public page. If the requested page
+(existing or not) matches the `public_pages` PageSpec, it is handed off for the `goto`
+plugin to handle normally. Otherwise, the `do` parameter is changed to `signingoto`
+so the `goto` plugin's `cgi` hook will _not_ handle it, and the `sessioncgi` hook
+takes care of it when the user's identity is available.
 
 ### Backlinks
 

Answer
diff --git a/doc/plugins/contrib/compile/discussion.mdwn b/doc/plugins/contrib/compile/discussion.mdwn
index 96269d4..c2d2f6c 100644
--- a/doc/plugins/contrib/compile/discussion.mdwn
+++ b/doc/plugins/contrib/compile/discussion.mdwn
@@ -14,3 +14,39 @@ script specified in setup file - then e.g. you can choose which commands are all
 What do you think?
 
 -- [[fr33domlover]]
+
+> The problem you mention is known, and is not a problem for me, since I am the
+only user of the wiki. However, if we need a *secure* version of this
+command...
+>
+> Imagine we have a setup option `compile_unsecure`.
+>
+> The directive takes the following arguments 
+>
+> - filetype: No problem.
+> - build: Forbidden.
+> - source: No problem.
+> - template: No problem.
+> - destname and files: The problem is that right now, the command is run using a shell
+>   call. Thus, a user can easily use this argument to inject malicious
+>   commands (something like \[[!compile files=";rm -fr *"]] (well, this
+>   actually would not work, but you get the idea)). I do want to keep the
+>   ability to use shell commands, for the flexibility it provides, but I imagine
+>   we can:
+>   - interpret the `build` command depending on its type:
+>     - if it is a string, it is interpreted as a shell command;
+>     - if it is a list of strings, the first one is the command to execute,
+>       the following ones are the arguments. If I am not wrong, this should
+>       prevent command injection.
+>     - if it is a list of lists of strings, it is a list of commands to
+>       execute (execution being stopped on the first error; usefull for stuff
+>       like `latex foo.tex && dvipdf foo.dvi`).
+>   - the `compile_unsecure` would:
+>     - forbid commands to be strings (thus, forbidding shell commands, and preventing command injections);
+>     - forbid compilation using Makefile or executable prevent in the wiki (to prevent users from modifying those files, and executing arbitrary commands);
+>     - forbid directive argument `build`.
+>
+>
+> Any thoughts?
+>
+> -- [[Louis|spalax]]

do=goto leaks page existence
diff --git a/doc/todo/Zoned_ikiwiki.mdwn b/doc/todo/Zoned_ikiwiki.mdwn
index 6b56221..c2dfb7a 100644
--- a/doc/todo/Zoned_ikiwiki.mdwn
+++ b/doc/todo/Zoned_ikiwiki.mdwn
@@ -123,6 +123,21 @@ but I'll begin it here.
 
 Note that not all of these issues will be problems for all **zoned ikiwiki use cases**.
 
+### Leakage of page existence by `do=goto`
+
+An unauthorized client can use a `do=goto` request to find out whether a
+page exists (will be forbidden to view it) or not (will be forbidden to create it).
+
+My first idea was to fix this all within [[plugins/contrib/signinview]] by hooking
+`cgi` first and checking for `goto` and an unauthorized page. But checking authorization
+requires session info, not loaded at `cgi` hook time. Next idea was to somehow skip the rest of
+the chain of `cgi` hooks, preventing `goto` from handling the request, and handling
+it again in `sessioncgi`. But 'skip the rest of this chain' doesn't seem to be something
+a hook can return.
+
+Hmm, maybe change the `do` parameter to something other than `goto` before the `goto` hook
+can see it, _then_ handle it later in `sessioncgi`?
+
 ### Backlinks
 
 What is problematic is when you link a public page in a private page : 

Patch submitted for contrib/ymlfront sticky-metadata issue.
diff --git a/doc/plugins/contrib/ymlfront/discussion.mdwn b/doc/plugins/contrib/ymlfront/discussion.mdwn
index 868e9cd..15f2cf8 100644
--- a/doc/plugins/contrib/ymlfront/discussion.mdwn
+++ b/doc/plugins/contrib/ymlfront/discussion.mdwn
@@ -1,3 +1,5 @@
+**Update:** I've submitted a patch, [rubykat/ikiplugins pull request #5](https://github.com/rubykat/ikiplugins/issues/5).
+
 I have just opened [rubykat/ikiplugins issue #4](https://github.com/rubykat/ikiplugins/issues/4)
 regarding the fact that ymlfront doesn't seem to delete any old pagestate when fields have been
 removed in an edit. The fields are stuck there with their old values until a full rebuild. Seems

Update comment
diff --git a/doc/plugins/contrib/compile/discussion.mdwn b/doc/plugins/contrib/compile/discussion.mdwn
index 7777750..96269d4 100644
--- a/doc/plugins/contrib/compile/discussion.mdwn
+++ b/doc/plugins/contrib/compile/discussion.mdwn
@@ -7,7 +7,9 @@ Problem: Any user can change the command to something dangerous that deletes fil
 causes irreversible damage to the system. I can even happen by mistake.
 
 Suggestion: Add an option to the setup file that forbids to override the build command in the
-directive, and then only the setup file can configure build commands (if you want).
+directive, and then only the setup file can configure build commands (if you want). Another
+idea, an option to validate the build command, either against a regex or using an arbitrary
+script specified in setup file - then e.g. you can choose which commands are allowed.
 
 What do you think?
 

Command on compile plugin
diff --git a/doc/plugins/contrib/compile/discussion.mdwn b/doc/plugins/contrib/compile/discussion.mdwn
new file mode 100644
index 0000000..7777750
--- /dev/null
+++ b/doc/plugins/contrib/compile/discussion.mdwn
@@ -0,0 +1,14 @@
+This plugin sounds exactly like what I need! I too have sources I want to compile on the fly,
+such as diagrams made with Dia and perhaps API reference manuals made with Doxygen.
+
+I'd like to use it, but -
+
+Problem: Any user can change the command to something dangerous that deletes file and
+causes irreversible damage to the system. I can even happen by mistake.
+
+Suggestion: Add an option to the setup file that forbids to override the build command in the
+directive, and then only the setup file can configure build commands (if you want).
+
+What do you think?
+
+-- [[fr33domlover]]

Feeling out how to present patch for review
diff --git a/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn b/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn
index 1626367..48901a2 100644
--- a/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn
+++ b/doc/todo/Let_plugins_influence_what_environment_variables_a_wrapper_will_preserve.mdwn
@@ -1,12 +1,14 @@
-I created this patch in advance of writing the [[plugins/contrib/signinview]] plugin. This patch does nothing `signinview`-specific, but simply refactors wrapper generation a bit so that plugins have some influence over what environment variables a wrapper will preserve.
+[[!template id=gitbranch branch=jcflack/config-envsave
+author="[[Chapman Flack|jcflack]]"
+browse=https://github.com/joeyh/ikiwiki/pull/14]]
 
-For example, Wrapper.pm previously hardcoded not only (some of) the RFC 3875 variables needed for a CGI wrapper (and hardcoded its own test for _whether it was generating_ a CGI wrapper), but also the Apache ErrorDocument-specific variables needed by the [[plugins/404]] plugin. Given that `signinview`, as a `403` handler, would have similar requirements to `404`, and it seemed possible other wrappers for other purposes could rely on other environment variables too, it seemed to make sense to move the preserved-variable list out of Wrapper.pm hardcoding, and closer to the plugins or other code relying on the variables.
+I created this [[!taglink patch]] in advance of writing the [[plugins/contrib/signinview]] plugin. This patch does nothing `signinview`-specific, but simply refactors wrapper generation a bit so that plugins have some influence over what environment variables a wrapper will preserve.
 
-More comments and the code changes for review are [here](https://github.com/joeyh/ikiwiki/pull/14).
+For example, Wrapper.pm previously hardcoded not only (some of) the RFC 3875 variables needed for a CGI wrapper (and hardcoded its own test for _whether it was generating_ a CGI wrapper), but also the Apache ErrorDocument-specific variables needed by the [[plugins/404]] plugin. Given that `signinview`, as a `403` handler, would have similar requirements to `404`, and it seemed possible other wrappers for other purposes could rely on other environment variables too, it seemed to make sense to move the preserved-variable list out of Wrapper.pm hardcoding, and closer to the plugins or other code relying on the variables.
 
 ----
-I was asked by [[Joey]] to create a page here for purposes of review. I'm still trying to figure out the preferred workflow for this project ... I'm assuming the link above is ok for looking over the comments and code changes, since they're already pushed to my git fork and (to me, anyway) reviewing changes in a decent repository browser is so much nicer than a `diff -u` pasted into a page between `<pre>` tags.
+I was asked by [[Joey]] to create a page here for purposes of review. I'm still trying to figure out the preferred workflow for this project ... I'm assuming the github link is ok for looking over the comments and code changes, since they're already pushed to my git fork and (to me, anyway) reviewing changes in a decent repository browser is so much nicer than a `diff -u` pasted into a page between `<pre>` tags.
 
-That seemed to be ok for reviewing [[bugs/CGI wrapper doesn't store PERL5LIB environment variable]], so I hope it's ok for this one too.
+That seemed to be ok for reviewing [[bugs/CGI wrapper doesn't store PERL5LIB environment variable]], so I hope it's ok for this one too. If another way would be preferable, please let me know.
 
 -- [[jcflack]]

file bug
diff --git a/doc/bugs/po_plugin_config_change_can_lead_to_refresh_bugs.mdwn b/doc/bugs/po_plugin_config_change_can_lead_to_refresh_bugs.mdwn
new file mode 100644
index 0000000..c8ce4f4
--- /dev/null
+++ b/doc/bugs/po_plugin_config_change_can_lead_to_refresh_bugs.mdwn
@@ -0,0 +1,25 @@
+I have here a site that uses the po plugin, and recently had this change
+committed to its setup:
+
+<pre>
+ po_slave_languages:
+ - de|Deutsch
+ - fr|Français
+-- ja|日本語
+-- tr|Türkçe
+</pre>
+
+The change was made by the web UI, so it must have involved a site rebuild
+at the time, as that configuration item has `rebuild => 1`.
+
+Some days after that config change, a push caused ikiwiki refresh to fail:
+
+    remote: /home/b-udm/public_html/Discussion/index.ja.html independently created, not overwriting with version from Discussion.ja
+
+Rebuilding the wiki cleared that up, but it seems that po plugin config
+changes can lead to follow-on problems of this sort.
+
+The site still has a `source/index.ja.po`. And it has
+`public_html/index.ja.html`, as well as `public_html/index.ja/index.html`.
+
+--[[Joey]]

Forgot download link
diff --git a/doc/plugins/contrib/compile.mdwn b/doc/plugins/contrib/compile.mdwn
index 7ae4968..564f7f6 100644
--- a/doc/plugins/contrib/compile.mdwn
+++ b/doc/plugins/contrib/compile.mdwn
@@ -206,3 +206,7 @@ For instance, if you have a `.tiff` file you want to convert to png before
 displaying it on your website, you can use as a template:
 
     <img src="<TMPL_VAR DESTURL>">
+
+# Download
+
+Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Compile]].

Typos...
diff --git a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
index d61aac5..4468a65 100644
--- a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
+++ b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
@@ -34,4 +34,4 @@ done with mailing lists?
 (I don't mind a hacked solution that solves the problem for me, but if it's not just
 me being crazy, I prefer a general-purpose solution that helps everyone)
 
--- [[fr3domlover]]
+-- [[fr33domlover]]

diff --git a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
index 8d11a55..d61aac5 100644
--- a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
+++ b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
@@ -33,3 +33,5 @@ done with mailing lists?
 
 (I don't mind a hacked solution that solves the problem for me, but if it's not just
 me being crazy, I prefer a general-purpose solution that helps everyone)
+
+-- [[fr3domlover]]

diff --git a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
index 54cc8e8..8d11a55 100644
--- a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
+++ b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
@@ -33,41 +33,3 @@ done with mailing lists?
 
 (I don't mind a hacked solution that solves the problem for me, but if it's not just
 me being crazy, I prefer a general-purpose solution that helps everyone)
-
-
-
-[[!tag wishlist]]
-
-Maybe I'm not using ikiwiki right, and I'll appreciate any advice on this, but
-it seems to me that using ikiwiki instead of a mailing lists has some major
-weaknesses which I fail to overcome, but which may be possible to fix, maybe
-using some client-side software.
-
-The problem: Mailing lists give me things I need but can't find here, so I'm
-failing to track the [[/forum]], [[/todo]] and so on:
-
-- With MLs I can easily see what I read, to what I replied, mark things with
-  colors and labels if my MUA supports it
-- With MLs I can easily send a reply, without going through git. Reading and
-  writing happen together in the same dedicated UI
-
-I know I can subscribe to [[forum]] and to individual posts' comment feeds, but
-it's not the same - I don't see the tree of comments like in e-mail. Either I
-sort by creation time (not seeing evidence of more recent replies) or by
-last-edited time, or perhaps by last comment (then busy pages cause less busy
-ones quickly go deep into the list and are never seen by the user).
-
-Is there an existing solution to this?
-
-Random ideas, maybe direction for a solution:
-
-- Make client software which takes a local git clone of a wiki and operates on
-  it, while the user sees an MUA-like interface
-- Add some plugin to ikiwiki that can cooperate with an MTA: listen to e-mail
-  on a mailing list with specific formatting and put the content into a wiki.
-
-What do you think? How do you keep track of the forum etc. in the same way it's
-done with mailing lists?
-
-(I don't mind a hacked solution that solves the problem for me, but if it's not just
-me being crazy, I prefer a general-purpose solution that helps everyone)

wishlist: ask about using ikiwiki as ML
diff --git a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
index 8d11a55..54cc8e8 100644
--- a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
+++ b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
@@ -33,3 +33,41 @@ done with mailing lists?
 
 (I don't mind a hacked solution that solves the problem for me, but if it's not just
 me being crazy, I prefer a general-purpose solution that helps everyone)
+
+
+
+[[!tag wishlist]]
+
+Maybe I'm not using ikiwiki right, and I'll appreciate any advice on this, but
+it seems to me that using ikiwiki instead of a mailing lists has some major
+weaknesses which I fail to overcome, but which may be possible to fix, maybe
+using some client-side software.
+
+The problem: Mailing lists give me things I need but can't find here, so I'm
+failing to track the [[/forum]], [[/todo]] and so on:
+
+- With MLs I can easily see what I read, to what I replied, mark things with
+  colors and labels if my MUA supports it
+- With MLs I can easily send a reply, without going through git. Reading and
+  writing happen together in the same dedicated UI
+
+I know I can subscribe to [[forum]] and to individual posts' comment feeds, but
+it's not the same - I don't see the tree of comments like in e-mail. Either I
+sort by creation time (not seeing evidence of more recent replies) or by
+last-edited time, or perhaps by last comment (then busy pages cause less busy
+ones quickly go deep into the list and are never seen by the user).
+
+Is there an existing solution to this?
+
+Random ideas, maybe direction for a solution:
+
+- Make client software which takes a local git clone of a wiki and operates on
+  it, while the user sees an MUA-like interface
+- Add some plugin to ikiwiki that can cooperate with an MTA: listen to e-mail
+  on a mailing list with specific formatting and put the content into a wiki.
+
+What do you think? How do you keep track of the forum etc. in the same way it's
+done with mailing lists?
+
+(I don't mind a hacked solution that solves the problem for me, but if it's not just
+me being crazy, I prefer a general-purpose solution that helps everyone)

wishlist
diff --git a/doc/todo/MUA-like_access_to_forum__47__blog.mdwn b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
new file mode 100644
index 0000000..8d11a55
--- /dev/null
+++ b/doc/todo/MUA-like_access_to_forum__47__blog.mdwn
@@ -0,0 +1,35 @@
+[[!tag wishlist]]
+
+Maybe I'm not using ikiwiki right, and I'll appreciate any advice on this, but
+it seems to me that using ikiwiki instead of a mailing lists has some major
+weaknesses which I fail to overcome, but which may be possible to fix, maybe
+using some client-side software.
+
+The problem: Mailing lists give me things I need but can't find here, so I'm
+failing to track the [[/forum]], [[/todo]] and so on:
+
+- With MLs I can easily see what I read, to what I replied, mark things with
+  colors and labels if my MUA supports it
+- With MLs I can easily send a reply, without going through git. Reading and
+  writing happen together in the same dedicated UI
+
+I know I can subscribe to [[forum]] and to individual posts' comment feeds, but
+it's not the same - I don't see the tree of comments like in e-mail. Either I
+sort by creation time (not seeing evidence of more recent replies) or by
+last-edited time, or perhaps by last comment (then busy pages cause less busy
+ones quickly go deep into the list and are never seen by the user).
+
+Is there an existing solution to this?
+
+Random ideas, maybe direction for a solution:
+
+- Make client software which takes a local git clone of a wiki and operates on
+  it, while the user sees an MUA-like interface
+- Add some plugin to ikiwiki that can cooperate with an MTA: listen to e-mail
+  on a mailing list with specific formatting and put the content into a wiki.
+
+What do you think? How do you keep track of the forum etc. in the same way it's
+done with mailing lists?
+
+(I don't mind a hacked solution that solves the problem for me, but if it's not just
+me being crazy, I prefer a general-purpose solution that helps everyone)

Added a comment
diff --git a/doc/forum/PO_and_RTL_support/comment_13_ebe1c390b478bb87021850ea019a8194._comment b/doc/forum/PO_and_RTL_support/comment_13_ebe1c390b478bb87021850ea019a8194._comment
new file mode 100644
index 0000000..9c167f8
--- /dev/null
+++ b/doc/forum/PO_and_RTL_support/comment_13_ebe1c390b478bb87021850ea019a8194._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="smcv"
+ ip="81.100.115.242"
+ subject="comment 13"
+ date="2014-10-23T08:06:48Z"
+ content="""
+> I was told here that there is a patch already
+
+That patch is for the po plugin, which is specifically designed for a wiki
+in which every page `foo` is written in a \"master language\" (often English)
+in a file like `/foo.mdwn`, and then translated into secondary languages
+via translation files like `/foo.ar.po`.
+
+If that doesn't describe your wiki, then the po plugin is not intended
+for you, and you would be better off with a change to the meta plugin
+to make it possible to emit the same language and/or direction
+attributes in the HTML, but triggered by different source code.
+"""]]

Added a comment
diff --git a/doc/forum/Right-to-left_support/comment_3_49f82c1d9bfb460c1a468e66c9acf97b._comment b/doc/forum/Right-to-left_support/comment_3_49f82c1d9bfb460c1a468e66c9acf97b._comment
new file mode 100644
index 0000000..f1e6487
--- /dev/null
+++ b/doc/forum/Right-to-left_support/comment_3_49f82c1d9bfb460c1a468e66c9acf97b._comment
@@ -0,0 +1,33 @@
+[[!comment format=mdwn
+ username="smcv"
+ ip="81.100.115.242"
+ subject="comment 3"
+ date="2014-10-23T07:57:39Z"
+ content="""
+> The Arabic pages on your wiki seem to have the Arabic in LTR, instead of the intended RTL
+
+As I said on the other forum thread, it does look to me as though it is RTL;
+the display bug is that it's left-justified (text-align: left) because the
+blueview stylesheet explicitly (and unnecessarily?) left-aligns text.
+
+You can test RTL/LTR in English by putting a distinctive directionless punctuation
+character at the beginning and end of a paragraph like this:
+
+    <p dir=\"ltr\">• This renders with a bullet on the left and an ellipsis on the right…</p>
+    <p dir=\"rtl\">• This renders with a bullet on the right and an ellipsis on the left…</p>
+
+The actual text still goes left-to-right because Latin characters are known
+to be left-to-right by the Unicode bidi algorithm, but the punctuation moves
+around, and in ikiwiki themes other than blueview and goldtype, the alignment
+changes too:
+
+<p dir=\"ltr\">• This renders with a bullet on the left and an ellipsis on the right…</p>
+<p dir=\"rtl\">• This renders with a bullet on the right and an ellipsis on the left…</p>
+
+More test-cases:
+
+* <http://actiontabs.hosted.pseudorandom.co.uk/rtl/>
+* <http://blueview.hosted.pseudorandom.co.uk/rtl/>
+* <http://goldtype.hosted.pseudorandom.co.uk/rtl/>
+* <http://unthemed.hosted.pseudorandom.co.uk/rtl/>
+"""]]

Added a comment
diff --git a/doc/forum/Problems_with_img_directive_on_nearly_free_speech/comment_1_c66ef7bcfd45cab29453cd0a17d71ea1._comment b/doc/forum/Problems_with_img_directive_on_nearly_free_speech/comment_1_c66ef7bcfd45cab29453cd0a17d71ea1._comment
new file mode 100644
index 0000000..82ede67
--- /dev/null
+++ b/doc/forum/Problems_with_img_directive_on_nearly_free_speech/comment_1_c66ef7bcfd45cab29453cd0a17d71ea1._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="openmedi"
+ ip="91.65.196.164"
+ subject="comment 1"
+ date="2014-10-22T22:01:41Z"
+ content="""
+Okay. I figured it out with help from the nearlyfreespeech forum. It had nothing to do with ikiwiki. Nonetheless here's the solution, for posterity: You can check, if PerlMagick is installed by running ```perl -MImage::Magick -e \"print $Image::Magick::VERSION\"```.  If it isn't, you will get an error that looks like this:
+
+>```Can't locate Image/Magick.pm in @INC (@INC contains: /usr/local/lib/perl5/5.16/BSDPAN /usr/local/lib/perl5/site_perl/5.16/mach /usr/local/lib/perl5/site_perl/5.16 /usr/local/lib/perl5/5.16/mach /usr/local/lib/perl5/5.16 .). 
+BEGIN failed--compilation aborted. ```
+
+If that's the case, you might have to upgrade/switch to a new \"realm\". As of the time of this writing PerlMagick is installed in the realms \"indigo\" and \"white\". How this is done, is described in the members only FAQ of nfs.
+"""]]

Added a comment
diff --git a/doc/forum/PO_and_RTL_support/comment_12_75d3bc373e8d3877ce2cb1f974abaf18._comment b/doc/forum/PO_and_RTL_support/comment_12_75d3bc373e8d3877ce2cb1f974abaf18._comment
new file mode 100644
index 0000000..93328f2
--- /dev/null
+++ b/doc/forum/PO_and_RTL_support/comment_12_75d3bc373e8d3877ce2cb1f974abaf18._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="fr33domlover"
+ ip="46.117.109.179"
+ subject="comment 12"
+ date="2014-10-22T16:46:01Z"
+ content="""
+As to exposing the language tag, I was told here that there is a patch already:
+
+[[/forum/Right-to-left_support/]]
+
+The CSS should requires that I modify my local.css to use the conditional
+instead of an \"rtl\" class. For that I need to understand on which items it
+affects (and just insert direction=rtl there, like I'm doing now with the class).
+
+When I make the changes in my wiki and test them, I'll send you a patch.
+"""]]