Pepperminty-Wiki

A wiki in a box

MPL-2.0 License

Stars
183
Pepperminty-Wiki - v0.19-beta2

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.

Changelog

Changed

  • Updated the theme of the new documentation
  • Revised the writing modules section of the documentation
Pepperminty-Wiki - v0.19-beta1

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.

Highlights

  • 🏭 Completed refactored the build system. Now an internet connection is not required for the initial setup on first page load!
  • 🧙 Added a new first-run wizard that appears when you first setup a brand-new wiki to help new users get up and running quickly.
  • 🔍 Added PDF file preview & a download button for unsupported files
  • 📦 Minify the page index by default.
  • Default to allowing upload of .ogg and .flac files

Full Changelog

Fixed

  • Fixed double-escaping of rendered HTML when nesting templates
  • Squashed a warning if the search index doesn't exist yet
  • Fixed a crash in the stats updater if no pages in the system have tags yet
  • Consolidated email and emailAddress fields into the latter in the user table (#167)
  • Fixed a crash when trying to access the user table when not logged in as an administrator.
  • Fixed help text for the file upload module
  • Squashed a warning when uploading a file

Added

  • [Module API] Added new extra data system. See parser-parsedown and page-edit for an example.
    • Extra data is packed into a zip archive, which is packed into index.php via __halt_compiler();
    • See parser-parsedown and page-edit for examples on how to use it.
  • [Module API] Added new delete_recursive() function.
  • Added a new obvious link to the user table at the top of the master settings page.
  • Added a new first-run wizard to help new users set up the basics of their wiki.
    • It also checks to ensure that access to peppermint.json is blocked correctly (coming soon as a one-time check to pre-existing wikis)
    • Pre-existing wikis will not see this first-run wizard - a new firstrun_complete setting has been added that's automatically set to true if Pepperminty Wiki does a settings upgrade
  • Default to allowing lossless flac and ogg audio files to be uploaded
  • Added new minify_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.
  • [Module API] Added new save_pageindex() function which respects the above setting.
  • Added PDF preview using your browser's default PDF viewer!
  • Added download button for unsupported file types

Changed

  • Core sharding: split core.php into multiple files
  • Big update to the backend Markdown parser Parsedown
    • Use Parsedown's new untrusted feature for comments
    • Added new all_untrusted setting to allow treating everything as untrusted (default: false) - turn it on if your wiki allows anonymous edits
  • Switch to nightdocs instead of docpress (the official docs will update & change URL on the next stable release)
  • Add moar badges to the README & docs :D

Removed

Not often I have a removed section!

  • [Module API] Remove remote file system in favour of the new extra data system. No more first-run downloads! They are all done at compile-time now.
Pepperminty-Wiki - v0.18

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!

Highlights

  • 🛸 Interwiki Links are now a thing! The brand-new documentation will be updated with instructions when the full release is out, but for check out the how-to here
  • ⛅ The recent-changes action can now emit Atom 1.0 feeds, and advertises this fact too!
  • 📰 🚄 Parser output is now cached to increase performance. This should * never * result in stale pages though :D

Since v0.18-beta1

(No changes have been made since the last beta release.)

Full Changelog

Added

  • Added inter-wiki link support via the new feature-interwiki-links module
    • Added 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 activate
    • Provides new module api functions: interwiki_pagename_parse, interwiki_pagename_resolve, interwiki_get_pagename_url, and is_interwiki_link
  • Added new formats to the recent-changes action (append &format=XXX to the url)
    • Added CSV support (csv)
    • Added Atom 1.0 feed support (atom)
    • All alternative formats for this action are advertised in via a <link rel="alternate" /> in the <head> now
  • Added count and offset GET parameters to recent-changes action.
  • Added new find_revisionid_timestamp() function to feature-recent-changes module.
  • Added new parser output caching system!
    • Saves to ._cache in the data directory (alongside the pages themselves)
    • 2 new settings have been added: parser_cache and parser_cache_min_size
    • Uses a hash of the content, the Pepperminty Wiki version, and the parser name as the cache id - so it should never serve stale content (unless you're actively working on particular areas of Pepperminty Wiki's codebase of course)
    • Useful for longer pages
    • 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)
  • Internal links now show the page name on hover (inter-wiki links are also supported here)

Changed

  • Completely reworked the README to refactor out the documentation to its own static site
  • Updated the {{{@}}} templating variable to output a message if no parameters were specified instead of not parsing it at all
  • [Module API] Refactored the main page_renderer class
    • All static methods now have a consistent naming scheme
    • Added page_renderer::add_header_html()

Fixed

  • Squashed a warning in the history revision system when creating new pages (thanks @tspivey for spotting this!)
  • Standardise line endings to \n (linux)
  • Enhanced setup instructions in README.
  • Long lines in code blocks now wrap correctly.
  • The export action now correctly includes uploaded files alongside their descriptions
