Recent changes to this wiki:

poll vote (Accept only OpenID for logins)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 34d5bb7..c158ec3 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 75 "Accept only OpenID for logins" 21 "Accept only password logins" 49 "Accept both"]]
+[[!poll 76 "Accept only OpenID for logins" 21 "Accept only password logins" 49 "Accept both"]]

no auto-merge that branch; bad patch
diff --git a/doc/todo/add_remove_to_actionlist.mdwn b/doc/todo/add_remove_to_actionlist.mdwn
index df0f75a..b50fe88 100644
--- a/doc/todo/add_remove_to_actionlist.mdwn
+++ b/doc/todo/add_remove_to_actionlist.mdwn
@@ -14,3 +14,7 @@ submission more carefully).
 I haven't begun on the 'rename' plugin. -- [[Jon]]
 
 [[!tag wishlist patch]]
+
+> I accidentally pushed an incomplete patch to that branch that starts the
+> work of doing the same for rename, but it's not working yet, to merge one
+> would need to cherry-pick the other patches for now. Sorry. -- [[Jon]]

response: wiki_file_chars
diff --git a/doc/forum/Spaces_in_URLs.mdwn b/doc/forum/Spaces_in_URLs.mdwn
index dc29a2e..847d141 100644
--- a/doc/forum/Spaces_in_URLs.mdwn
+++ b/doc/forum/Spaces_in_URLs.mdwn
@@ -6,3 +6,5 @@ Now that I've moved to Ikiwiki, that doesn't work. So I moved the file here:
 [http://dada.pink/scarsdale/Statement_20140527.pdf](http://dada.pink/scarsdale/Statement_20140527.pdf)
 
 Is there a better approach to maintaining this link than setting an alias in Apache?
+
+> You can add the space character to the `wiki_file_chars` argument in your setup file. -- [[Jon]]

remove accident C&P of another item into this page!
diff --git a/doc/todo/add_remove_to_actionlist.mdwn b/doc/todo/add_remove_to_actionlist.mdwn
index 92beabc..df0f75a 100644
--- a/doc/todo/add_remove_to_actionlist.mdwn
+++ b/doc/todo/add_remove_to_actionlist.mdwn
@@ -14,69 +14,3 @@ submission more carefully).
 I haven't begun on the 'rename' plugin. -- [[Jon]]
 
 [[!tag wishlist patch]]
