A wiki in a box
MPL-2.0 License
Published by sbrl over 5 years ago
I've been rather busy with my University summer project so I've left this a bit longer than I intended to, but this is basically a minor iteration on the last release that updates the documentation. If there are no glaring issues, I intend to release v0.19 by the end of the week.
Published by sbrl over 5 years ago
It's time for another beta release! While this release doesn't have all that much in the way of new features, there's certainly been quite a lot of internal refactoring.
email
and emailAddress
fields into the latter in the user table (#167)parser-parsedown
and page-edit
for an example.
index.php
via __halt_compiler();
parser-parsedown
and page-edit
for examples on how to use it.delete_recursive()
function.peppermint.json
is blocked correctly (coming soon as a one-time check to pre-existing wikis)firstrun_complete
setting has been added that's automatically set to true if Pepperminty Wiki does a settings upgrademinify_pageindex
setting, which defaults to true
and causes the page index to be minified when saved. Improves performance slightly (especially on larger wikis as the page index grows), but makes debugging and ninja-edits more awkward.save_pageindex()
function which respects the above setting.core.php
into multiple filesall_untrusted
setting to allow treating everything as untrusted (default: false) - turn it on if your wiki allows anonymous editsNot often I have a removed section!
Published by sbrl over 5 years ago
Welcome one and all to the next release of Pepperminty Wiki! After the beta 2 weeks ago, I think it's about time for the full release, don't you?
There's a smashing line-up of features this time, with more planned for the near(ish?) future!
recent-changes
action can now emit Atom 1.0 feeds, and advertises this fact too!(No changes have been made since the last beta release.)
feature-interwiki-links
module
interwiki_index_location
setting to control the location of the interwiki index (which is a CSV file that is documented in the main Pepperminty Wiki documentation), which has to be specified in order for it to activateinterwiki_pagename_parse
, interwiki_pagename_resolve
, interwiki_get_pagename_url
, and is_interwiki_link
recent-changes
action (append &format=XXX
to the url)
csv
)atom
)<link rel="alternate" />
in the <head>
nowcount
and offset
GET parameters to recent-changes
action.find_revisionid_timestamp()
function to feature-recent-changes
module.._cache
in the data directory (alongside the pages themselves)parser_cache
and parser_cache_min_size
parser_cache_min_size
may need tuning for your specific installation (lower it if you regularly use features that are slow to parse; raise if it's the opposite){{{@}}}
templating variable to output a message if no parameters were specified instead of not parsing it at allpage_renderer
class
page_renderer::add_header_html()
\n
(linux)export
action now correctly includes uploaded files alongside their descriptionsPublished by sbrl over 5 years ago
Welcome one and all to the next beta release of Pepperminty Wiki! There's a smashing line-up of features this time, with more planned for the near(ish?) future!
recent-changes
action can now emit Atom 1.0 feeds, and advertises this fact too!feature-interwiki-links
module
interwiki_index_location
setting to control the location of the interwiki index (which is a CSV file that is documented in the main Pepperminty Wiki documentation), which has to be specified in order for it to activateinterwiki_pagename_parse
, interwiki_pagename_resolve
, interwiki_get_pagename_url
, and is_interwiki_link
recent-changes
action (append &format=XXX
to the url)
csv
)atom
)<link rel="alternate" />
in the <head>
nowcount
and offset
GET parameters to recent-changes
action.find_revisionid_timestamp()
function to feature-recent-changes
module.parser_cache
and parser_cache_min_size
parser_cache_min_size
may need tuning for your specific installation (lower it if you regularly use features that are slow to parse; raise if it's the opposite){{{@}}}
templating variable to output a message if no parameters were specified instead of not parsing it at allpage_renderer
class
page_renderer::add_header_html()
\n
(linux)export
action now correctly includes uploaded files alongside their descriptionsPublished by sbrl almost 6 years ago
Looks like there was a bug after all!
This release fixes 1 major issue: The default passwords account passwords. If you've already got your useer accounts setup, then you can ignore this release 😺
If not, then you should update to this release. Instructions are as follows:
index.php
with the one you've got downloaded)peppermint.json
in the same directory as index.php
users
property from peppermint.json
.Default credentials:
admin
and password
user
and cheese
Don't forget to change your passwords :-)
Published by sbrl about 6 years ago
It's time for v0.17! This time, it's all about quality-of-life. Here are the highlights:
http2_server_push_items
, that lets you specify extra custom files to push in addition to the those specified automatically.As always, you can update by downloading a fresh copy and replacing your existing index.php
. The README has a section on how to do that. With this update, there are a few important notes for webmasters / server owners:
user-table
action), and also via the inbuilt hash
action (don't forget to do this in incognito and to clear the server logs / reset your password again afterwards).configure
action page, or by requesting the invindex-rebuild
action directly.secret
setting in peppermint.json
on install, you may need to change it. This release makes the generator for this parameter cryptographically secure, so you can just delete it manually and have it be automatically regenerated for you 🙂If you encounter any problems, please open an issue and help you out.
--Starbeamrainbowlabs
save_settings()
convenience methoduser-add
and set-password
moderator actionsrandom_page_exclude_redirects
setting that prevents the random
action from returning redirect pages.history-revert
actionhistory_max_revisions
setting to allow control of the maximum number of revisions stored for a page
history_revert_require_moderator
setting to control whether moderator privileges are required to use the functionality (regardless of setting a user must be logged in)css
setting (url path must begin with a forward-slash) and the favicon (must not be a data:
url) are automatically pushed when rendering pageshttp2_server_push
for turning it on and off (defaults to on), and http2_server_push_items
for specifying custom resources to push (in case you design your own theme and want to push down the associated resources)http2_server_push_items
in particular is available on the configuration info page (when this release is out, of course. Until then, check out the description in peppermint.guiconfig.json
)<meta name='generator' />
tag to all pagesinvindex-rebuild
action.peppermint.json
to something more secure with a site like random.org.
openssl_pseudo_random_bytes()
was being used before, but apparently that's not cryptographically secure.full_url()
logicemail_user()
correctly return email sending failureshash
action supports the new password hashing scheme.password_cost
, password_cost_time
, and password_cost_time_interval
settingspassword_cost
is recalculated automatically every week by default (it keeps track of this via the password_cost_time_lastcheck
'setting')css
setting will now keep a value of auto, even when peppermint.json
is automatically updated by Pepperminty Wiki.search_characters_context
down to 75 (this won't be the case for existing wikis, so you'll need to adjust it manually)search_characters_context_total
setting to control the maximum characters in a search contextindex
action's output should now be formatted nicely.peppermint.json
to get the updated ones!Published by sbrl about 6 years ago
Another beta release! This one fixes the known cost-climbing bug in the last beta release. It also adds a new hidden hash-cost-test
action, but that's not part of the official API :P
Published by sbrl about 6 years ago
It's been a while, but we're back with the first beta release on v0.17! It's a big one, with several security-related fixes. Here's a summary of changes:
hash
action. Suggestions to make this more secure are welcome!With that, here's the full changelog:
password_cost_time_interval
to -1
if you have trouble (I'm investigate the cause of this).save_settings()
convenience methoduser-add
and set-password
moderator actionsrandom_page_exclude_redirects
setting that prevents the random
action from returning redirect pages.history-revert
actionhistory_max_revisions
setting to allow control of the maximum number of revisions stored for a page
history_revert_require_moderator
setting to control whether moderator privileges are required to use the functionality (regardless of setting a user must be logged in)css
setting (url path must begin with a forward-slash) and the favicon (must not be a data:
url) are automatically pushed when rendering pageshttp2_server_push
for turning it on and off (defaults to on), and http2_server_push_items
for specifying custom resources to push (in case you design your own theme and want to push down the associated resources)http2_server_push_items
in particular is available on the configuration info page (when this release is out, of course. Until then, check out the description in peppermint.guiconfig.json
)<meta name='generator' />
tag to all pagesinvindex-rebuild
action.peppermint.json
to something more secure with a site like random.org.
openssl_pseudo_random_bytes()
was being used before, but apparently that's not cryptographically secure.full_url()
logicemail_user()
correctly return email sending failureshash
action supports the new password hashing scheme.password_cost
, password_cost_time
, and password_cost_time_interval
settingspassword_cost
is recalculated automatically every week by default (it keeps track of this via the password_cost_time_lastcheck
'setting')css
setting will now keep a value of auto, even when peppermint.json
is automatically updated by Pepperminty Wiki.search_characters_context
down to 75 (this won't be the case for existing wikis, so you'll need to adjust it manually)search_characters_context_total
setting to control the maximum characters in a search contextindex
action's output should now be formatted nicely.peppermint.json
to get the updated ones!Published by sbrl over 6 years ago
Welcome one and all to a brand-new beta release of Pepperminty Wiki! This release may well be known as the restful statistical search update. Though there aren't any changes since beta1, it includes some cracking additions since v0.15.1 such as:
The changelog can be found below. As usual, simply obtain a new copy of Pepperminty Wiki and replace your existing index.php
- either by downloading the copy attached to this release, or any other method described in the readme.
If you experience any issues, just let me know or open an issue. Enjoy! 🍭
mode
parameter to the random
actionformat
parameter to recentchanges
actioncomments-fetch
action to return a page's comments as JSONacquire-edit-key
action to allow scripts and other automated services (e.g. bots and mobile apps) to fetch an edit key for a specified page name.save
action on failure to aid identification by automated services/
) in your queryinvindex-rebuild
action as a mod or better)minified
option to status
action to reduce data usage slightlychecklogin
action documentationupload_enabled
was set to false
.x-login-required: yes
header to responses that redirect to the login page for easy detection by machinesx-login-success: (yes|no)
header to login responses for easier machine parsingaccept_contains_mime
, as it's both unstable and currently unnecessary. Contributions for a better version are welcome!Published by sbrl over 6 years ago
Welcome one and all to a brand-new beta release of Pepperminty Wiki! This release may well be known as the restful statistical search update, as it includes some cracking additions such as:
The changelog can be found below. As usual, simply obtain a new copy of Pepperminty Wiki and replace your existing index.php
- either by downloading the copy attached to this release, or any other method described in the readme.
If you experience any issues, just let me know or open an issue. Enjoy! 🍭
mode
parameter to the random
actionformat
parameter to recentchanges
actioncomments-fetch
action to return a page's comments as JSONacquire-edit-key
action to allow scripts and other automated services (e.g. bots and mobile apps) to fetch an edit key for a specified page name.save
action on failure to aid identification by automated services/
) in your queryinvindex-rebuild
action as a mod or better)minified
option to status
action to reduce data usage slightlychecklogin
action documentationupload_enabled
was set to false
.x-login-required: yes
header to responses that redirect to the login page for easy detection by machinesx-login-success: (yes|no)
header to login responses for easier machine parsingaccept_contains_mime
, as it's both unstable and currently unnecessary. Contributions for a better version are welcome!Published by sbrl almost 7 years ago
This is a small patch that fixes an authenticated denial-of-service attack when uploading a malicious SVG. I'd advise patching now - simply obtain a new copy of index.php
via any of the usual methods described in the main README.
It also brings a teensy new feature to file preview pages, and finally fixes a nasty bug whereby strange things would happen if you tried to save an edit to a page with an ampersand in its name.
Published by sbrl almost 7 years ago
Welcome to Pepperminty Wiki version 0.15! Today Pepperminty Wiki turns 3 - so I decided to time this release so that it comes out on the same day 😺
This release contains a bunch of quality-of-life improvements and bug fixes - as well as a brand-new statistics system. Module developers aren't left out in the cold either - a new remote files system has been added that gives modules a framework for downloading additional files they need, and improvements to the machine-readability of the REST api have been made too.
Highlights are given below, followed by the full changelogs. To update, simply get a new copy of index.php through all the usual channels, which are given in the README. Alternatively, you can download the prebuilt copy from this release.
random_page_exclude
setting to exclude pages from the random
action(No changes have been made since v0.15-beta2)
search
classstatistic_add
stats
to view the calculated statisicsstats_update_interval
and stats_update_processingtime
settingscomment-delete
actionhistory
action now supports format=json
and format=csv
random_page_exclude
setting that allows you to exclude pages from the random action with a (PHP) regular expressionget_page_parent($pagename)
method.register_remote_file
feature-comments
is installed, all the comments attached to the page are deleted tooraw
action now sends a 404 if the request page doesn't exist on the wiki.invindex-rebuild
admin-only, but allow access if the POST param secret
is set to your secret in peppermint.json
Published by sbrl almost 7 years ago
It's time for another beta release! I'm pretty confident that this will be almost identical to the final release tomorrow - it includes a small new feature, some additional documentation, and a fix for some nasty bugs when moving pages. Why tomorrow? It's Pepperminty Wiki's 3rd Birthday, of course! 🎆
search
classPublished by sbrl almost 7 years ago
Welcome to another beta release! I've got a bunch of cool features lined up for this release - such as initial statistics support (that's extendable by other modules!), the ability to delete comments, machine-readability improvements in the API, a bunch of bug fixes, and a number of quality-of-life improvements 🙂
As always, make sure you make a backup before updating! All you need to do is replace index.php
on your web server with the new version - instructions for obtaining it can be found in the README, or can be found attached to this release.
statistic_add
stats
to view the calculated statisicsstats_update_interval
and stats_update_processingtime
settingscomment-delete
actionhistory
action now supports format=json
and format=csv
random_page_exclude
setting that allows you to exclude pages from the random action with a (PHP) regular expressionget_page_parent($pagename)
method.register_remote_file
feature-comments
is installed, all the comments attached to the page are deleted tooraw
action now sends a 404 if the request page doesn't exist on the wiki.invindex-rebuild
admin-only, but allow access if the POST param secret
is set to your secret in peppermint.json
Published by sbrl over 7 years ago
91 commits and 99 days since v0.13 version 0.14 has arrived - thanks in part to @ikisler! This release contains a few fairly significant changes - so you may need to update your CSS if you've customised it. Here are some of the notable changes:
As usual, simply replace index.php
with the new version and you should be all up to date. This release includes a pre-built copy, but you can customise the included modules by using the downloader. Check the readme in this repository for alternative ways to obtain your copy.
Of course, if you encounter any issues, please open an issue 🍦
--Starbeamrainbowlabs
<tab>
when typing the path to your wiki to perform a search./
(subdomains are ok). This is a restriction of the protocol, not Pepperminty Wiki!avatars_show
and avatars_size
settings to control the displaying & size of rendered avatars.avatar
action, which 307 redirects to the appropriate avatar imagehas_action
to make detecting enabled features easier (even if they move modules)Published by sbrl over 7 years ago
The first beta of version 0.14 is here - thanks in part to @ikisler! This release contains a few fairly significant changes - so you may need to update your CSS if you've customised it. Here are some of the notable changes:
As usual, simply replace index.php
with the new version and you should be all up to date. This release includes a pre-built copy, but you can customise the included modules by using the downloader. Check the readme in this repository for alternative ways to obtain your copy.
Of course, if you encounter any issues, please open an issue 🍦
--Starbeamrainbowlabs
<tab>
when typing the path to your wiki to perform a search./
(subdomains are ok). This is a restriction of the protocol, not Pepperminty Wiki!avatars_show
and avatars_size
settings to control the displaying & size of rendered avatars.avatar
action, which 307 redirects to the appropriate avatar imagehas_action
to make detecting enabled features easier (even if they move modules)Published by sbrl over 7 years ago
Version 0.13 is here! It's been a long time in coming (and it's not an april fools :P), but that's mainly down to the fact that I've been rather busy, as of late. Still, it includes a bunch of bugfixes, and a load of new features too 😄
Enjoy! ✨
raw
action.feature-search
module.user_preferences_button_text
setting.$env->user_data
and save_userdata()
to interact with the logged in users' dataUsers/
by default belongs to their respective users. e.g. Users/admin
and all the pages under it belong to the admin
user, so no other user can edit them.
user_page_prefix
setting to allow customisation of where user pages should be located. Default value: Users
get_user_pagename()
and extract_user_from_userpage()
to allow programmatic detection etc.user-list
action that, well, outputs a list of users. Includes links to their respective user pages (though redlinks aren't implemented here yet).[[Page name]]s
will now link to the correct page in include the rest of the word. Note that this functionality can't be mixed with display text, like this: [[Page name|Display text]]s
- the rest of the word will be silently ignored in the link!query-searchindex
action to inspect the internals of the search engine
$env->page_filename
, which points to the current page on disk.mode
parameter to the view
action. It supports 4 different modes at present: normal
, printable
, contentonly
, and parsedsourceonly
.contentonly
display mode.[]{}|
) and will treat them as word boundaries.'
) in them.'
) in their names correctly in page lists.Published by sbrl over 7 years ago
Yep, it looks like there was a bug! This beta release includes a workaround for if / when recent pages start no appearing in the search results. The invindex-rebuild
action now clears out the page id index too. The page id index maps numbers onto pages - it's only purpose is to make the inverted search index smaller - please don't rely on it in modules (use the page's name instead)!
query-searchindex
action to inspect the internals of the search engine
Published by sbrl over 7 years ago
It's TIME for new beta release! This one has been far too long in coming, and I haven't managed to get everything in that I've wanted to, but I think that it's got a few changes that are significant enough to warrant a full release. Highlights include:
peppermint.json
) browser editor~! :D This one's been in the works for absolutely ages. If you find any issues with it, do let me know.I'm fairly confident that there aren't all that many issues with this beta release, but do let me kno if you find anything 😄 See the full changelog below:
raw
action.feature-search
module.user_preferences_button_text
setting.$env->user_data
and save_userdata()
to interact with the logged in users' dataUsers/
by default belongs to their respective users. e.g. Users/admin
and all the pages under it belong to the admin
user, so no other user can edit them.
user_page_prefix
setting to allow customisation of where user pages should be located. Default value: Users
get_user_pagename()
and extract_user_from_userpage()
to allow programmatic detection etc.user-list
action that, well, outputs a list of users. Includes links to their respective user pages (though redlinks aren't implemented here yet).[[Page name]]s
will now link to the correct page in include the rest of the word. Note that this functionality can't be mixed with display text, like this: [[Page name|Display text]]s
- the rest of the word will be silently ignored in the link!$env->page_filename
, which points to the current page on disk.mode
parameter to the view
action. It supports 4 different modes at present: normal
, printable
, contentonly
, and parsedsourceonly
.contentonly
display mode.[]{}|
) and will treat them as word boundaries.'
) in them.'
) in their names corectly in page lists.Published by sbrl about 8 years ago
It would appear that Pepperminty Wiki is settling into a 2-4 month release cycle. I'll be aiming from now on to do a decent release within that time window.
Recently I have been able to move a personal wiki of mine over to using Pepperminty Wiki! I also discovered a surprising number of bugs in this process, practically all of which have been fixed in this release. As a result this release isn't too heavy on new features, but it does have some goodies for you to enjoy, like hashes in internal links (#96), auto-redirecting when you refresh a login page when you're already logged in (#102), and more intelligent internal link calculation (#87) 😄
I also discovered and fixed a pair of critical security vulnerabilities in this release. Please make sure you upgrade as soon as possible!
peppermint.json
.<tab>
characters to be entered into the editing page textarea (#84)settings.max_recent_changes
(#104)