Pepperminty-Wiki - v0.18-beta1

Published 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!

Highlights

  • 🛸 Interwiki Links are now a thing! The brand-new documentation will be updated with instructions when the full release is out, but for check out the how-to here
  • ⛅ The recent-changes action can now emit Atom 1.0 feeds, and advertises this fact too!
  • 📰 🚄 Parser output is now cached to increase performance. This should * never * result in stale pages though :D

Full Changelog

Added

  • Added inter-wiki link support via the new feature-interwiki-links module
    • Added 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 activate
    • Provides new module api functions: interwiki_pagename_parse, interwiki_pagename_resolve, interwiki_get_pagename_url, and is_interwiki_link
  • Added new formats to the recent-changes action (append &format=XXX to the url)
    • Added CSV support (csv)
    • Added Atom 1.0 feed support (atom)
    • All alternative formats for this action are advertised in via a <link rel="alternate" /> in the <head> now
  • Added count and offset GET parameters to recent-changes action.
  • Added new find_revisionid_timestamp() function to feature-recent-changes module.
  • Added new parser output caching system!
    • 2 new settings have been added: parser_cache and parser_cache_min_size
    • Uses a hash of the content, the Pepperminty Wiki version, and the parser name as the cache id - so it should never serve stale content (unless you're actively working on particular areas of Pepperminty Wiki's codebase of course)
    • Useful for longer pages
    • 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)
  • Internal links now show the page name on hover (inter-wiki links are also supported here)

Changed

  • Completely reworked the README to refactor out the documentation to its own static site
  • Updated the {{{@}}} templating variable to output a message if no parameters were specified instead of not parsing it at all
  • [Module API] Refactored the main page_renderer class
    • All static methods now have a consistent naming scheme
    • Added page_renderer::add_header_html()

Fixed

  • Squashed a warning in the history revision system when creating new pages (thanks @tspivey for spotting this!)
  • Standardise line endings to \n (linux)
  • Enhanced setup instructions in README.
  • Long lines in code blocks now wrap correctly.
  • The export action now correctly includes uploaded files alongside their descriptions
Pepperminty-Wiki - v0.17.1

Published 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:

  1. Update to this release as normal (replace this index.php with the one you've got downloaded)
  2. If you haven't customised any settings yet, delete peppermint.json in the same directory as index.php
  3. If you have, then remove only the users property from peppermint.json.
  4. You should be good to go!

Default credentials:

  • admin and password
  • user and cheese

Don't forget to change your passwords :-)

Pepperminty-Wiki - v0.17

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:

  • 🌈 🔎 Added full UTF-8 support to the search engine! No more weird errors when searching for pages containing special characters.
  • 🔑 Overhauled password hashing, making it much more secure! This means that you'll need to reset everyone's passwords, but it's definitely worth the additional security. Instructions on how to do this are below in the upgrade instructions.
  • 🚁 Added revert to this revision buttons on the history page for moderators
  • 🌍 Added HTTP/2.0 Server Push support! This comes with a new setting, http2_server_push_items, that lets you specify extra custom files to push in addition to the those specified automatically.
  • 🍭 And more! See the full changelog at the bottom of this release.

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:

  • All passwords will need to be re-hashed. Password resets can be done from the user table when logged in as a moderator or better (the 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).
  • The search index will need to be rebuilt in order to correctly index Unicode characters. This can be done via the Rebuild Search Index button on the configure action page, or by requesting the invindex-rebuild action directly.
  • If you didn't customise the 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

Full Changelog

Since v0.7-beta2

Fixed

  • Removed stray debugging output
  • Tweaked css to make new search context generation look better

Since v0.17-beta1

Fixed

  • Fixed the cost-climbing bug in the last beta release
  • Removed stray debugging output
  • Tweaked css to make new search context generation look better

Since v0.16

Added

  • [Module API] Added save_settings() convenience method
  • [Rest API] Add user-add and set-password moderator actions
  • Added random_page_exclude_redirects setting that prevents the random action from returning redirect pages.
  • Added link to user table on the credits page
  • Added history reversion via the history-revert action
  • Added history_max_revisions setting to allow control of the maximum number of revisions stored for a page
    • Takes effect every time a page revision is added
  • Added page restore system
    • A previous page revision can be restored with a single click from the page history page
    • Added a new 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)
  • HTTP/2.0 Server Push support!
    • You'll need to make sure your web server has support turned on
    • The CSS file specified in the css setting (url path must begin with a forward-slash) and the favicon (must not be a data: url) are automatically pushed when rendering pages
    • 2 new settings have been added: http2_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)
    • More information about 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)
  • Added <meta name='generator' /> tag to all pages