-
-> This seems like weird overloading of the header parameter - it's
-> table data, except when it isn't.
-
-> > My first cut (now rebased out of existence I think) introduced a
-> > new "headerblock" parameter, but trying to clearly document the
-> > interaction of data/headerblock/header parameters was too awkward. -- [[Jon]]
-
-> Perhaps
-> something like this would be easier to use in practice?
-> (and also more featureful :-) )
->
->     \[[!table header="2 rows 1 column" data="""
->     Name | Platform ||
->     | Windows | Mac | Linux
->     ikiwiki | no | yes | yes
->     Starcraft | yes | yes | via Wine
->     """]]
-
-> > Thanks for your prompt feedback!
-> > 
-> > This would probably be good, yes, and having mixed row/column headers is
-> > definitely a nice-to-have. I don't relish the prospect of writing the parser
-> > but I see you've made a stab already...
-> > 
-> > One thing you'd lose, but it's debatable whether this is valuable, would be
-> > to have the header defined in the directive, and the remaining table data
-> > declared in an external CSV. -- [[Jon]]
-
-> intended to be rendered like
->
-> <table>
-> <tr><th>Name</th><th colspan=2>Platform</th>
-> <tr><th></th><th>Windows</th><th>Mac</th><th>Linux</th></tr>
-> <tr><th>ikiwiki</th><td>no</td><td>yes</td><td>yes</td></tr>
-> <tr><th>Starcraft</th><td>yes</td><td>yes</td><td>via Wine</td></tr>
-> </table>
->
-> (Deliberately switching to plain-text to make it more obvious
-> what's a `<th>` and what's `<td>`.)
->
-> Vague pseudocode for parsing `headers`
-> (possibly even valid Perl, I'm not sure):
->
->     my ($header_rows, $header_cols);
->     while ($header =~ s/(\d*)\W*(\w+)//) {
->         my $n = ($1 or 0);
->         my $what = $2;
->         if ($what =~ m/rows?/) {
->             $header_rows = $n;
->         }
->         elif ($what =~ m/col(?:umn)?s?/) {
->             $header_cols = $n;
->         }
->     }
->
-> and it would even be fairly easy to extend to support
-> `(first|last|)\W*(\d*)\W*(\w+)` later, e.g.
-> `header="1 row, first 2 cols, last column"`.
->
-> --[[smcv]]
-
-> > To be clear I think your suggestion is a good one, but my hack has
-> > addressed my immediate need so it's the one I'm deploying at $ork for the
-> > time being. I'm unlikely to have time to implement this solution in the
-> > near future. -- [[Jon]]

new feature request: remove (and rename) in action list (initial patches)
diff --git a/doc/todo/add_remove_to_actionlist.mdwn b/doc/todo/add_remove_to_actionlist.mdwn
new file mode 100644
index 0000000..92beabc
--- /dev/null
+++ b/doc/todo/add_remove_to_actionlist.mdwn
@@ -0,0 +1,82 @@
+[[!template id=gitbranch branch=jon/remove_action author="[[Jon]]"]]
+
+The "remove" plugin allows one to remove pages via the web, but you first have
+to click on 'edit' to get to the 'remove' button. This is a bit
+counter-intuitive, and ikiwiki has an action list, so it would be good if
+"remove" (and also "rename" for that plugin) added items to the action list.
+
+First cut series of patches in the indicated branch.  A bit more review is
+needed, in my tests removals work and are committed to the vcs but
+recentchanges isn't regenerated for some reason (probably the constructed `<a>`
+link needs to add/adjust the parameters to emulate a formbuilder form
+submission more carefully).
+
+I haven't begun on the 'rename' plugin. -- [[Jon]]
+
+[[!tag wishlist patch]]
+
+> This seems like weird overloading of the header parameter - it's
+> table data, except when it isn't.
+
+> > My first cut (now rebased out of existence I think) introduced a
+> > new "headerblock" parameter, but trying to clearly document the
+> > interaction of data/headerblock/header parameters was too awkward. -- [[Jon]]
+
+> Perhaps
+> something like this would be easier to use in practice?
+> (and also more featureful :-) )
+>
+>     \[[!table header="2 rows 1 column" data="""
+>     Name | Platform ||
+>     | Windows | Mac | Linux
+>     ikiwiki | no | yes | yes
+>     Starcraft | yes | yes | via Wine
+>     """]]
+
+> > Thanks for your prompt feedback!
+> > 
+> > This would probably be good, yes, and having mixed row/column headers is
+> > definitely a nice-to-have. I don't relish the prospect of writing the parser
+> > but I see you've made a stab already...
+> > 
+> > One thing you'd lose, but it's debatable whether this is valuable, would be
+> > to have the header defined in the directive, and the remaining table data
+> > declared in an external CSV. -- [[Jon]]
+
+> intended to be rendered like
+>
+> <table>
+> <tr><th>Name</th><th colspan=2>Platform</th>
+> <tr><th></th><th>Windows</th><th>Mac</th><th>Linux</th></tr>
+> <tr><th>ikiwiki</th><td>no</td><td>yes</td><td>yes</td></tr>
+> <tr><th>Starcraft</th><td>yes</td><td>yes</td><td>via Wine</td></tr>
+> </table>
+>
+> (Deliberately switching to plain-text to make it more obvious
+> what's a `<th>` and what's `<td>`.)
+>
+> Vague pseudocode for parsing `headers`
+> (possibly even valid Perl, I'm not sure):
+>
+>     my ($header_rows, $header_cols);
+>     while ($header =~ s/(\d*)\W*(\w+)//) {
+>         my $n = ($1 or 0);
+>         my $what = $2;
+>         if ($what =~ m/rows?/) {
+>             $header_rows = $n;
+>         }
+>         elif ($what =~ m/col(?:umn)?s?/) {
+>             $header_cols = $n;
+>         }
+>     }
+>
+> and it would even be fairly easy to extend to support
+> `(first|last|)\W*(\d*)\W*(\w+)` later, e.g.
+> `header="1 row, first 2 cols, last column"`.
+>
+> --[[smcv]]
+
+> > To be clear I think your suggestion is a good one, but my hack has
+> > addressed my immediate need so it's the one I'm deploying at $ork for the
+> > time being. I'm unlikely to have time to implement this solution in the
+> > near future. -- [[Jon]]

diff --git a/doc/forum/Spaces_in_URLs.mdwn b/doc/forum/Spaces_in_URLs.mdwn
new file mode 100644
index 0000000..dc29a2e
--- /dev/null
+++ b/doc/forum/Spaces_in_URLs.mdwn
@@ -0,0 +1,8 @@
+There is one file on my site that had a space in the name;
+on my old site, this link worked:
+[http://dada.pink/scarsdale/Statement 20140527.pdf](http://dada.pink/scarsdale/Statement 20140527.pdf)
+
+Now that I've moved to Ikiwiki, that doesn't work. So I moved the file here:
+[http://dada.pink/scarsdale/Statement_20140527.pdf](http://dada.pink/scarsdale/Statement_20140527.pdf)
+
+Is there a better approach to maintaining this link than setting an alias in Apache?

response
diff --git a/doc/todo/support_multi-row_table_headers.mdwn b/doc/todo/support_multi-row_table_headers.mdwn
index 2b22d5d..6f13bbb 100644
--- a/doc/todo/support_multi-row_table_headers.mdwn
+++ b/doc/todo/support_multi-row_table_headers.mdwn
@@ -13,7 +13,13 @@ It would be great if it were possible to support multi-row table headers in the
 [[!tag wishlist patch]]
 
 > This seems like weird overloading of the header parameter - it's
-> table data, except when it isn't. Perhaps
+> table data, except when it isn't.
+
+> > My first cut (now rebased out of existence I think) introduced a
+> > new "headerblock" parameter, but trying to clearly document the
+> > interaction of data/headerblock/header parameters was too awkward. -- [[Jon]]
+
+> Perhaps
 > something like this would be easier to use in practice?
 > (and also more featureful :-) )
 >
@@ -23,7 +29,17 @@ It would be great if it were possible to support multi-row table headers in the
 >     ikiwiki | no | yes | yes
 >     Starcraft | yes | yes | via Wine
 >     """]]
->
+
+> > Thanks for your prompt feedback!
+> > 
+> > This would probably be good, yes, and having mixed row/column headers is
+> > definitely a nice-to-have. I don't relish the prospect of writing the parser
+> > but I see you've made a stab already...
+> > 
+> > One thing you'd lose, but it's debatable whether this is valuable, would be
+> > to have the header defined in the directive, and the remaining table data
+> > declared in an external CSV. -- [[Jon]]
+
 > intended to be rendered like
 >
 > <table>
@@ -56,3 +72,8 @@ It would be great if it were possible to support multi-row table headers in the
 > `header="1 row, first 2 cols, last column"`.
 >
 > --[[smcv]]
+
+> > To be clear I think your suggestion is a good one, but my hack has
+> > addressed my immediate need so it's the one I'm deploying at $ork for the
+> > time being. I'm unlikely to have time to implement this solution in the
+> > near future. -- [[Jon]]

syntax seems weird, thoughts on an alternative
diff --git a/doc/todo/support_multi-row_table_headers.mdwn b/doc/todo/support_multi-row_table_headers.mdwn
index 3543eef..2b22d5d 100644
--- a/doc/todo/support_multi-row_table_headers.mdwn
+++ b/doc/todo/support_multi-row_table_headers.mdwn
@@ -11,3 +11,48 @@ It would be great if it were possible to support multi-row table headers in the
 -- [[Jon]]
 
 [[!tag wishlist patch]]
+
+> This seems like weird overloading of the header parameter - it's
+> table data, except when it isn't. Perhaps
+> something like this would be easier to use in practice?
+> (and also more featureful :-) )
+>
+>     \[[!table header="2 rows 1 column" data="""
+>     Name | Platform ||
+>     | Windows | Mac | Linux
+>     ikiwiki | no | yes | yes
+>     Starcraft | yes | yes | via Wine
+>     """]]
+>
+> intended to be rendered like
+>
+> <table>
+> <tr><th>Name</th><th colspan=2>Platform</th>
+> <tr><th></th><th>Windows</th><th>Mac</th><th>Linux</th></tr>
+> <tr><th>ikiwiki</th><td>no</td><td>yes</td><td>yes</td></tr>
+> <tr><th>Starcraft</th><td>yes</td><td>yes</td><td>via Wine</td></tr>
+> </table>
+>
+> (Deliberately switching to plain-text to make it more obvious
+> what's a `<th>` and what's `<td>`.)
+>
+> Vague pseudocode for parsing `headers`
+> (possibly even valid Perl, I'm not sure):
+>
+>     my ($header_rows, $header_cols);
+>     while ($header =~ s/(\d*)\W*(\w+)//) {
+>         my $n = ($1 or 0);
+>         my $what = $2;
+>         if ($what =~ m/rows?/) {
+>             $header_rows = $n;
+>         }
+>         elif ($what =~ m/col(?:umn)?s?/) {
+>             $header_cols = $n;
+>         }
+>     }
+>
+> and it would even be fairly easy to extend to support
+> `(first|last|)\W*(\d*)\W*(\w+)` later, e.g.
+> `header="1 row, first 2 cols, last column"`.
+>
+> --[[smcv]]

doc/git.mdwn calls this remote "jon"
diff --git a/doc/todo/support_multi-row_table_headers.mdwn b/doc/todo/support_multi-row_table_headers.mdwn
index 86c6e9d..3543eef 100644
--- a/doc/todo/support_multi-row_table_headers.mdwn
+++ b/doc/todo/support_multi-row_table_headers.mdwn
@@ -1,4 +1,4 @@
-[[!template id=gitbranch branch=jmtd/table_headerblock author="[[Jon]]"]]
+[[!template id=gitbranch branch=jon/table_headerblock author="[[Jon]]"]]
 It would be great if it were possible to support multi-row table headers in the [[plugins/table]] plugin, so you could do e.g.
 
         \[[!table header="""

document gitbranch where patch is
diff --git a/doc/todo/support_multi-row_table_headers.mdwn b/doc/todo/support_multi-row_table_headers.mdwn
index 6acba6c..86c6e9d 100644
--- a/doc/todo/support_multi-row_table_headers.mdwn
+++ b/doc/todo/support_multi-row_table_headers.mdwn
@@ -1,3 +1,4 @@
+[[!template id=gitbranch branch=jmtd/table_headerblock author="[[Jon]]"]]
 It would be great if it were possible to support multi-row table headers in the [[plugins/table]] plugin, so you could do e.g.
 
         \[[!table header="""

support multi-row table headers
diff --git a/doc/todo/support_multi-row_table_headers.mdwn b/doc/todo/support_multi-row_table_headers.mdwn
new file mode 100644
index 0000000..6acba6c
--- /dev/null
+++ b/doc/todo/support_multi-row_table_headers.mdwn
@@ -0,0 +1,12 @@
+It would be great if it were possible to support multi-row table headers in the [[plugins/table]] plugin, so you could do e.g.
+
+        \[[!table header="""
+        Name | Platform ||
+        | Windows | Mac | Linux
+        """ data="""
+        ikiwiki | ‧ | ✓ | ✓
+        """]]
+
+-- [[Jon]]
+
+[[!tag wishlist patch]]

diff --git a/doc/sandbox/discussion.mdwn b/doc/sandbox/discussion.mdwn
index 21da2e5..ec651a5 100644
--- a/doc/sandbox/discussion.mdwn
+++ b/doc/sandbox/discussion.mdwn
@@ -1 +1,7 @@
 Whilst discussing Ikiwiki on IRC, someone pointed out that "This is the SandBox, a page anyone can edit to try out ikiwiki" is not strictly true, or is debatably so, since they must log in to edit. This proved to be enough of a barrier that said person didn't consider ikiwiki any further. -- [[Jon]]
+
+> I personally think we'd be better off with a separate demo wiki
+> (sandbox.ikiwiki.info?) that has its own git repo and
+> `nofollow` configuration, so edits to that wiki aren't archived
+> in ikiwiki's git history forever; perhaps with a cron job to
+> reset the sandbox every few days? --[[smcv]]

Added a comment
diff --git a/doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment
new file mode 100644
index 0000000..f22a607
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="smcv"
+ ip="81.100.115.242"
+ subject="comment 2"
+ date="2014-07-21T20:16:16Z"
+ content="""
+... and in that situation, you need to put *x* in the output of
+`needsbuild`, if it did not already have a reason to be built.
+"""]]

Added a comment
diff --git a/doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment
new file mode 100644
index 0000000..439b074
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="smcv"
+ ip="81.100.115.242"
+ subject="comment 1"
+ date="2014-07-21T20:15:13Z"
+ content="""
+Without actually checking the source code, I think the answer is:
+if you refrain from saying that page *x* `will_render` a file *f* that
+was previously rendered by *x*, IkiWiki will notice the difference,
+and delete *f* automatically.
+"""]]

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index d0bb8c5..aad6fff 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -5,7 +5,7 @@ What about [[this page]]?
 
 hello world (right back at ya)
 
-test, is it being saved?
+test, is it being saved? Probably. I will check. This seems really straightforward.
 
 > This is a blockquote.
 >

an open sandbox, for non-logged in drive-by ikiwiki evaluations?
diff --git a/doc/sandbox/discussion.mdwn b/doc/sandbox/discussion.mdwn
new file mode 100644
index 0000000..21da2e5
--- /dev/null
+++ b/doc/sandbox/discussion.mdwn
@@ -0,0 +1 @@
+Whilst discussing Ikiwiki on IRC, someone pointed out that "This is the SandBox, a page anyone can edit to try out ikiwiki" is not strictly true, or is debatably so, since they must log in to edit. This proved to be enough of a barrier that said person didn't consider ikiwiki any further. -- [[Jon]]

typo
diff --git a/doc/forum/how_to_have_a_plugin_delete_a_file.mdwn b/doc/forum/how_to_have_a_plugin_delete_a_file.mdwn
new file mode 100644
index 0000000..ea29555
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_delete_a_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta title="How to have a plugin delete a file?"]]
+
+When using the [[plugins/contrib/jscalendar]] plugin,  it creates in the
+[[plugins/transient]] directory some files (a bit like the
+[[plugins/recentchanges]] plugin does). When the calendar that triggered
+creation of this file is removed, I would like to remove the corresponding
+page as well, but I cannot, because I get the following error.
+
+    internal error: jscalendar/90cde8dfad6413813b324a15ae2d1d95041aedd69e7be36c02b0cd4a58c4af73.jscalendar cannot be found in <path of wiki> or underlay
+
+My guess is that:
+
+* the page is stored, internally, in some list of pages to render (as it depends on the page containing the calendar that was just deleted);
+* my plugin delete this page (using `IkiWiki::prune()` or `unlink()`, in the `rendered()` or `needsbuild()` hook);
+* IkiWiki tries to render the page, but cannot (since I just deleted it), and throws the error.
+
+My question is: How can I tell IkiWiki that I *deleted* this page, and that it is no longer necessary to render it? Is there a hook in which I can safely do this?
+
diff --git a/doc/forum/how_to_have_a_plugin_deteling_a_file.mdwn b/doc/forum/how_to_have_a_plugin_deteling_a_file.mdwn
deleted file mode 100644
index ea29555..0000000
--- a/doc/forum/how_to_have_a_plugin_deteling_a_file.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!meta title="How to have a plugin delete a file?"]]
-
-When using the [[plugins/contrib/jscalendar]] plugin,  it creates in the
-[[plugins/transient]] directory some files (a bit like the
-[[plugins/recentchanges]] plugin does). When the calendar that triggered
-creation of this file is removed, I would like to remove the corresponding
-page as well, but I cannot, because I get the following error.
-
-    internal error: jscalendar/90cde8dfad6413813b324a15ae2d1d95041aedd69e7be36c02b0cd4a58c4af73.jscalendar cannot be found in <path of wiki> or underlay
-
-My guess is that:
-
-* the page is stored, internally, in some list of pages to render (as it depends on the page containing the calendar that was just deleted);
-* my plugin delete this page (using `IkiWiki::prune()` or `unlink()`, in the `rendered()` or `needsbuild()` hook);
-* IkiWiki tries to render the page, but cannot (since I just deleted it), and throws the error.
-
-My question is: How can I tell IkiWiki that I *deleted* this page, and that it is no longer necessary to render it? Is there a hook in which I can safely do this?
-

Another navbar hack
diff --git a/doc/plugins/contrib/navbar.mdwn b/doc/plugins/contrib/navbar.mdwn
index f1c15c6..9de66f7 100644
--- a/doc/plugins/contrib/navbar.mdwn
+++ b/doc/plugins/contrib/navbar.mdwn
@@ -38,3 +38,6 @@ If you are interested in this, drop me a line tobi at oetiker dot ch
 
 
 In the meanwhile, I ([[MartinQuinson]]) have hacked this a bit to make it fit my needs. The result is [[here|http://www.loria.fr/~quinson/Hacking/ikiwiki/]]
+
+In the meanwhile I too have hacked this for my needs and fixed a few bugs in Martin's version.
+The result (and source / instructions) can be found [[here|http://wiki.math.cmu.edu/iki/wiki/tips/20140720-ikiwiki-navbar.html]]. (It is not mobile ready yet, but might be soon...)

Question
diff --git a/doc/forum/how_to_have_a_plugin_deteling_a_file.mdwn b/doc/forum/how_to_have_a_plugin_deteling_a_file.mdwn
new file mode 100644
index 0000000..ea29555
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_deteling_a_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta title="How to have a plugin delete a file?"]]
+
+When using the [[plugins/contrib/jscalendar]] plugin,  it creates in the
+[[plugins/transient]] directory some files (a bit like the
+[[plugins/recentchanges]] plugin does). When the calendar that triggered
+creation of this file is removed, I would like to remove the corresponding
+page as well, but I cannot, because I get the following error.
+
+    internal error: jscalendar/90cde8dfad6413813b324a15ae2d1d95041aedd69e7be36c02b0cd4a58c4af73.jscalendar cannot be found in <path of wiki> or underlay
+
+My guess is that:
+
+* the page is stored, internally, in some list of pages to render (as it depends on the page containing the calendar that was just deleted);
+* my plugin delete this page (using `IkiWiki::prune()` or `unlink()`, in the `rendered()` or `needsbuild()` hook);
+* IkiWiki tries to render the page, but cannot (since I just deleted it), and throws the error.
+
+My question is: How can I tell IkiWiki that I *deleted* this page, and that it is no longer necessary to render it? Is there a hook in which I can safely do this?
+

yes please
diff --git a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
index c74818a..a8c8dee 100644
--- a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
+++ b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
@@ -22,3 +22,23 @@ If you use the rescaling feature of the directive [[ikiwiki/directive/img/]] wit
 >> the  branch also enhances on how images are handled in preview, falling back
 >> to data: urls if the image has not been rendered in a saved version. please
 >> review. --[[chrysn]]
+
+>>> Mostly [[looks good to me|users/smcv/ready]].
+>>>
+>>> Minor things, which wouldn't stop me merging it if I could:
+>>>
+>>> * `$imgdatalink = "data:image/".$im->Get("magick").";base64,".encode_base64($blob[0]);`:
+>>>   is the ImageMagick file type always valid as the second part of
+>>>   a MIME type?
+>>> * In this code:
+>>>
+>>>       +open (my $outhtmlfd, "<", "$outpath.html");
+>>>       +local $/=undef;
+>>>       +my $outhtml = <$outhtmlfd>;
+>>>       +close $outhtmlfd;
+>>>
+>>>   no block is closed, so the "local" is ineffective, so the `<>` operator
+>>>   remains in read-entire-file mode afterwards. To avoid odd side-effects,
+>>>   I would suggest using `readfile()` like `t/trail.t` does.
+>>>
+>>> --[[smcv]]

patch available
diff --git a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
index 6eff2df..c74818a 100644
--- a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
+++ b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
@@ -10,3 +10,15 @@ If you use the rescaling feature of the directive [[ikiwiki/directive/img/]] wit
 > && ((width > desired width) || (height > desired height)),
 > it uses exactly the desired size, without preserving aspect ratio.
 > --smcv
+
+>> [[!template id=gitbranch branch=chrysn/imgforpdf-and-more author="[[chrysn]]"]]
+>>
+>> [[!tag patch]]
+>>
+>> i've implemented a fix for this along with a unit test.
+>>
+>> the patch branch is based on the imgforpdf branch
+>> ([[bugs/svg and pdf conversion fails]]), because it would not cleanly merge.
+>> the  branch also enhances on how images are handled in preview, falling back
+>> to data: urls if the image has not been rendered in a saved version. please
+>> review. --[[chrysn]]

Add some examples for the OSM plugin
Note that these examples are intended to be used more for testing and fixing
the plugin, rather than demonstrating its functionality.
diff --git a/doc/plugins/osm.mdwn b/doc/plugins/osm.mdwn
index d15dfbf..a2455a4 100644
--- a/doc/plugins/osm.mdwn
+++ b/doc/plugins/osm.mdwn
@@ -15,6 +15,22 @@ if the [[!cpan JSON]] perl module is installed.
 
 This provides the [[ikiwiki/directive/waypoint]] and [[ikiwiki/directive/osm]] directives.
 
+### Examples
+
+A [[basic set of examples|http://cbaines.net/osm-examples]] is available
+([[repository|http://git.cbaines.net/?p=ikiwiki/osm-examples.git;a=summary]]).
+Note that none of these will work without patching the plugin. With the
+following patches, most of the examples will work (while each patch is
+seperate, the branch includes all previous patches in the list, so the
+cbaines/osm-icon-fixes branch includes all patches).
+
+ - [[bugs/osm plugin error TypeError: mapProjection is null]]
+ - [[todo/osm plugin GeoJSON popup patch]]
+ - [[todo/osm plugin icon patch]]
+
+Even with these patches, the CSV examples do not work, and there are cosmetic
+issues with a few of the other examples.
+
 ---
 
 The plugin was originally written by

Capitalisation changes
For OpenStreetMap and OpenLayers
diff --git a/doc/plugins/osm.mdwn b/doc/plugins/osm.mdwn
index 040d175..d15dfbf 100644
--- a/doc/plugins/osm.mdwn
+++ b/doc/plugins/osm.mdwn
@@ -1,10 +1,10 @@
 [[!template id=plugin name=osm author="Blars Blarson, Antoine Beaupré"]]
 [[!tag type/special-purpose todo/geotagging]]
 
-## Openstreetmap/Openlayers support for ikiwiki
+## OpenStreetMap/OpenLayers support for ikiwiki
 
-This plugin provides simple Openstreetmap/Openlayers support for ikiwiki.
-It can embed Openstreetmap viewports within a page or link to a bigger map
+This plugin provides simple OpenStreetMap/OpenLayers support for ikiwiki.
+It can embed OpenStreetMap viewports within a page or link to a bigger map
 that will have multiple markers, generated with a KML (or CSV, or GeoJSON)
 datafile of markers based on the different calling pages. Multiple distinct
 maps on a single wiki are supported.

phases are a good idea
diff --git a/doc/bugs/template_creation_error.mdwn b/doc/bugs/template_creation_error.mdwn
index d3c0bcc..d1fb788 100644
--- a/doc/bugs/template_creation_error.mdwn
+++ b/doc/bugs/template_creation_error.mdwn
@@ -261,4 +261,10 @@ same logic as IkiWiki itself. I don't think that's serious. --[[smcv]]
 >>>> an error to invoke scan in the render phase; that would mean that
 >>>> `readtemplate` needs to check whether it's invoked as a scan or not to
 >>>> decide whether to scan the template page, but would be generally more
->>>> robust for future plugin writing. --[[chrysn]]
+>>>> robust for future plugin writing.
+>>>>
+>>>> **addendum**: if the new phase state is used to create warnings/errors
+>>>> about improper ikiwiki api use of plugins (which is something i'd
+>>>> advocate), that should likewise warn if `add_link` actually adds a link in
+>>>> the render phase.  such a warning would have helped spotting the
+>>>> link-related [[template evaluation oddities]] earlier. --[[chrysn]]

link to git repo
diff --git a/doc/users/kjs.mdwn b/doc/users/kjs.mdwn
index cfe13c6..d65b663 100644
--- a/doc/users/kjs.mdwn
+++ b/doc/users/kjs.mdwn
@@ -5,4 +5,7 @@ Websites using ikiwiki:
 * <http://img.kalleswork.net>
 * <http://stockholm.kalleswork.net>
 
-Mostly using ikiwiki with the [[/plugins/contrib/album/]] and [[plugins/osm]] plugins.
+
+Mostly using ikiwiki with the [[/plugins/contrib/album/]] and [[plugins/osm]] plugins. My git repo with tweaks including the simplebw theme and changes to the [[plugins/contrib/album]] templates can be cloned via http at:
+
+* <http://src.kalleswork.net/ikiwiki.git>

clarify which case fails
diff --git a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
index c535f88..6eff2df 100644
--- a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
+++ b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
@@ -1 +1,12 @@
 If you use the rescaling feature of the directive [[ikiwiki/directive/img/]] with a smaller image it will distort. E.g. an image with 150x250 rescaled into size=200x200. --bastla
+
+> More specifically: `img` normally preserves aspect ratio:
+> `size=200x200` normally means "as large as possible, keeping
+> the width 200px or less, the height 200px or less, and the
+> aspect ratio correct". So a 4:3 image with `size=200x200`
+> would actually come out 200px wide and 150px tall.
+>
+> However, when (desired width is specified) && (desired height is specified)
+> && ((width > desired width) || (height > desired height)),
+> it uses exactly the desired size, without preserving aspect ratio.
+> --smcv

respond to cbaines regarding CSS
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index e504c49..442d02d 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -833,3 +833,33 @@ to `doc/style.css` should be enough? --[[smcv]]
 >>> And right you are, unsure how I missed that. My album branch is now rebased
 >>> on your album5 branch (with the two now useless commits removed).
 >>> --[[cbaines]]
+
+cbaines, would you mind publishing an album with more realistic pixel-sizes
+of images using your modified CSS? It's difficult to get an idea of how it
+will degrade under conditions like "image size > browser window" with
+images as small as the ones you used. You might find
+<http://git.pseudorandom.co.uk/smcv/ikiwiki-demos/ikialbum.git>
+(`git clone git://git.pseudorandom.co.uk/git/smcv/ikiwiki-demos/ikialbum.git`),
+or the same techniques, useful: it contains images with a realistic pixel
+count, but very very lossy JPEG compression, to keep the size in bytes low.
+
+It's much, much easier to review changes if you use separate commits for
+cosmetic changes like "separate index CSS from viewer CSS" and "more
+consistent indentation", and functional changes like turning the prev/next
+links from absolutely-positioned to floating. I'd be happy to apply
+the cosmetic changes if they were in commits that were literally only
+cosmetic changes, with no functional effect.
+
+For the functional bits: I think I'd have used floating boxes instead of the
+absolutely-positioned boxes that are currently used if they provided the effect
+I wanted. I can't remember exactly why I didn't do that now, but
+it might have been because if the browser window shrinks below the image width,
+floats have weird behaviour (they push the actual image out of the way), or because
+I wanted the entire left/right margin of the image to be clickable to have
+a large click-target for scrolling through the album.
+
+If there's something specific that you think is wrong with the CSS in my
+branch, could you please explain it, and perhaps we can come up with something
+that matches both our requirements?
+
+--smcv

new todo, opinions welcome
diff --git a/doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn b/doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn
new file mode 100644
index 0000000..9781f75
--- /dev/null
+++ b/doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn
@@ -0,0 +1,41 @@
+If you say
+
+    pagespec_match_list($page, $spec, list => \@pages)
+
+with a small list `@pages` and a vague pagespec `$spec`, `$page` ends
+up depending on (every page that matches) `$spec`. For instance, if you
+already have a list of subpages of the sandbox, and you want to filter it
+to only the discussion pages, you can do that like
+
+    pagespec_match_list("sandbox", "*/discussion",
+        list => ["sandbox/discussion", "sandbox/things", "sandbox/stuff"])
+
+but then a change to *any* discussion page will refresh the sandbox.
+
+The [[bugs/trails depend on everything]] bug was a particularly bad
+case of this, with the widest possible pagespec `internal(*)`
+matched against a small list (the trail).
+
+In principle it would be nice if `pagespec_match_list` could detect
+this situation and make sandbox depend on only those subpages instead.
+
+Perhaps if the `list` parameter is given, `p_m_l` should add a
+by-name (simple) dependency on each page in that list, instead
+of a dependency on the pagespec? Or perhaps it should be documented
+that plugins can pass `deptype => 0` to take responsibility for
+their own dependency handling, and then do whatever they need?
+
+Uses of `pagespec_match_list` with a non-trivial list, in-tree,
+after [[bugs/trails depend on everything]] is fixed:
+
+* brokenlinks: really does need to depend on the whole pagespec,
+  but that could be done separately
+
+* inline: the inliner already depends on the inlined pages
+  so no extra dependency is needed
+
+* pagestats: same as brokenlinks
+
+My album plugin is in the same situation as inline.
+
+--[[smcv]]

album6 branch (needs an unmerged ikiwiki change, so album5 is still available)
diff --git a/doc/plugins/contrib/album.mdwn b/doc/plugins/contrib/album.mdwn
index c2f991d..9fac111 100644
--- a/doc/plugins/contrib/album.mdwn
+++ b/doc/plugins/contrib/album.mdwn
@@ -47,6 +47,10 @@ is to provide a direct link to the image.)
 Updated, June 2014: integrated changes from [[KathrynAndersen]],
 Lukas Lipavsky and kjs
 
+An `album6` branch is also available, but is less suitable
+for manual installation since it needs core IkiWiki changes
+(until [[bugs/trails depend on everything]] is fixed).
+
 ### Manual installation
 
 First, you need a version of ikiwiki with the [[trail]] plugin merged in

point to bug
diff --git a/doc/plugins/trail/discussion.mdwn b/doc/plugins/trail/discussion.mdwn
index 6b458ce..6b1b58b 100644
--- a/doc/plugins/trail/discussion.mdwn
+++ b/doc/plugins/trail/discussion.mdwn
@@ -181,6 +181,5 @@ I have removed a similar comment from the album discussion.
 >>> dependencies, this turns out to be two similar issues, in `album` and
 >>> `trail`: they each use `pagespec_match_list` with the pagespec
 >>> `internal(*)` in order to apply a trivial filter (accept everything)
->>> to an existing list for its side-effect of sorting that list. I'll
->>> file a proper bug at some point; fixing it is going to need core
->>> ikiwiki changes, I think. --s
+>>> to an existing list for its side-effect of sorting that list.
+>>> Bug filed as [[bugs/trails depend on everything]] --smcv

bug + fix
diff --git a/doc/bugs/trails_depend_on_everything.mdwn b/doc/bugs/trails_depend_on_everything.mdwn
new file mode 100644
index 0000000..babb1e3
--- /dev/null
+++ b/doc/bugs/trails_depend_on_everything.mdwn
@@ -0,0 +1,14 @@
+[[!template id=gitbranch branch=smcv/ready/trail-sort
+author="[[Simon McVittie|smcv]]"
+browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/trail-sort]]
+[[!tag patch users/smcv/ready]]
+
+On [[trail's discussion page|plugins/trail/discussion]], [[kjs]] pointed out
+that [[plugins/trail]] and [[plugins/contrib/album]] get excessive
+dependencies on `internal(*)`. I tracked this down to their (ab)use of
+`pagespec_match_list` with the pagespec `internal(*)` to sort a pre-existing
+list of pages.
+
+They should just sort the pages instead; they'll already have all the
+dependencies they need. My branch adds `IkiWiki::sort_pages` but does not
+make it plugin API just yet. --[[smcv]]

talking about template oddities
diff --git a/doc/bugs/template_evaluation_oddities.mdwn b/doc/bugs/template_evaluation_oddities.mdwn
new file mode 100644
index 0000000..06ef573
--- /dev/null
+++ b/doc/bugs/template_evaluation_oddities.mdwn
@@ -0,0 +1,67 @@
+[[ikiwiki/directive/template]]s expose odd behavior when it comes to composing
+links and directives:
+
+* the parameters are passed through the preprocessor twice, once on
+  per-parameter basis and once for the final result (which usually contains the
+  preprocessed parameters).
+
+  one of the results it that you have to write:
+
+      \[[!template id="infobox" body="""
+          Just use the \\\[[!template]] directive!
+      """]]
+
+  (that'd be three backslashes in front of the opening [.)
+
+  <!-- if you read this and wonder why there are only three backslashes in the
+  source code too, look at how backslash-escaping directives is implemented.
+  -->
+
+  this also means that parts which are not used by the template at all still
+  have their side effects without showing.
+
+  furthermore, the evaluation sequence is hard to predict. this might or might
+  not be a problem, depending on whether someone comes up with a less contrived
+  example (this one assumes a ``\[[!literal value]]`` directive that just
+  returns value but protects it from the preprocessor):
+
+  we can use `\[[!literal """[[!invalid example]]"""]]`, but we can't use
+  `\[[!template id=literalator value="""[[!invalid example]]"""]]` with a
+  'literalator' template `<span class="literal">\[[!literal """<TMPL_VAR
+  value>"""]]</span>` because then the `invalid` directive comes to action in
+  the first (per-argument) preprocessor run
+
+* links in templates are not stored at all; they appear, but the backlinks
+  don't work unless the link is explicit in one of the arguments.
+
+      \[[!template id="linker" destination="foo"]]
+
+  with a 'linker' template like
+
+      Go to \[[<TMPL_VAR destination>]]!
+
+  would result in a link to 'destination', but would not be registered in the
+  scan phase and thus not show a backlink from 'foo'.
+
+  (a ``\[[!link to=...]]`` directive, as suggested in
+  [[todo/flexible relationships between pages]], does get evaluated properly
+  though.)
+
+  this seems to be due to linkification being called before preprocess rather
+  than as a part of it, or (if that is on purpose) by the template plugin not
+  running linkification as an extra step (not even once).
+
+(nb: there is a way to include the ``raw_`` value of a directive, but that only
+refers to htmlification, not directive evaluation.)
+
+both those behaviors are non-intuitive and afaict undocumented. personally, i'd
+swap them out for passing the parameters as-is to the template, then running
+the linkifier and preprocessor on the final result. that would be as if all
+parameters were queried `raw_` -- then again, i don't see where `raw_` makes
+anything not work that worked originally, so obviously i'm missing something.
+
+
+i think it boils down to one question: are those behaviors necessary for
+compatibility reasons, and if yes, why?
+
+--[[chrysn]]

Write a tip about RTL pages
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
new file mode 100644
index 0000000..2b176c8
--- /dev/null
+++ b/doc/tips/Right-to-left___40__RTL__41___page_text.mdwn
@@ -0,0 +1,49 @@
+Here's a simple way to create pages in which the page body (or a part of it) goes right-to-left.
+This includes things you insert into the page, such as polls and blockquotes and
+lists and a progress bar and so on. Some things don't work perfectly, but if
+you want to have some RTL pages in your wiki, this will probably do.
+
+It does not modify the things around the body, such as the page header and the
+footer. Only what is rendered from the mdwn file is affected.
+
+# 1 Add an RTL Template
+
+Create a new template page *templates/rtl.mdwn* with the following content:
+
+    <div class="rtl">
+    <TMPL_VAR text>
+    </div>
+    <TMPL_UNLESS text>
+    Use this template to insert RTL text into a page. 
+    This template has one parameter:
+    <ul>
+    <li>`text` - the text to display in RTL
+    </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
+
+To make a page or part of it RTL, use the [[ikiwiki/directive/template]] directive:
+
+    \[[!template id="rtl" text="""
+    
+    This text will be aligned to the right. You can write here in Hebrew, Arabic, etc. You can
+    put here anything you want to put on the page. As said above, some elements may not
+    align perfectly, but:
+
+    1. It can be solved per case
+    2. It's not critical, everything works quite well and is readable. If you have any comments,
+        suggestions, improvements, bugs, etc - please share here :-)
+    
+    """]]

removed
diff --git a/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn b/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
deleted file mode 100644
index 1e1f2fc..0000000
--- a/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-Currently ikiwiki does not support left-to-right languages like Hebrew and Arabic,
-in the sense that page text is always aligned to the left. Unless you do some CSS
-hacking which doesn't scale well when you have many RTL pages.
-
-In the future it would be nice to make the while wiki UI go right-to-left if the user
-chooses, but right now what's really important to me as an RTL language user
-is that the body text can go right-to-left.
-
-This can be done with CSS easily:
-
-[[!format css """
-body {
-    text-align: right;
-    direction: rtl;
-}
-"""]]
-
-Currently there are two ways to make specific pages be RTL:
-
-1. Include a local.css file with the above code as an attachment of each RTL page
-2. Specify CSS with the [[ikiwiki/directive/meta]] directive
-
-The problem is that option 2 requires [[plugins/htmlscrubber]] to be off.
-
-My suggestion: Add a parameter to the meta directive, which allows adding
-an *rtl.css* file in addition to the exisiting ones. This file can be both at the top-level
-and per-page overriden, just like local.css. The page.tmpl file can then use the
-meta field to conditionally use the rtl.css, both the wiki-global one and the
-per-page one (just like it does with local.css, IIRC).
-
-And it won't require htmlscrubber off, just like local.css doesn't.
-
-In the future rtl.css can be extended to also RTLize the whole UI, e.g. including the
-location of the "buttons" at the top, the page name, code blocks and so on.
-
-What do you think? I can try this and send a patch. It just requires an additional
-meta field and a CSS file.
-
-For example, to make a page RTL include something like this inside it:
-
-    \[[!meta dir="rtl"]]
-
-Please tell me what you think.
-
---[[fr33domlover]]
-
-[[!tag wishlist]]

diff --git a/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn b/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
index 711c896..1e1f2fc 100644
--- a/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
+++ b/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
@@ -11,6 +11,7 @@ This can be done with CSS easily:
 [[!format css """
 body {
     text-align: right;
+    direction: rtl;
 }
 """]]
 

Suggest initial Right-To-Left page support implementation
diff --git a/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn b/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
new file mode 100644
index 0000000..711c896
--- /dev/null
+++ b/doc/todo/allow_to_specify_text_direction_for_RTL_support.mdwn
@@ -0,0 +1,46 @@
+Currently ikiwiki does not support left-to-right languages like Hebrew and Arabic,
+in the sense that page text is always aligned to the left. Unless you do some CSS
+hacking which doesn't scale well when you have many RTL pages.
+
+In the future it would be nice to make the while wiki UI go right-to-left if the user
+chooses, but right now what's really important to me as an RTL language user
+is that the body text can go right-to-left.
+
+This can be done with CSS easily:
+
+[[!format css """
+body {
+    text-align: right;
+}
+"""]]
+
+Currently there are two ways to make specific pages be RTL:
+
+1. Include a local.css file with the above code as an attachment of each RTL page
+2. Specify CSS with the [[ikiwiki/directive/meta]] directive
+
+The problem is that option 2 requires [[plugins/htmlscrubber]] to be off.
+
+My suggestion: Add a parameter to the meta directive, which allows adding
+an *rtl.css* file in addition to the exisiting ones. This file can be both at the top-level
+and per-page overriden, just like local.css. The page.tmpl file can then use the
+meta field to conditionally use the rtl.css, both the wiki-global one and the
+per-page one (just like it does with local.css, IIRC).
+
+And it won't require htmlscrubber off, just like local.css doesn't.
+
+In the future rtl.css can be extended to also RTLize the whole UI, e.g. including the
+location of the "buttons" at the top, the page name, code blocks and so on.
+
+What do you think? I can try this and send a patch. It just requires an additional
+meta field and a CSS file.
+
+For example, to make a page RTL include something like this inside it:
+
+    \[[!meta dir="rtl"]]
+
+Please tell me what you think.
+
+--[[fr33domlover]]
+
+[[!tag wishlist]]

found it
diff --git a/doc/plugins/trail/discussion.mdwn b/doc/plugins/trail/discussion.mdwn
index 93036e8..6b458ce 100644
--- a/doc/plugins/trail/discussion.mdwn
+++ b/doc/plugins/trail/discussion.mdwn
@@ -176,4 +176,11 @@ I have removed a similar comment from the album discussion.
 >>>     perl -le 'use Storable; my $index = Storable::retrieve("stockholm/.ikiwiki/indexdb"); use Data::Dumper; print Dumper $index' |less
 >>>
 >>> indicates that `20130504` depends on `internal(*)` and so does `20130505`.
->>> I don't know why yet. --s
+>>>
+>>> After adding some `Carp::cluck` calls to the bits of IkiWiki.pm that add
+>>> dependencies, this turns out to be two similar issues, in `album` and
+>>> `trail`: they each use `pagespec_match_list` with the pagespec
+>>> `internal(*)` in order to apply a trivial filter (accept everything)
+>>> to an existing list for its side-effect of sorting that list. I'll
+>>> file a proper bug at some point; fixing it is going to need core
+>>> ikiwiki changes, I think. --s

inline with template=albumitem useful in current form
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index 3a89e4f..e504c49 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -772,7 +772,12 @@ My wishlist for the plugin would include:
 >>>>
 >>>>> It can't *only* be an inline, because an inline wouldn't generate the
 >>>>> viewer pages, but I see what you mean. --s
->>>> 
+>>>>>
+>>>>>> That's actually excellent as the inline is a very useful feature
+>>>>>> the way it works now. I started writing about this yesterday but
+>>>>>> got interrupted. My indexes of albums use the inline in it's current
+>>>>>> form. --k
+>>>>  
 >>>> This would make the viewers completely independent allowing for unique titles, captions and comments
 >>>> depending on context. Very useful when creating powerpoint like slideshows where you might need 
 >>>> different captions depending on the context. In your example wiki with photos from gigs this would allow 

diff --git a/doc/plugins/trail/discussion.mdwn b/doc/plugins/trail/discussion.mdwn
index 731b8c7..93036e8 100644
--- a/doc/plugins/trail/discussion.mdwn
+++ b/doc/plugins/trail/discussion.mdwn
@@ -170,3 +170,10 @@ I have removed a similar comment from the album discussion.
 
 >> Let me know if you need anything else. Would be great to hear it works
 >> as expected for everyone else ;) --[[kjs]]
+
+>>> Hmm. Investigating the indexdb:
+>>>
+>>>     perl -le 'use Storable; my $index = Storable::retrieve("stockholm/.ikiwiki/indexdb"); use Data::Dumper; print Dumper $index' |less
+>>>
+>>> indicates that `20130504` depends on `internal(*)` and so does `20130505`.
+>>> I don't know why yet. --s

Respond to smcv on plugins/contrib/album/discussion
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index b7c9b00..3a89e4f 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -824,3 +824,7 @@ to `doc/style.css` should be enough? --[[smcv]]
 >
 >> I searched for `/* relevant to the index page */` and found it twice,
 >> so I stand by what I said :-) --s
+>>
+>>> And right you are, unsure how I missed that. My album branch is now rebased
+>>> on your album5 branch (with the two now useless commits removed).
+>>> --[[cbaines]]

reply; disambiguate who said what
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index 70fcf49..b7c9b00 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -649,7 +649,7 @@ My wishlist for the plugin would include:
 >>> In the current (album5) design, the viewer pages that are automatically
 >>> created to go alongside the pictures are basically stand-ins for the
 >>> pictures, as far as metadata, wikilinks, tags and other "first-class
->>> wiki page" things are concerned.
+>>> wiki page" things are concerned. --s
 
 >>>> I can see why it's important to keep these models simple and have figured out
 >>>> that the viewer pages are stand-ins for the image. Just as a tought though. If 
@@ -661,6 +661,15 @@ My wishlist for the plugin would include:
 >>>> One thing to point out is that last time I tried pages can be members of 
 >>>> arbitrary numbers of trails/albums. You just get multiple rows of navigation, one
 >>>> for each trail. This doesn't quite work as it's hard to know which one to click.
+>>>>
+>>>> --k
+
+>>>>> Pages can be part of arbitrarily many trails, yes - that's a consequence of
+>>>>> how trails are created. If you can think of a better way to present a page
+>>>>> that's in more than one trail, I'd welcome ideas... I did originally have an
+>>>>> implementation where only one trail would generate links, but when I tried
+>>>>> it on some (rather artificial) overlapping trails, the result was more
+>>>>> confusing. --s
 
 >>> If there are to be viewer pages elsewhere in the wiki, I don't think
 >>> inheriting the picture's metadata is desired. Suppose you have a
@@ -672,10 +681,12 @@ My wishlist for the plugin would include:
 >>> times - once is enough, there's only one actual photo after all. So
 >>> I think the "main" viewer page should be the only one that has
 >>> the taglinks for people/alice, people/bob, places/exampleton.
+>>> --s
 
 >>>> The problem exposed by the tag page issue is very tricky. As you'd
 >>>> probably want the exif info, captions and titles to transfer. Just not 
 >>>> necessarily the tags.
+>>>> --k
 
 >>> My next question is, should the viewer page representing that
 >>> particular picture in its context of "pictures near Exampleton"
@@ -683,6 +694,7 @@ My wishlist for the plugin would include:
 >>> previous picture near Exampleton, regardless of whether it was
 >>> on an earlier or later visit) be a first-class wiki page
 >>> at all?
+>>> --s
 
 >>> * Does it make any sense to comment on "this picture in this
 >>>   context", if your wiki has comments, or should the only
@@ -714,7 +726,19 @@ My wishlist for the plugin would include:
 
 >>>> One thing to consider is the built in difference between the original and 
 >>>> the secondary inferred by the fact that the first is an `album` the second
->>>> an `inline`
+>>>> an `inline` --k
+
+>>>>> I had assumed that both the "original" album (the one where the picture
+>>>>> is physically located), and any other places you wanted to display it,
+>>>>> would be some other directive whose implementation includes a call to
+>>>>> `preprocess_inline`. `inline` on its own is not enough to create
+>>>>> viewer pages to display the pictures, regardless of whether you
+>>>>> want them to be one-per-picture or many-per-picture, and I'm not
+>>>>> going to wedge yet more functionality into that plugin :-)
+>>>>>
+>>>>> It might be a good idea for the thing that displays pictures not
+>>>>> physically located below that point to be a different directive, yes.
+>>>>> --s
 
 >>>> ### Single viewer 
 >>>> For my own usecase what you describe makes sense. I see the content of an inline object
@@ -730,12 +754,24 @@ My wishlist for the plugin would include:
 >>>> secondary viewers can be used as the title, caption etc might fit some contexts 
 >>>> better than others. Personally this is fine as I see these inline based albums as 
 >>>> compositions or views on existing content.
+>>>> --k
+>>>>
+>>>>> This is basically what I thought at first, but I realised while
+>>>>> writing my earlier comments that it would be necessary
+>>>>> to hack up [[plugins/trail]] fairly seriously to make it produce
+>>>>> a trail through things that are not first-class wiki pages, and
+>>>>> I'm not sure how much it would be necessary to subvert the
+>>>>> rendering pipeline to get the right parentlinks and so on. --s
 >>>>
 >>>> ###Multiple viewers alternative
 >>>> The alternative is having a page say in `/story/album.mdwn` with the following directive
 >>>> \[[!inline  pages="/01/IMGP6494 or /02/IMGP6601 or /04/IMGP6922" sort="title"  show="0" template="albumitem"]]
 >>>> that creates new fully fledged editable viewers for each image in `/story/album/'
 >>>> without tags being auto populated but backlinks to the original album viewer.
+>>>> --k
+>>>>
+>>>>> It can't *only* be an inline, because an inline wouldn't generate the
+>>>>> viewer pages, but I see what you mean. --s
 >>>> 
 >>>> This would make the viewers completely independent allowing for unique titles, captions and comments
 >>>> depending on context. Very useful when creating powerpoint like slideshows where you might need 
@@ -754,6 +790,10 @@ My wishlist for the plugin would include:
 >>>>
 >>>> --[[kjs]]
 
+I've added "--k" to some of your comments so other readers (possibly including
+my future self) can keep track of our conversation, I hope you don't mind :-)
+--s
+
 ----
 
 ## cbaines' CSS changes

Forum: Ask about RTL direction support
diff --git a/doc/forum/Right-to-left_support.mdwn b/doc/forum/Right-to-left_support.mdwn
new file mode 100644
index 0000000..7ca4f9a
--- /dev/null
+++ b/doc/forum/Right-to-left_support.mdwn
@@ -0,0 +1,15 @@
+Does ikiwiki support RTL languages? I read somewhere it does, but I don't see
+any mention of that here (or anywhere else... that info may be wrong).
+
+I'd like to add RTL support to my wiki, for text direction and maybe for the
+page layout too. Before I edit my CSS, page.tmpl and possibly Perl for
+automatic direction setting - does ikiwiki support this in any way?
+
+On my wiki (ikiwiki version from Debian 7 stable) everything is aligned to
+the left, and unicode RTL characters cannot change that - the .tmpl and
+css files would need to be changed, it seems.
+
+I will happily share my insights and code, if I manage to get anything
+useful to work :-)
+
+--[[fr33domlover]]

Multiple vs single album viewers
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index a8779e2..70fcf49 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -650,7 +650,18 @@ My wishlist for the plugin would include:
 >>> created to go alongside the pictures are basically stand-ins for the
 >>> pictures, as far as metadata, wikilinks, tags and other "first-class
 >>> wiki page" things are concerned.
->>>
+
+>>>> I can see why it's important to keep these models simple and have figured out
+>>>> that the viewer pages are stand-ins for the image. Just as a tought though. If 
+>>>> this relationship was made more explicit ie. the viewer pages *are the content*
+>>>> just initially generated from the image metadata with a link to the image. Then 
+>>>> the mental model would stay intact and more in line with how html and the 
+>>>> implementation works.
+>>>>
+>>>> One thing to point out is that last time I tried pages can be members of 
+>>>> arbitrary numbers of trails/albums. You just get multiple rows of navigation, one
+>>>> for each trail. This doesn't quite work as it's hard to know which one to click.
+
 >>> If there are to be viewer pages elsewhere in the wiki, I don't think
 >>> inheriting the picture's metadata is desired. Suppose you have a
 >>> picture of Alice and Bob in the album "holiday in Exampleton, 2010",
@@ -661,14 +672,18 @@ My wishlist for the plugin would include:
 >>> times - once is enough, there's only one actual photo after all. So
 >>> I think the "main" viewer page should be the only one that has
 >>> the taglinks for people/alice, people/bob, places/exampleton.
->>>
+
+>>>> The problem exposed by the tag page issue is very tricky. As you'd
+>>>> probably want the exif info, captions and titles to transfer. Just not 
+>>>> necessarily the tags.
+
 >>> My next question is, should the viewer page representing that
 >>> particular picture in its context of "pictures near Exampleton"
 >>> (i.e. its "next" and "previous" links go to the next and
 >>> previous picture near Exampleton, regardless of whether it was
 >>> on an earlier or later visit) be a first-class wiki page
 >>> at all?
->>>
+
 >>> * Does it make any sense to comment on "this picture in this
 >>>   context", if your wiki has comments, or should the only
 >>>   place you can comment on it be its "main" viewer page?
@@ -697,6 +712,48 @@ My wishlist for the plugin would include:
 >>> and one of the side-effects of the albumviewer directive should be to
 >>> replace [[plugins/comments]] with a link to the original? --s
 
+>>>> One thing to consider is the built in difference between the original and 
+>>>> the secondary inferred by the fact that the first is an `album` the second
+>>>> an `inline`
+
+>>>> ### Single viewer 
+>>>> For my own usecase what you describe makes sense. I see the content of an inline object
+>>>> (struggling a bit with what terms to user here) as a particular composition of
+>>>> viewers. Perhaps comments should only be possible on the page with the inline rather 
+>>>> than the secondary viewer pages as the inline page not the image viewer is 
+>>>> the first-class page in this scenario? The inline page would also be the page you tag 
+>>>> etc. to make it show up in various contexts such as the tag page.
+>>>>
+>>>> With the thinking outlined above I'd say that the secondary viewer should be a 
+>>>> non editable clone of the original viewer without any source. Just html output with 
+>>>> backlinks to the original page. This means that there are limitations to how these 
+>>>> secondary viewers can be used as the title, caption etc might fit some contexts 
+>>>> better than others. Personally this is fine as I see these inline based albums as 
+>>>> compositions or views on existing content.
+>>>>
+>>>> ###Multiple viewers alternative
+>>>> The alternative is having a page say in `/story/album.mdwn` with the following directive
+>>>> \[[!inline  pages="/01/IMGP6494 or /02/IMGP6601 or /04/IMGP6922" sort="title"  show="0" template="albumitem"]]
+>>>> that creates new fully fledged editable viewers for each image in `/story/album/'
+>>>> without tags being auto populated but backlinks to the original album viewer.
+>>>> 
+>>>> This would make the viewers completely independent allowing for unique titles, captions and comments
+>>>> depending on context. Very useful when creating powerpoint like slideshows where you might need 
+>>>> different captions depending on the context. In your example wiki with photos from gigs this would allow 
+>>>> a page with an album inline about stage lighting with a selections of images and captions that highlight
+>>>> relevant things in the image as well as a separate inline album page, with some of the same images, 
+>>>> about drumming styles and posture/grip of drummers.
+>>>>
+>>>> I started writing all this supporting your single page case but looking at it now from my limited
+>>>> understanding of how ikiwiki works it seems the multiple viewers option is conceptually cleaner 
+>>>> and more flexible. It relies on three things:
+
+>>>> * A mental model where the viewer page is the content not the image
+>>>> * That tags aren't automatically transferred from the original context. This doesn't seem that critical however.
+>>>> * Backlinks to the other places the image is used.
+>>>>
+>>>> --[[kjs]]
+
 ----
 
 ## cbaines' CSS changes

diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 4d1b495..376f81b 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -48,6 +48,8 @@ gnomes will convert them to css files..)
   templates.
   [[!meta stylesheet="bma"]]
 
+* ** http://blog.lastlog.de/, contributed by joachim schiele; please feel free to copy.
+
 * **[blankoblues.css][1]**, contributed by [[Blanko]]. Can be seen on [Blankoblues Demo][2]. Local.css and templates available [here][3].
 
 * **[contraste.css][4]**, contributed by [[Blanko]]. Can be seen on [Contraste Demo][5]. Local.css and templates available [here][6].

Answer: using the transient plugin
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index b37b3c9..fc0b5c0 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -43,6 +43,11 @@ won't be offended if you correct stuff you consider awkward):
 > > > `$srcdir` hides a page of the same name in an underlay). I thought
 > > > this implementation did the same when not committing? --[[smcv]]
 >
+> > > > I did not realize how easy it was to use the [[plugins/transient]]
+> > > > plugin! I [[took it into
+> > > > account|https://github.com/paternal/ikiwiki/commit/492a22ac75f8b41a427a98c44525b01a6fd181b5]].
+> > > > -- [[Louis|spalax]]
+>
 > I'd personally do the conditional in gencalendaryear more like:
 >
 > [[!format perl """

explain why that default
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index b350dcd..b37b3c9 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -34,7 +34,8 @@ won't be offended if you correct stuff you consider awkward):
 > > > `tag_autocreate_commit` exists because when tag autocreation
 > > > was introduced, they were always in the `$srcdir` and committed.
 > > > I changed it so that it was possible to put them in the [[plugins/transient]]
-> > > underlay and not commit them.
+> > > underlay and not commit them. It defaults to 1 to preserve existing
+> > > functionality.
 > > >
 > > > When automatic tag pages (or autoindex pages) are not committed, they
 > > > go in the transient underlay, which means they can't cause conflicts:

the transient underlay is good, use it :-)
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index 26c13aa..b350dcd 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -31,6 +31,17 @@ won't be offended if you correct stuff you consider awkward):
 > > the same name has been created. This would result in a conflict. The
 > > `calendar_autocreate_commit` prevents this.
 >
+> > > `tag_autocreate_commit` exists because when tag autocreation
+> > > was introduced, they were always in the `$srcdir` and committed.
+> > > I changed it so that it was possible to put them in the [[plugins/transient]]
+> > > underlay and not commit them.
+> > >
+> > > When automatic tag pages (or autoindex pages) are not committed, they
+> > > go in the transient underlay, which means they can't cause conflicts:
+> > > independent page creation will simply mask them (a page in the
+> > > `$srcdir` hides a page of the same name in an underlay). I thought
+> > > this implementation did the same when not committing? --[[smcv]]
+>
 > I'd personally do the conditional in gencalendaryear more like:
 >
 > [[!format perl """

idea
diff --git a/doc/todo/per-page_comment_control.mdwn b/doc/todo/per-page_comment_control.mdwn
new file mode 100644
index 0000000..69937d7
--- /dev/null
+++ b/doc/todo/per-page_comment_control.mdwn
@@ -0,0 +1,31 @@
+It might be nice to be able to control [[plugins/comments]] by inserting
+directives in individual pages:
+
+* disable comments where they would normally be enabled, e.g. for a blog
+  post you know is going to cause flamey responses (`\[[!closecomments]]`
+  to reject new comments but display old ones, `\[[!nocomments]]` to
+  hide comments too?)
+
+* direct comments to a different wiki page or an off-site URL,
+  e.g. if you have mentioned/posted something in two places
+  and you want to collect all the comments together
+  (maybe `\[[!commenton page=other/page]]`,
+  `\[[!commenton url="http://newsblog.example.com/the-next-big-thing"]]`?)
+
+* (maybe) enable comments where they would not normally be enabled?
+  (I'm unsure about this one, it would need to be under some level of
+  admin control - maybe a new pagespec for pages where comments are
+  disabled by default but may be enabled by directives)
+
+The use that got me thinking about this is that if the
+[[plugins/contrib/album]] plugin evolves to be able to have the same
+picture appear in more than one trail as kjs requested, all except the
+"original" (defined as the page to which the picture was attached) should
+probably either disable comments, or direct comments to the "original".
+
+I don't plan to work on this myself unless I find that I need it
+(for album or otherwise).
+
+--[[smcv]]
+
+[[!tag wishlist]]

Comment on forum item, trail link appearance
diff --git a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
index 81352db..decaaa1 100644
--- a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
+++ b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
@@ -35,3 +35,13 @@ Thanks in advance!
 >> has a special case for trails, because the tabs and the trail
 >> links would overlap otherwise - you might have to remove
 >> that special case. --[[smcv]]
+
+>>> Thanks, I'll try that. But I've been using those trails in the last
+>>> several hours and I'm beginning to get used to the current
+>>> layout. Maybe I'll just keep it :-)
+>>>
+>>> (Anyway the way trail links look on my wiki is valid, it's exactly
+>>> like on your link, only with different colors. I suppose it's
+>>> just a cosmetic issue then)
+>>>
+>>> --[[fr33domlover]]

belatedly respond to kjs
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index dd8c359..a8779e2 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -641,6 +641,61 @@ My wishlist for the plugin would include:
 > For the third, you can get the same practical effect using an inline
 > as documented in the main page. --[[smcv]]
 >> The downside to current behaviour is that clicking an inlined thumbnail will take you to the original album context. Previous/Next image will not match the thumbnails in the inline but the thumbnails in the album. This is a bit confusing for users and prevents using the image in multiple contexts without duplicating the image. To achieve what I'm looking for there would have to be several AlbumViewer pages for a single image. --kjs
+>>
+>>> Hmm, OK. That breaks the "one picture : one page" mental model,
+>>> unfortunately. The pictures themselves can't be first-class wiki pages (see
+>>> lengthy design discussions with Joey above) because they aren't something
+>>> that produces HTML, and don't have human-readable text source code.
+>>> In the current (album5) design, the viewer pages that are automatically
+>>> created to go alongside the pictures are basically stand-ins for the
+>>> pictures, as far as metadata, wikilinks, tags and other "first-class
+>>> wiki page" things are concerned.
+>>>
+>>> If there are to be viewer pages elsewhere in the wiki, I don't think
+>>> inheriting the picture's metadata is desired. Suppose you have a
+>>> picture of Alice and Bob in the album "holiday in Exampleton, 2010",
+>>> and it is tagged people/alice, people/bob and places/exampleton; the
+>>> other contexts it appears in might include "pictures of Alice" and
+>>> "pictures near Exampleton". If you look at the tag page for
+>>> places/exampleton, I doubt you want to see that photo listed three
+>>> times - once is enough, there's only one actual photo after all. So
+>>> I think the "main" viewer page should be the only one that has
+>>> the taglinks for people/alice, people/bob, places/exampleton.
+>>>
+>>> My next question is, should the viewer page representing that
+>>> particular picture in its context of "pictures near Exampleton"
+>>> (i.e. its "next" and "previous" links go to the next and
+>>> previous picture near Exampleton, regardless of whether it was
+>>> on an earlier or later visit) be a first-class wiki page
+>>> at all?
+>>>
+>>> * Does it make any sense to comment on "this picture in this
+>>>   context", if your wiki has comments, or should the only
+>>>   place you can comment on it be its "main" viewer page?
+>>> * Is there any need for it to be possible to make a wikilink
+>>>   to that particular picture in that particular context,
+>>>   or does it only need wikilinks "to the picture" (which,
+>>>   as an implementation detail, really go to its "main" viewer
+>>>   page)?
+>>> * Can the picture in that particular context have tags
+>>>   that are orthogonal to the tags its "main" viewer page has?
+>>> * ... and so on for various wiki features
+>>>
+>>> It sound as though the answer might ideally be that this secondary
+>>> viewer page doesn't need to be a first-class wiki page at all,
+>>> only a HTML output... except that the trail plugin works in terms
+>>> of next and previous first-class wiki pages, not next and
+>>> previous HTML outputs, and the HTML-generation pipeline
+>>> is really aimed towards real pages.
+>>>
+>>> Perhaps the secondary viewer page should end up looking
+>>> something like this:
+>>>
+>>>     \[[!albumviewer original=holiday-in-exampleton-2010/img1234
+>>>       comment="To edit picture metadata, edit the original page instead"]]
+>>>
+>>> and one of the side-effects of the albumviewer directive should be to
+>>> replace [[plugins/comments]] with a link to the original? --s
 
 ----
 

respond; hide fixed bugs by default to reduce clutter
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index d8f55eb..dd8c359 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -62,6 +62,11 @@ i'm new to ikiwiki, apologies if this is dealt with elsewhere.  -brush
 
 ## design feedback from joeyh on an earlier version
 
+Not entirely relevant any more.
+[[!toggle id="old-design-feedback" text="show"]]
+[[!toggleable id="old-design-feedback" text="""
+[[!toggle id="old-design-feedback" text="hide"]]
+
 You had wanted my feedback on the design of this. I have not looked at the
 code or tried it yet, but here goes. --[[Joey]]	
 
@@ -260,6 +265,7 @@ code or tried it yet, but here goes. --[[Joey]]
 >> changed, and only update those viewers where it has. But the dependency
 >> type stuff is still very new, and not plugin friendly .. so only just
 >> possible, --[[Joey]] 
+"""]]
 
 ----
 
@@ -268,6 +274,10 @@ code or tried it yet, but here goes. --[[Joey]]
 '''I think the "special extension" design is a dead-end, but here's what
 happened when I tried to work out how it would work. --[[smcv]]'''
 
+[[!toggle id="special-extension-sketch" text="show"]]
+[[!toggleable id="special-extension-sketch" text="""
+[[!toggle id="special-extension-sketch" text="hide"]]
+
 Suppose that each viewer is a JPEG-or-GIF-or-something, with extension
 ".albumimage". We have a gallery "memes" with three images, badger,
 mushroom and snake.
@@ -408,10 +418,17 @@ Things that would be nice, and are probably possible:
 * some way to deep-link to memes/badger.jpg with a wikilink, without knowing a
   priori that it's secretly a JPEG (probably harder than it looks - you'd
   have to make a directive for it and it's probably not worth it)
+"""]]
 
 ----
 
-## bug: unable to vary thumbnail size
+## resolved bug reports
+
+[[!toggle id="fixed-bugs" text="show"]]
+[[!toggleable id="fixed-bugs" text="""
+[[!toggle id="fixed-bugs" text="hide"]]
+
+### bug: unable to vary thumbnail size
 
 Hi smcv, great plugin. I am an ikiwiki newbie but so far I've had success using your plugin.
 I've integrated the jquery masonry plugin into the albumitem template and it works great.
@@ -419,11 +436,11 @@ But is there a way to create thumnails of different sizes? I've passed thumnails
 and value to album directive and while it does create the new thumbnail sizes it doesn't use them,
 The 96x96 thumbnails still appear on the page no matter what I do. - jaime
 
-> [[KathrynAndersen]] fixed this, see below. --[[smcv]]
+> Fixed in album5 branch, thanks to [[KathrynAndersen]]. --[[smcv]]
 
 ----
 
-## failed installation
+### failed installation
 
 Hi, the plugin looks great, but I am probably too dumb to use it ;( here is what I did:
 created page gal.mdwn with just \[\[!album\]\] directive (no arguments) and subdirectory gal/ with images in form img_1234.jpg
@@ -471,7 +488,7 @@ Thanks Lukas
 
 ----
 
-## bug + patch: not all images shown on album page
+### bug + patch: not all images shown on album page
 
 Hi smcv, we spoke on irc the other day. Passed `show => "0"` on line 126 in album.pm to remove the limit on the thumbnails shown on the album page. Setting it on the album directive didn't work.
 
@@ -480,54 +497,25 @@ Hi smcv, we spoke on irc the other day. Passed `show => "0"` on line 126 in albu
 > That sounds like a correct solution. I'll fix that in my branch when I work on
 > this again. --[[smcv]]
 
+>> Fixed in `album5` branch --s
+
 ----
 
-## bug: thumbnailsize doesn't work
+### bug: thumbnailsize doesn't work
 
 As mentioned above by Jaime setting the thumbnailsize doesn't catch either. Or rather if I git push after changing the album directive the generated thumbnails (the image files) are the correct size as set in the directive. The html however uses the default thumbnailsize as hardcoded in album.pm and has broken thumbnails as it links to a file with the default size in the filename.
 
 > [[KathrynAndersen]] fixed this, see below. --[[smcv]]
 
+>> Fixed in `album5` branch --s
+
 Issuing `ikiwiki --rebuild` knocks the system into another gear where the thumbnails show up correctly but this is only due to the html being the same as above (linking to hardcoded thumbnailsize) but the generated thumbnail images are now matching the hardcoded size ignoring the thumbnailsize attribute on the album directive.
 
 For me this behaviour is way beyond my skills to sort out (I'm no coder). The albumplugin ikiwiki combo is very attractive to me and the plugin i soo close to working!
 
 --kjs
 
-----
-
-## wishlist + patch: make clicking on the large image go to the next
-
-I've changed the behavior of the "slideshow" to show the next image when clicking the large image as downloading a full resolution image is a rare use case in a gallery of this type imho. The large clicktarget means you are likely to unnecessarily download large files otherwise. I can't quite follow the template, album.pm flow so I can't figure out how to put a "download full resolution" link on the viewer page which would be my next step. To achieve the next link i added ` link => ($nextpage or $album),` around line 454 in `my $img`
-
---kjs
-
-> That seems reasonable. I'll consider that when I work on this
-> plugin again next. --[[smcv]]
-
-----
-
-## wishlist from kjs
-
-My wishlist for the plugin would include:
-
-- Reading exif info from the imagefile
-- ~~Keeping the full resolution image files out of version control~~ Solved this by simply creating a underlay for the images. Works out of the box for my non cgi workflow.
-- Being able to create new albums by tag or by manually picking images from other albums. Could be a simple comma separated list of viewer names, or even full urls, in the album directive.
-- A counter showing **current image/total number of images in album**. This would mean that you know how many images you have left to click through before you have seen all images in an album. This gives you enought info to decide weather to click through or go back/leave.
-
---kjs
-
-> I want the first two of those too, perhaps one day I'll get round to
-> implementing them.
->
-> For the third, you can get the same practical effect using an inline
-> as documented in the main page. --[[smcv]]
->> The downside to current behaviour is that clicking an inlined thumbnail will take you to the original album context. Previous/Next image will not match the thumbnails in the inline but the thumbnails in the album. This is a bit confusing for users and prevents using the image in multiple contexts without duplicating the image. To achieve what I'm looking for there would have to be several AlbumViewer pages for a single image. --kjs
-
-----
-
-## suggested fix for thumbnail size bug
+### suggested fix for thumbnail size bug
 
 I've tracked down the "always showing the 96x96 thumbnails" bug!
 
@@ -578,9 +566,11 @@ Here's a context-diff of my fix:
 >
 > --[[smcv]]
 
+>> Fixed in `album5` --s
+
 ----
 
-## bug: inability to show more than 10 items
+### bug: inability to show more than 10 items
 
 I've found another bug. The album plugin doesn't allow one to have more than 10 items in an album section. This is because it uses "inline" to display album sections, and the default for inline is to show only 10 items. So it only shows 10 items.
 
@@ -596,7 +586,65 @@ What would be good is if the album directive could have a "show" parameter which
 > although I don't know how useful it would be; if it isn't passed, the
 > default should be 0 (unlimited). --[[smcv]]
 
-## cbaines' branch
+>> Fixed in `album5` --s
+
+----
+
+### cbaines' commit to change default thumbnail size
+
+Regarding commit `Change the default thumbnail size`: as far as I
+understand it, `size => 96x96` is meant to set the image size to
+be as large as possible given these constraints: width ≤ 96px,
+height ≤ 96px, and the original aspect ratio is preserved. So I
+would hope that 96x96 doesn't distort the thumbnails. What distortion
+are you seeing, and which versions of Imagemagick and Perlmagick
+are you using?
+
+--[[smcv]]
+
+> I rebuilt the examples using both your album4 and album5 branches, and I only
+> see this in the album4 branch. So this is probably ok to ignore.
+> --[[cbaines]]
+>
+>> OK, I'll assume that was a duplicate of an earlier patch, probably the
+>> one from KathrynAndersen. --s
+
+"""]]
+
+----
+
+## wishlist + patch: make clicking on the large image go to the next
+
+I've changed the behavior of the "slideshow" to show the next image when clicking the large image as downloading a full resolution image is a rare use case in a gallery of this type imho. The large clicktarget means you are likely to unnecessarily download large files otherwise. I can't quite follow the template, album.pm flow so I can't figure out how to put a "download full resolution" link on the viewer page which would be my next step. To achieve the next link i added ` link => ($nextpage or $album),` around line 454 in `my $img`
+
+--kjs
+
+> That seems reasonable. I'll consider that when I work on this
+> plugin again next. --[[smcv]]
+
+----
+
+## wishlist from kjs
+
+My wishlist for the plugin would include:
+
+- Reading exif info from the imagefile
+- ~~Keeping the full resolution image files out of version control~~ Solved this by simply creating a underlay for the images. Works out of the box for my non cgi workflow.

(Diff truncated)
auto-* ambiguity: it's ok for me
diff --git a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
index 887d338..0673aa6 100644
--- a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
+++ b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
@@ -67,3 +67,8 @@ Shouldn't `ikiwiki-tag-test/raw/.ikiwiki/transient/tag.mdwn` and `ikiwiki-tag-te
 >>> happens first, happens" is at least easy to explain, and I consider
 >>> both autoindices and autotags to be time-saving conveniences rather
 >>> than something fundamental. --s
+
+>>>> i think a behavior that does the right thing when there is a right thing
+>>>> and *something* when there is ambiguity is ok for now; especially, it's
+>>>> not up to the autoindex branch to come up with a solution to the general
+>>>> problem. --[[chrysn]]

diff --git a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
index 1fc8080..887d338 100644
--- a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
+++ b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
@@ -47,3 +47,23 @@ Shouldn't `ikiwiki-tag-test/raw/.ikiwiki/transient/tag.mdwn` and `ikiwiki-tag-te
 >> is tagge `tags/project`. will that be an autoindex or an autotag?)
 >>
 >> --[[chrysn]]
+
+>>> That's a fair point. I think what happens is down to commit vs. refresh
+>>> timing.
+>>>
+>>> If pages tagged t/p/c, t/p/i and t/p are all created between one
+>>> refresh and the next, with none of those tag pages existing, I think the
+>>> answer is that they would all be autotags, because until t/p/c and
+>>> t/p/i are created, there's no reason to need t/p as an autoindex.
+>>>
+>>> If there were already pages tagged t/p/c and t/p/i at the previous
+>>> refresh, then t/p would already be an autoindex, and that's a
+>>> valid page, so autotagging wouldn't touch it.
+>>>
+>>> I can't see much reason to prefer one over the other; the ideal answer
+>>> is probably to have a tag-cloud *and* a list of child pages, but this
+>>> seems a weird enough thing to do that I'd be OK with a wiki user
+>>> having to disambiguate it themselves. "Whichever automatic process
+>>> happens first, happens" is at least easy to explain, and I consider
+>>> both autoindices and autotags to be time-saving conveniences rather
+>>> than something fundamental. --s

diff --git a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
index 0ff2842..81352db 100644
--- a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
+++ b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
@@ -23,3 +23,15 @@ Thanks in advance!
 > edit it and put it in the git repo to be used instead of the default one?
 >
 > --[[fr33domlover]]
+
+>> That's how I intended trails to look with actiontabs:
+>> <http://actiontabs.hosted.pseudorandom.co.uk/posts/second_post/> is
+>> another example.
+>>
+>> With the way the actiontabs theme works, if you want to move the
+>> trail bits down into the content area (white background in the
+>> unedited theme) you might have to alter both `page.tmpl`
+>> and the actiontabs CSS. You'll see that the actiontabs CSS
+>> has a special case for trails, because the tabs and the trail
+>> links would overlap otherwise - you might have to remove
+>> that special case. --[[smcv]]

Respond to smcv on the album discussion page
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index 58c0e64..d8f55eb 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -614,6 +614,14 @@ concatenates them: for instance, `/usr/share/ikiwiki/themes/actiontabs/style.css
 is the output of `cat doc/style.css themes/actiontabs/style.css`. So adding it
 to `doc/style.css` should be enough?
 
+> I don't think this is the case? Or at least, looking at the generated
+> stylesheet for the examples built using my branch, I would expect there to be
+> two copies of the album rules in the stylesheet [1], but there does not
+> appear to be. This could quite easily be a result of some mistake in my part
+> in not isolating the build though. --[[cbaines]]
+>
+> 1: <http://cbaines.net/projects/ikiwiki/album/dest/basic-actiontabs/style.css>
+
 Regarding commit `Change the default thumbnail size`: as far as I
 understand it, `size => 96x96` is meant to set the image size to
 be as large as possible given these constraints: width ≤ 96px,
@@ -623,3 +631,7 @@ are you seeing, and which versions of Imagemagick and Perlmagick
 are you using?
 
 --[[smcv]]
+
+> I rebuilt the examples using both your album4 and album5 branches, and I only
+> see this in the album4 branch. So this is probably ok to ignore.
+> --[[cbaines]]

Comment to myself :-)
diff --git a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
index f6d7ee2..0ff2842 100644
--- a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
+++ b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
@@ -17,3 +17,9 @@ can help me - it will be great.
 Thanks in advance!
 
 --[[fr33domlover]]
+
+> I looked at the file *page.tmpl* and it seems I may be able to change
+> the trail link location if I edit that file. Would it be a good/possible solution to
+> edit it and put it in the git repo to be used instead of the default one?
+>
+> --[[fr33domlover]]

Fix typos
diff --git a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
index 8c033ea..f6d7ee2 100644
--- a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
+++ b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
@@ -1,11 +1,11 @@
-I'm using the trail plugin with the actiontabs theme, and the prev/next buttons
+I'm using the trail plugin with the actiontabs theme, and the prev/next links
 seem to appear in a strange way on the page.
 
-I use modified CSS, but it changes just the colors and some font sizes, but
-nothing related to positions and trails.
+I use modified CSS, but it changes just the colors and some font sizes.
+Nothing related to positions and trails.
 
 Here's an example - the top prev/next links appear above the action tabs.
-Is this normal? I'm using the ikiwiki version from Debina 7 stable.
+Is this normal? I'm using the ikiwiki version from Debian 7 stable.
 
 - If you use OpenNIC: <http://www.partager.null/tools/systems/admin-guides/ssl/Preparing_the_Tools/>
 - If you don't (will work only until the IP changes): <http://85.65.55.38/tools/systems/admin-guides/ssl/Preparing_the_Tools/>

Forum: Ask about strange link appearance with trail and actiontabs
diff --git a/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
new file mode 100644
index 0000000..8c033ea
--- /dev/null
+++ b/doc/forum/Trail_plugin_links_with_Actiontabs_theme.mdwn
@@ -0,0 +1,19 @@
+I'm using the trail plugin with the actiontabs theme, and the prev/next buttons
+seem to appear in a strange way on the page.
+
+I use modified CSS, but it changes just the colors and some font sizes, but
+nothing related to positions and trails.
+
+Here's an example - the top prev/next links appear above the action tabs.
+Is this normal? I'm using the ikiwiki version from Debina 7 stable.
+
+- If you use OpenNIC: <http://www.partager.null/tools/systems/admin-guides/ssl/Preparing_the_Tools/>
+- If you don't (will work only until the IP changes): <http://85.65.55.38/tools/systems/admin-guides/ssl/Preparing_the_Tools/>
+
+I can look at the CSS and try to figure this out, but I don't know much CSS or
+how the trail plugin works. If anyone uses trails, especially with actiontabs, and
+can help me - it will be great.
+
+Thanks in advance!
+
+--[[fr33domlover]]

give link and example for possible autoindex conflicts
diff --git a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
index 225a601..1fc8080 100644
--- a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
+++ b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
@@ -40,4 +40,10 @@ Shouldn't `ikiwiki-tag-test/raw/.ikiwiki/transient/tag.mdwn` and `ikiwiki-tag-te
 >> to matter, and pages created by other plugins in a similar fashion as by
 >> autoindex will only be included the next time refresh gets called.
 >>
+>> *addendum:* i just found where i discussed the issue of fighting transient
+>> pages last, it was on [[todo/alias directive]]. the example cited there
+>> (conflicts with autotag) would probably work here as well. (imagine a
+>> `tags/project/completed` and a `tags/project/inprogress` exist, and a page
+>> is tagge `tags/project`. will that be an autoindex or an autotag?)
+>>
 >> --[[chrysn]]

comments on templatebody and phases
diff --git a/doc/bugs/template_creation_error.mdwn b/doc/bugs/template_creation_error.mdwn
index 98d1cf2..d3c0bcc 100644
--- a/doc/bugs/template_creation_error.mdwn
+++ b/doc/bugs/template_creation_error.mdwn
@@ -255,3 +255,10 @@ same logic as IkiWiki itself. I don't think that's serious. --[[smcv]]
 >>> is a start towards that; the docwiki builds successfully, but
 >>> the tests that use IkiWiki internals also need updating to
 >>> set `$phase = PHASE_RENDER` before they start preprocessing. --s
+
+>>>> reviewing those modifications, i think this is a good way to go. along
+>>>> with warning about pagespecs evaluated in scan phase, i think it should be
+>>>> an error to invoke scan in the render phase; that would mean that
+>>>> `readtemplate` needs to check whether it's invoked as a scan or not to
+>>>> decide whether to scan the template page, but would be generally more
+>>>> robust for future plugin writing. --[[chrysn]]

simple review for straightforward branch
diff --git a/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn b/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
index d0a8a6e..7e75486 100644
--- a/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
+++ b/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
@@ -19,3 +19,5 @@ My `ready/postform-no` branch also contains a trivial regression test for
 not the actual inlining of pages, but it's a start.
 
 --[[smcv]]
+
+>> this looks simple, straightforward and good to me --[[chrysn]]

suggestion on formatted times
diff --git a/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn b/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
index e88f0cc..73f04ad 100644
--- a/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
+++ b/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
@@ -70,3 +70,10 @@ Changes to the structure of `$pagestate{$registering_page}{edittemplate}{$pagesp
 >>> timestamp variables/objects, so I left the naming as it was.
 >>>
 >>> --[[smcv]]
+
+>>>> the ready/edittemplate branch looks good to me too. `formatted_time` and
+>>>> `html_time` probably don't hurt, but personally i'd not add either and
+>>>> instead expose displaytime as a directive, for otherwise migrating to
+>>>> html5 would leave old evaluations of displaytime around in the repository.
+>>>> (example template: `\[[!meta date="<TMPL_VAR time>"]]I wrote this post at
+>>>> \[[!displaytime "<TMPL_VAR time>"]]`). --[[chrysn]]

reviewed patch, suggesting minor addition
diff --git a/doc/todo/document_dependency_influences_in_code.mdwn b/doc/todo/document_dependency_influences_in_code.mdwn
index dd6cb81..4dfbb14 100644
--- a/doc/todo/document_dependency_influences_in_code.mdwn
+++ b/doc/todo/document_dependency_influences_in_code.mdwn
@@ -20,3 +20,9 @@ should count as static or dynamic, perhaps analogous to
 and linked from the `match_foo` section of [[plugins/write]]. I haven't
 written this myself because I'm somewhat stuck on the subtlety of what
 "indirectly influenced" means... --[[smcv]]
+
+>> the documentation looks correct to me, as far as i understand dependencies.
+>> the documentation on `influences_static` could add a "Static influences are
+>> what make `pagespec_match_list` more efficient than repeated
+>> `pagespec_match_list`." to give an idea of why it is there in the first
+>> place. --[[chrysn]]

comment on autoindex branch
diff --git a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
index b0d88ec..225a601 100644
--- a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
+++ b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
@@ -31,3 +31,13 @@ Shouldn't `ikiwiki-tag-test/raw/.ikiwiki/transient/tag.mdwn` and `ikiwiki-tag-te
 > git repositories any more? My `autoindex-more` branch changes
 > the logic so it will do what you want in the `autoindex_commit => 0`
 > case, and amends the appropriate regression test. --[[smcv]]
+
+>> the autoindex-more-often branch looks good to me in general.
+>>
+>> i do have doubts about the 3ba2ef1a patch ("remove unnecessary special case
+>> for transient underlay"): now that we consider the complete transient
+>> directory as well, the sequence in which the refresh hooks are called starts
+>> to matter, and pages created by other plugins in a similar fashion as by
+>> autoindex will only be included the next time refresh gets called.
+>>
+>> --[[chrysn]]

Answer to smcv
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index 26466bc..26c13aa 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -23,6 +23,14 @@ won't be offended if you correct stuff you consider awkward):
 > them by default - I'd prefer to avoid cluttering git history with generated
 > pages. (Indeed, should the option even exist?)
 >
+> > I copied those options from the [[plugins/tag]] plugin: the
+> > `tag_autocreate_commit` option exists and default to 1.
+> >
+> > It should definitely exists: suppose a calendar page is created and not
+> > commited, and later, someone tries to push some changes where a page with
+> > the same name has been created. This would result in a conflict. The
+> > `calendar_autocreate_commit` prevents this.
+>
 > I'd personally do the conditional in gencalendaryear more like:
 >
 > [[!format perl """
@@ -31,6 +39,8 @@ return unless $config{calendar_autocreate};
 >
 > to reduce the indentation depth of the more interesting code.
 >
+> > [[I agree|https://github.com/paternal/ikiwiki/commit/7f18c1ce48630507b744fa56b83999e8ca684606]]
+>
 > The recursion to generate missing years:
 >
 > [[!format perl """
@@ -89,11 +99,25 @@ sub gencalendaryear {
 }
 """]]
 >
+>
+> > [[I agree|https://github.com/paternal/ikiwiki/commit/7f18c1ce48630507b744fa56b83999e8ca684606]]
+>
 > I'm not sure about generating missing years at all, though: if the
 > generation is entirely dynamic, and there were no posts at all during
 > a particular year (or month for that matter), shouldn't we just skip
 > the year/month? That seems to be what e.g. Wordpress does.
 >
+> > [[Done|https://github.com/paternal/ikiwiki/commit/59b46942e01b32138d056381249effbbaf773892]].
+> > I added an option `calendar_fill_gaps` to chose between the two
+> > alternatives (since skipping empty months and years would change the
+> > default behaviour of this plugin).
+> >
+> > I think the code is a bit ugly at some places. Perl is not one the the
+> > programming languages I am fluent into. Sorry.
+> >
+> > PS: Good idea, thought. I now have to implement a similar thing for
+> > [[plugins/contrib/jscalendar]].
+>
 > This piece of ikiwiki-calendar functionality is lost:
 >
 > [[!format diff """
@@ -108,6 +132,20 @@ sub gencalendaryear {
 > highlight for today (although I'm not sure how best to implement that -
 > perhaps a config option representing "I am going to use ikiwiki-calendar").
 >
+> > This is not lost. What ikiwiki-calendar do is simply: build the missing
+> > `archive/year/month` pages, and run `ikiwiki -refresh`. With my patch, the
+> > `ikiwiki -refresh` includes:
+> >
+> > - the build of missing `archive/year/month` pages;
+> > - highlighting the current day (this was already the case).
+> >
+> > So one can simply drop the `ikiwiki-calendar ...` for `ikiwiki --refresh
+> > ...` in cron to get the same result.
+> >
+> > I
+> > [[tried|https://github.com/paternal/ikiwiki/commit/7a92444e56fe023cea3b074dc5e6b5c4acdb6114]]
+> > to make the documentation clearer.
+>
 > [[!format diff """
 -\[[!template id=plugin name=calendar author="\[[ManojSrivastava]]"]]
 -\[[!tag type/widget]]
@@ -116,4 +154,9 @@ sub gencalendaryear {
 > Why did you remove that? It's useful information about the plugin
 > which I think ought to stay.
 >
+> > Oops! It was a mistake.
+> > [[Corrected|https://github.com/paternal/ikiwiki/commit/de9842ecc8914e11e73148dae78cd6909b535262]].
+>
 > --[[smcv]]
+>
+> > Thank you for this review. -- [[Louis|spalax]]

I keep getting this tag wrong
diff --git a/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn b/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
index 4469db4..d0a8a6e 100644
--- a/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
+++ b/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
@@ -1,4 +1,4 @@
-[[!tag patch user/smcv/ready]]
+[[!tag patch users/smcv/ready]]
 [[!template id=gitbranch branch=smcv/ready/postform-no
 author="[[Simon McVittie|smcv]]"
 browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/postform-no]]

add branch, with a smoke-test for inline
diff --git a/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn b/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
index 70deda2..4469db4 100644
--- a/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
+++ b/doc/bugs/__91____91____33__inline_postform__61__no__93____93___doesn__39__t_disable_it.mdwn
@@ -1,3 +1,8 @@
+[[!tag patch user/smcv/ready]]
+[[!template id=gitbranch branch=smcv/ready/postform-no
+author="[[Simon McVittie|smcv]]"
+browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/postform-no]]
+
 The [[ikiwiki/directive/inline]] directive generates a form if
 it has either rootpage, or postform with a "yes-like" value. This
 means that
@@ -9,4 +14,8 @@ mentioning rootpage there is useless).
 
 See also [[forum/How_to_disable_"Add_a_new_post_titled:"_submission_form?]].
 
+My `ready/postform-no` branch also contains a trivial regression test for
+`inline`. So far the only thing it really tests is that this bug was fixed,
+not the actual inlining of pages, but it's a start.
+
 --[[smcv]]

unit tests available
diff --git a/doc/bugs/svg_and_pdf_conversion_fails.mdwn b/doc/bugs/svg_and_pdf_conversion_fails.mdwn
index c159da5..ac18fe8 100644
--- a/doc/bugs/svg_and_pdf_conversion_fails.mdwn
+++ b/doc/bugs/svg_and_pdf_conversion_fails.mdwn
@@ -43,3 +43,16 @@ should be safe for inclusion.
 >> branch. In practice I think this means JPEG -> JPEG and everything
 >> else -> PNG, since JPEG is commonly used for photos and photo-like
 >> images that don't compress well under lossless compression. --[[smcv]]
+
+>>> i've added a unit test and tested it with the [[!debsid perlmagick]]
+>>> package, the [[!debsid graphicsmagick-libmagick-dev-compat]] package and
+>>> the experimental [[!debpts libimage-magick-perl]] package (where the
+>>> [[!debpts libmagickcore-6.q16-2-extra]] package is required too), in the
+>>> meantime filing [[!debbug 753770]]. (why is it that it sometime seems i
+>>> find more bugs in ikiwiki's dependencies than in itself when working with
+>>> it?)
+>>>
+>>> the unit test also checks for file removal when it is not created any more,
+>>> which works, so my biggest fear about the all-to-png change is unwarranted.
+>>> i'll have a look at that some time, but i think as things are, this is
+>>> ready now, please review again. --[[chrysn]]

review
diff --git a/doc/todo/Set_templates_for_whole_sections_of_the_site.mdwn b/doc/todo/Set_templates_for_whole_sections_of_the_site.mdwn
index 0dbda8a..1fa710f 100644
--- a/doc/todo/Set_templates_for_whole_sections_of_the_site.mdwn
+++ b/doc/todo/Set_templates_for_whole_sections_of_the_site.mdwn
@@ -39,3 +39,25 @@ I've written a new plugin, sectiontemplate, available in the `page_tmpl` branch
 >>>>> --[[KathrynAndersen]]
 
 Just a quick note that Kathryn's branch is ready.[[!template id=gitbranch branch=rubykat/pagetemplate author="[[KathrynAndersen]]"]][[!tag patch]] --[[Will]]
+
+> Review:
+>
+> The indentation seems odd. IkiWiki is mostly indented with hard tabs;
+> this seems to be a mixture of tabs and spaces, assuming 4 spaces per tab.
+>
+> [[!format perl """
+sub checkconfig () {
+...
+               ! defined IkiWiki::template_file($tmpl))
+"""]]
+>
+> I think `checkconfig` is too soon to rely on `template_file`
+> producing correct results? It looks in `%pagesources` which has not
+> yet been updated.
+>
+> If we had a "just before building" hook, that would be a good time
+> to emit warnings; or doing it once per run, on-demand, triggered
+> by the first call to the `templatefile` hook could work. Or the
+> hook could just silently ignore bad pagespecs?
+>
+> --[[smcv]]

more thoughts about evaluating pagespecs "too soon"
diff --git a/doc/bugs/conditional_preprocess_during_scan.mdwn b/doc/bugs/conditional_preprocess_during_scan.mdwn
index 1ba1423..739be82 100644
--- a/doc/bugs/conditional_preprocess_during_scan.mdwn
+++ b/doc/bugs/conditional_preprocess_during_scan.mdwn
@@ -55,3 +55,58 @@ reprocessed is done so in the same conditions as the original call.
 >> with vicious conditional dependency circles that would break/unbreak
 >> depending on which pass we are in. And I believe this is an intrinsic
 >> limitation of the system, which cannot be solved at all.
+
+>>> One way forward that I can think of for this issue is to
+>>> have a way to tell `\[[!if]]` which answer it should assume for
+>>> scanning purposes, so it would assume that answer when running
+>>> in the scan phase, and really evaluate the pagespec when running
+>>> in the render phase. For instance:
+>>>
+>>>     \[[!if test="enabled(foo)" scan_assume=yes then="""
+>>>     \[[!foo]]
+>>>     """]]
+>>>
+>>> could maybe scan \[[!foo]] unconditionally.
+>>>
+>>> This makes me wonder whether `\[[!if]]` was too general: by having
+>>> the full generality of pagespecs, it reduces its possible uses to
+>>> "those contexts where pagespecs work".
+>>>
+>>> Another possibility might be to have "complex" pagespecs and sort
+>>> orders (those whose correct answer requires scanning to have completed,
+>>> like `link()` and sorting by `meta(title)`) throw an error when used in
+>>> the scan phase, but simple pagespecs like `enabled()` and `glob()`, and
+>>> simple sort orders like `title` and `path`, could continue to work?
+>>> My `wip-too-soon` work-in-progress branch is heading in this direction,
+>>> although it currently makes `pagespec_match` fail completely and does
+>>> not even allow "simple" pagespecs and sort orders.
+>>>
+>>> At the moment, if a pagespec cannot be evaluated, `\[[!if]]` will
+>>> produce neither the `then` clause nor the `else` clause. This could
+>>> get pretty confusing if it is run during the scan phase and produces
+>>> an error, then run during the render phase and succeeds: if you had,
+>>> say,
+>>>
+>>>     \[[!if run_during_scan=1 test="link(foo)" then="""
+>>>     there is a link to foo
+>>>     \[[!tag there_is_a_link_to_foo]]
+>>>     """ else="""
+>>>     there is no link to foo
+>>>     \[[!tag there_is_no_link_to_foo]]
+>>>     """]]
+>>>
+>>> then the resulting page would contain one of the snippets of text,
+>>> but its metadata would contain neither of the tags. Perhaps the plugin
+>>> would have to remember that it failed during the scan phase, so that
+>>> it could warn about the failure during the render phase instead of,
+>>> or in addition to, producing its normal output?
+>>>
+>>> Of the conditional-specific tests, `included()` and `destpage(glob)`
+>>> can never match during scan.
+>>>
+>>> Does anyone actually use `\[[!if]]` in ways that they would want to
+>>> be active during scan, other than an `enabled(foo)` test?
+>>> I'm increasingly tempted to add `\[[!ifenabled foo]]` to solve
+>>> that single case, and call that a solution to this bug...
+>>>
+>>> --[[smcv]]

potential user-annoyance issue
diff --git a/doc/bugs/notifyemail_fails_with_some_openid_providers.mdwn b/doc/bugs/notifyemail_fails_with_some_openid_providers.mdwn
index 9ff36b9..dd50166 100644
--- a/doc/bugs/notifyemail_fails_with_some_openid_providers.mdwn
+++ b/doc/bugs/notifyemail_fails_with_some_openid_providers.mdwn
@@ -67,3 +67,25 @@ Any other ideas? --[[anarcat]]
 > Note: it seems that my email *is* given by my OpenID provider, no idea why this is not working, but the fix proposed in my branch works. --[[anarcat]]
 
 >> Note: this is one of two patches i need to apply at every upgrade. The other being [[can__39__t_upload_a_simple_png_image:_prohibited_by_allowed__95__attachments___40__file_MIME_type_is_application__47__octet-stream...]]. --[[anarcat]]
+
+>>> Is there any sort of check that the owner of the given email address
+>>> wants to receive email from us, or way for the owner of that email
+>>> address to stop getting the emails?
+>>>
+>>> With passwordauth, if someone maliciously subscribes my email
+>>> address to high-traffic pages or something (by using it as the
+>>> email address of their wiki login), I can at least use
+>>> password-recovery to hijack their account and unsubscribe myself.
+>>> If they're signing in with an OpenID not associated with my
+>>> email address and then changing the email address in the userdb
+>>> to point to me, I don't think I can do that.
+>>>
+>>> With OpenID, I think we're just trusting that the OpenID provider
+>>> wouldn't give us an unverified email address, which also seems
+>>> a little unwise.
+>>>
+>>> It might be better to give ikiwiki a concept of verifying an
+>>> email address (the usual send-magic-token flow) and only be
+>>> willing to send notifications to a verified address?
+>>>
+>>> --[[smcv]]

semi-review; any chance of tests?
diff --git a/doc/bugs/svg_and_pdf_conversion_fails.mdwn b/doc/bugs/svg_and_pdf_conversion_fails.mdwn
index da241b4..c159da5 100644
--- a/doc/bugs/svg_and_pdf_conversion_fails.mdwn
+++ b/doc/bugs/svg_and_pdf_conversion_fails.mdwn
@@ -25,3 +25,21 @@ should be safe for inclusion.
 > meantime, i noticed that the desired effect doesn't happen when no explicit
 > size is set. as scalable graphics don't necessarily have a natural size
 > anyway, i don't consider that a showstopper. --[[chrysn]]
+
+>> This all looks good in principle, but I would like to do a more detailed
+>> review, and test it with "real ImageMagick" in case its behaviour differs
+>> from GraphicsMagick.
+>>
+>> An automated regression test for the desired behaviour in `t/` would
+>> be great. There are SVGs and PNGs in the docwiki already; there are no
+>> JPEGs or PDFs, but perhaps you could add a trivially small example
+>> of each to `t/`? Imitating `t/tag.t` or `t/trail.t`, and skipping the
+>> test if the required modules are missing like `t/podcast.t` does,
+>> seems like it would work best.
+>>
+>> I agree that everything not in an interoperable web format should be
+>> converted to PNG when it's scaled down, but yes, that's more likely
+>> to be a breaking change, so it seems best to do that as a separate
+>> branch. In practice I think this means JPEG -> JPEG and everything
+>> else -> PNG, since JPEG is commonly used for photos and photo-like
+>> images that don't compress well under lossless compression. --[[smcv]]

I think this is ready
diff --git a/doc/bugs/template_creation_error.mdwn b/doc/bugs/template_creation_error.mdwn
index aae75a3..98d1cf2 100644
--- a/doc/bugs/template_creation_error.mdwn
+++ b/doc/bugs/template_creation_error.mdwn
@@ -198,7 +198,7 @@ Please, let me know what to do to avoid this kind of error.
 
 [[!template id=gitbranch author="[[smcv]]" branch=smcv/ready/templatebody
   browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/templatebody]]
-[[!tag patch]]
+[[!tag patch users/smcv/ready]]
 Branch and directive renamed to `ready/templatebody` as chrysn suggested.
 It's on-by-default now (or will be if that branch is merged).
 Joey, any chance you could review this?

diff --git a/doc/bugs/editing_gitbranch_template_is_really_slow.mdwn b/doc/bugs/editing_gitbranch_template_is_really_slow.mdwn
index 057a50f..c7d0ffb 100644
--- a/doc/bugs/editing_gitbranch_template_is_really_slow.mdwn
+++ b/doc/bugs/editing_gitbranch_template_is_really_slow.mdwn
@@ -33,7 +33,7 @@ of the problem is that it evaluates the pagespec
 > [[!template id=gitbranch branch=smcv/ready/perf
 author="[[Simon McVittie|smcv]]"
 browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/perf]]
-> [[!tag patch]]
+> [[!tag patch users/smcv/ready]]
 >
 > Previously, if a page like `plugins/trail` contained a conditional like
 >

diff --git a/doc/bugs/possible_to_post_comments_that_will_not_be_displayed.mdwn b/doc/bugs/possible_to_post_comments_that_will_not_be_displayed.mdwn
index 488fa00..bb6cd17 100644
--- a/doc/bugs/possible_to_post_comments_that_will_not_be_displayed.mdwn
+++ b/doc/bugs/possible_to_post_comments_that_will_not_be_displayed.mdwn
@@ -1,6 +1,6 @@
 [[!template id=gitbranch branch=smcv/ready/comments author="[[smcv]]"
 browse="http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/comments"]]
-[[!tag patch]]
+[[!tag patch users/smcv/ready]]
 
 The ability to post comments depends on several factors:
 

review desired
diff --git a/doc/todo/document_dependency_influences_in_code.mdwn b/doc/todo/document_dependency_influences_in_code.mdwn
index 18afb3d..dd6cb81 100644
--- a/doc/todo/document_dependency_influences_in_code.mdwn
+++ b/doc/todo/document_dependency_influences_in_code.mdwn
@@ -1,6 +1,6 @@
 [[!template id=gitbranch branch=smcv/ready/document-success-reason author="[[smcv]]"
 browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/document-success-reason]]
-[[!tag patch]]
+[[!tag patch users/smcv/ready]]
 
 Whenever I look at dependency calculation, for instance to solve
 [[bugs/editing gitbranch template is really slow]], it takes me a while to

yes please
diff --git a/doc/todo/upload__95__figure.mdwn b/doc/todo/upload__95__figure.mdwn
index 52034c2..d8dd659 100644
--- a/doc/todo/upload__95__figure.mdwn
+++ b/doc/todo/upload__95__figure.mdwn
@@ -8,3 +8,13 @@ Unfortunately, Github shows [[raw code|https://github.com/paternal/ikiwiki/blob/
 
 --[[Louis|spalax]]
 
+> Unfortunately SVG can contain embedded JavaScript, so anyone who can
+> upload arbitrary SVG to this wiki can execute JavaScript in its security
+> context, leading to stealing login cookies and other badness. GitHub
+> won't display arbitrary user-supplied SVG for the same reasons.
+>
+> I've seen various attempts to sanitize SVG via a whitelist, but it's
+> just too large a specification to be confident that you're right, IMO.
+>
+> This particular SVG [[looks good to me|users/smcv/ready]] and I've
+> mirrored it in my own git repo. --[[smcv]]

review
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index 6cb15df..26466bc 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -14,3 +14,106 @@ won't be offended if you correct stuff you consider awkward):
 [[!template  id=gitbranch branch=spalax/calendar-autocreate browse="https://github.com/paternal/ikiwiki/tree/calendar-autocreate" author="[[Louis|spalax]]"]]
 
 --[[Louis|spalax]]
+
+> An attempt at a review (although note that I don't have commit access,
+> so my opinion is not final):
+>
+> Should `calendar_autocreate_commit` really default to 1? I would personally
+> expect that any new features that synthesize new pages should not commit
+> them by default - I'd prefer to avoid cluttering git history with generated
+> pages. (Indeed, should the option even exist?)
+>
+> I'd personally do the conditional in gencalendaryear more like:
+>
+> [[!format perl """
+return unless $config{calendar_autocreate};
+"""]]
+>
+> to reduce the indentation depth of the more interesting code.
+>
+> The recursion to generate missing years:
+>
+> [[!format perl """
+if (not exists $wikistate{calendar}{minyear}) {
+        $wikistate{calendar}{minyear} = $year;
+} elsif ($wikistate{calendar}{minyear} > $year) {
+        gencalendaryear($year + 1);
+        $wikistate{calendar}{minyear} -= 1;
+}
+"""]]
+>
+> does seem to be correct on closer examination, but it took me a while
+> to work out that it would actually do the right thing by recursing:
+>
+> * generate 2005
+>   * recurse to generate 2006
+>     * recurse to generate 2007
+>       * recurse to generate 2008
+>         * recurse to generate 2009
+>           * recurse to try to generate 2010 (no effect)
+>         * minyear = minyear - 1 = 2010 - 1 = 2009
+>       * minyear = minyear - 1 = 2009 - 1 = 2008
+>     * minyear = minyear - 1 = 2008 - 1 = 2007
+>   * minyear = minyear - 1 = 2007 - 1 = 2006
+> * minyear = minyear - 1 = 2006 - 1 = 2005
+>
+> I think it might be clearer (as well as less
+> recursion-happy) to use iteration:
+>
+> * generate 2005
+>   * recurse to generate 2006
+>   * ...
+>   * recurse to generate 2009
+> * minyear = 2005
+>
+> something like this:
+>
+> [[!format perl """
+sub gencalendaryear {
+        my $year = shift;
+        my %params = @_;
+        ...
+        # generate this year
+        ...
+        # Filling potential gaps in years [...] years 2006 to 2009.
+        return if $params{norecurse};
+        if (not exists $wikistate{calendar}{minyear}) {
+                $wikistate{calendar}{minyear} = $year;
+        } elsif ($wikistate{calendar}{minyear} > $year) {
+                foreach my $other ($year + 1 .. $wikistate{calendar}{minyear} - 1) {
+                        gencalendar($year, norecurse => 1);
+                }
+                $wikistate{calendar}{minyear} = $year;
+        }
+        # ... and the opposite for maxyear
+}
+"""]]
+>
+> I'm not sure about generating missing years at all, though: if the
+> generation is entirely dynamic, and there were no posts at all during
+> a particular year (or month for that matter), shouldn't we just skip
+> the year/month? That seems to be what e.g. Wordpress does.
+>
+> This piece of ikiwiki-calendar functionality is lost:
+>
+> [[!format diff """
+- ... It also refreshes the wiki, updating the calendars to
+-highlight the current day. This command is typically run at midnight from
+-cron.
+"""]]
+>
+> If I understand correctly, the highlight will be on the day at which
+> the wiki was last refreshed, which seems arbitrary and confusing.
+> If ikiwiki-calendar is not used, I'd say there should just not be a
+> highlight for today (although I'm not sure how best to implement that -
+> perhaps a config option representing "I am going to use ikiwiki-calendar").
+>
+> [[!format diff """
+-\[[!template id=plugin name=calendar author="\[[ManojSrivastava]]"]]
+-\[[!tag type/widget]]
+"""]]
+>
+> Why did you remove that? It's useful information about the plugin
+> which I think ought to stay.
+>
+> --[[smcv]]

ready
diff --git a/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn b/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
index b85f329..e88f0cc 100644
--- a/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
+++ b/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
@@ -50,7 +50,7 @@ Changes to the structure of `$pagestate{$registering_page}{edittemplate}{$pagesp
 >>> [[!template id=gitbranch branch=smcv/ready/edittemplate
   browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/edittemplate
   author="Jonathon Anderson, [[smcv]]"]]
->>> Here is a version of that branch that I would merge if I could.
+>>> Here is a version of that branch that I [[would merge|users/smcv/ready]] if I could.
 >>> Changes since Jonathon's version:
 >>>
 >>> * only generate a UUID if needed

correct tag
diff --git a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
index ba2092f..b0d88ec 100644
--- a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
+++ b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
@@ -6,7 +6,7 @@
 
 Shouldn't `ikiwiki-tag-test/raw/.ikiwiki/transient/tag.mdwn` and `ikiwiki-tag-test/rendered/tag/index.html` exist?
 
-[[!tag patch user/smcv/ready]]
+[[!tag patch users/smcv/ready]]
 [[!template id=gitbranch branch=smcv/ready/autoindex author=smcv
   browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/autoindex]]
 [[!template id=gitbranch branch=smcv/ready/autoindex-more-often author=smcv

add branch URLs, tag as ready
diff --git a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
index 7026088..ba2092f 100644
--- a/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
+++ b/doc/bugs/transient_autocreated_tagbase_is_not_transient_autoindexed.mdwn
@@ -6,9 +6,11 @@
 
 Shouldn't `ikiwiki-tag-test/raw/.ikiwiki/transient/tag.mdwn` and `ikiwiki-tag-test/rendered/tag/index.html` exist?
 
-[[!tag patch]]
-[[!template id=gitbranch branch=smcv/ready/autoindex author=smcv]]
-[[!template id=gitbranch branch=smcv/ready/autoindex-more-often author=smcv]]
+[[!tag patch user/smcv/ready]]
+[[!template id=gitbranch branch=smcv/ready/autoindex author=smcv
+  browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/autoindex]]
+[[!template id=gitbranch branch=smcv/ready/autoindex-more-often author=smcv
+  browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/autoindex-more-often]]
 
 > To have a starting point to (maybe) change this, my `ready/autoindex`
 > branch adds a regression test for the current behaviour, both with

rename to be more appropriate for my own branches
diff --git a/doc/users/smcv/ready.mdwn b/doc/users/smcv/ready.mdwn
index b100b37..ed8aa26 100644
--- a/doc/users/smcv/ready.mdwn
+++ b/doc/users/smcv/ready.mdwn
@@ -1,7 +1,10 @@
 A tag for patches that I would merge if I had commit access to ikiwiki,
 in the hope that it's a useful shortlist for committers to look at.
-They're mirrored in my git repository under the `ready/*` namespace.
+Two categories:
+
+* my own branches, in my git repository under the `ready/*` namespace
+* other people's branches, mirrored in my git repo in the same namespace
 
 [[!inline pages="(todo/* or bugs/*) and link(patch) and !link(bugs/done) and
-   !link(todo/done) and link(users/smcv/yesplease) and !*/Discussion"
+   !link(todo/done) and link(users/smcv/ready) and !*/Discussion"
    archive="yes"]]

update for rename of users/smcv/yesplease.mdwn to users/smcv/ready.mdwn
diff --git a/doc/bugs/linkmap_displays_underscore_escapes.mdwn b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
index 41ea070..14164d0 100644
--- a/doc/bugs/linkmap_displays_underscore_escapes.mdwn
+++ b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
@@ -17,7 +17,7 @@ the attached [[!taglink patch]] fixes this; from its commit message:
 
 the output will look much better (at least in my wikis) with the "[[bugs/pagetitle function does not respect meta titles]]" issue fixed.
 
-> [[Looks good to me|users/smcv/yesplease]].
+> [[Looks good to me|users/smcv/ready]].
 >
 > I don't think it's correct for `pagetitle()` to output `\[[!meta title]]`
 > though, as discussed on the linked bug: it appears in an assortment of

update for rename of users/smcv/yesplease.mdwn to users/smcv/ready.mdwn
diff --git a/doc/todo/support_linking_to_cgit.mdwn b/doc/todo/support_linking_to_cgit.mdwn
index ab6172a..ae7d23c 100644
--- a/doc/todo/support_linking_to_cgit.mdwn
+++ b/doc/todo/support_linking_to_cgit.mdwn
@@ -36,7 +36,7 @@ the substitution of `\[[file]]` in `diffurl` and `historyurl`?
 >>>> \[[file_less_escaped]], and I can't think of one.
 >>>>
 >>>> I don't have commit access to ikiwiki.info, but if I did,
->>>> [[I'd merge this|/users/smcv/yesplease]]. --[[smcv]]
+>>>> [[I'd merge this|/users/smcv/ready]]. --[[smcv]]
 
 >>>>> [[merged|done]] --[[Joey]]
 

update for rename of users/smcv/yesplease.mdwn to users/smcv/ready.mdwn
diff --git a/doc/bugs/preprocessing_loop_control_too_tight.mdwn b/doc/bugs/preprocessing_loop_control_too_tight.mdwn
index 807d6b7..7cf92af 100644
--- a/doc/bugs/preprocessing_loop_control_too_tight.mdwn
+++ b/doc/bugs/preprocessing_loop_control_too_tight.mdwn
@@ -18,6 +18,6 @@ index 75c9579..ad0f8b0 100644
 
 [[!tag patch]]
 
-> [[Seems reasonable|users/smcv/yesplease]] --smcv
+> [[Seems reasonable|users/smcv/ready]] --smcv
 
 >> [[done]] --[[Joey]]

update for rename of users/smcv/yesplease.mdwn to users/smcv/ready.mdwn
diff --git a/doc/todo/expose_html_language_and_direction.mdwn b/doc/todo/expose_html_language_and_direction.mdwn
index f321e4f..65032fa 100644
--- a/doc/todo/expose_html_language_and_direction.mdwn
+++ b/doc/todo/expose_html_language_and_direction.mdwn
@@ -9,7 +9,7 @@ This means:
 
 The [[patch]] is currently being used on http://addons.nvda-project.org and seems to work well. --[[mhameed]]
 
-> I don't have commit access, but it [[seems reasonable|/users/smcv/yesplease]].
+> I don't have commit access, but it [[seems reasonable|/users/smcv/ready]].
 > --[[smcv]]
 
 >> [[done]]] --[[Joey]]

rename users/smcv/yesplease.mdwn to users/smcv/ready.mdwn
diff --git a/doc/users/smcv/ready.mdwn b/doc/users/smcv/ready.mdwn
new file mode 100644
index 0000000..b100b37
--- /dev/null
+++ b/doc/users/smcv/ready.mdwn
@@ -0,0 +1,7 @@
+A tag for patches that I would merge if I had commit access to ikiwiki,
+in the hope that it's a useful shortlist for committers to look at.
+They're mirrored in my git repository under the `ready/*` namespace.
+
+[[!inline pages="(todo/* or bugs/*) and link(patch) and !link(bugs/done) and
+   !link(todo/done) and link(users/smcv/yesplease) and !*/Discussion"
+   archive="yes"]]
diff --git a/doc/users/smcv/yesplease.mdwn b/doc/users/smcv/yesplease.mdwn
deleted file mode 100644
index b100b37..0000000
--- a/doc/users/smcv/yesplease.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-A tag for patches that I would merge if I had commit access to ikiwiki,
-in the hope that it's a useful shortlist for committers to look at.
-They're mirrored in my git repository under the `ready/*` namespace.
-
-[[!inline pages="(todo/* or bugs/*) and link(patch) and !link(bugs/done) and
-   !link(todo/done) and link(users/smcv/yesplease) and !*/Discussion"
-   archive="yes"]]

update for rename of users/smcv/yesplease.mdwn to users/smcv/ready.mdwn
diff --git a/doc/users/smcv.mdwn b/doc/users/smcv.mdwn
index a4eb564..9835049 100644
--- a/doc/users/smcv.mdwn
+++ b/doc/users/smcv.mdwn
@@ -7,4 +7,4 @@ My repository containing ikiwiki branches:
 * gitweb: http://git.pseudorandom.co.uk/smcv/ikiwiki.git
 * anongit: git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git
 
-Recently tried to [[help with the review backlog|yesplease]].
+Recently tried to [[help with the review backlog|users/smcv/ready]].

positive review
diff --git a/doc/bugs/linkmap_displays_underscore_escapes.mdwn b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
index 75b9171..41ea070 100644
--- a/doc/bugs/linkmap_displays_underscore_escapes.mdwn
+++ b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
@@ -17,9 +17,7 @@ the attached [[!taglink patch]] fixes this; from its commit message:
 
 the output will look much better (at least in my wikis) with the "[[bugs/pagetitle function does not respect meta titles]]" issue fixed.
 
-> I agree that it's (likely to be) a bug to not use `pagetitle()`. I
-> haven't reviewed this particular implementation yet but I'll try to
-> do that soon.
+> [[Looks good to me|users/smcv/yesplease]].
 >
 > I don't think it's correct for `pagetitle()` to output `\[[!meta title]]`
 > though, as discussed on the linked bug: it appears in an assortment of

remove patch tag, the patch here was merged
diff --git a/doc/bugs/syslog_fails_with_non-ASCII_wikinames.mdwn b/doc/bugs/syslog_fails_with_non-ASCII_wikinames.mdwn
index b641f2d..0d40d23 100644
--- a/doc/bugs/syslog_fails_with_non-ASCII_wikinames.mdwn
+++ b/doc/bugs/syslog_fails_with_non-ASCII_wikinames.mdwn
@@ -18,10 +18,15 @@ Yet I am not sure how to fix that kind of problem in Perl... --[[anarcat]]
 > 
 >     Error: Wide character in syswrite at /usr/lib/perl/5.14/Sys/Syslog.pm line 485.
 > 
-> I have improved a little the error handling in log_message() so that we see *something* when syslog fails, see the branch documented above. I can also confirm that  reverting [[todo/syslog_should_show_wiki_name]] fixes the bug. Finally, I have a unit test that reproduces the problem in git, and a working [[!taglink patch]] for the bug, again in git.
+> I have improved a little the error handling in log_message() so that we see *something* when syslog fails, see the branch documented above. I can also confirm that  reverting [[todo/syslog_should_show_wiki_name]] fixes the bug. Finally, I have a unit test that reproduces the problem in git, and a working patch for the bug, again in git.
 > 
 > > One last note: I noticed that this problem also happens elsewhere in ikiwiki. For example, the [[plugins/notifyemail]] plugin will silently fail to send notifications if the pages contain unicode. The [[plugins/notifychanges]] plugin I am working on (in [[todo/option to send only the diff in notifyemail]]) seems to be working around the issue so far, but there's no telling which similar problem are out there.
 
->> [[I'd merge it|/users/smcv/yesplease]]. --[[smcv]]
+>> I'd merge it. --[[smcv]]
 
 >>> I've merged it, but I don't feel it fixes this bug. --[[Joey]]
+
+>>>> (I removed the patch tag to take it off the patches list.)
+>>>>
+>>>> What else is needed? Systematic classification of outputs into
+>>>> those that do and don't cope with Unicode? --[[smcv]]

Improvement of documentation of my plugins
- typos
- examples
- rendering
- explanation
- update
- etc.
diff --git a/doc/plugins/contrib/addtag.mdwn b/doc/plugins/contrib/addtag.mdwn
index ed57202..5b9461d 100644
--- a/doc/plugins/contrib/addtag.mdwn
+++ b/doc/plugins/contrib/addtag.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
 [[!template id=plugin name=addtag author="[[Louis|spalax]]"]]
 [[!tag type/widget]]
 
diff --git a/doc/plugins/contrib/created_in_future.mdwn b/doc/plugins/contrib/created_in_future.mdwn
index 09d2d52..95793e1 100644
--- a/doc/plugins/contrib/created_in_future.mdwn
+++ b/doc/plugins/contrib/created_in_future.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
 [[!template id=plugin name="created_in_future (deprecated)" author="[[Louis|spalax]]"]]
 
 # Created_in_future
diff --git a/doc/plugins/contrib/datetime_cmp.mdwn b/doc/plugins/contrib/datetime_cmp.mdwn
index 7508e0b..ba35b37 100644
--- a/doc/plugins/contrib/datetime_cmp.mdwn
+++ b/doc/plugins/contrib/datetime_cmp.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
 [[!template id=plugin name=datetime_cmp author="[[Louis|spalax]]"]]
 [[!tag type/pagespec]]
 
@@ -36,7 +37,7 @@ where:
     * `page`: other page (given in argument);
     * `now`: date or time of compilation;
     * `today`: same meaning as `now`.
-  * `(|_delta)`: used to add a time delta (to use comparisons such as *created at least two day after `some_page`*):
+  * `(|_delta)`: used to add a time delta (to use comparisons such as *created at least two days after `some_page`*):
     * *empty*: no delta;
     * `_delta`: delta (given in argument).
 
diff --git a/doc/plugins/contrib/jscalendar.mdwn b/doc/plugins/contrib/jscalendar.mdwn
index 794e4bd..8123b31 100644
--- a/doc/plugins/contrib/jscalendar.mdwn
+++ b/doc/plugins/contrib/jscalendar.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
 [[!template id=plugin name=jscalendar author="[[Louis|spalax]]"]]
 
 # Jscalendar
@@ -12,33 +13,37 @@ Here are some differences compared to this latter plugin.
   * No need to rebuild the page containing the calendar each time day changes, or
     a page (indexed by the calendar) is added, changed or deleted. This is
     particularly useful if you want to have this calendar in the sidebar.
-  * Handles the case where several pages appear the same day: a popup appear to let user choose the day he wants.
   * Smooth navigation among months.
-* Neutral
-  * Most of options are defined in Ikiwiki's setup files instead of the options
-    of the directive.
 * Cons
-  * As a consequence, every calendar of the wiki must index the same set of pages.
   * Javascript :( .
 
 ## Usage
 
-### Directive
+### Examples of directive
 
     \[[!jscalendar type="month" ]]
 
+    \[[!jscalendar type="month" archivebase="calendar"]]
+
+    \[[!jscalendar type="month" year=2014 month=08 pages="posts/* and !posts/*"]]
+
+    \[[!jscalendar type="month" year=-1 month=08]]
+
 ### Setup file
 
-It being javascript rather than markdown, most of the configuration must be done in the IkiWiki configuration file rather than in the directive
+This plugin uses the options used by the [[plugins/calendar]] plugin:
 
-    'archivebase' => "evenements/calendrier",
-    'archive_pagespec' => "evenements/liste/* and ! evenements/liste/*/*",
+    'archivebase' => "archive",
+    'archive_pagespec' => "posts/* and ! posts/*/*",
     'week_start_day' => 1,
     'month_link' => 1,
 
+The `archivebase` and `archive_pagespec` can be overloaded by the very same
+options of the directive.
+
 ## Example
 
-You can see this plugin in action on [[our website|http://www.gresille.org]]. To see what happens when several pages happens on the same day, check the 15th of March 2012.
+You can see this plugin in action on [[our website|http://www.gresille.org]].
 
 Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Jscalendar]]
 
diff --git a/doc/plugins/contrib/monthcalendar.mdwn b/doc/plugins/contrib/monthcalendar.mdwn
index 4944f3a..c21be0a 100644
--- a/doc/plugins/contrib/monthcalendar.mdwn
+++ b/doc/plugins/contrib/monthcalendar.mdwn
@@ -1,9 +1,12 @@
+[[!meta author="spalax"]]
 [[!template id=plugin name=monthcalendar author="[[Louis|spalax]]"]]
 
 # Monthcalendar
 
 This plugin displays a calendar, containing in each of its day the list of links of pages published on this day. It can be used, for example, to display archives of blog posts, or to announce events.
 
+The difference between this plugin and the [[plugins/calendar]] plugin is that the calendar displayed by this plugin is a big one, containing the full title of every page indexed in it.
+
 ## Usage
 
 ### Directive
@@ -16,6 +19,109 @@ By using the following line in template `calendarmonth.tmpl`, you can have `ikiw
 
     \[[!monthcalendar type="month" year="<TMPL_VAR YEAR>" month="<TMPL_VAR MONTH>" pages="<TMPL_VAR PAGESPEC>"]]
 
+## CSS
+
+Here is an example of CSS properly rendering the calendar produced by this
+plugin.
+[[!toggle id=css text="CSS"]]
+[[!toggleable id=css text="""
+    /* Calendar */
+    .monthcalendar
+    {
+        color:#aaa;
+        /* font-size:18pt; */
+        margin-top:1em;
+        margin-bottom:1em;
+    		width: 100%;
+    }
+    
+    .monthcalendar table,
+    .monthcalendar td,
+    .monthcalendar th
+    {
+    	border: 1px solid #ccc;
+    }
+    
+    #content .monthcalendar td
+    {
+        padding: 0;
+        position: relative;
+    }
+    
+    .monthcalendar td div
+    {
+        min-height: 10ex;
+        height: 100%;
+        position: relative;
+    }
+    
+    .monthcalendar th
+    {
+    	vertical-align: middle;
+    }
+    
+    .monthcalendar td ul
+    {
+        padding-left: 0.5em;
+        list-style: dot;
+        list-style-position: inside;
+        text-align: left;
+        font-size: 8pt;
+        position: relative;
+        z-index: 10;
+        font-weight: bold;
+    }
+    
+    table.monthcalendar
+    {
+    	table-layout: fixed;
+    }
+    
+    .monthcalendar .selflink
+    {
+        color:#444444;
+    }
+    
+    .monthcalendar-day-head {
+    	text-transform:capitalize;
+    }
+    
+    .monthcalendar-head {
+    	text-transform:capitalize;
+    }
+    
+    .monthcalendar-daynumber
+    {
+        float: left;
+        position: absolute;
+        display: block;
+        font-size: 7ex;
+        color: #ccc;
+        line-height: 100%;
+        z-index: 5;
+        padding-top: 0.3ex;
+        text-align: right;
+        width: 1.8em;
+    }
+    
+    /* List of pages */

(Diff truncated)
New plugin: poetry
diff --git a/doc/plugins/contrib/poetry.mdwn b/doc/plugins/contrib/poetry.mdwn
new file mode 100644
index 0000000..519975e
--- /dev/null
+++ b/doc/plugins/contrib/poetry.mdwn
@@ -0,0 +1,103 @@
+[[!template id=plugin name=poetry author="[[Louis|spalax]]"]]
+
+# Poetry
+
+The poetry plugin provides the [[ikiwiki/directive/poetry]] directive, used to
+render poetry (or songs).
+
+## Why?
+
+### Typography
+
+In regular text, there are two different meaning of a new line: a break between
+two paragraphs, and the word wrap.
+
+When rendering poetry, we need a third one: the carriage return between two
+verse lines. This one should be different from the word wrap carriage return,
+otherwise one will not be able to tell apart these two (generally, wrapped text
+is indented, whereas verse lines are not).
+
+### Markdown
+
+One could use carriage return (two white spaces at the end of a line) between
+verse lines, and paragraph break between stanzas, but:
+
+* adding white spaces at the end of lines is painful;
+* there is no easy way to render chorus (in a different way from verses).
+
+## Usage
+
+The directive takes only one argument `content`, containing the poetry to
+render. Carriage returns are respected.
+
+Chorus are lines with `> ` as a starting character.
+
+Lines starting with `) ` are consored/outdated/crossed out verses.
+
+[[!toggle id=example text="View example"]]
+[[!toggleable id=example text='''
+    \[[!poetry content="""
+    This is a verse
+    Made of several lines
+
+    > And here is the chorus
+    > La la la!
+    > A beautiful chorus
+
+    Another verse
+    A bit longer
+    Than the previous one
+
+    ) This one is deleted
+    ) Because I did not like it
+    """]]
+''']]
+
+
+## CSS
+
+This plugin is useless without some corresponding CSS. An example is given
+below.
+
+[[!toggle id=css text="CSS"]]
+[[!toggleable id=css text="""
+    .poetry {
+      padding-left: 1em;
+      border-left: 0.1em solid lightgray;
+      border-radius: 0.5em;
+    }
+    
+    .poetry .stanza {
+      padding-left: 1em;
+    }
+    
+    .poetry .paren {
+      font-style: italic;
+      font-size: smaller;
+      text-decoration: line-through;
+    }
+    
+    .poetry .paren:hover {
+      text-decoration: initial;
+    }
+    
+    .poetry .chorus {
+      margin-left: 0.1em;
+      padding-left: 2em;
+      border-left: 0.3em solid slategray;
+    }
+    
+    .poetry .line {
+      display: block;
+      text-indent: -1em;
+    }
+"""]]
+
+## Example
+
+This plugin is used to render songs on [this choir's
+website](http://barricades.int.eu.org/repertoire/bread_and_roses/).
+
+## Code
+
+Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Poetry]].

reply to smcv's comment
diff --git a/doc/bugs/linkmap_displays_underscore_escapes.mdwn b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
index abcbfb9..75b9171 100644
--- a/doc/bugs/linkmap_displays_underscore_escapes.mdwn
+++ b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
@@ -28,6 +28,9 @@ the output will look much better (at least in my wikis) with the "[[bugs/pagetit
 > better to give it a `show` parameter, like `\[[!map]]` has?
 > --[[smcv]]
 
+>> sounds good; i'll have a look at it the next time i touch the linkmap
+>> plugin. the patch at hand would be a starting point for that. --[[chrysn]]
+
 the patch is stored in [[the patch.pl]] as created by git-format-patch, and can
 be pulled from the abovementioned branch.
 

comment (not a review yet)
diff --git a/doc/bugs/linkmap_displays_underscore_escapes.mdwn b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
index 62cfb34..abcbfb9 100644
--- a/doc/bugs/linkmap_displays_underscore_escapes.mdwn
+++ b/doc/bugs/linkmap_displays_underscore_escapes.mdwn
@@ -17,6 +17,17 @@ the attached [[!taglink patch]] fixes this; from its commit message:
 
 the output will look much better (at least in my wikis) with the "[[bugs/pagetitle function does not respect meta titles]]" issue fixed.
 
+> I agree that it's (likely to be) a bug to not use `pagetitle()`. I
+> haven't reviewed this particular implementation yet but I'll try to
+> do that soon.
+>
+> I don't think it's correct for `pagetitle()` to output `\[[!meta title]]`
+> though, as discussed on the linked bug: it appears in an assortment of
+> contexts where the full formal title of the page seems inappropriate.
+> If you want linkmap to use `\[[!meta title]]`, I think it would be
+> better to give it a `show` parameter, like `\[[!map]]` has?
+> --[[smcv]]
+
 the patch is stored in [[the patch.pl]] as created by git-format-patch, and can
 be pulled from the abovementioned branch.
 

respond to smcv's comment
diff --git a/doc/bugs/pythonproxy-utf8_again.mdwn b/doc/bugs/pythonproxy-utf8_again.mdwn
index b5564d6..fa702a2 100644
--- a/doc/bugs/pythonproxy-utf8_again.mdwn
+++ b/doc/bugs/pythonproxy-utf8_again.mdwn
@@ -18,17 +18,17 @@ patch.
 > update 2014-06-29: the problem persists, but i found it is not trivial to
 > reproduce. to demonstrate, use this test plugin:
 >
->    #!/usr/bin/env python
->    # -*- coding: utf-8 -*-
->    
->    from proxy import IkiWikiProcedureProxy
->    
->    def preprocess(self, proxy, *args):
->        return repr(self.rpc('pagetype', 'schön'))
->    
->    proxy = IkiWikiProcedureProxy(__name__)
->    proxy.hook('preprocess', preprocess, id='testdirective')
->    proxy.run()
+>     #!/usr/bin/env python
+>     # -*- coding: utf-8 -*-
+>     
+>     from proxy import IkiWikiProcedureProxy
+>     
+>     def preprocess(self, proxy, *args):
+>         return repr(self.rpc('pagetype', 'schön'))
+>     
+>     proxy = IkiWikiProcedureProxy(__name__)
+>     proxy.hook('preprocess', preprocess, id='testdirective')
+>     proxy.run()
 >
 > note that when the 'schön' is stored in a variable, the exception changes --
 > it seems to me that the issue is related to the way exceptions are encoded.
@@ -46,3 +46,9 @@ patch.
 >>
 >> Other than that it looks good to me. I like the use of `repr` in debug
 >> messages. --[[smcv]]
+
+>>> afaict, encode is fine there -- the relevant methods in python2 are
+>>> `unicode.encode` which gives a `str`, and `str.decode` which usually gives
+>>> a `unicode`. (i'd happily ditch python2 and port all plugins to python3,
+>>> where this is all easier, but my [[todo/vCard rendering]] still uses an
+>>> ancient module.) --[[chrysn]]

repo links and test site for trail depends bug
diff --git a/doc/plugins/trail/discussion.mdwn b/doc/plugins/trail/discussion.mdwn
index d37e5f7..731b8c7 100644
--- a/doc/plugins/trail/discussion.mdwn
+++ b/doc/plugins/trail/discussion.mdwn
@@ -152,3 +152,21 @@ I have removed a similar comment from the album discussion.
 > tend to be more personal/private than typical wikis, so you don't
 > necessarily want to link the real thing - that's why my album demos
 > tend to use dummy data). --[[smcv]]
+
+>> I was expecting the same depends pattern you describe.
+>> My photo wikis are mostly public so I've set up a publicly accessible repo 
+>> (update-server-info type, git clone the first link below), a low-res copy of 
+>> the underlay and a quick sanitized setup file.
+
+>>* [[http://www.kalleswork.net/downloads/stockholm/.git]]
+>>* [[http://www.kalleswork.net/downloads/stockholm.underlay.tar.gz]]
+>>* [[http://www.kalleswork.net/downloads/stockholm.setup]]
+
+>> It might be a bit unwieldly and the site itself at [[http://stockholm.kalleswork.net]] 
+>> uses a few tweaks to the album templates and css, but I don't currently 
+>> have access to the machine where I setup a cleaner debug wiki to test. 
+>> (travelling atm). The images will likely be distorted due to the up scaling 
+>> bug in the [[img]] plugin but other than that it should work.
+
+>> Let me know if you need anything else. Would be great to hear it works
+>> as expected for everyone else ;) --[[kjs]]

diff --git a/doc/theme_market.mdwn b/doc/theme_market.mdwn
index 701e616..4ac41cb 100644
--- a/doc/theme_market.mdwn
+++ b/doc/theme_market.mdwn
@@ -12,4 +12,4 @@ Feel free to add your own [[theme|themes]] here, but first consider writing a si
 
  * **[[Bootstrap theme|http://anonscm.debian.org/gitweb/?p=users/jak/website.git;a=summary]]**, contributed by [[JAK LINUX|http://jak-linux.org/about/]], based on [[Twitter Bootstrap|http://twitter.github.com/bootstrap/]]
 
- * **[[Bootstrap 3|https://github.com/ramseydsilva/ikiwiki-bootstrap-theme]]**, contributed by [[Ramsey D'silva|http://ramseydsilva.com]], based on [[Twitter Bootstrap 3|http://getbootstrap.com]]
+ * **[[Bootstrap 3|https://github.com/ramseydsilva/ikiwiki-bootstrap-theme]]**, contributed by [[ramsey]], based on [[Twitter Bootstrap 3|http://getbootstrap.com]]

diff --git a/doc/theme_market.mdwn b/doc/theme_market.mdwn
index e9bdaa0..701e616 100644
--- a/doc/theme_market.mdwn
+++ b/doc/theme_market.mdwn
@@ -11,3 +11,5 @@ Feel free to add your own [[theme|themes]] here, but first consider writing a si
  * **[[Night city theme|http://anarcat.ath.cx/night_city/README/]]**, contributed by [[anarcat]], see an example [[on his homepage|http://anarcat.ath.cx/]]
 
  * **[[Bootstrap theme|http://anonscm.debian.org/gitweb/?p=users/jak/website.git;a=summary]]**, contributed by [[JAK LINUX|http://jak-linux.org/about/]], based on [[Twitter Bootstrap|http://twitter.github.com/bootstrap/]]
+
+ * **[[Bootstrap 3|https://github.com/ramseydsilva/ikiwiki-bootstrap-theme]]**, contributed by [[Ramsey D'silva|http://ramseydsilva.com]], based on [[Twitter Bootstrap 3|http://getbootstrap.com]]