Fixed

  • Updated the search system to transliterate characters to better support searching pages that are written in other languages.
    • You'll want to rebuild your search index via the button in the configuration panel, or the invindex-rebuild action.
  • [Security] Made the site secret generator cryptographically secure. If you created your wiki before this change, you might want to change your site secret in peppermint.json to something more secure with a site like random.org.
  • [Module API] Fix full_url() logic
  • [Module API] Make email_user() correctly return email sending failures
  • Squashed a warning in the search redirector
  • The search redirector will now check both the specified page name and the page name in Title Case
  • Improve help text description of image captions displayed alongside images
  • Fixed the page history page - it should now display all page revisions in valid HTML
  • Fixed another bug in the search context generator
  • Display an ellipsis at the beginning of a search context if it doesn't start at the beginning of a page
  • Semicolons are no longer automatically included in greedy internal links.
  • Pressing enter in the tag box now correctly previews instead of performing a smart restore
  • Removed stray debugging output
  • Fixed the cost-climbing bug in the last beta release
  • Tweaked css to make new search context generation look better

Changed

  • Password hashing has been overhauled! A totally new-and-different system is being used now, so you'll need to rehash all your passwords.
    • The hash action supports the new password hashing scheme.
    • Added password_cost, password_cost_time, and password_cost_time_interval settings
    • password_cost is recalculated automatically every week by default (it keeps track of this via the password_cost_time_lastcheck 'setting')
  • The css setting will now keep a value of auto, even when peppermint.json is automatically updated by Pepperminty Wiki.
  • Optimised the search system a lot (#157 - ~2800ms searches now take ~450ms O.o)
    • Tuned the default value for search_characters_context down to 75 (this won't be the case for existing wikis, so you'll need to adjust it manually)
    • Added new search_characters_context_total setting to control the maximum characters in a search context
  • The index action's output should now be formatted nicely.
  • Restyled "matching tags" in the search results in the default stylesheet
  • Added moar icons to the nav / more menus. Delete the appropriate entries in peppermint.json to get the updated ones!
Pepperminty-Wiki - v0.17-beta2

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

Pepperminty-Wiki - v0.17-beta1

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:

  • Overhauled the password hashing system. Unfortunately this means you'll have to manually rehash everyone's passwords I recommend using the hash action. Suggestions to make this more secure are welcome!
  • Seriously optimised the search system, making it ~6x faster - and in the process fixing all remaining issues with unicode characters (finally!) 🎆
  • Made the site secret generator (the one that runs on initial setup) cryptographically secure (if you're concerned, use random.org to generate a new one)
  • Added HTTP/2.0 Server Push support!
  • Improved the history system a bit (mainly a "restore this revision" button, but there's also a new setting to limit the stored revisions too)

With that, here's the full changelog:

Known Issues

  • The automatic password rehashing appears to grow over time when it really shouldn't - causing slow logins. Set password_cost_time_interval to -1 if you have trouble (I'm investigate the cause of this).

Added

  • [Module API] Added save_settings() convenience method
  • [Rest API] Add user-add and set-password moderator actions
  • Added random_page_exclude_redirects setting that prevents the random action from returning redirect pages.
  • Added link to user table on the credits page
  • Added history reversion via the history-revert action
  • Added history_max_revisions setting to allow control of the maximum number of revisions stored for a page
    • Takes effect every time a page revision is added
  • Added page restore system
    • A previous page revision can be restored with a single click from the page history page
    • Added a new 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)
  • HTTP/2.0 Server Push support!
    • You'll need to make sure your web server has support turned on
    • The CSS file specified in the css setting (url path must begin with a forward-slash) and the favicon (must not be a data: url) are automatically pushed when rendering pages
    • 2 new settings have been added: http2_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)
    • More information about 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)
  • Added <meta name='generator' /> tag to all pages

Fixed

  • Updated the search system to transliterate characters to better support searching pages that are written in other languages.
    • You'll want to rebuild your search index via the button in the configuration panel, or the invindex-rebuild action.
  • [Security] Made the site secret generator cryptographically secure. If you created your wiki before this change, you might want to change your site secret in peppermint.json to something more secure with a site like random.org.
  • [Module API] Fix full_url() logic
  • [Module API] Make email_user() correctly return email sending failures
  • Squashed a warning in the search redirector
  • The search redirector will now check both the specified page name and the page name in Title Case
  • Improve help text description of image captions displayed alongside images
  • Fixed the page history page - it should now display all page revisions in valid HTML
  • Fixed another bug in the search context generator
  • Display an ellipsis at the beginning of a search context if it doesn't start at the beginning of a page
  • Semicolons are no longer automatically included in greedy internal links.
  • Pressing enter in the tag box now correctly previews instead of performing a smart restore

Changed

  • Password hashing has been overhauled! A totally new-and-different system is being used now, so you'll need to rehash all your passwords.
    • The hash action supports the new password hashing scheme.
    • Added password_cost, password_cost_time, and password_cost_time_interval settings
    • password_cost is recalculated automatically every week by default (it keeps track of this via the password_cost_time_lastcheck 'setting')
  • The css setting will now keep a value of auto, even when peppermint.json is automatically updated by Pepperminty Wiki.
  • Optimised the search system a lot (#157 - ~2800ms searches now take ~450ms O.o)
    • Tuned the default value for search_characters_context down to 75 (this won't be the case for existing wikis, so you'll need to adjust it manually)
    • Added new search_characters_context_total setting to control the maximum characters in a search context
  • The index action's output should now be formatted nicely.
  • Restyled "matching tags" in the search results in the default stylesheet
  • Added moar icons to the nav / more menus. Delete the appropriate entries in peppermint.json to get the updated ones!
Pepperminty-Wiki - v0.16

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:

  • New statistics: user count, redirect page count, orphan pages, most linked-to pages
  • Some serious upgrades to the machine-readability of the Rest API - wikis should be much easier to write bots for, and new additions will enable many more capabilities in the future for the experimental Android Client!
  • UTF8 characters are now handled properly - especially in the search results! Finally! 😸
  • Fixed floating images with captions
  • .....and more!

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! 🍭

Added

  • Add json support to the search action :D
  • Added page moves to the recent changes page (#151)
  • Hyperlinked image preview on file pages to the original image (#153)
  • Added the commit hash Pepperminty Wiki was built against to the master settings configuration page, and the debug action
  • Added user count statistic
  • Added redirect page count statistic
  • Add orphan pages statistic
  • Add most linked-to pages statistic
  • [Rest API] Added support for the mode parameter to the random action
  • [Rest API] Added format parameter to recentchanges action
  • [Rest API] Added comments-fetch action to return a page's comments as JSON
  • [Rest API] Added acquire-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.
  • [Rest API] Added extra headers to save action on failure to aid identification by automated services

Fixed

  • Fixed various issues with both the module api & the rest api docs.
  • Properly escaped content of short code box on file pages
  • Display a more meaningful message to a logged in user if editing is disabled
  • Fixed fetching the size of SVGs in some cases
  • Fixed image captions in some cases (let me know if you still get warnings)
  • Squashed warnings when you do a search with a forward slash (/) in your query
  • Fixed that age-old warning in the search results if you have pages with special characters! I learnt a lot about utf8 whilst fixing this one.... (#114)
    • You'll need to rebuild your search index for this fix to fully take effect (call the invindex-rebuild action as a mod or better)
  • Normalise utf8 text to avoid duplicate ids and missing search results.
  • Improved handling of mime types in some places in the API.
  • [Rest API] Added minified option to status action to reduce data usage slightly
  • Fixed floating images that have captions
  • [Rest API] Fix checklogin action documentation
  • Fix link on credits page
  • Made rebuild search index progress bar fill completely up when done & neatened up UI placement

Changed

  • Disallow uploads if editing is disabled. Previously files could still be uploaded even if editing was disabled - unless upload_enabled was set to false.
  • Added x-login-required: yes header to responses that redirect to the login page for easy detection by machines
  • Added x-login-success: (yes|no) header to login responses for easier machine parsing
  • Enhance the longest pages statistic rendering

Removed

  • [Module API] Removed accept_contains_mime, as it's both unstable and currently unnecessary. Contributions for a better version are welcome!
Pepperminty-Wiki - v0.16-beta1

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:

  • New statistics: user count, redirect page count, orphan pages, most linked-to pages
  • Some serious upgrades to the machine-readability of the Rest API - wikis should be much easier to write bots for, and new additions will enable many more capabilities in the future for the experimental Android Client!
  • UTF8 characters are now handled properly - especially in the search results! Finally! 😸
  • Fixed floating images with captions
  • .....and more!

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! 🍭

Added

  • Add json support to the search action :D
  • Added page moves to the recent changes page (#151)
  • Hyperlinked image preview on file pages to the original image (#153)
  • Added the commit hash Pepperminty Wiki was built against to the master settings configuration page, and the debug action
  • Added user count statistic
  • Added redirect page count statistic
  • Add orphan pages statistic
  • Add most linked-to pages statistic
  • [Rest API] Added support for the mode parameter to the random action
  • [Rest API] Added format parameter to recentchanges action
  • [Rest API] Added comments-fetch action to return a page's comments as JSON
  • [Rest API] Added acquire-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.
  • [Rest API] Added extra headers to save action on failure to aid identification by automated services

Fixed

  • Fixed various issues with both the module api & the rest api docs.
  • Properly escaped content of short code box on file pages
  • Display a more meaningful message to a logged in user if editing is disabled
  • Fixed fetching the size of SVGs in some cases
  • Fixed image captions in some cases (let me know if you still get warnings)
  • Squashed warnings when you do a search with a forward slash (/) in your query
  • Fixed that age-old warning in the search results if you have pages with special characters! I learnt a lot about utf8 whilst fixing this one.... (#114)
    • You'll need to rebuild your search index for this fix to fully take effect (call the invindex-rebuild action as a mod or better)
  • Normalise utf8 text to avoid duplicate ids and missing search results.
  • Improved handling of mime types in some places in the API.
  • [Rest API] Added minified option to status action to reduce data usage slightly
  • Fixed floating images that have captions
  • [Rest API] Fix checklogin action documentation
  • Fix link on credits page
  • Made rebuild search index progress bar fill completely up when done & neatened up UI placement

Changed

  • Disallow uploads if editing is disabled. Previously files could still be uploaded even if editing was disabled - unless upload_enabled was set to false.
  • Added x-login-required: yes header to responses that redirect to the login page for easy detection by machines
  • Added x-login-success: (yes|no) header to login responses for easier machine parsing
  • Enhance the longest pages statistic rendering

Removed

  • [Module API] Removed accept_contains_mime, as it's both unstable and currently unnecessary. Contributions for a better version are welcome!
Pepperminty-Wiki - v0.15.1

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.

Added

  • Added an input box with auto-generated short markdown embed code with copy button to file pages

Changed

  • Added 1920 as a preset image size on file pages

Fixed

  • Fix saving edits to pages with an ampersand in their name (#99)
  • [Security] Fixed an authenticated denial-of-service attack when uploading a malicious SVG (ref XXE billion laughs attack, #152)
Pepperminty-Wiki - v0.15

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.

Highlights since v0.14

  • New statistics engine
  • Users can now delete their own comments, and admins can delete any comment
  • New "restore locally saved content" button to page editor
  • New random_page_exclude setting to exclude pages from the random action
  • Search now displays a list of tags that match at the top of the results too

Since v0.15-beta2

(No changes have been made since v0.15-beta2)

Since v0.15-beta1

Added

  • Added "restore locally saved content" button to page editor
  • [module api] Documented the remainder of the members of the search class

Fixed

  • Moving a page will now move all the comments associated with it
  • The page names on the page move success page are now encoded correctly to avoid html and url issues
  • Clicking Login to post a comment will now take you back to the comments section of the page you were on upon completing the login process instead of the top of the page

Since v0.14

Added

  • Statistics! (#97)
    • Added a new statistics engine, which you can add your own statistic calculators to with statistic_add
    • Added action stats to view the calculated statisics
    • Statistics are automagically recalculated every day - this can be controlled with the stats_update_interval and stats_update_processingtime settings
  • Added new "« Parent Page" to subpages so that you can easily visit their parent pages
  • Users can now delete their own comments, and users logged in as a moderator or better can delete anyone's comments.
    • Added new comment-delete action
    • Comments are deleted entirely if they have no replies - otherwise the username & message are wiped
  • The history action now supports format=json and format=csv
  • Added tags next to the names of pages in the search results
  • Added new random_page_exclude setting that allows you to exclude pages from the random action with a (PHP) regular expression
  • [module api] Added new get_page_parent($pagename) method.
  • [module api] Added new remote file system to download additional required files. Use it with register_remote_file

Fixed

  • Fixed invalid opensearch description.
  • When deleting a page, if feature-comments is installed, all the comments attached to the page are deleted too
  • Fixed paths when generating previews in certain environments
  • Fixed handling of pages and tags with single quotes in the name
  • Fixed weirdness on some pages rendered by the Pepperminty Wiki core
  • Fixed a few minor usability issues on the upload file page.
  • Removed some extra space at the bottom of some pages.
  • The raw action now sends a 404 if the request page doesn't exist on the wiki.

Changed

  • Make invindex-rebuild admin-only, but allow access if the POST param secret is set to your secret in peppermint.json
  • Improved the wording of the deletion confirmation and error pages
  • Search now searches matching tags as well as pages
  • Updated the search ranking algorithm to put more weight against longer words than shorter ones.
Pepperminty-Wiki - v0.15-beta2

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! 🎆

Added

  • Added "restore locally saved content" button to page editor
  • [module api] Documented the remainder of the members of the search class

Fixed

  • Moving a page will now move all the comments associated with it
  • The page names on the page move success page are now encoded correctly to avoid html and url issues
  • Clicking Login to post a comment will now take you back to the comments section of the page you were on upon completing the login process instead of the top of the page
Pepperminty-Wiki - v0.15-beta1

Published 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.

Added

  • Statistics! (#97)
    • Added a new statistics engine, which you can add your own statistic calculators to with statistic_add
    • Added action stats to view the calculated statisics
    • Statistics are automagically recalculated every day - this can be controlled with the stats_update_interval and stats_update_processingtime settings
  • Added new "« Parent Page" to subpages so that you can easily visit their parent pages
  • Users can now delete their own comments, and users logged in as a moderator or better can delete anyone's comments.
    • Added new comment-delete action
    • Comments are deleted entirely if they have no replies - otherwise the username & message are wiped
  • The history action now supports format=json and format=csv
  • Added tags next to the names of pages in the search results
  • Added new random_page_exclude setting that allows you to exclude pages from the random action with a (PHP) regular expression
  • [module api] Added new get_page_parent($pagename) method.
  • [module api] Added new remote file system to download additional required files. Use it with register_remote_file

Fixed

  • Fixed invalid opensearch description.
  • When deleting a page, if feature-comments is installed, all the comments attached to the page are deleted too
  • Fixed paths when generating previews in certain environments
  • Fixed handling of pages and tags with single quotes in the name
  • Fixed weirdness on some pages rendered by the Pepperminty Wiki core
  • Fixed a few minor usability issues on the upload file page.
  • Removed some extra space at the bottom of some pages.
  • The raw action now sends a 404 if the request page doesn't exist on the wiki.

Changed

  • Make invindex-rebuild admin-only, but allow access if the POST param secret is set to your secret in peppermint.json
  • Improved the wording of the deletion confirmation and error pages
  • Search now searches matching tags as well as pages
  • Updated the search ranking algorithm to put more weight against longer words than shorter ones.
Pepperminty-Wiki - v0.14

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:

  • Threaded commenting with email notifications!
  • Opensearch support
  • Avatars
  • Finally, the ability to preview changes before you save them - thanks to @ikisler

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

Since v0.14-beta1

  • Improve the look of the downloader a bit. More work is needed here, apparently - I haven't touched it in ages!

Since v0.13

Added

  • Commenting! You'll need to update any custom themes you've created if you're including the commenting module in your build.
  • Added stacked bar to help you visualise what's taking up all the space in your wiki
  • Added link to edit master settings in the credits
  • Initial open search support!
    • After visiting your wiki once, you'll be able to press <tab> when typing the path to your wiki to perform a search.
    • It'll only work if your wiki is at the top-level of a domain without anything after the / (subdomains are ok). This is a restriction of the protocol, not Pepperminty Wiki!
    • Supports sending search suggestions based on page names in the page index (based on case-insensitive leveshtein distance)
  • Avatars!
    • Gravatar is used if a user hasn't uploaded an avatar yet
    • An identicon is rendered if a user hasn't specified an email address or uploaded a gravatar yet either
    • Added avatars_show and avatars_size settings to control the displaying & size of rendered avatars.
    • Added the avatar action, which 307 redirects to the appropriate avatar image
  • Added has_action to make detecting enabled features easier (even if they move modules)
  • Edit previewing, thanks to @ikisler

Changed

  • Updated MathJax CDN link, as cdn.mathjax.org is being retired (source).

Fixed

  • Fixed error image generation in the image previewer under certain conditions.
  • Fixed warnings from being spewed all over the place under certain circumstances on the recent changes page
  • Fixed url encoding issue in redirects with ampersands in page names (#139)
  • Allow sending of OpenSearch description even when not logged in on wikis that require a login to work around some browser cookie issues
  • PR #135: Fix repeated page names on sidebar by @ikisler
  • PR #136: Fix issue where bottom nav is cut off by @gitter-badger ikisler
Pepperminty-Wiki - v0.14-beta1

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:

  • Threaded commenting with email notifications!
  • Opensearch support
  • Avatars
  • Finally, the ability to preview changes before you save them - thanks to @ikisler

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

v0.14

Added

  • Commenting! You'll need to update any custom themes you've created if you're including the commenting module in your build.
  • Added stacked bar to help you visualise what's taking up all the space in your wiki
  • Added link to edit master settings in the credits
  • Initial open search support!
    • After visiting your wiki once, you'll be able to press <tab> when typing the path to your wiki to perform a search.
    • It'll only work if your wiki is at the top-level of a domain without anything after the / (subdomains are ok). This is a restriction of the protocol, not Pepperminty Wiki!
    • Supports sending search suggestions based on page names in the page index (based on case-insensitive leveshtein distance)
  • Avatars!
    • Gravatar is used if a user hasn't uploaded an avatar yet
    • An identicon is rendered if a user hasn't specified an email address or uploaded a gravatar yet either
    • Added avatars_show and avatars_size settings to control the displaying & size of rendered avatars.
    • Added the avatar action, which 307 redirects to the appropriate avatar image
  • Added has_action to make detecting enabled features easier (even if they move modules)
  • Edit previewing, thanks to @ikisler

Changed

  • Updated MathJax CDN link, as cdn.mathjax.org is being retired (source).

Fixed

  • Fixed error image generation in the image previewer under certain conditions.
  • Fixed warnings from being spewed all over the place under certain circumstances on the recent changes page
  • Fixed url encoding issue in redirects with ampersands in page names (#139)
  • Allow sending of OpenSearch description even when not logged in on wikis that require a login to work around some browser cookie issues
  • PR #135: Fix repeated page names on sidebar by @ikisler
  • PR #136: Fix issue where bottom nav is cut off by @gitter-badger ikisler
Pepperminty-Wiki - v0.13

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! ✨

Summary

  • Initial user preferences!
  • Dynamic server-calculated page suggestions in the search box
  • Initial master settings file (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.
  • User pages!
  • Internal link enhancements
  • Lots more little bug fixes and improvements!

Full changelog

Added

  • Added header to upload file page.
  • Added history support to the raw action.
  • Added 'smart save' to the page creator / editor. Nobody need ever loose edits ever again!
  • Added dynamic server-calculated page suggestions. Very helpful for larger wikis. Currently works best in firefox. Part of the feature-search module.
  • Added Alt + Enter support to the page search box. Works just like your browser's address bar - opens results in a new tab instead of the current one.
  • Initial UI for configuring settings! Some things still have to be done by editing the file, but it's certainly a start :D
  • User preferences!
    • Accessible via the (by default) small cog next to your username when you're logged in
    • The cog is customisable via the new user_preferences_button_text setting.
    • You can change your password
    • There's link to the master site settings from user preferences for admins.
  • [Module API] Added $env->user_data and save_userdata() to interact with the logged in users' data
  • User pages! Every page under Users/ 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.
    • You can access your own user page by clicking on your username in the top corner when you're logged in.
    • Added the user_page_prefix setting to allow customisation of where user pages should be located. Default value: Users
    • [Module API] Added get_user_pagename() and extract_user_from_userpage() to allow programmatic detection etc.
  • Added a user-list action that, well, outputs a list of users. Includes links to their respective user pages (though redlinks aren't implemented here yet).
  • Internal links like [[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!
  • Added new query-searchindex action to inspect the internals of the search engine
    • It returns the (ordered) search rankings as json, along with some additional debugging data

Changed

  • Overhauled internal history logic - history logic is now done in core.
  • Added $env->page_filename, which points to the current page on disk.
  • Changed the way different display modes are accessed. You can now use the new mode parameter to the view action. It supports 4 different modes at present: normal, printable, contentonly, and parsedsourceonly.
  • Improved recent changes links a bit.
  • Improved tabbing through the file upload form.
  • Changed the way users' data is stored to support arbitrary per-user data
  • Sorted list of registered actions on the dev help page
  • The page editor's main content box now automatically expands as you're typing! If you've got a custom theme, you may need to tweak it a bit. Help available on request.
  • Pages that are redirects how have their names appear in italics in search results.

Fixed

  • The login session lifetime is now configurable (defaults to 24 hours), so you won't keep getting logged out all the time (in theory). (#113)
  • Recent changes made on different days are now displayed separately, as they should be (#112)
  • Always display footer message at the bottom of the page.
  • Trim the image url before short image url detection (#108)
  • Fixed huge issue with contentonly display mode.
  • Improved the search engine indexing algorithm. It now shouldn't choke on certain special characters ([]{}|) and will treat them as word boundaries.
  • Fixed tag links at the bottom of pages for tags with a single quote (') in them.
  • Correct error message when attempting to move a page
  • Improved security of PHP session cookie by setting HttpOnly flag.
  • Linked pages with single quotes (') in their names correctly in page lists.
  • Fixed blank descriptions in search results by defaulting to a snippet from the beginning of the page.
  • Clear the page id index out when rebuilding the search index from scratch.
    • This is needed to correct some issues where the id index goes all weird and assigns the same id to multiple pages
  • Don't search page titles or tags for stop words - it skews results since we don't search the page body for them
Pepperminty-Wiki - v0.13-beta2

Published by sbrl over 7 years ago

v0.13-beta2

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)!

Added

  • Added new query-searchindex action to inspect the internals of the search engine
    • It returns the (ordered) search rankings as json, along with some additional debugging data

Fixed

  • Clear the page id index out when rebuilding the search index from scratch.
    • This is needed to correct some issues where the id index goes all weird and assigns the same id to multiple pages
  • Don't search page titles or tags for stop words - it skews results since we don't search the page body for them
Pepperminty-Wiki - v0.13-beta1

Published by sbrl over 7 years ago

v0.13-beta1

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:

  • Initial user preferences!
  • Dynamic server-calculated page suggestions in the search box
  • Initial master settings file (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.
  • User pages!
  • Internal link enhancements
  • Lots more little bug fixes and improvements!

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:

Added

  • Added header to upload file page.
  • Added history support to the raw action.
  • Added 'smart save' to the page creator / editor. Nobody need ever loose edits ever again!
  • Added dynamic server-calculated page suggestions. Very helpful for larger wikis. Currently works best in firefox. Part of the feature-search module.
  • Added Alt + Enter support to the page search box. Works just like your browser's address bar - opens results in a new tab instead of the current one.
  • Initial UI for configuring settings! Some things still have to be done by editing the file, but it's certainly a start :D
  • User preferences!
    • Accessible via the (by default) small cog next to your username when you're logged in
    • The cog is customisable via the new user_preferences_button_text setting.
    • You can change your password
    • There's link to the master site settings from user preferences for admins.
  • [Module API] Added $env->user_data and save_userdata() to interact with the logged in users' data
  • User pages! Every page under Users/ 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.
    • You can access your own user page by clicking on your username in the top corner when you're logged in.
    • Added the user_page_prefix setting to allow customisation of where user pages should be located. Default value: Users
    • [Module API] Added get_user_pagename() and extract_user_from_userpage() to allow programmatic detection etc.
  • Added a user-list action that, well, outputs a list of users. Includes links to their respective user pages (though redlinks aren't implemented here yet).
  • Internal links like [[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!

Changed

  • Overhauled internal history logic - history logic is now done in core.
  • Added $env->page_filename, which points to the current page on disk.
  • Changed the way different display modes are accessed. You can now use the new mode parameter to the view action. It supports 4 different modes at present: normal, printable, contentonly, and parsedsourceonly.
  • Improved recent changes links a bit.
  • Improved tabbing through the file upload form.
  • Changed the way users' data is stored to support arbitrary per-user data
  • Sorted list of registered actions on the dev help page
  • The page editor's main content box now automatically expands as you're typing! If you've got a custom theme, you may need to tweak it a bit. Help available on request.
  • Pages that are redirects how have their names appear in italics in search results.

Fixed

  • The login session lifetime is now configurable (defaults to 24 hours), so you won't keep getting logged out all the time (in theory). (#113)
  • Recent changes made on different days are now displayed separately, as they should be (#112)
  • Always display footer message at the bottom of the page.
  • Trim the image url before short image url detection (#108)
  • Fixed huge issue with contentonly display mode.
  • Improved the search engine indexing algorithm. It now shouldn't choke on certain special characters ([]{}|) and will treat them as word boundaries.
  • Fixed tag links at the bottom of pages for tags with a single quote (') in them.
  • Correct error message when attempting to move a page
  • Improved security of PHP session cookie by setting HttpOnly flag.
  • Linked pages with single quotes (') in their names corectly in page lists.
  • Fixed blank descriptions in search results by defaulting to a snippet from the beginning of the page.
Pepperminty-Wiki - v0.12.1

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!

Changes since v0.12.1-beta1

Fixed

  • Added error detection to the code that loads peppermint.json.

Changes since v0.12

Added

  • Added a class to the search term highlighting to aid theming (#92)
  • Check for pages with various uppercased letter combinations for matching pages (#87)
  • Support hashes in internal links (#96)
  • Support hashes on redirect pages (#96)
  • Added some tips to the parsedown parser help section
  • Added some more stats to the dev help page (#97)
  • Added the time taken to search to the search results page (#97)
  • Added support for unicode characters in page names (#95)
  • Autofill the name box on the file upload page when a new file is selected (#101)
  • Redirect the user automatically from the login page on refresh if they are already logged in (#102)
  • Suggest an appropriate filename when saving an automatically generated preview (#105)

Changed

  • Made the background of tags slightly lighter (#91)
  • Improved the appearance of the search context below each result.
  • Tweaked display of result numbers in the search results.
  • Allowed spaces in the filenames of images in the image syntax.

Fixed

  • Critical: Make sure that all wiki related files are stored in the data directory (#89)
  • Critical: Fixed a HTML injection attack possible through search context generation (#94)
  • Sort the list of all the tags on a wiki (#88)
  • Explicitly set permissions on parent directories created (#86)
  • Allow <tab> characters to be entered into the editing page textarea (#84)
  • Fixed search context generation (#30)
  • Fixed bug in page moving code.
  • Prevented the page index data for parent pages from disappearing when a child page is edited (#98)
  • Fixed file uploading when the data storage directory not the current directory (#100)
  • Fixed pressing the edit button on pages that have a single quote in their name
  • Fixed a spelling mistake on the file preview page - I'm sure I fixed that before...!
  • Fixed an issue whereby the search index wouldn't update if your pages contained special characters
  • Fixed an issue with the recent changes list not updating when the number of recently changes reached settings.max_recent_changes (#104)
  • Fixed changes disappearing from the recent changes page (#106)